# HG changeset patch # User "Yann E. MORIN" # Date 1187122304 0 # Node ID 447b203edc2e4c7e039a11e07f6bb899311b6592 # Parent 419d959441edeb6e6adf80722f2f51c55b7b4190 Do a clean-up pass on the OBSOLETE features (versions): - remove legions of those, - remove associated patches no longer needed, - mark then as (OBSOLETE) in the prompt; diff -r 419d959441ed -r 447b203edc2e config/binutils.in --- a/config/binutils.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/binutils.in Tue Aug 14 20:11:44 2007 +0000 @@ -9,50 +9,16 @@ bool prompt "binutils version" -config BINUTILS_V_2_11_2 - bool - prompt "2.11.2" - depends on OBSOLETE - -config BINUTILS_V_2_13_90 - bool - prompt "2.13.90" - depends on OBSOLETE - config BINUTILS_V_2_14 bool - prompt "2.14" - depends on OBSOLETE - -config BINUTILS_V_2_14_90 - bool - prompt "2.14.90" - depends on OBSOLETE - -config BINUTILS_V_2_14_92 - bool - prompt "2.14.92" + prompt "2.14 (OBSOLETE)" depends on OBSOLETE config BINUTILS_V_2_15 bool - prompt "2.15" + prompt "2.15 (OBSOLETE)" depends on OBSOLETE -config BINUTILS_V_2_15_90 - bool - prompt "2.15.90" - depends on OBSOLETE - -config BINUTILS_V_2_15_91 - bool - prompt "2.15.91" - depends on OBSOLETE - -config BINUTILS_V_2_16 - bool - prompt "2.16" - config BINUTILS_V_2_16_1 bool prompt "2.16.1" @@ -61,89 +27,19 @@ bool prompt "2.17" -config BINUTILS_V_2_17_50_0_1 - bool - prompt "2.17.50.0.1" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_2 - bool - prompt "2.17.50.0.2" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_3 - bool - prompt "2.17.50.0.3" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_4 - bool - prompt "2.17.50.0.4" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_5 - bool - prompt "2.17.50.0.5" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_6 - bool - prompt "2.17.50.0.6" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_7 - bool - prompt "2.17.50.0.7" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_8 - bool - prompt "2.17.50.0.8" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_9 - bool - prompt "2.17.50.0.9" - depends on EXPERIMENTAL - config BINUTILS_V_2_17_50_0_10 bool - prompt "2.17.50.0.10" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_11 - bool - prompt "2.17.50.0.11" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_12 - bool - prompt "2.17.50.0.12" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_13 - bool - prompt "2.17.50.0.13" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_14 - bool - prompt "2.17.50.0.14" + prompt "2.17.50.0.10 (EXPERIMENTAL)" depends on EXPERIMENTAL config BINUTILS_V_2_17_50_0_15 bool - prompt "2.17.50.0.15" - depends on EXPERIMENTAL - -config BINUTILS_V_2_17_50_0_16 - bool - prompt "2.17.50.0.16" + prompt "2.17.50.0.15 (EXPERIMENTAL)" depends on EXPERIMENTAL config BINUTILS_V_2_17_50_0_17 bool - prompt "2.17.50.0.17" + prompt "2.17.50.0.17 (EXPERIMENTAL)" depends on EXPERIMENTAL config BINUTILS_V_2_17_50_0_18 @@ -157,33 +53,12 @@ config BINUTILS_VERSION string - default "2.11.2" if BINUTILS_V_2_11_2 - default "2.13.90" if BINUTILS_V_2_13_90 default "2.14" if BINUTILS_V_2_14 - default "2.14.90" if BINUTILS_V_2_14_90 - default "2.14.92" if BINUTILS_V_2_14_92 default "2.15" if BINUTILS_V_2_15 - default "2.15.90" if BINUTILS_V_2_15_90 - default "2.15.91" if BINUTILS_V_2_15_91 - default "2.16" if BINUTILS_V_2_16 default "2.16.1" if BINUTILS_V_2_16_1 default "2.17" if BINUTILS_V_2_17 - default "2.17.50.0.1" if BINUTILS_V_2_17_50_0_1 - default "2.17.50.0.2" if BINUTILS_V_2_17_50_0_2 - default "2.17.50.0.3" if BINUTILS_V_2_17_50_0_3 - default "2.17.50.0.4" if BINUTILS_V_2_17_50_0_4 - default "2.17.50.0.5" if BINUTILS_V_2_17_50_0_5 - default "2.17.50.0.6" if BINUTILS_V_2_17_50_0_6 - default "2.17.50.0.7" if BINUTILS_V_2_17_50_0_7 - default "2.17.50.0.8" if BINUTILS_V_2_17_50_0_8 - default "2.17.50.0.9" if BINUTILS_V_2_17_50_0_9 default "2.17.50.0.10" if BINUTILS_V_2_17_50_0_10 - default "2.17.50.0.11" if BINUTILS_V_2_17_50_0_11 - default "2.17.50.0.12" if BINUTILS_V_2_17_50_0_12 - default "2.17.50.0.13" if BINUTILS_V_2_17_50_0_13 default "2.17.50.0.14" if BINUTILS_V_2_17_50_0_14 - default "2.17.50.0.15" if BINUTILS_V_2_17_50_0_15 - default "2.17.50.0.16" if BINUTILS_V_2_17_50_0_16 default "2.17.50.0.17" if BINUTILS_V_2_17_50_0_17 default "2.17.50.0.18" if BINUTILS_V_2_17_50_0_18 # CT_INSERT_VERSION_STRING_ABOVE diff -r 419d959441ed -r 447b203edc2e config/cc_gcc.in --- a/config/cc_gcc.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/cc_gcc.in Tue Aug 14 20:11:44 2007 +0000 @@ -6,81 +6,23 @@ config CC_V_2_95_3 bool - prompt "2.95.3" + prompt "2.95.3 (OBSOLETE)" depends on OBSOLETE config CC_V_3_2_3 bool - prompt "3.2.3" - depends on OBSOLETE - -config CC_V_3_3 - bool - prompt "3.3" - depends on OBSOLETE - -config CC_V_3_3_1 - bool - prompt "3.3.1" - depends on OBSOLETE - -config CC_V_3_3_2 - bool - prompt "3.3.2" - depends on OBSOLETE - -config CC_V_3_3_3 - bool - prompt "3.3.3" - depends on OBSOLETE - -config CC_V_3_3_4 - bool - prompt "3.3.4" - depends on OBSOLETE - -config CC_V_3_3_5 - bool - prompt "3.3.5" + prompt "3.2.3 (OBSOLETE)" depends on OBSOLETE config CC_V_3_3_6 bool - prompt "3.3.6" - -config CC_V_3_4_0 - bool - prompt "3.4.0" - depends on OBSOLETE - -config CC_V_3_4_1 - bool - prompt "3.4.1" - depends on OBSOLETE - -config CC_V_3_4_2 - bool - prompt "3.4.2" - depends on OBSOLETE - -config CC_V_3_4_3 - bool - prompt "3.4.3" - depends on OBSOLETE - -config CC_V_3_4_4 - bool - prompt "3.4.4" - depends on OBSOLETE - -config CC_V_3_4_5 - bool - prompt "3.4.5" + prompt "3.3.6 (OBSOLETE)" depends on OBSOLETE config CC_V_3_4_6 bool - prompt "3.4.6" + prompt "3.4.6 (OBSOLETE)" + depends on OBSOLETE config CC_V_4_0_0 bool @@ -130,19 +72,7 @@ string default "2.95.3" if CC_V_2_95_3 default "3.2.3" if CC_V_3_2_3 - default "3.3" if CC_V_3_3 - default "3.3.1" if CC_V_3_3_1 - default "3.3.2" if CC_V_3_3_2 - default "3.3.3" if CC_V_3_3_3 - default "3.3.4" if CC_V_3_3_4 - default "3.3.5" if CC_V_3_3_5 default "3.3.6" if CC_V_3_3_6 - default "3.4.0" if CC_V_3_4_0 - default "3.4.1" if CC_V_3_4_1 - default "3.4.2" if CC_V_3_4_2 - default "3.4.3" if CC_V_3_4_3 - default "3.4.4" if CC_V_3_4_4 - default "3.4.5" if CC_V_3_4_5 default "3.4.6" if CC_V_3_4_6 default "4.0.0" if CC_V_4_0_0 default "4.0.1" if CC_V_4_0_1 diff -r 419d959441ed -r 447b203edc2e config/debug/dmalloc.in --- a/config/debug/dmalloc.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/debug/dmalloc.in Tue Aug 14 20:11:44 2007 +0000 @@ -13,7 +13,7 @@ config DMALLOC_V_5_4_3 bool - prompt "5.4.3" + prompt "5.4.3 (OBSOLETE)" depends on OBSOLETE config DMALLOC_V_5_5_2 diff -r 419d959441ed -r 447b203edc2e config/debug/gdb.in --- a/config/debug/gdb.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/debug/gdb.in Tue Aug 14 20:11:44 2007 +0000 @@ -42,19 +42,9 @@ prompt "snapshot (EXPERIMENTAL)" depends on EXPERIMENTAL -config GDB_V_6_2_1 - bool - prompt "6.2.1" - depends on OBSOLETE - -config GDB_V_6_3 - bool - prompt "6.3" - depends on OBSOLETE - config GDB_V_6_4 bool - prompt "6.4" + prompt "6.4 (OBSOLETE)" depends on OBSOLETE config GDB_V_6_5 @@ -72,8 +62,6 @@ config GDB_VERSION string default "snapshot" if GDB_V_snapshot - default "6.2.1" if GDB_V_6_2_1 - default "6.3" if GDB_V_6_3 default "6.4" if GDB_V_6_4 default "6.5" if GDB_V_6_5 default "6.6" if GDB_V_6_6 diff -r 419d959441ed -r 447b203edc2e config/debug/ltrace.in --- a/config/debug/ltrace.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/debug/ltrace.in Tue Aug 14 20:11:44 2007 +0000 @@ -20,7 +20,7 @@ config LTRACE_V_0_3_36 bool - prompt "0.3.36" + prompt "0.3.36 (OBSOLETE)" depends on OBSOLETE config LTRACE_V_0_4 diff -r 419d959441ed -r 447b203edc2e config/debug/strace.in --- a/config/debug/strace.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/debug/strace.in Tue Aug 14 20:11:44 2007 +0000 @@ -13,77 +13,12 @@ config STRACE_V_4_5 bool - prompt "4.5" - depends on OBSOLETE - -config STRACE_V_4_5_1 - bool - prompt "4.5.1" - depends on OBSOLETE - -config STRACE_V_4_5_2 - bool - prompt "4.5.2" - depends on OBSOLETE - -config STRACE_V_4_5_3 - bool - prompt "4.5.3" - depends on OBSOLETE - -config STRACE_V_4_5_4 - bool - prompt "4.5.4" - depends on OBSOLETE - -config STRACE_V_4_5_5 - bool - prompt "4.5.5" - depends on OBSOLETE - -config STRACE_V_4_5_6 - bool - prompt "4.5.6" - depends on OBSOLETE - -config STRACE_V_4_5_7 - bool - prompt "4.5.7" - depends on OBSOLETE - -config STRACE_V_4_5_8 - bool - prompt "4.5.8" - depends on OBSOLETE - -config STRACE_V_4_5_9 - bool - prompt "4.5.9" - depends on OBSOLETE - -config STRACE_V_4_5_10 - bool - prompt "4.5.10" - depends on OBSOLETE - -config STRACE_V_4_5_11 - bool - prompt "4.5.11" - depends on OBSOLETE - -config STRACE_V_4_5_12 - bool - prompt "4.5.12" - depends on OBSOLETE - -config STRACE_V_4_5_13 - bool - prompt "4.5.13" + prompt "4.5 (OBSOLETE)" depends on OBSOLETE config STRACE_V_4_5_14 bool - prompt "4.5.14" + prompt "4.5.14 (OBSOLETE)" depends on OBSOLETE config STRACE_V_4_5_15 @@ -97,19 +32,6 @@ config STRACE_VERSION string default "4.5" if STRACE_V_4_5 - default "4.5.1" if STRACE_V_4_5_1 - default "4.5.2" if STRACE_V_4_5_2 - default "4.5.3" if STRACE_V_4_5_3 - default "4.5.4" if STRACE_V_4_5_4 - default "4.5.5" if STRACE_V_4_5_5 - default "4.5.6" if STRACE_V_4_5_6 - default "4.5.7" if STRACE_V_4_5_7 - default "4.5.8" if STRACE_V_4_5_8 - default "4.5.9" if STRACE_V_4_5_9 - default "4.5.10" if STRACE_V_4_5_10 - default "4.5.11" if STRACE_V_4_5_11 - default "4.5.12" if STRACE_V_4_5_12 - default "4.5.13" if STRACE_V_4_5_13 default "4.5.14" if STRACE_V_4_5_14 default "4.5.15" if STRACE_V_4_5_15 # CT_INSERT_VERSION_STRING_ABOVE diff -r 419d959441ed -r 447b203edc2e config/kernel_linux_headers_copy.in --- a/config/kernel_linux_headers_copy.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/kernel_linux_headers_copy.in Tue Aug 14 20:11:44 2007 +0000 @@ -2,25 +2,9 @@ bool prompt "Linux kernel version" -config KERNEL_COPY_V_2_6_0 +config KERNEL_COPY_V_2_4_26 bool - prompt "2.6.0" - -config KERNEL_COPY_V_2_6_1 - bool - prompt "2.6.1" - -config KERNEL_COPY_V_2_6_2 - bool - prompt "2.6.2" - -config KERNEL_COPY_V_2_6_3 - bool - prompt "2.6.3" - -config KERNEL_COPY_V_2_6_4 - bool - prompt "2.6.4" + prompt "2.4.26" config KERNEL_COPY_V_2_6_5 bool @@ -38,645 +22,21 @@ bool prompt "2.6.8" -config KERNEL_COPY_V_2_6_8_1 - bool - prompt "2.6.8.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_9 - bool - prompt "2.6.9" - -config KERNEL_COPY_V_2_6_10 - bool - prompt "2.6.10" - -config KERNEL_COPY_V_2_6_11 - bool - prompt "2.6.11" - -config KERNEL_COPY_V_2_6_11_1 - bool - prompt "2.6.11.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_10 - bool - prompt "2.6.11.10" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_11 - bool - prompt "2.6.11.11" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_12 - bool - prompt "2.6.11.12" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_2 - bool - prompt "2.6.11.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - config KERNEL_COPY_V_2_6_11_3 bool prompt "2.6.11.3" depends on KERNEL_VERSION_SEE_EXTRAVERSION -config KERNEL_COPY_V_2_6_11_4 - bool - prompt "2.6.11.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_5 - bool - prompt "2.6.11.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_6 - bool - prompt "2.6.11.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_7 - bool - prompt "2.6.11.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_8 - bool - prompt "2.6.11.8" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_11_9 - bool - prompt "2.6.11.9" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_12 - bool - prompt "2.6.12" - -config KERNEL_COPY_V_2_6_12_1 - bool - prompt "2.6.12.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_12_2 - bool - prompt "2.6.12.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_12_3 - bool - prompt "2.6.12.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_12_4 - bool - prompt "2.6.12.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_12_5 - bool - prompt "2.6.12.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_12_6 - bool - prompt "2.6.12.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_13 - bool - prompt "2.6.13" - -config KERNEL_COPY_V_2_6_13_1 - bool - prompt "2.6.13.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_13_2 - bool - prompt "2.6.13.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_13_3 - bool - prompt "2.6.13.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_13_4 - bool - prompt "2.6.13.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_13_5 - bool - prompt "2.6.13.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_14 - bool - prompt "2.6.14" - -config KERNEL_COPY_V_2_6_14_1 - bool - prompt "2.6.14.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_14_2 - bool - prompt "2.6.14.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_14_3 - bool - prompt "2.6.14.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_14_4 - bool - prompt "2.6.14.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_14_5 - bool - prompt "2.6.14.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_14_6 - bool - prompt "2.6.14.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_14_7 - bool - prompt "2.6.14.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_15 - bool - prompt "2.6.15" - -config KERNEL_COPY_V_2_6_15_1 - bool - prompt "2.6.15.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_15_2 - bool - prompt "2.6.15.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_15_3 - bool - prompt "2.6.15.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_15_4 - bool - prompt "2.6.15.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_15_5 - bool - prompt "2.6.15.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_15_6 - bool - prompt "2.6.15.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_15_7 - bool - prompt "2.6.15.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16 - bool - prompt "2.6.16" - -config KERNEL_COPY_V_2_6_16_1 - bool - prompt "2.6.16.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_10 - bool - prompt "2.6.16.10" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_11 - bool - prompt "2.6.16.11" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_12 - bool - prompt "2.6.16.12" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_13 - bool - prompt "2.6.16.13" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_14 - bool - prompt "2.6.16.14" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_15 - bool - prompt "2.6.16.15" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_16 - bool - prompt "2.6.16.16" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_17 - bool - prompt "2.6.16.17" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_18 - bool - prompt "2.6.16.18" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_19 - bool - prompt "2.6.16.19" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_2 - bool - prompt "2.6.16.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_20 - bool - prompt "2.6.16.20" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_21 - bool - prompt "2.6.16.21" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_22 - bool - prompt "2.6.16.22" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_23 - bool - prompt "2.6.16.23" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_24 - bool - prompt "2.6.16.24" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_25 - bool - prompt "2.6.16.25" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_26 - bool - prompt "2.6.16.26" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_27 - bool - prompt "2.6.16.27" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_28 - bool - prompt "2.6.16.28" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_29 - bool - prompt "2.6.16.29" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_3 - bool - prompt "2.6.16.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_30 - bool - prompt "2.6.16.30" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_31 - bool - prompt "2.6.16.31" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_32 - bool - prompt "2.6.16.32" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_33 - bool - prompt "2.6.16.33" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_34 - bool - prompt "2.6.16.34" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_35 - bool - prompt "2.6.16.35" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_36 - bool - prompt "2.6.16.36" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_4 - bool - prompt "2.6.16.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_5 - bool - prompt "2.6.16.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_6 - bool - prompt "2.6.16.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_7 - bool - prompt "2.6.16.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_8 - bool - prompt "2.6.16.8" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_16_9 - bool - prompt "2.6.16.9" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17 - bool - prompt "2.6.17" - -config KERNEL_COPY_V_2_6_17_1 - bool - prompt "2.6.17.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_10 - bool - prompt "2.6.17.10" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_11 - bool - prompt "2.6.17.11" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_12 - bool - prompt "2.6.17.12" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_13 - bool - prompt "2.6.17.13" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_14 - bool - prompt "2.6.17.14" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_2 - bool - prompt "2.6.17.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_3 - bool - prompt "2.6.17.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_4 - bool - prompt "2.6.17.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_5 - bool - prompt "2.6.17.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_6 - bool - prompt "2.6.17.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_7 - bool - prompt "2.6.17.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_8 - bool - prompt "2.6.17.8" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_17_9 - bool - prompt "2.6.17.9" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_18 - bool - prompt "2.6.18" - -config KERNEL_COPY_V_2_6_18_1 - bool - prompt "2.6.18.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_18_2 - bool - prompt "2.6.18.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_18_3 - bool - prompt "2.6.18.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_18_4 - bool - prompt "2.6.18.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_18_5 - bool - prompt "2.6.18.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_18_6 - bool - prompt "2.6.18.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_COPY_V_2_6_19 - bool - prompt "2.6.19" - -config KERNEL_COPY_V_2_6_19_1 - bool - prompt "2.6.19.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - # CT_INSERT_VERSION_ABOVE # Don't remove above line! endchoice config KERNEL_VERSION string - default "2.6.0" if KERNEL_COPY_V_2_6_0 - default "2.6.1" if KERNEL_COPY_V_2_6_1 - default "2.6.2" if KERNEL_COPY_V_2_6_2 - default "2.6.3" if KERNEL_COPY_V_2_6_3 - default "2.6.4" if KERNEL_COPY_V_2_6_4 default "2.6.5" if KERNEL_COPY_V_2_6_5 default "2.6.6" if KERNEL_COPY_V_2_6_6 default "2.6.7" if KERNEL_COPY_V_2_6_7 default "2.6.8" if KERNEL_COPY_V_2_6_8 - default "2.6.8.1" if KERNEL_COPY_V_2_6_8_1 - default "2.6.9" if KERNEL_COPY_V_2_6_9 - default "2.6.10" if KERNEL_COPY_V_2_6_10 - default "2.6.11" if KERNEL_COPY_V_2_6_11 - default "2.6.11.1" if KERNEL_COPY_V_2_6_11_1 - default "2.6.11.10" if KERNEL_COPY_V_2_6_11_10 - default "2.6.11.11" if KERNEL_COPY_V_2_6_11_11 - default "2.6.11.12" if KERNEL_COPY_V_2_6_11_12 - default "2.6.11.2" if KERNEL_COPY_V_2_6_11_2 default "2.6.11.3" if KERNEL_COPY_V_2_6_11_3 - default "2.6.11.4" if KERNEL_COPY_V_2_6_11_4 - default "2.6.11.5" if KERNEL_COPY_V_2_6_11_5 - default "2.6.11.6" if KERNEL_COPY_V_2_6_11_6 - default "2.6.11.7" if KERNEL_COPY_V_2_6_11_7 - default "2.6.11.8" if KERNEL_COPY_V_2_6_11_8 - default "2.6.11.9" if KERNEL_COPY_V_2_6_11_9 - default "2.6.12" if KERNEL_COPY_V_2_6_12 - default "2.6.12.1" if KERNEL_COPY_V_2_6_12_1 - default "2.6.12.2" if KERNEL_COPY_V_2_6_12_2 - default "2.6.12.3" if KERNEL_COPY_V_2_6_12_3 - default "2.6.12.4" if KERNEL_COPY_V_2_6_12_4 - default "2.6.12.5" if KERNEL_COPY_V_2_6_12_5 - default "2.6.12.6" if KERNEL_COPY_V_2_6_12_6 - default "2.6.13" if KERNEL_COPY_V_2_6_13 - default "2.6.13.1" if KERNEL_COPY_V_2_6_13_1 - default "2.6.13.2" if KERNEL_COPY_V_2_6_13_2 - default "2.6.13.3" if KERNEL_COPY_V_2_6_13_3 - default "2.6.13.4" if KERNEL_COPY_V_2_6_13_4 - default "2.6.13.5" if KERNEL_COPY_V_2_6_13_5 - default "2.6.14" if KERNEL_COPY_V_2_6_14 - default "2.6.14.1" if KERNEL_COPY_V_2_6_14_1 - default "2.6.14.2" if KERNEL_COPY_V_2_6_14_2 - default "2.6.14.3" if KERNEL_COPY_V_2_6_14_3 - default "2.6.14.4" if KERNEL_COPY_V_2_6_14_4 - default "2.6.14.5" if KERNEL_COPY_V_2_6_14_5 - default "2.6.14.6" if KERNEL_COPY_V_2_6_14_6 - default "2.6.14.7" if KERNEL_COPY_V_2_6_14_7 - default "2.6.15" if KERNEL_COPY_V_2_6_15 - default "2.6.15.1" if KERNEL_COPY_V_2_6_15_1 - default "2.6.15.2" if KERNEL_COPY_V_2_6_15_2 - default "2.6.15.3" if KERNEL_COPY_V_2_6_15_3 - default "2.6.15.4" if KERNEL_COPY_V_2_6_15_4 - default "2.6.15.5" if KERNEL_COPY_V_2_6_15_5 - default "2.6.15.6" if KERNEL_COPY_V_2_6_15_6 - default "2.6.15.7" if KERNEL_COPY_V_2_6_15_7 - default "2.6.16" if KERNEL_COPY_V_2_6_16 - default "2.6.16.1" if KERNEL_COPY_V_2_6_16_1 - default "2.6.16.10" if KERNEL_COPY_V_2_6_16_10 - default "2.6.16.11" if KERNEL_COPY_V_2_6_16_11 - default "2.6.16.12" if KERNEL_COPY_V_2_6_16_12 - default "2.6.16.13" if KERNEL_COPY_V_2_6_16_13 - default "2.6.16.14" if KERNEL_COPY_V_2_6_16_14 - default "2.6.16.15" if KERNEL_COPY_V_2_6_16_15 - default "2.6.16.16" if KERNEL_COPY_V_2_6_16_16 - default "2.6.16.17" if KERNEL_COPY_V_2_6_16_17 - default "2.6.16.18" if KERNEL_COPY_V_2_6_16_18 - default "2.6.16.19" if KERNEL_COPY_V_2_6_16_19 - default "2.6.16.2" if KERNEL_COPY_V_2_6_16_2 - default "2.6.16.20" if KERNEL_COPY_V_2_6_16_20 - default "2.6.16.21" if KERNEL_COPY_V_2_6_16_21 - default "2.6.16.22" if KERNEL_COPY_V_2_6_16_22 - default "2.6.16.23" if KERNEL_COPY_V_2_6_16_23 - default "2.6.16.24" if KERNEL_COPY_V_2_6_16_24 - default "2.6.16.25" if KERNEL_COPY_V_2_6_16_25 - default "2.6.16.26" if KERNEL_COPY_V_2_6_16_26 - default "2.6.16.27" if KERNEL_COPY_V_2_6_16_27 - default "2.6.16.28" if KERNEL_COPY_V_2_6_16_28 - default "2.6.16.29" if KERNEL_COPY_V_2_6_16_29 - default "2.6.16.3" if KERNEL_COPY_V_2_6_16_3 - default "2.6.16.30" if KERNEL_COPY_V_2_6_16_30 - default "2.6.16.31" if KERNEL_COPY_V_2_6_16_31 - default "2.6.16.32" if KERNEL_COPY_V_2_6_16_32 - default "2.6.16.33" if KERNEL_COPY_V_2_6_16_33 - default "2.6.16.34" if KERNEL_COPY_V_2_6_16_34 - default "2.6.16.35" if KERNEL_COPY_V_2_6_16_35 - default "2.6.16.36" if KERNEL_COPY_V_2_6_16_36 - default "2.6.16.4" if KERNEL_COPY_V_2_6_16_4 - default "2.6.16.5" if KERNEL_COPY_V_2_6_16_5 - default "2.6.16.6" if KERNEL_COPY_V_2_6_16_6 - default "2.6.16.7" if KERNEL_COPY_V_2_6_16_7 - default "2.6.16.8" if KERNEL_COPY_V_2_6_16_8 - default "2.6.16.9" if KERNEL_COPY_V_2_6_16_9 - default "2.6.17" if KERNEL_COPY_V_2_6_17 - default "2.6.17.1" if KERNEL_COPY_V_2_6_17_1 - default "2.6.17.10" if KERNEL_COPY_V_2_6_17_10 - default "2.6.17.11" if KERNEL_COPY_V_2_6_17_11 - default "2.6.17.12" if KERNEL_COPY_V_2_6_17_12 - default "2.6.17.13" if KERNEL_COPY_V_2_6_17_13 - default "2.6.17.14" if KERNEL_COPY_V_2_6_17_14 - default "2.6.17.2" if KERNEL_COPY_V_2_6_17_2 - default "2.6.17.3" if KERNEL_COPY_V_2_6_17_3 - default "2.6.17.4" if KERNEL_COPY_V_2_6_17_4 - default "2.6.17.5" if KERNEL_COPY_V_2_6_17_5 - default "2.6.17.6" if KERNEL_COPY_V_2_6_17_6 - default "2.6.17.7" if KERNEL_COPY_V_2_6_17_7 - default "2.6.17.8" if KERNEL_COPY_V_2_6_17_8 - default "2.6.17.9" if KERNEL_COPY_V_2_6_17_9 - default "2.6.18" if KERNEL_COPY_V_2_6_18 - default "2.6.18.1" if KERNEL_COPY_V_2_6_18_1 - default "2.6.18.2" if KERNEL_COPY_V_2_6_18_2 - default "2.6.18.3" if KERNEL_COPY_V_2_6_18_3 - default "2.6.18.4" if KERNEL_COPY_V_2_6_18_4 - default "2.6.18.5" if KERNEL_COPY_V_2_6_18_5 - default "2.6.18.6" if KERNEL_COPY_V_2_6_18_6 - default "2.6.19" if KERNEL_COPY_V_2_6_19 - default "2.6.19.1" if KERNEL_COPY_V_2_6_19_1 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! diff -r 419d959441ed -r 447b203edc2e config/kernel_linux_headers_install.in --- a/config/kernel_linux_headers_install.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/kernel_linux_headers_install.in Tue Aug 14 20:11:44 2007 +0000 @@ -2,203 +2,24 @@ bool prompt "Linux kernel version" -config KERNEL_INSTALL_V_2_6_18 - bool - prompt "2.6.18" - depends on OBSOLETE - -config KERNEL_INSTALL_V_2_6_18_1 - bool - prompt "2.6.18.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_18_2 - bool - prompt "2.6.18.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_18_3 - bool - prompt "2.6.18.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_18_4 - bool - prompt "2.6.18.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_18_5 - bool - prompt "2.6.18.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_18_6 - bool - prompt "2.6.18.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_18_7 - bool - prompt "2.6.18.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - config KERNEL_INSTALL_V_2_6_18_8 bool - prompt "2.6.18.8" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_INSTALL_V_2_6_19 - bool - prompt "2.6.19" - depends on OBSOLETE - -config KERNEL_INSTALL_V_2_6_19_1 - bool - prompt "2.6.19.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_19_2 - bool - prompt "2.6.19.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_19_3 - bool - prompt "2.6.19.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_19_4 - bool - prompt "2.6.19.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_19_5 - bool - prompt "2.6.19.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_19_6 - bool - prompt "2.6.19.6" + prompt "2.6.18.8 (OBSOLETE)" depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE config KERNEL_INSTALL_V_2_6_19_7 bool - prompt "2.6.19.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_INSTALL_V_2_6_20 - bool - prompt "2.6.20" - depends on OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_1 - bool - prompt "2.6.20.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_2 - bool - prompt "2.6.20.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_3 - bool - prompt "2.6.20.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_4 - bool - prompt "2.6.20.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_5 - bool - prompt "2.6.20.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_6 - bool - prompt "2.6.20.6" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_7 - bool - prompt "2.6.20.7" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_8 - bool - prompt "2.6.20.8" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_9 - bool - prompt "2.6.20.9" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_10 - bool - prompt "2.6.20.10" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_11 - bool - prompt "2.6.20.11" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_12 - bool - prompt "2.6.20.12" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_13 - bool - prompt "2.6.20.13" - depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE - -config KERNEL_INSTALL_V_2_6_20_14 - bool - prompt "2.6.20.14" + prompt "2.6.19.7 (OBSOLETE)" depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE config KERNEL_INSTALL_V_2_6_20_15 bool - prompt "2.6.20.15" - depends on KERNEL_VERSION_SEE_EXTRAVERSION + prompt "2.6.20.15 (OBSOLETE)" + depends on KERNEL_VERSION_SEE_EXTRAVERSION && OBSOLETE -config KERNEL_INSTALL_V_2_6_21 +config KERNEL_INSTALL_V_2_6_21_7 bool - prompt "2.6.21" - -config KERNEL_INSTALL_V_2_6_21_1 - bool - prompt "2.6.21.1" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_INSTALL_V_2_6_21_2 - bool - prompt "2.6.21.2" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_INSTALL_V_2_6_21_3 - bool - prompt "2.6.21.3" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_INSTALL_V_2_6_21_4 - bool - prompt "2.6.21.4" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_INSTALL_V_2_6_21_5 - bool - prompt "2.6.21.5" - depends on KERNEL_VERSION_SEE_EXTRAVERSION - -config KERNEL_INSTALL_V_2_6_21_6 - bool - prompt "2.6.21.6" + prompt "2.6.21.7" depends on KERNEL_VERSION_SEE_EXTRAVERSION config KERNEL_INSTALL_V_2_6_22 @@ -221,46 +42,10 @@ config KERNEL_VERSION string - default "2.6.18" if KERNEL_INSTALL_V_2_6_18 - default "2.6.18.1" if KERNEL_INSTALL_V_2_6_18_1 - default "2.6.18.2" if KERNEL_INSTALL_V_2_6_18_2 - default "2.6.18.3" if KERNEL_INSTALL_V_2_6_18_3 - default "2.6.18.4" if KERNEL_INSTALL_V_2_6_18_4 - default "2.6.18.5" if KERNEL_INSTALL_V_2_6_18_5 - default "2.6.18.6" if KERNEL_INSTALL_V_2_6_18_6 - default "2.6.18.7" if KERNEL_INSTALL_V_2_6_18_7 default "2.6.18.8" if KERNEL_INSTALL_V_2_6_18_8 - default "2.6.19" if KERNEL_INSTALL_V_2_6_19 - default "2.6.19.1" if KERNEL_INSTALL_V_2_6_19_1 - default "2.6.19.2" if KERNEL_INSTALL_V_2_6_19_2 - default "2.6.19.3" if KERNEL_INSTALL_V_2_6_19_3 - default "2.6.19.4" if KERNEL_INSTALL_V_2_6_19_4 - default "2.6.19.5" if KERNEL_INSTALL_V_2_6_19_5 - default "2.6.19.6" if KERNEL_INSTALL_V_2_6_19_6 default "2.6.19.7" if KERNEL_INSTALL_V_2_6_19_7 - default "2.6.20" if KERNEL_INSTALL_V_2_6_20 - default "2.6.20.1" if KERNEL_INSTALL_V_2_6_20_1 - default "2.6.20.2" if KERNEL_INSTALL_V_2_6_20_2 - default "2.6.20.3" if KERNEL_INSTALL_V_2_6_20_3 - default "2.6.20.4" if KERNEL_INSTALL_V_2_6_20_4 - default "2.6.20.5" if KERNEL_INSTALL_V_2_6_20_5 - default "2.6.20.6" if KERNEL_INSTALL_V_2_6_20_6 - default "2.6.20.7" if KERNEL_INSTALL_V_2_6_20_7 - default "2.6.20.8" if KERNEL_INSTALL_V_2_6_20_8 - default "2.6.20.9" if KERNEL_INSTALL_V_2_6_20_9 - default "2.6.20.10" if KERNEL_INSTALL_V_2_6_20_10 - default "2.6.20.11" if KERNEL_INSTALL_V_2_6_20_11 - default "2.6.20.12" if KERNEL_INSTALL_V_2_6_20_12 - default "2.6.20.13" if KERNEL_INSTALL_V_2_6_20_13 - default "2.6.20.14" if KERNEL_INSTALL_V_2_6_20_14 default "2.6.20.15" if KERNEL_INSTALL_V_2_6_20_15 - default "2.6.21" if KERNEL_INSTALL_V_2_6_21 - default "2.6.21.1" if KERNEL_INSTALL_V_2_6_21_1 - default "2.6.21.2" if KERNEL_INSTALL_V_2_6_21_2 - default "2.6.21.3" if KERNEL_INSTALL_V_2_6_21_3 - default "2.6.21.4" if KERNEL_INSTALL_V_2_6_21_4 - default "2.6.21.5" if KERNEL_INSTALL_V_2_6_21_5 - default "2.6.21.6" if KERNEL_INSTALL_V_2_6_21_6 + default "2.6.21.7" if KERNEL_INSTALL_V_2_6_21_7 default "2.6.22" if KERNEL_INSTALL_V_2_6_22 default "2.6.22.1" if KERNEL_INSTALL_V_2_6_22_1 default "2.6.22.2" if KERNEL_INSTALL_V_2_6_22_2 diff -r 419d959441ed -r 447b203edc2e config/libc_glibc.in --- a/config/libc_glibc.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/libc_glibc.in Tue Aug 14 20:11:44 2007 +0000 @@ -4,103 +4,10 @@ bool prompt "glibc version" -config LIBC_V_1_09_1 - bool - prompt "1.09.1" - depends on OBSOLETE - -config LIBC_V_2_0_1 - bool - prompt "2.0.1" - depends on OBSOLETE - -config LIBC_V_2_0_6 - bool - prompt "2.0.6" - depends on OBSOLETE - -config LIBC_V_2_1_1 - bool - prompt "2.1.1" - depends on OBSOLETE - -config LIBC_V_2_1_2 - bool - prompt "2.1.2" - depends on OBSOLETE - -config LIBC_V_2_1_3 - bool - prompt "2.1.3" - depends on OBSOLETE - -config LIBC_V_2_2 - bool - prompt "2.2" - depends on OBSOLETE - -config LIBC_V_2_2_1 - bool - prompt "2.2.1" - depends on OBSOLETE - -config LIBC_V_2_2_2 - bool - prompt "2.2.2" - depends on OBSOLETE - -config LIBC_V_2_2_3 - bool - prompt "2.2.3" - depends on OBSOLETE - -config LIBC_V_2_2_4 - bool - prompt "2.2.4" - depends on OBSOLETE - -config LIBC_V_2_2_5 - bool - prompt "2.2.5" - depends on OBSOLETE - -config LIBC_V_2_3 - bool - prompt "2.3" - depends on OBSOLETE - -config LIBC_V_2_3_1 - bool - prompt "2.3.1" - depends on OBSOLETE - -config LIBC_V_2_3_2 - bool - prompt "2.3.2" - depends on OBSOLETE - -config LIBC_V_2_3_3 - bool - prompt "2.3.3" - depends on OBSOLETE - -config LIBC_V_2_3_4 - bool - prompt "2.3.4" - depends on OBSOLETE - -config LIBC_V_2_3_5 - bool - prompt "2.3.5" - depends on OBSOLETE - config LIBC_V_2_3_6 bool - prompt "2.3.6" - -config LIBC_V_2_4 - bool - prompt "2.4" + prompt "2.3.6 (OBSOLETE)" + depends on OBSOLETE config LIBC_V_2_5 bool @@ -108,8 +15,7 @@ config LIBC_V_2_5_1 bool - prompt "2.5.1 (EXPERIMENTAL)" - depends on EXPERIMENTAL + prompt "2.5.1" config LIBC_V_2_6 bool @@ -127,24 +33,6 @@ config LIBC_VERSION string - default "1.09.1" if LIBC_V_1_09_1 - default "2.0.1" if LIBC_V_2_0_1 - default "2.0.6" if LIBC_V_2_0_6 - default "2.1.1" if LIBC_V_2_1_1 - default "2.1.2" if LIBC_V_2_1_2 - default "2.1.3" if LIBC_V_2_1_3 - default "2.2" if LIBC_V_2_2 - default "2.2.1" if LIBC_V_2_2_1 - default "2.2.2" if LIBC_V_2_2_2 - default "2.2.3" if LIBC_V_2_2_3 - default "2.2.4" if LIBC_V_2_2_4 - default "2.2.5" if LIBC_V_2_2_5 - default "2.3" if LIBC_V_2_3 - default "2.3.1" if LIBC_V_2_3_1 - default "2.3.2" if LIBC_V_2_3_2 - default "2.3.3" if LIBC_V_2_3_3 - default "2.3.4" if LIBC_V_2_3_4 - default "2.3.5" if LIBC_V_2_3_5 default "2.3.6" if LIBC_V_2_3_6 default "2.4" if LIBC_V_2_4 default "2.5" if LIBC_V_2_5 diff -r 419d959441ed -r 447b203edc2e config/libc_uClibc.in --- a/config/libc_uClibc.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/libc_uClibc.in Tue Aug 14 20:11:44 2007 +0000 @@ -12,29 +12,19 @@ bool prompt "" -config LIBC_V_0_9_26 - bool - prompt "0.9.26" - depends on OBSOLETE - -config LIBC_V_0_9_27 - bool - prompt "0.9.27" - depends on OBSOLETE - config LIBC_V_0_9_28 bool - prompt "0.9.28" + prompt "0.9.28 (OBSOLETE)" depends on OBSOLETE config LIBC_V_0_9_28_1 bool - prompt "0.9.28.1" + prompt "0.9.28.1 (OBSOLETE)" depends on OBSOLETE config LIBC_V_0_9_28_2 bool - prompt "0.9.28.2" + prompt "0.9.28.2 (OBSOLETE)" depends on OBSOLETE config LIBC_V_0_9_28_3 @@ -53,8 +43,6 @@ string prompt "Enter date (YYYYMMDD)" if LIBC_V_specific_date default "snapshot" if LIBC_V_snapshot - default "0.9.26" if LIBC_V_0_9_26 - default "0.9.27" if LIBC_V_0_9_27 default "0.9.28" if LIBC_V_0_9_28 default "0.9.28.1" if LIBC_V_0_9_28_1 default "0.9.28.2" if LIBC_V_0_9_28_2 @@ -62,6 +50,12 @@ default "0.9.29" if LIBC_V_0_9_29 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! + help + Enter the date of the snapshot you want to use in the form: YYYYMMDD + where YYYY is the 4-digit year, MM the 2-digit month and DD the 2-digit + day in the month. + + Please note that uClibc site removes snapshots older than a month. choice bool diff -r 419d959441ed -r 447b203edc2e config/tools/libelf.in --- a/config/tools/libelf.in Tue Aug 14 19:32:22 2007 +0000 +++ b/config/tools/libelf.in Tue Aug 14 20:11:44 2007 +0000 @@ -19,44 +19,9 @@ bool prompt "libelf version" -config LIBELF_V_0_8_0 - bool - prompt "0.8.0" - depends on OBSOLETE - -config LIBELF_V_0_8_2 - bool - prompt "0.8.2" - depends on OBSOLETE - -config LIBELF_V_0_8_3 - bool - prompt "0.8.3" - depends on OBSOLETE - -config LIBELF_V_0_8_4 - bool - prompt "0.8.4" - depends on OBSOLETE - -config LIBELF_V_0_8_5 - bool - prompt "0.8.5" - depends on OBSOLETE - -config LIBELF_V_0_8_6 - bool - prompt "0.8.6" - depends on OBSOLETE - -config LIBELF_V_0_8_7 - bool - prompt "0.8.7" - depends on OBSOLETE - config LIBELF_V_0_8_8 bool - prompt "0.8.8" + prompt "0.8.8 (OBSOLETE)" depends on OBSOLETE config LIBELF_V_0_8_9 @@ -69,13 +34,6 @@ config LIBELF_VERSION string - default "0.8.0" if LIBELF_V_0_8_0 - default "0.8.2" if LIBELF_V_0_8_2 - default "0.8.3" if LIBELF_V_0_8_3 - default "0.8.4" if LIBELF_V_0_8_4 - default "0.8.5" if LIBELF_V_0_8_5 - default "0.8.6" if LIBELF_V_0_8_6 - default "0.8.7" if LIBELF_V_0_8_7 default "0.8.8" if LIBELF_V_0_8_8 default "0.8.9" if LIBELF_V_0_8_9 # CT_INSERT_VERSION_STRING_ABOVE diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.11.2/gcc-pr3106.patch --- a/patches/binutils/2.11.2/gcc-pr3106.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -See http://gcc.gnu.org/PR3106 -Backported from gcc-3.0.x - -Fixes error - .../binutils-2.11.2/libiberty/strerror.c:468: error: conflicting types for `sys_nerr' - /usr/include/stdio.h:258: error: previous declaration of `sys_nerr' - make[1]: *** [strerror.o] Error 1 - make: *** [all-libiberty] Error 2 -on Mac OS X. - ---- binutils-2.11.2/libiberty/strerror.c.old 2004-03-24 16:23:19.000000000 -0800 -+++ binutils-2.11.2/libiberty/strerror.c 2004-03-24 16:23:48.000000000 -0800 -@@ -13,6 +13,7 @@ - incompatible with our later declaration, perhaps by using const - attributes. So we hide the declaration in errno.h (if any) using a - macro. */ -+#define sys_nerr sys_nerr__ - #define sys_errlist sys_errlist__ - #endif - -@@ -20,6 +21,7 @@ - #include - - #ifdef HAVE_SYS_ERRLIST -+#undef sys_nerr - #undef sys_errlist - #endif - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.13.90.0.2/README --- a/patches/binutils/2.13.90.0.2/README Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -The files rh62*.patch are from the Red Hat 6.2 file -binutils-2.13.90.0.2-2.src.rpm - -I am trusting here that Red Hat's patches are appropriate for all CPU -types. If I'm wrong, just remove the offending patch... -- Dan Kegel diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.13.90.0.2/rh62-binutils-2.11.93.0.2-sparc-nonpic.patch --- a/patches/binutils/2.13.90.0.2/rh62-binutils-2.11.93.0.2-sparc-nonpic.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -2002-04-20 Jakub Jelinek - - * elf32-sparc.c (elf32_sparc_relocate_section): Find real output - section with SEC_MERGE. - * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. - ---- binutils/bfd/elf32-sparc.c.jj Sat Apr 20 22:11:57 2002 -+++ binutils/bfd/elf32-sparc.c Sat Apr 20 23:06:33 2002 -@@ -1144,7 +1144,7 @@ elf32_sparc_relocate_section (output_bfd - struct elf_link_hash_entry *h; - Elf_Internal_Sym *sym; - asection *sec; -- bfd_vma relocation, off; -+ bfd_vma relocation, off, orig_addend = 0; - bfd_reloc_status_type r; - boolean is_plt = false; - boolean unresolved_reloc; -@@ -1192,6 +1192,7 @@ elf32_sparc_relocate_section (output_bfd - { - sym = local_syms + r_symndx; - sec = local_sections[r_symndx]; -+ orig_addend = rel->r_addend; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); - } - else -@@ -1527,6 +1528,25 @@ elf32_sparc_relocate_section (output_bfd - asection *osec; - - osec = sec->output_section; -+ /* FIXME: As soon as making sections zero size -+ is possible, this if can go away. */ -+ if (bfd_is_abs_section (osec) -+ && h == NULL -+ && (sec->flags & SEC_MERGE) -+ && ELF_ST_TYPE (sym->st_info) == STT_SECTION -+ && (elf_section_data (sec)->sec_info_type -+ == ELF_INFO_TYPE_MERGE)) -+ { -+ asection *msec; -+ -+ msec = sec; -+ _bfd_merged_section_offset (output_bfd, &msec, -+ elf_section_data (sec)->sec_info, -+ sym->st_value + orig_addend, -+ (bfd_vma) 0); -+ osec = msec->output_section; -+ } -+ - indx = elf_section_data (osec)->dynindx; - - /* FIXME: we really should be able to link non-pic ---- binutils/bfd/elf64-sparc.c.jj Sat Apr 20 22:11:57 2002 -+++ binutils/bfd/elf64-sparc.c Sat Apr 20 23:12:18 2002 -@@ -1939,7 +1939,7 @@ sparc64_elf_relocate_section (output_bfd - struct elf_link_hash_entry *h; - Elf_Internal_Sym *sym; - asection *sec; -- bfd_vma relocation, off; -+ bfd_vma relocation, off, orig_addend = 0; - bfd_reloc_status_type r; - boolean is_plt = false; - boolean unresolved_reloc; -@@ -1982,6 +1982,7 @@ sparc64_elf_relocate_section (output_bfd - { - sym = local_syms + r_symndx; - sec = local_sections[r_symndx]; -+ orig_addend = rel->r_addend; - relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); - } - else -@@ -2211,6 +2212,25 @@ sparc64_elf_relocate_section (output_bfd - asection *osec; - - osec = sec->output_section; -+ /* FIXME: As soon as making sections zero size -+ is possible, this if can go away. */ -+ if (bfd_is_abs_section (osec) -+ && h == NULL -+ && (sec->flags & SEC_MERGE) -+ && ELF_ST_TYPE (sym->st_info) == STT_SECTION -+ && (elf_section_data (sec)->sec_info_type -+ == ELF_INFO_TYPE_MERGE)) -+ { -+ asection *msec; -+ -+ msec = sec; -+ _bfd_merged_section_offset (output_bfd, &msec, -+ elf_section_data (sec)->sec_info, -+ sym->st_value + orig_addend, -+ (bfd_vma) 0); -+ osec = msec->output_section; -+ } -+ - indx = elf_section_data (osec)->dynindx; - - /* FIXME: we really should be able to link non-pic diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-glibc21.patch --- a/patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-glibc21.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ ---- binutils/ld/emulparams/elf_i386_glibc21.sh.jj Sat Aug 3 17:04:41 2002 -+++ binutils/ld/emulparams/elf_i386_glibc21.sh Sat Aug 3 17:04:41 2002 -@@ -0,0 +1,11 @@ -+SCRIPT_NAME=elf -+OUTPUT_FORMAT="elf32-i386" -+TEXT_START_ADDR=0x08048000 -+MAXPAGESIZE=0x1000 -+NONPAGED_TEXT_START_ADDR=0x08048000 -+ARCH=i386 -+MACHINE= -+NOP=0x9090 -+TEMPLATE_NAME=elf32 -+GENERATE_SHLIB_SCRIPT=yes -+LIB_PATH=/usr/i386-glibc21-linux/lib:/usr/local/lib ---- binutils/ld/configure.tgt.jj Thu Aug 1 20:49:32 2002 -+++ binutils/ld/configure.tgt Sat Aug 3 17:06:18 2002 -@@ -143,7 +143,8 @@ i[3456]86-*-linux*aout*) targ_emul=i386l - ;; - i[3456]86-*-linux*oldld) targ_emul=i386linux; targ_extra_emuls=elf_i386 ;; - i[3456]86-*-linux-gnu*) targ_emul=elf_i386 -- targ_extra_emuls=i386linux -+ targ_extra_emuls="i386linux elf_i386_glibc21" -+ targ_extra_libpath=elf_i386_glibc21 - if test x${want64} = xtrue; then - targ_extra_emuls="$targ_extra_emuls elf_x86_64" - fi ---- binutils/ld/Makefile.am.jj Thu Aug 1 20:49:32 2002 -+++ binutils/ld/Makefile.am Sat Aug 3 17:04:41 2002 -@@ -181,6 +181,7 @@ ALL_EMULATIONS = \ - eelf_i386.o \ - eelf_i386_be.o \ - eelf_i386_chaos.o \ -+ eelf_i386_glibc21.o \ - eelf_i386_fbsd.o \ - eelf_i386_ldso.o \ - eelf_s390.o \ -@@ -718,6 +719,9 @@ eelf_i386_be.c: $(srcdir)/emulparams/elf - eelf_i386_chaos.c: $(srcdir)/emulparams/elf_i386_chaos.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf_chaos.sc ${GEN_DEPENDS} - ${GENSCRIPTS} elf_i386_chaos "$(tdir_elf_i386_chaos)" -+eelf_i386_glibc21.c: $(srcdir)/emulparams/elf_i386_glibc21.sh \ -+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} -+ ${GENSCRIPTS} elf_i386_glibc21 "$(tdir_elf_i386_glibc21)" - eelf_i386_fbsd.c: $(srcdir)/emulparams/elf_i386_fbsd.sh \ - $(srcdir)/emulparams/elf_i386.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} ---- binutils/ld/Makefile.in.jj Thu Aug 1 20:49:32 2002 -+++ binutils/ld/Makefile.in Sat Aug 3 17:07:34 2002 -@@ -1197,6 +1197,9 @@ eelf_i386_be.c: $(srcdir)/emulparams/elf - eelf_i386_chaos.c: $(srcdir)/emulparams/elf_i386_chaos.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf_chaos.sc ${GEN_DEPENDS} - ${GENSCRIPTS} elf_i386_chaos "$(tdir_elf_i386_chaos)" -+eelf_i386_glibc21.c: $(srcdir)/emulparams/elf_i386_glibc21.sh \ -+ $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} -+ ${GENSCRIPTS} elf_i386_glibc21 "$(tdir_elf_i386_glibc21)" - eelf_i386_fbsd.c: $(srcdir)/emulparams/elf_i386_fbsd.sh \ - $(srcdir)/emulparams/elf_i386.sh \ - $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS} diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-gotpc.patch --- a/patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-gotpc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,372 +0,0 @@ -2002-08-03 Jakub Jelinek - - * config/tc-i386.c (output_insn): Save frag_now and frag_now_fix () - at start of insn, pass it to output_disp and output_imm. - (output_disp): Added arguments. If _GLOBAL_OFFSET_TABLE_ is seen - in displacement for R_386_32 reloc, use R_386_GOTPC and compute - properly addend. - (output_imm): Added arguments. Compute properly addend for - R_386_GOTPC. - (md_apply_fix3): Remove R_386_GOTPC handling. - * testsuite/gas/i386/gotpc.s: New. - * testsuite/gas/i386/gotpc.d: New. - * testsuite/gas/i386/i386.exp: Add gotpc test. - ---- binutils/gas/config/tc-i386.c.jj 2002-07-18 11:35:39.000000000 +0200 -+++ binutils/gas/config/tc-i386.c 2002-08-02 21:13:18.000000000 +0200 -@@ -104,8 +104,10 @@ static void output_insn PARAMS ((void)); - static void output_branch PARAMS ((void)); - static void output_jump PARAMS ((void)); - static void output_interseg_jump PARAMS ((void)); --static void output_imm PARAMS ((void)); --static void output_disp PARAMS ((void)); -+static void output_imm PARAMS ((fragS *insn_start_frag, -+ offsetT insn_start_off)); -+static void output_disp PARAMS ((fragS *insn_start_frag, -+ offsetT insn_start_off)); - #ifndef I386COFF - static void s_bss PARAMS ((int)); - #endif -@@ -3101,14 +3103,21 @@ output_interseg_jump () - md_number_to_chars (p + size, (valueT) i.op[0].imms->X_add_number, 2); - } - -+ - static void - output_insn () - { -+ fragS *insn_start_frag; -+ offsetT insn_start_off; -+ - /* Tie dwarf2 debug info to the address at the start of the insn. - We can't do this after the insn has been output as the current - frag may have been closed off. eg. by frag_var. */ - dwarf2_emit_insn (0); - -+ insn_start_frag = frag_now; -+ insn_start_off = frag_now_fix (); -+ - /* Output jumps. */ - if (i.tm.opcode_modifier & Jump) - output_branch (); -@@ -3179,10 +3188,10 @@ output_insn () - } - - if (i.disp_operands) -- output_disp (); -+ output_disp (insn_start_frag, insn_start_off); - - if (i.imm_operands) -- output_imm (); -+ output_imm (insn_start_frag, insn_start_off); - } - - #ifdef DEBUG386 -@@ -3194,7 +3203,9 @@ output_insn () - } - - static void --output_disp () -+output_disp (insn_start_frag, insn_start_off) -+ fragS *insn_start_frag; -+ offsetT insn_start_off; - { - char *p; - unsigned int n; -@@ -3224,6 +3235,7 @@ output_disp () - } - else - { -+ RELOC_ENUM reloc_type; - int size = 4; - int sign = 0; - int pcrel = (i.flags[n] & Operand_PCrel) != 0; -@@ -3266,16 +3278,50 @@ output_disp () - } - - p = frag_more (size); -+ reloc_type = reloc (size, pcrel, sign, i.reloc[n]); -+#ifdef BFD_ASSEMBLER -+ if (reloc_type == BFD_RELOC_32 -+ && GOT_symbol -+ && GOT_symbol == i.op[n].disps->X_add_symbol -+ && (i.op[n].disps->X_op == O_symbol -+ || (i.op[n].disps->X_op == O_add -+ && ((symbol_get_value_expression -+ (i.op[n].disps->X_op_symbol)->X_op) -+ == O_subtract)))) -+ { -+ offsetT add; -+ -+ if (insn_start_frag == frag_now) -+ add = (p - frag_now->fr_literal) - insn_start_off; -+ else -+ { -+ fragS *fr; -+ -+ add = insn_start_frag->fr_fix - insn_start_off; -+ for (fr = insn_start_frag->fr_next; -+ fr && fr != frag_now; fr = fr->fr_next) -+ add += fr->fr_fix; -+ add += p - frag_now->fr_literal; -+ } -+ -+ /* We don't support dynamic linking on x86-64 yet. */ -+ if (flag_code == CODE_64BIT) -+ abort (); -+ reloc_type = BFD_RELOC_386_GOTPC; -+ i.op[n].disps->X_add_number += add; -+ } -+#endif - fix_new_exp (frag_now, p - frag_now->fr_literal, size, -- i.op[n].disps, pcrel, -- reloc (size, pcrel, sign, i.reloc[n])); -+ i.op[n].disps, pcrel, reloc_type); - } - } - } - } - - static void --output_imm () -+output_imm (insn_start_frag, insn_start_off) -+ fragS *insn_start_frag; -+ offsetT insn_start_off; - { - char *p; - unsigned int n; -@@ -3328,6 +3374,48 @@ output_imm () - p = frag_more (size); - reloc_type = reloc (size, 0, sign, i.reloc[n]); - #ifdef BFD_ASSEMBLER -+ /* This is tough to explain. We end up with this one if we -+ * have operands that look like -+ * "_GLOBAL_OFFSET_TABLE_+[.-.L284]". The goal here is to -+ * obtain the absolute address of the GOT, and it is strongly -+ * preferable from a performance point of view to avoid using -+ * a runtime relocation for this. The actual sequence of -+ * instructions often look something like: -+ * -+ * call .L66 -+ * .L66: -+ * popl %ebx -+ * addl $_GLOBAL_OFFSET_TABLE_+[.-.L66],%ebx -+ * -+ * The call and pop essentially return the absolute address -+ * of the label .L66 and store it in %ebx. The linker itself -+ * will ultimately change the first operand of the addl so -+ * that %ebx points to the GOT, but to keep things simple, the -+ * .o file must have this operand set so that it generates not -+ * the absolute address of .L66, but the absolute address of -+ * itself. This allows the linker itself simply treat a GOTPC -+ * relocation as asking for a pcrel offset to the GOT to be -+ * added in, and the addend of the relocation is stored in the -+ * operand field for the instruction itself. -+ * -+ * Our job here is to fix the operand so that it would add -+ * the correct offset so that %ebx would point to itself. The -+ * thing that is tricky is that .-.L66 will point to the -+ * beginning of the instruction, so we need to further modify -+ * the operand so that it will point to itself. There are -+ * other cases where you have something like: -+ * -+ * .long $_GLOBAL_OFFSET_TABLE_+[.-.L66] -+ * -+ * and here no correction would be required. Internally in -+ * the assembler we treat operands of this form as not being -+ * pcrel since the '.' is explicitly mentioned, and I wonder -+ * whether it would simplify matters to do it this way. Who -+ * knows. In earlier versions of the PIC patches, the -+ * pcrel_adjust field was used to store the correction, but -+ * since the expression is not pcrel, I felt it would be -+ * confusing to do it this way. */ -+ - if (reloc_type == BFD_RELOC_32 - && GOT_symbol - && GOT_symbol == i.op[n].imms->X_add_symbol -@@ -3337,11 +3425,26 @@ output_imm () - (i.op[n].imms->X_op_symbol)->X_op) - == O_subtract)))) - { -+ offsetT add; -+ -+ if (insn_start_frag == frag_now) -+ add = (p - frag_now->fr_literal) - insn_start_off; -+ else -+ { -+ fragS *fr; -+ -+ add = insn_start_frag->fr_fix - insn_start_off; -+ for (fr = insn_start_frag->fr_next; -+ fr && fr != frag_now; fr = fr->fr_next) -+ add += fr->fr_fix; -+ add += p - frag_now->fr_literal; -+ } -+ - /* We don't support dynamic linking on x86-64 yet. */ - if (flag_code == CODE_64BIT) - abort (); - reloc_type = BFD_RELOC_386_GOTPC; -- i.op[n].imms->X_add_number += 3; -+ i.op[n].imms->X_add_number += add; - } - #endif - fix_new_exp (frag_now, p - frag_now->fr_literal, size, -@@ -4542,48 +4645,6 @@ md_apply_fix3 (fixP, valP, seg) - runtime we merely add the offset to the actual PLT entry. */ - value = -4; - break; -- case BFD_RELOC_386_GOTPC: -- --/* This is tough to explain. We end up with this one if we have -- * operands that look like "_GLOBAL_OFFSET_TABLE_+[.-.L284]". The goal -- * here is to obtain the absolute address of the GOT, and it is strongly -- * preferable from a performance point of view to avoid using a runtime -- * relocation for this. The actual sequence of instructions often look -- * something like: -- * -- * call .L66 -- * .L66: -- * popl %ebx -- * addl $_GLOBAL_OFFSET_TABLE_+[.-.L66],%ebx -- * -- * The call and pop essentially return the absolute address of -- * the label .L66 and store it in %ebx. The linker itself will -- * ultimately change the first operand of the addl so that %ebx points to -- * the GOT, but to keep things simple, the .o file must have this operand -- * set so that it generates not the absolute address of .L66, but the -- * absolute address of itself. This allows the linker itself simply -- * treat a GOTPC relocation as asking for a pcrel offset to the GOT to be -- * added in, and the addend of the relocation is stored in the operand -- * field for the instruction itself. -- * -- * Our job here is to fix the operand so that it would add the correct -- * offset so that %ebx would point to itself. The thing that is tricky is -- * that .-.L66 will point to the beginning of the instruction, so we need -- * to further modify the operand so that it will point to itself. -- * There are other cases where you have something like: -- * -- * .long $_GLOBAL_OFFSET_TABLE_+[.-.L66] -- * -- * and here no correction would be required. Internally in the assembler -- * we treat operands of this form as not being pcrel since the '.' is -- * explicitly mentioned, and I wonder whether it would simplify matters -- * to do it this way. Who knows. In earlier versions of the PIC patches, -- * the pcrel_adjust field was used to store the correction, but since the -- * expression is not pcrel, I felt it would be confusing to do it this -- * way. */ -- -- value -= 1; -- break; - case BFD_RELOC_386_GOT32: - case BFD_RELOC_386_TLS_GD: - case BFD_RELOC_386_TLS_LDM: ---- binutils/gas/testsuite/gas/i386/gotpc.s.jj 2002-08-02 21:17:57.000000000 +0200 -+++ binutils/gas/testsuite/gas/i386/gotpc.s 2002-08-03 22:55:47.000000000 +0200 -@@ -0,0 +1,40 @@ -+ .text -+test: -+ addl $_GLOBAL_OFFSET_TABLE_+[.-test], %eax -+ addl $_GLOBAL_OFFSET_TABLE_+[.-test], %ebx -+ addl $_GLOBAL_OFFSET_TABLE_, %eax -+ addl $_GLOBAL_OFFSET_TABLE_, %ebx -+ leal _GLOBAL_OFFSET_TABLE+[.-test](%eax), %ebx -+ leal _GLOBAL_OFFSET_TABLE+[.-test](%ebx), %eax -+ leal _GLOBAL_OFFSET_TABLE+[.-test](%eax), %eax -+ leal _GLOBAL_OFFSET_TABLE+[.-test](%ebx), %ebx -+ subl $_GLOBAL_OFFSET_TABLE_+[.-test], %eax -+ subl $_GLOBAL_OFFSET_TABLE_+[.-test], %ebx -+ subl $_GLOBAL_OFFSET_TABLE_, %eax -+ subl $_GLOBAL_OFFSET_TABLE_, %ebx -+ orl $_GLOBAL_OFFSET_TABLE_+[.-test], %eax -+ orl $_GLOBAL_OFFSET_TABLE_+[.-test], %ebx -+ orl $_GLOBAL_OFFSET_TABLE_, %eax -+ orl $_GLOBAL_OFFSET_TABLE_, %ebx -+ movl $_GLOBAL_OFFSET_TABLE_+[.-test], %eax -+ movl $_GLOBAL_OFFSET_TABLE_+[.-test], %ebx -+ movl $_GLOBAL_OFFSET_TABLE_, %eax -+ movl $_GLOBAL_OFFSET_TABLE_, %ebx -+ movl $_GLOBAL_OFFSET_TABLE_+[.-test], foo -+ movl $_GLOBAL_OFFSET_TABLE_+[.-test], %gs:foo -+ gs; movl $_GLOBAL_OFFSET_TABLE_+[.-test], foo -+ movl $_GLOBAL_OFFSET_TABLE_+[.-test], _GLOBAL_OFFSET_TABLE_ -+ movl _GLOBAL_OFFSET_TABLE_+[.-test], %eax -+ movl _GLOBAL_OFFSET_TABLE_+[.-test], %ebx -+ movl %eax, _GLOBAL_OFFSET_TABLE_+[.-test] -+ movl %ebx, _GLOBAL_OFFSET_TABLE_+[.-test] -+ movl %eax, %gs:_GLOBAL_OFFSET_TABLE_+[.-test] -+ movl %ebx, %gs:_GLOBAL_OFFSET_TABLE_+[.-test] -+ gs; movl %eax, _GLOBAL_OFFSET_TABLE_+[.-test] -+ gs; movl %ebx, _GLOBAL_OFFSET_TABLE_+[.-test] -+ leal _GLOBAL_OFFSET_TABLE_@GOTOFF(%ebx), %eax -+ leal _GLOBAL_OFFSET_TABLE_@GOTOFF(%ebx), %ebx -+ movl _GLOBAL_OFFSET_TABLE_@GOTOFF(%ebx), %eax -+ movl _GLOBAL_OFFSET_TABLE_@GOTOFF(%ebx), %ebx -+ .long _GLOBAL_OFFSET_TABLE_+[.-test] -+ .long _GLOBAL_OFFSET_TABLE_@GOTOFF ---- binutils/gas/testsuite/gas/i386/gotpc.d.jj 2002-08-02 21:18:43.000000000 +0200 -+++ binutils/gas/testsuite/gas/i386/gotpc.d 2002-08-03 23:05:43.000000000 +0200 -@@ -0,0 +1,52 @@ -+#objdump: -drw -+#name: i386 gotpc -+ -+.*: +file format .* -+ -+Disassembly of section .text: -+ -+0+000 : -+ 0: 05 01 00 00 00 [ ]*add \$0x1,%eax 1: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 5: 81 c3 07 00 00 00 [ ]*add \$0x7,%ebx 7: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ b: 05 01 00 00 00 [ ]*add \$0x1,%eax c: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 10: 81 c3 02 00 00 00 [ ]*add \$0x2,%ebx 12: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 16: 8d 98 16 00 00 00 [ ]*lea 0x16\(%eax\),%ebx 18: (R_386_)?(dir)?32 _GLOBAL_OFFSET_TABLE -+ 1c: 8d 83 1c 00 00 00 [ ]*lea 0x1c\(%ebx\),%eax 1e: (R_386_)?(dir)?32 _GLOBAL_OFFSET_TABLE -+ 22: 8d 80 22 00 00 00 [ ]*lea 0x22\(%eax\),%eax 24: (R_386_)?(dir)?32 _GLOBAL_OFFSET_TABLE -+ 28: 8d 9b 28 00 00 00 [ ]*lea 0x28\(%ebx\),%ebx 2a: (R_386_)?(dir)?32 _GLOBAL_OFFSET_TABLE -+ 2e: 2d 2f 00 00 00 [ ]*sub \$0x2f,%eax 2f: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 33: 81 eb 35 00 00 00 [ ]*sub \$0x35,%ebx 35: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 39: 2d 01 00 00 00 [ ]*sub \$0x1,%eax 3a: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 3e: 81 eb 02 00 00 00 [ ]*sub \$0x2,%ebx 40: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 44: 0d 45 00 00 00 [ ]*or \$0x45,%eax 45: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 49: 81 cb 4b 00 00 00 [ ]*or \$0x4b,%ebx 4b: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 4f: 0d 01 00 00 00 [ ]*or \$0x1,%eax 50: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 54: 81 cb 02 00 00 00 [ ]*or \$0x2,%ebx 56: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 5a: b8 5b 00 00 00 [ ]*mov \$0x5b,%eax 5b: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 5f: bb 60 00 00 00 [ ]*mov \$0x60,%ebx 60: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 64: b8 01 00 00 00 [ ]*mov \$0x1,%eax 65: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 69: bb 01 00 00 00 [ ]*mov \$0x1,%ebx 6a: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 6e: c7 05 00 00 00 00 74 00 00 00 [ ]*movl \$0x74,0x0 70: (R_386_)?(dir)?32 foo -+[ ]*74: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 78: 65 c7 05 00 00 00 00 7f 00 00 00 [ ]*movl \$0x7f,%gs:0x0 7b: (R_386_)?(dir)?32 foo -+[ ]*7f: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 83: 65 c7 05 00 00 00 00 8a 00 00 00 [ ]*movl \$0x8a,%gs:0x0 86: (R_386_)?(dir)?32 foo -+[ ]*8a: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 8e: c7 05 02 00 00 00 94 00 00 00 [ ]*movl \$0x94,0x2 90: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+[ ]*94: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 98: a1 99 00 00 00 [ ]*mov 0x99,%eax 99: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ 9d: 8b 1d 9f 00 00 00 [ ]*mov 0x9f,%ebx 9f: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ a3: a3 a4 00 00 00 [ ]*mov %eax,0xa4 a4: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ a8: 89 1d aa 00 00 00 [ ]*mov %ebx,0xaa aa: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ ae: 65 a3 b0 00 00 00 [ ]*mov %eax,%gs:0xb0 b0: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ b4: 65 89 1d b7 00 00 00 [ ]*mov %ebx,%gs:0xb7 b7: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ bb: 65 a3 bd 00 00 00 [ ]*mov %eax,%gs:0xbd bd: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ c1: 65 89 1d c4 00 00 00 [ ]*mov %ebx,%gs:0xc4 c4: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ c8: 8d 83 00 00 00 00 [ ]*lea 0x0\(%ebx\),%eax ca: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_ -+ ce: 8d 9b 00 00 00 00 [ ]*lea 0x0\(%ebx\),%ebx d0: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_ -+ d4: 8b 83 00 00 00 00 [ ]*mov 0x0\(%ebx\),%eax d6: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_ -+ da: 8b 9b 00 00 00 00 [ ]*mov 0x0\(%ebx\),%ebx dc: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_ -+ e0: e0 00 [ ]*loopne e2 e0: (R_386_)?GOTPC _GLOBAL_OFFSET_TABLE_ -+ e2: 00 00 [ ]*add %al,\(%eax\) -+ e4: 00 00 [ ]*add %al,\(%eax\) e4: (R_386_)?GOTOFF _GLOBAL_OFFSET_TABLE_ -+ ... ---- binutils/gas/testsuite/gas/i386/i386.exp.jj 2002-07-18 11:35:39.000000000 +0200 -+++ binutils/gas/testsuite/gas/i386/i386.exp 2002-08-02 21:57:46.000000000 +0200 -@@ -53,6 +53,7 @@ if [expr ([istarget "i*86-*-*"] || [ist - run_dump_test "jump" - run_dump_test "ssemmx2" - run_dump_test "sse2" -+ run_dump_test "gotpc" - - # PIC is only supported on ELF targets. - if { ([istarget "*-*-elf*"] || [istarget "*-*-linux*"] ) - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-tpoff32.patch --- a/patches/binutils/2.13.90.0.2/rh62-binutils-2.13.90.0.2-tpoff32.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -2002-08-07 Jakub Jelinek - - * elf32-i386.c (elf_i386_relocate_section): Fill in proper addend - for R_386_TLS_TPOFF32 relocs against symndx 0. - ---- binutils/bfd/elf32-i386.c.jj 2002-07-30 16:14:55.000000000 +0200 -+++ binutils/bfd/elf32-i386.c 2002-08-07 23:41:48.000000000 +0200 -@@ -2561,13 +2567,17 @@ elf_i386_relocate_section (output_bfd, i - outrel.r_offset = (htab->sgot->output_section->vma - + htab->sgot->output_offset + off); - -- bfd_put_32 (output_bfd, 0, -- htab->sgot->contents + off); - indx = h && h->dynindx != -1 ? h->dynindx : 0; - if (r_type == R_386_TLS_GD) - dr_type = R_386_TLS_DTPMOD32; - else - dr_type = R_386_TLS_TPOFF32; -+ if (dr_type == R_386_TLS_TPOFF32 && indx == 0) -+ bfd_put_32 (output_bfd, relocation - dtpoff_base (info), -+ htab->sgot->contents + off); -+ else -+ bfd_put_32 (output_bfd, 0, -+ htab->sgot->contents + off); - outrel.r_info = ELF32_R_INFO (indx, dr_type); - loc = (Elf32_External_Rel *) htab->srelgot->contents; - loc += htab->srelgot->reloc_count++; diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.14.90.0.5/binutils-cross-demangler.patch --- a/patches/binutils/2.14.90.0.5/binutils-cross-demangler.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- orig/Makefile.in 2004-05-12 18:22:30.000000000 -0700 -+++ binutils-2.14.90.0.5/Makefile.in 2004-05-12 18:26:19.000000000 -0700 -@@ -24384,6 +24384,8 @@ - # Demangler depends on libiberty. - configure-demangler: maybe-configure-libiberty - all-demangler: maybe-all-libiberty -+configure-build-demangler: maybe-configure-build-libiberty -+all-build-demangler: maybe-all-build-libiberty - - # The new demangler, which is included in libiberty, is written in C++. - # A working C++ compiler is required. For the target demangler, it may diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.14.90.0.5/binutils-sh-relocs.patch --- a/patches/binutils/2.14.90.0.5/binutils-sh-relocs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -Message-Id: <200307311239.h6VCdNe27056@r-rr.iij4u.or.jp> -To: dank@kegel.com -Cc: kkojima@rr.iij4u.or.jp -Subject: Re: Writing PIC version of __udivsi3_i4? (was: Re: "make tests" fails - with "libc.so: text relocations used" in glibc-2.3.2 for sh4) -In-Reply-To: Your message of "Wed, 30 Jul 2003 21:55:54 -0700" - <3F28A15A.5010400@kegel.com> -References: <3F28A15A.5010400@kegel.com> -Date: Thu, 31 Jul 2003 21:47:38 +0900 -From: kaz Kojima - -Dan Kegel wrote: ->> I'll give binutils-2.14.90.0.5 a shot, then. -> -> No joy - same problem. Guess I'll take this up on binutils and/or libc-alpha. - -Please try the patch below, though it's a diff against the current -binutils CVS. - -Regards, - kaz --- -diff -u3p ORIG/src/bfd/elf32-sh.c LOCAL/src/bfd/elf32-sh.c ---- src/bfd/elf32-sh.c.old Fri Jul 25 14:46:58 2003 -+++ src/bfd/elf32-sh.c Thu Jul 31 21:09:38 2003 -@@ -6497,8 +6497,10 @@ sh_elf_check_relocs (bfd *abfd, struct b - sreloc, 2)) - return FALSE; - } -+#if 0 - if (sec->flags & SEC_READONLY) - info->flags |= DF_TEXTREL; -+#endif - elf_section_data (sec)->sreloc = sreloc; - } - - - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.14.90.0.7/binutils-cross-demangler.patch --- a/patches/binutils/2.14.90.0.7/binutils-cross-demangler.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- orig/Makefile.in 2004-05-12 18:22:30.000000000 -0700 -+++ binutils-2.14.90.0.5/Makefile.in 2004-05-12 18:26:19.000000000 -0700 -@@ -24384,6 +24384,8 @@ - # Demangler depends on libiberty. - configure-demangler: maybe-configure-libiberty - all-demangler: maybe-all-libiberty -+configure-build-demangler: maybe-configure-build-libiberty -+all-build-demangler: maybe-all-build-libiberty - - # The new demangler, which is included in libiberty, is written in C++. - # A working C++ compiler is required. For the target demangler, it may diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.14.92/binutils-skip-comments.patch --- a/patches/binutils/2.14.92/binutils-skip-comments.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html -Fixes -localealias.s:544: Error: junk at end of line, first unrecognized character is `,' -when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3 - -Paths adjusted to match crosstool's patcher. - -Message-Id: m3n052qw2g.fsf@whitebox.m5r.de -From: Andreas Schwab -To: Nathan Sidwell -Cc: Ian Lance Taylor , binutils at sources dot redhat dot com -Date: Fri, 23 Apr 2004 22:27:19 +0200 -Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line - -Nathan Sidwell writes: - -> Index: read.c -> =================================================================== -> RCS file: /cvs/src/src/gas/read.c,v -> retrieving revision 1.76 -> diff -c -3 -p -r1.76 read.c -> *** read.c 12 Mar 2004 17:48:12 -0000 1.76 -> --- read.c 18 Mar 2004 09:56:05 -0000 -> *************** read_a_source_file (char *name) -> *** 1053,1059 **** -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! ignore_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook -> --- 1053,1059 ---- -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! demand_empty_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook - -This means that the unknown character is no longer ignored, despite the -comment. As a side effect a line starting with a line comment character -not followed by APP in NO_APP mode now triggers an error instead of just a -warning, breaking builds of glibc on m68k-linux. Earlier in -read_a_source_file where #APP is handled there is another comment that -claims that unknown comments are ignored, when in fact they aren't (only -the initial line comment character is skipped). - -Note that the presence of #APP will mess up the line counters, but -that appears to be difficult to fix. - -Andreas. - -2004-04-23 Andreas Schwab - - * read.c (read_a_source_file): Ignore unknown text after line - comment character. Fix misleading comment. - ---- binutils/gas/read.c.~1.78.~ 2004-04-23 08:58:23.000000000 +0200 -+++ binutils/gas/read.c 2004-04-23 21:49:01.000000000 +0200 -@@ -1,6 +1,6 @@ - /* read.c - read a source file - - Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, -- 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - -@@ -950,10 +950,14 @@ read_a_source_file (char *name) - unsigned int new_length; - char *tmp_buf = 0; - -- bump_line_counters (); - s = input_line_pointer; - if (strncmp (s, "APP\n", 4)) -- continue; /* We ignore it */ -+ { -+ /* We ignore it */ -+ ignore_rest_of_line (); -+ continue; -+ } -+ bump_line_counters (); - s += 4; - - sb_new (&sbuf); -@@ -1052,7 +1056,7 @@ read_a_source_file (char *name) - continue; - #endif - input_line_pointer--; -- /* Report unknown char as ignored. */ -+ /* Report unknown char as error. */ - demand_empty_rest_of_line (); - } - - --- -Andreas Schwab, SuSE Labs, schwab@suse.de -SuSE Linux AG, MaxfeldstraÃe 5, 90409 NÃrnberg, Germany -Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 -"And now for something completely different." diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.14.92/gccpr15247-fix.patch --- a/patches/binutils/2.14.92/gccpr15247-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ -See -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247 - -Fixes spurious error -/tmp/ccvNi4ou.s: Assembler messages: -/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31] -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/math/dosincos.o] Error 1 - -when compiling glibc's dosincos.c with gcc-3.4.0 - -=================================================================== -RCS file: /cvs/src/src/opcodes/sparc-opc.c,v -retrieving revision 1.9 -retrieving revision 1.10 -diff -u -r1.9 -r1.10 ---- src/opcodes/sparc-opc.c 2004/01/18 23:46:32 1.9 -+++ src/opcodes/sparc-opc.c 2004/04/20 10:23:51 1.10 -@@ -1273,110 +1273,72 @@ - #define FM_DF 2 /* v9 */ - #define FM_QF 3 /* v9 */ - --#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags, v9 } -- --#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 } -+#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags, v9 } -+ -+#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 } - - /* FIXME: use fmovicc/fmovfcc? */ /* v9 */ --#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 } -- --/* v9 */ fmovcc ("fmovda", FM_DF, CONDA, FCONDA, 0), --/* v9 */ fmovcc ("fmovqa", FM_QF, CONDA, FCONDA, 0), --/* v9 */ fmovcc ("fmovsa", FM_SF, CONDA, FCONDA, 0), --/* v9 */ fmovicc ("fmovdcc", FM_DF, CONDCC, 0), --/* v9 */ fmovicc ("fmovqcc", FM_QF, CONDCC, 0), --/* v9 */ fmovicc ("fmovscc", FM_SF, CONDCC, 0), --/* v9 */ fmovicc ("fmovdcs", FM_DF, CONDCS, 0), --/* v9 */ fmovicc ("fmovqcs", FM_QF, CONDCS, 0), --/* v9 */ fmovicc ("fmovscs", FM_SF, CONDCS, 0), --/* v9 */ fmovcc ("fmovde", FM_DF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovqe", FM_QF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovse", FM_SF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovdg", FM_DF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovqg", FM_QF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovsg", FM_SF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovdge", FM_DF, CONDGE, FCONDGE, 0), --/* v9 */ fmovcc ("fmovqge", FM_QF, CONDGE, FCONDGE, 0), --/* v9 */ fmovcc ("fmovsge", FM_SF, CONDGE, FCONDGE, 0), --/* v9 */ fmovicc ("fmovdgeu", FM_DF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovqgeu", FM_QF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovsgeu", FM_SF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovdgu", FM_DF, CONDGU, 0), --/* v9 */ fmovicc ("fmovqgu", FM_QF, CONDGU, 0), --/* v9 */ fmovicc ("fmovsgu", FM_SF, CONDGU, 0), --/* v9 */ fmovcc ("fmovdl", FM_DF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovql", FM_QF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovsl", FM_SF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovdle", FM_DF, CONDLE, FCONDLE, 0), --/* v9 */ fmovcc ("fmovqle", FM_QF, CONDLE, FCONDLE, 0), --/* v9 */ fmovcc ("fmovsle", FM_SF, CONDLE, FCONDLE, 0), --/* v9 */ fmovicc ("fmovdleu", FM_DF, CONDLEU, 0), --/* v9 */ fmovicc ("fmovqleu", FM_QF, CONDLEU, 0), --/* v9 */ fmovicc ("fmovsleu", FM_SF, CONDLEU, 0), --/* v9 */ fmovfcc ("fmovdlg", FM_DF, FCONDLG, 0), --/* v9 */ fmovfcc ("fmovqlg", FM_QF, FCONDLG, 0), --/* v9 */ fmovfcc ("fmovslg", FM_SF, FCONDLG, 0), --/* v9 */ fmovicc ("fmovdlu", FM_DF, CONDLU, F_ALIAS), --/* v9 */ fmovicc ("fmovqlu", FM_QF, CONDLU, F_ALIAS), --/* v9 */ fmovicc ("fmovslu", FM_SF, CONDLU, F_ALIAS), --/* v9 */ fmovcc ("fmovdn", FM_DF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovqn", FM_QF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovsn", FM_SF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovdne", FM_DF, CONDNE, FCONDNE, 0), --/* v9 */ fmovcc ("fmovqne", FM_QF, CONDNE, FCONDNE, 0), --/* v9 */ fmovcc ("fmovsne", FM_SF, CONDNE, FCONDNE, 0), --/* v9 */ fmovicc ("fmovdneg", FM_DF, CONDNEG, 0), --/* v9 */ fmovicc ("fmovqneg", FM_QF, CONDNEG, 0), --/* v9 */ fmovicc ("fmovsneg", FM_SF, CONDNEG, 0), --/* v9 */ fmovcc ("fmovdnz", FM_DF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovcc ("fmovqnz", FM_QF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovcc ("fmovsnz", FM_SF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovfcc ("fmovdo", FM_DF, FCONDO, 0), --/* v9 */ fmovfcc ("fmovqo", FM_QF, FCONDO, 0), --/* v9 */ fmovfcc ("fmovso", FM_SF, FCONDO, 0), --/* v9 */ fmovicc ("fmovdpos", FM_DF, CONDPOS, 0), --/* v9 */ fmovicc ("fmovqpos", FM_QF, CONDPOS, 0), --/* v9 */ fmovicc ("fmovspos", FM_SF, CONDPOS, 0), --/* v9 */ fmovfcc ("fmovdu", FM_DF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovqu", FM_QF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovsu", FM_SF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovdue", FM_DF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovque", FM_QF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovsue", FM_SF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovdug", FM_DF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovqug", FM_QF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovsug", FM_SF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovduge", FM_DF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovquge", FM_QF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovsuge", FM_SF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovdul", FM_DF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovqul", FM_QF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovsul", FM_SF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovdule", FM_DF, FCONDULE, 0), --/* v9 */ fmovfcc ("fmovqule", FM_QF, FCONDULE, 0), --/* v9 */ fmovfcc ("fmovsule", FM_SF, FCONDULE, 0), --/* v9 */ fmovicc ("fmovdvc", FM_DF, CONDVC, 0), --/* v9 */ fmovicc ("fmovqvc", FM_QF, CONDVC, 0), --/* v9 */ fmovicc ("fmovsvc", FM_SF, CONDVC, 0), --/* v9 */ fmovicc ("fmovdvs", FM_DF, CONDVS, 0), --/* v9 */ fmovicc ("fmovqvs", FM_QF, CONDVS, 0), --/* v9 */ fmovicc ("fmovsvs", FM_SF, CONDVS, 0), --/* v9 */ fmovcc ("fmovdz", FM_DF, CONDZ, FCONDZ, F_ALIAS), --/* v9 */ fmovcc ("fmovqz", FM_QF, CONDZ, FCONDZ, F_ALIAS), --/* v9 */ fmovcc ("fmovsz", FM_SF, CONDZ, FCONDZ, F_ALIAS), -- -+#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 } -+ -+#define fmovicc(suffix, cond, flags) /* v9 */ \ -+fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags), \ -+fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags), \ -+fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags) -+ -+#define fmovfcc(suffix, fcond, flags) /* v9 */ \ -+fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags), \ -+fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags), \ -+fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags) -+ -+#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \ -+fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags), \ -+fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags), \ -+fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags) -+ -+/* v9 */ fmovcc ("a", CONDA, FCONDA, 0), -+/* v9 */ fmovicc ("cc", CONDCC, 0), -+/* v9 */ fmovicc ("cs", CONDCS, 0), -+/* v9 */ fmovcc ("e", CONDE, FCONDE, 0), -+/* v9 */ fmovcc ("g", CONDG, FCONDG, 0), -+/* v9 */ fmovcc ("ge", CONDGE, FCONDGE, 0), -+/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS), -+/* v9 */ fmovicc ("gu", CONDGU, 0), -+/* v9 */ fmovcc ("l", CONDL, FCONDL, 0), -+/* v9 */ fmovcc ("le", CONDLE, FCONDLE, 0), -+/* v9 */ fmovicc ("leu", CONDLEU, 0), -+/* v9 */ fmovfcc ("lg", FCONDLG, 0), -+/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS), -+/* v9 */ fmovcc ("n", CONDN, FCONDN, 0), -+/* v9 */ fmovcc ("ne", CONDNE, FCONDNE, 0), -+/* v9 */ fmovicc ("neg", CONDNEG, 0), -+/* v9 */ fmovcc ("nz", CONDNZ, FCONDNZ, F_ALIAS), -+/* v9 */ fmovfcc ("o", FCONDO, 0), -+/* v9 */ fmovicc ("pos", CONDPOS, 0), -+/* v9 */ fmovfcc ("u", FCONDU, 0), -+/* v9 */ fmovfcc ("ue", FCONDUE, 0), -+/* v9 */ fmovfcc ("ug", FCONDUG, 0), -+/* v9 */ fmovfcc ("uge", FCONDUGE, 0), -+/* v9 */ fmovfcc ("ul", FCONDUL, 0), -+/* v9 */ fmovfcc ("ule", FCONDULE, 0), -+/* v9 */ fmovicc ("vc", CONDVC, 0), -+/* v9 */ fmovicc ("vs", CONDVS, 0), -+/* v9 */ fmovcc ("z", CONDZ, FCONDZ, F_ALIAS), -+ -+#undef fmoviccx /* v9 */ -+#undef fmovfccx /* v9 */ -+#undef fmovccx /* v9 */ - #undef fmovicc /* v9 */ - #undef fmovfcc /* v9 */ - #undef fmovcc /* v9 */ diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.15.90.0.3/binutils-20040817-linkonce.patch --- a/patches/binutils/2.15.90.0.3/binutils-20040817-linkonce.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -From http://sources.redhat.com/ml/binutils/2004-08/msg00190.html - -Date: Tue, 17 Aug 2004 12:04:29 +0200 -From: Jakub Jelinek -To: binutils at sources dot redhat dot com -Subject: [PATCH] Fix `defined in discarded section' errors when building ia64 gcc -Message-ID: <20040817100429.GL30497@sunsite.ms.mff.cuni.cz> -Reply-To: Jakub Jelinek -References: <20040817090201.GK30497@sunsite.ms.mff.cuni.cz> -In-Reply-To: <20040817090201 dot GK30497 at sunsite dot ms dot mff dot cuni dot cz> - -On Tue, Aug 17, 2004 at 11:02:01AM +0200, Jakub Jelinek wrote: -> Current gcc 3.4.x (at least gcc-3_4-rhl-branch) doesn't build with CVS -> binutils (nor 2.15.91.0.2). -> The problem is that libstdc++.so linking fails with: -> `.gnu.linkonce.t._ZNSdD2Ev' referenced in section `.gnu.linkonce.ia64unw._ZNSdD2Ev' of .libs/sstream-inst.o: defined in discarded section `.gnu.linkonce.t._ZNSdD2Ev' of .libs/sstream-inst.o -> The problem is that both io-inst.s and sstream-inst.s have -> .gnu.linkonce.t._ZNSdD2Ev definition, but because io-inst.cc -> also instantiates some templates sstream-inst.cc doesn't instantiate, -> the inliner can do a better job in io-inst.cc. -> The result is that _ZNSdD2Ev in io-inst.cc is a leaf routine, while -> it is not in sstream-inst.cc (in assembly, -> _ZNSdD2Ev in io-inst.s starts with .prologue and no .save directives, -> while _ZNSdD2Ev] in sstream-inst.s has .prologue 12, 35 and some -> .save directives. -> IA-64 ABI allows leaf routines to have no unwind section at all, -> which means .gnu.linkonce.ia64unw._ZNSdD2Ev is not created in -> io-inst.o at all and as .gnu.linkonce.t._ZNSdD2Ev comes first -> and wins, .gnu.linkonce.ia64unw._ZNSdD2Ev in sstream.o suddenly -> references a discarded section. -> -> Not sure what should be done here, but certainly the compiler -> isn't at fault here, it is a binutils problem. -> One fix could be to create empty .gnu.linkonce.ia64unw.* section -> in assembler, another special case ia64 unwind sections in the linker. - -Here is a patch for the first possibility. -It certainly makes libstdc++.so to link and even the unwind info looks -good on brief skimming. - -2004-08-17 Jakub Jelinek - - * config/tc-ia64.c (start_unwind_section): Add linkonce_empty - argument, don't do anything if current section is not - .gnu.linkonce.t.* and linkonce_empty is set. - (generate_unwind_image, dot_endp): Adjust callers, call - start_unwind_section (*, 1) if nothing will be put into the - section. - ---- binutils/gas/config/tc-ia64.c.jj 2004-07-30 11:42:24.000000000 +0200 -+++ binutils/gas/config/tc-ia64.c 2004-08-17 13:45:04.288173205 +0200 -@@ -1,5 +1,6 @@ - /* tc-ia64.c -- Assembler for the HP/Intel IA-64 architecture. -- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 -+ Free Software Foundation, Inc. - Contributed by David Mosberger-Tang - - This file is part of GAS, the GNU Assembler. -@@ -3297,7 +3298,7 @@ static char *special_linkonce_name[] = - }; - - static void --start_unwind_section (const segT text_seg, int sec_index) -+start_unwind_section (const segT text_seg, int sec_index, int linkonce_empty) - { - /* - Use a slightly ugly scheme to derive the unwind section names from -@@ -3359,6 +3360,8 @@ start_unwind_section (const segT text_se - prefix = special_linkonce_name [sec_index - SPECIAL_SECTION_UNWIND]; - suffix += sizeof (".gnu.linkonce.t.") - 1; - } -+ else if (linkonce_empty) -+ return; - - prefix_len = strlen (prefix); - suffix_len = strlen (suffix); -@@ -3444,7 +3447,7 @@ generate_unwind_image (const segT text_s - expressionS exp; - bfd_reloc_code_real_type reloc; - -- start_unwind_section (text_seg, SPECIAL_SECTION_UNWIND_INFO); -+ start_unwind_section (text_seg, SPECIAL_SECTION_UNWIND_INFO, 0); - - /* Make sure the section has 4 byte alignment for ILP32 and - 8 byte alignment for LP64. */ -@@ -3485,6 +3488,8 @@ generate_unwind_image (const segT text_s - unwind.personality_routine = 0; - } - } -+ else -+ start_unwind_section (text_seg, SPECIAL_SECTION_UNWIND_INFO, 1); - - free_saved_prologue_counts (); - unwind.list = unwind.tail = unwind.current_entry = NULL; -@@ -4164,7 +4169,7 @@ dot_endp (dummy) - subseg_set (md.last_text_seg, 0); - unwind.proc_end = expr_build_dot (); - -- start_unwind_section (saved_seg, SPECIAL_SECTION_UNWIND); -+ start_unwind_section (saved_seg, SPECIAL_SECTION_UNWIND, 0); - - /* Make sure that section has 4 byte alignment for ILP32 and - 8 byte alignment for LP64. */ -@@ -4204,6 +4209,9 @@ dot_endp (dummy) - bytes_per_address); - - } -+ else -+ start_unwind_section (saved_seg, SPECIAL_SECTION_UNWIND, 1); -+ - subseg_set (saved_seg, saved_subseg); - - /* Parse names of main and alternate entry points and set symbol sizes. */ - - - Jakub - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.15.90.0.3/binutils-20040820-duplicates.patch --- a/patches/binutils/2.15.90.0.3/binutils-20040820-duplicates.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -See http://sources.redhat.com/ml/binutils/2004-08/msg00256.html - -Date: Fri, 20 Aug 2004 21:13:43 -0400 -From: Daniel Jacobowitz -To: binutils at sources dot redhat dot com -Subject: Re: Handle SEC_LINK_DUPLICATES_SAME_CONTENTS for arm-linux -Message-ID: <20040821011342.GA30319@nevyn.them.org> -Mail-Followup-To: binutils at sources dot redhat dot com -References: <20040818145518.GA9774@nevyn.them.org> <20040819055040.GA11820@lucon.org> <20040819080034.GE21716@bubble.modra.org> <20040820173240.GA17678@nevyn.them.org> <20040821003737.GB16016@bubble.modra.org> -In-Reply-To: <20040821003737 dot GB16016 at bubble dot modra dot org> - -On Sat, Aug 21, 2004 at 10:07:38AM +0930, Alan Modra wrote: -> On Fri, Aug 20, 2004 at 01:32:40PM -0400, Daniel Jacobowitz wrote: -> > Thanks. How's this? -> -> As you might have guessed from my rather slack review of your previous -> patch, I trust you enough to give the OK without proper review. But -> since you asked... :) - -Checked in as so. - --- -Daniel Jacobowitz - -2004-08-20 Daniel Jacobowitz - - * elflink.c (_bfd_elf_section_already_linked): Handle - SEC_LINK_DUPLICATES_SAME_CONTENTS. - -Index: elflink.c -=================================================================== -RCS file: /big/fsf/rsync/src-cvs/src/bfd/elflink.c,v -retrieving revision 1.97 -diff -u -p -r1.97 elflink.c ---- binutils/bfd/elflink.c 18 Aug 2004 02:45:42 -0000 1.97 -+++ binutils/bfd/elflink.c 21 Aug 2004 00:59:08 -0000 -@@ -9366,6 +9366,36 @@ _bfd_elf_section_already_linked (bfd *ab - (_("%B: duplicate section `%A' has different size\n"), - abfd, sec); - break; -+ -+ case SEC_LINK_DUPLICATES_SAME_CONTENTS: -+ if (sec->size != l->sec->size) -+ (*_bfd_error_handler) -+ (_("%B: duplicate section `%A' has different size\n"), -+ abfd, sec); -+ else if (sec->size != 0) -+ { -+ bfd_byte *sec_contents, *l_sec_contents; -+ -+ if (!bfd_malloc_and_get_section (abfd, sec, &sec_contents)) -+ (*_bfd_error_handler) -+ (_("%B: warning: could not read contents of section `%A'\n"), -+ abfd, sec); -+ else if (!bfd_malloc_and_get_section (l->sec->owner, l->sec, -+ &l_sec_contents)) -+ (*_bfd_error_handler) -+ (_("%B: warning: could not read contents of section `%A'\n"), -+ l->sec->owner, l->sec); -+ else if (memcmp (sec_contents, l_sec_contents, sec->size) != 0) -+ (*_bfd_error_handler) -+ (_("%B: warning: duplicate section `%A' has different contents\n"), -+ abfd, sec); -+ -+ if (sec_contents) -+ free (sec_contents); -+ if (l_sec_contents) -+ free (l_sec_contents); -+ } -+ break; - } - - /* Set the output_section field so that lang_add_section - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.15.90.0.3/binutils-skip-comments.patch --- a/patches/binutils/2.15.90.0.3/binutils-skip-comments.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html -Fixes -localealias.s:544: Error: junk at end of line, first unrecognized character is `,' -when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3 - -Paths adjusted to match crosstool's patcher. - -Message-Id: m3n052qw2g.fsf@whitebox.m5r.de -From: Andreas Schwab -To: Nathan Sidwell -Cc: Ian Lance Taylor , binutils at sources dot redhat dot com -Date: Fri, 23 Apr 2004 22:27:19 +0200 -Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line - -Nathan Sidwell writes: - -> Index: read.c -> =================================================================== -> RCS file: /cvs/src/src/gas/read.c,v -> retrieving revision 1.76 -> diff -c -3 -p -r1.76 read.c -> *** read.c 12 Mar 2004 17:48:12 -0000 1.76 -> --- read.c 18 Mar 2004 09:56:05 -0000 -> *************** read_a_source_file (char *name) -> *** 1053,1059 **** -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! ignore_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook -> --- 1053,1059 ---- -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! demand_empty_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook - -This means that the unknown character is no longer ignored, despite the -comment. As a side effect a line starting with a line comment character -not followed by APP in NO_APP mode now triggers an error instead of just a -warning, breaking builds of glibc on m68k-linux. Earlier in -read_a_source_file where #APP is handled there is another comment that -claims that unknown comments are ignored, when in fact they aren't (only -the initial line comment character is skipped). - -Note that the presence of #APP will mess up the line counters, but -that appears to be difficult to fix. - -Andreas. - -2004-04-23 Andreas Schwab - - * read.c (read_a_source_file): Ignore unknown text after line - comment character. Fix misleading comment. - ---- binutils/gas/read.c.~1.78.~ 2004-04-23 08:58:23.000000000 +0200 -+++ binutils/gas/read.c 2004-04-23 21:49:01.000000000 +0200 -@@ -1,6 +1,6 @@ - /* read.c - read a source file - - Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, -- 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - -@@ -950,10 +950,14 @@ read_a_source_file (char *name) - unsigned int new_length; - char *tmp_buf = 0; - -- bump_line_counters (); - s = input_line_pointer; - if (strncmp (s, "APP\n", 4)) -- continue; /* We ignore it */ -+ { -+ /* We ignore it */ -+ ignore_rest_of_line (); -+ continue; -+ } -+ bump_line_counters (); - s += 4; - - sb_new (&sbuf); -@@ -1052,7 +1056,7 @@ read_a_source_file (char *name) - continue; - #endif - input_line_pointer--; -- /* Report unknown char as ignored. */ -+ /* Report unknown char as error. */ - demand_empty_rest_of_line (); - } - - --- -Andreas Schwab, SuSE Labs, schwab@suse.de -SuSE Linux AG, MaxfeldstraÃe 5, 90409 NÃrnberg, Germany -Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 -"And now for something completely different." diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.15.90.0.3/gccpr15247-fix.patch --- a/patches/binutils/2.15.90.0.3/gccpr15247-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ -See -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247 - -Fixes spurious error -/tmp/ccvNi4ou.s: Assembler messages: -/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31] -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/math/dosincos.o] Error 1 - -when compiling glibc's dosincos.c with gcc-3.4.0 - -=================================================================== -RCS file: /cvs/src/src/opcodes/sparc-opc.c,v -retrieving revision 1.9 -retrieving revision 1.10 -diff -u -r1.9 -r1.10 ---- src/opcodes/sparc-opc.c 2004/01/18 23:46:32 1.9 -+++ src/opcodes/sparc-opc.c 2004/04/20 10:23:51 1.10 -@@ -1273,110 +1273,72 @@ - #define FM_DF 2 /* v9 */ - #define FM_QF 3 /* v9 */ - --#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags, v9 } -- --#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 } -+#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags, v9 } -+ -+#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 } - - /* FIXME: use fmovicc/fmovfcc? */ /* v9 */ --#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 } -- --/* v9 */ fmovcc ("fmovda", FM_DF, CONDA, FCONDA, 0), --/* v9 */ fmovcc ("fmovqa", FM_QF, CONDA, FCONDA, 0), --/* v9 */ fmovcc ("fmovsa", FM_SF, CONDA, FCONDA, 0), --/* v9 */ fmovicc ("fmovdcc", FM_DF, CONDCC, 0), --/* v9 */ fmovicc ("fmovqcc", FM_QF, CONDCC, 0), --/* v9 */ fmovicc ("fmovscc", FM_SF, CONDCC, 0), --/* v9 */ fmovicc ("fmovdcs", FM_DF, CONDCS, 0), --/* v9 */ fmovicc ("fmovqcs", FM_QF, CONDCS, 0), --/* v9 */ fmovicc ("fmovscs", FM_SF, CONDCS, 0), --/* v9 */ fmovcc ("fmovde", FM_DF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovqe", FM_QF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovse", FM_SF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovdg", FM_DF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovqg", FM_QF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovsg", FM_SF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovdge", FM_DF, CONDGE, FCONDGE, 0), --/* v9 */ fmovcc ("fmovqge", FM_QF, CONDGE, FCONDGE, 0), --/* v9 */ fmovcc ("fmovsge", FM_SF, CONDGE, FCONDGE, 0), --/* v9 */ fmovicc ("fmovdgeu", FM_DF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovqgeu", FM_QF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovsgeu", FM_SF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovdgu", FM_DF, CONDGU, 0), --/* v9 */ fmovicc ("fmovqgu", FM_QF, CONDGU, 0), --/* v9 */ fmovicc ("fmovsgu", FM_SF, CONDGU, 0), --/* v9 */ fmovcc ("fmovdl", FM_DF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovql", FM_QF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovsl", FM_SF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovdle", FM_DF, CONDLE, FCONDLE, 0), --/* v9 */ fmovcc ("fmovqle", FM_QF, CONDLE, FCONDLE, 0), --/* v9 */ fmovcc ("fmovsle", FM_SF, CONDLE, FCONDLE, 0), --/* v9 */ fmovicc ("fmovdleu", FM_DF, CONDLEU, 0), --/* v9 */ fmovicc ("fmovqleu", FM_QF, CONDLEU, 0), --/* v9 */ fmovicc ("fmovsleu", FM_SF, CONDLEU, 0), --/* v9 */ fmovfcc ("fmovdlg", FM_DF, FCONDLG, 0), --/* v9 */ fmovfcc ("fmovqlg", FM_QF, FCONDLG, 0), --/* v9 */ fmovfcc ("fmovslg", FM_SF, FCONDLG, 0), --/* v9 */ fmovicc ("fmovdlu", FM_DF, CONDLU, F_ALIAS), --/* v9 */ fmovicc ("fmovqlu", FM_QF, CONDLU, F_ALIAS), --/* v9 */ fmovicc ("fmovslu", FM_SF, CONDLU, F_ALIAS), --/* v9 */ fmovcc ("fmovdn", FM_DF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovqn", FM_QF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovsn", FM_SF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovdne", FM_DF, CONDNE, FCONDNE, 0), --/* v9 */ fmovcc ("fmovqne", FM_QF, CONDNE, FCONDNE, 0), --/* v9 */ fmovcc ("fmovsne", FM_SF, CONDNE, FCONDNE, 0), --/* v9 */ fmovicc ("fmovdneg", FM_DF, CONDNEG, 0), --/* v9 */ fmovicc ("fmovqneg", FM_QF, CONDNEG, 0), --/* v9 */ fmovicc ("fmovsneg", FM_SF, CONDNEG, 0), --/* v9 */ fmovcc ("fmovdnz", FM_DF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovcc ("fmovqnz", FM_QF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovcc ("fmovsnz", FM_SF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovfcc ("fmovdo", FM_DF, FCONDO, 0), --/* v9 */ fmovfcc ("fmovqo", FM_QF, FCONDO, 0), --/* v9 */ fmovfcc ("fmovso", FM_SF, FCONDO, 0), --/* v9 */ fmovicc ("fmovdpos", FM_DF, CONDPOS, 0), --/* v9 */ fmovicc ("fmovqpos", FM_QF, CONDPOS, 0), --/* v9 */ fmovicc ("fmovspos", FM_SF, CONDPOS, 0), --/* v9 */ fmovfcc ("fmovdu", FM_DF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovqu", FM_QF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovsu", FM_SF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovdue", FM_DF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovque", FM_QF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovsue", FM_SF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovdug", FM_DF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovqug", FM_QF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovsug", FM_SF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovduge", FM_DF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovquge", FM_QF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovsuge", FM_SF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovdul", FM_DF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovqul", FM_QF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovsul", FM_SF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovdule", FM_DF, FCONDULE, 0), --/* v9 */ fmovfcc ("fmovqule", FM_QF, FCONDULE, 0), --/* v9 */ fmovfcc ("fmovsule", FM_SF, FCONDULE, 0), --/* v9 */ fmovicc ("fmovdvc", FM_DF, CONDVC, 0), --/* v9 */ fmovicc ("fmovqvc", FM_QF, CONDVC, 0), --/* v9 */ fmovicc ("fmovsvc", FM_SF, CONDVC, 0), --/* v9 */ fmovicc ("fmovdvs", FM_DF, CONDVS, 0), --/* v9 */ fmovicc ("fmovqvs", FM_QF, CONDVS, 0), --/* v9 */ fmovicc ("fmovsvs", FM_SF, CONDVS, 0), --/* v9 */ fmovcc ("fmovdz", FM_DF, CONDZ, FCONDZ, F_ALIAS), --/* v9 */ fmovcc ("fmovqz", FM_QF, CONDZ, FCONDZ, F_ALIAS), --/* v9 */ fmovcc ("fmovsz", FM_SF, CONDZ, FCONDZ, F_ALIAS), -- -+#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 } -+ -+#define fmovicc(suffix, cond, flags) /* v9 */ \ -+fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags), \ -+fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags), \ -+fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags) -+ -+#define fmovfcc(suffix, fcond, flags) /* v9 */ \ -+fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags), \ -+fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags), \ -+fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags) -+ -+#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \ -+fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags), \ -+fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags), \ -+fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags) -+ -+/* v9 */ fmovcc ("a", CONDA, FCONDA, 0), -+/* v9 */ fmovicc ("cc", CONDCC, 0), -+/* v9 */ fmovicc ("cs", CONDCS, 0), -+/* v9 */ fmovcc ("e", CONDE, FCONDE, 0), -+/* v9 */ fmovcc ("g", CONDG, FCONDG, 0), -+/* v9 */ fmovcc ("ge", CONDGE, FCONDGE, 0), -+/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS), -+/* v9 */ fmovicc ("gu", CONDGU, 0), -+/* v9 */ fmovcc ("l", CONDL, FCONDL, 0), -+/* v9 */ fmovcc ("le", CONDLE, FCONDLE, 0), -+/* v9 */ fmovicc ("leu", CONDLEU, 0), -+/* v9 */ fmovfcc ("lg", FCONDLG, 0), -+/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS), -+/* v9 */ fmovcc ("n", CONDN, FCONDN, 0), -+/* v9 */ fmovcc ("ne", CONDNE, FCONDNE, 0), -+/* v9 */ fmovicc ("neg", CONDNEG, 0), -+/* v9 */ fmovcc ("nz", CONDNZ, FCONDNZ, F_ALIAS), -+/* v9 */ fmovfcc ("o", FCONDO, 0), -+/* v9 */ fmovicc ("pos", CONDPOS, 0), -+/* v9 */ fmovfcc ("u", FCONDU, 0), -+/* v9 */ fmovfcc ("ue", FCONDUE, 0), -+/* v9 */ fmovfcc ("ug", FCONDUG, 0), -+/* v9 */ fmovfcc ("uge", FCONDUGE, 0), -+/* v9 */ fmovfcc ("ul", FCONDUL, 0), -+/* v9 */ fmovfcc ("ule", FCONDULE, 0), -+/* v9 */ fmovicc ("vc", CONDVC, 0), -+/* v9 */ fmovicc ("vs", CONDVS, 0), -+/* v9 */ fmovcc ("z", CONDZ, FCONDZ, F_ALIAS), -+ -+#undef fmoviccx /* v9 */ -+#undef fmovfccx /* v9 */ -+#undef fmovccx /* v9 */ - #undef fmovicc /* v9 */ - #undef fmovfcc /* v9 */ - #undef fmovcc /* v9 */ diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.15.91.0.2/binutils-20040817-linkonce.patch --- a/patches/binutils/2.15.91.0.2/binutils-20040817-linkonce.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -From http://sources.redhat.com/ml/binutils/2004-08/msg00190.html - -Date: Tue, 17 Aug 2004 12:04:29 +0200 -From: Jakub Jelinek -To: binutils at sources dot redhat dot com -Subject: [PATCH] Fix `defined in discarded section' errors when building ia64 gcc -Message-ID: <20040817100429.GL30497@sunsite.ms.mff.cuni.cz> -Reply-To: Jakub Jelinek -References: <20040817090201.GK30497@sunsite.ms.mff.cuni.cz> -In-Reply-To: <20040817090201 dot GK30497 at sunsite dot ms dot mff dot cuni dot cz> - -On Tue, Aug 17, 2004 at 11:02:01AM +0200, Jakub Jelinek wrote: -> Current gcc 3.4.x (at least gcc-3_4-rhl-branch) doesn't build with CVS -> binutils (nor 2.15.91.0.2). -> The problem is that libstdc++.so linking fails with: -> `.gnu.linkonce.t._ZNSdD2Ev' referenced in section `.gnu.linkonce.ia64unw._ZNSdD2Ev' of .libs/sstream-inst.o: defined in discarded section `.gnu.linkonce.t._ZNSdD2Ev' of .libs/sstream-inst.o -> The problem is that both io-inst.s and sstream-inst.s have -> .gnu.linkonce.t._ZNSdD2Ev definition, but because io-inst.cc -> also instantiates some templates sstream-inst.cc doesn't instantiate, -> the inliner can do a better job in io-inst.cc. -> The result is that _ZNSdD2Ev in io-inst.cc is a leaf routine, while -> it is not in sstream-inst.cc (in assembly, -> _ZNSdD2Ev in io-inst.s starts with .prologue and no .save directives, -> while _ZNSdD2Ev] in sstream-inst.s has .prologue 12, 35 and some -> .save directives. -> IA-64 ABI allows leaf routines to have no unwind section at all, -> which means .gnu.linkonce.ia64unw._ZNSdD2Ev is not created in -> io-inst.o at all and as .gnu.linkonce.t._ZNSdD2Ev comes first -> and wins, .gnu.linkonce.ia64unw._ZNSdD2Ev in sstream.o suddenly -> references a discarded section. -> -> Not sure what should be done here, but certainly the compiler -> isn't at fault here, it is a binutils problem. -> One fix could be to create empty .gnu.linkonce.ia64unw.* section -> in assembler, another special case ia64 unwind sections in the linker. - -Here is a patch for the first possibility. -It certainly makes libstdc++.so to link and even the unwind info looks -good on brief skimming. - -2004-08-17 Jakub Jelinek - - * config/tc-ia64.c (start_unwind_section): Add linkonce_empty - argument, don't do anything if current section is not - .gnu.linkonce.t.* and linkonce_empty is set. - (generate_unwind_image, dot_endp): Adjust callers, call - start_unwind_section (*, 1) if nothing will be put into the - section. - ---- binutils/gas/config/tc-ia64.c.jj 2004-07-30 11:42:24.000000000 +0200 -+++ binutils/gas/config/tc-ia64.c 2004-08-17 13:45:04.288173205 +0200 -@@ -1,5 +1,6 @@ - /* tc-ia64.c -- Assembler for the HP/Intel IA-64 architecture. -- Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004 -+ Free Software Foundation, Inc. - Contributed by David Mosberger-Tang - - This file is part of GAS, the GNU Assembler. -@@ -3297,7 +3298,7 @@ static char *special_linkonce_name[] = - }; - - static void --start_unwind_section (const segT text_seg, int sec_index) -+start_unwind_section (const segT text_seg, int sec_index, int linkonce_empty) - { - /* - Use a slightly ugly scheme to derive the unwind section names from -@@ -3359,6 +3360,8 @@ start_unwind_section (const segT text_se - prefix = special_linkonce_name [sec_index - SPECIAL_SECTION_UNWIND]; - suffix += sizeof (".gnu.linkonce.t.") - 1; - } -+ else if (linkonce_empty) -+ return; - - prefix_len = strlen (prefix); - suffix_len = strlen (suffix); -@@ -3444,7 +3447,7 @@ generate_unwind_image (const segT text_s - expressionS exp; - bfd_reloc_code_real_type reloc; - -- start_unwind_section (text_seg, SPECIAL_SECTION_UNWIND_INFO); -+ start_unwind_section (text_seg, SPECIAL_SECTION_UNWIND_INFO, 0); - - /* Make sure the section has 4 byte alignment for ILP32 and - 8 byte alignment for LP64. */ -@@ -3485,6 +3488,8 @@ generate_unwind_image (const segT text_s - unwind.personality_routine = 0; - } - } -+ else -+ start_unwind_section (text_seg, SPECIAL_SECTION_UNWIND_INFO, 1); - - free_saved_prologue_counts (); - unwind.list = unwind.tail = unwind.current_entry = NULL; -@@ -4164,7 +4169,7 @@ dot_endp (dummy) - subseg_set (md.last_text_seg, 0); - unwind.proc_end = expr_build_dot (); - -- start_unwind_section (saved_seg, SPECIAL_SECTION_UNWIND); -+ start_unwind_section (saved_seg, SPECIAL_SECTION_UNWIND, 0); - - /* Make sure that section has 4 byte alignment for ILP32 and - 8 byte alignment for LP64. */ -@@ -4204,6 +4209,9 @@ dot_endp (dummy) - bytes_per_address); - - } -+ else -+ start_unwind_section (saved_seg, SPECIAL_SECTION_UNWIND, 1); -+ - subseg_set (saved_seg, saved_subseg); - - /* Parse names of main and alternate entry points and set symbol sizes. */ - - - Jakub - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.15.91.0.2/binutils-dup-sections.patch --- a/patches/binutils/2.15.91.0.2/binutils-dup-sections.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -See http://sources.redhat.com/ml/binutils/2004-08/msg00256.html - -Date: Fri, 20 Aug 2004 21:13:43 -0400 -From: Daniel Jacobowitz -To: binutils at sources dot redhat dot com -Subject: Re: Handle SEC_LINK_DUPLICATES_SAME_CONTENTS for arm-linux -Message-ID: <20040821011342.GA30319@nevyn.them.org> -Mail-Followup-To: binutils at sources dot redhat dot com -References: <20040818145518.GA9774@nevyn.them.org> <20040819055040.GA11820@lucon.org> <20040819080034.GE21716@bubble.modra.org> <20040820173240.GA17678@nevyn.them.org> <20040821003737.GB16016@bubble.modra.org> -In-Reply-To: <20040821003737 dot GB16016 at bubble dot modra dot org> - -On Sat, Aug 21, 2004 at 10:07:38AM +0930, Alan Modra wrote: -> On Fri, Aug 20, 2004 at 01:32:40PM -0400, Daniel Jacobowitz wrote: -> > Thanks. How's this? -> -> As you might have guessed from my rather slack review of your previous -> patch, I trust you enough to give the OK without proper review. But -> since you asked... :) - -Checked in as so. - --- -Daniel Jacobowitz - -[ rediffed against binutils-2.15.91.0.2, with some elbow grease ] - -2004-08-20 Daniel Jacobowitz - - * elflink.c (_bfd_elf_section_already_linked): Handle - SEC_LINK_DUPLICATES_SAME_CONTENTS. ---- binutils-2.15.91.0.2/bfd/elflink.c.old 2004-07-27 21:36:08.000000000 -0700 -+++ binutils-2.15.91.0.2/bfd/elflink.c 2004-08-26 06:38:07.000000000 -0700 -@@ -9359,6 +9359,35 @@ - (_("%s: %s: warning: duplicate section `%s' has different size\n"), - bfd_archive_filename (abfd), name); - break; -+ case SEC_LINK_DUPLICATES_SAME_CONTENTS: -+ if (sec->size != l->sec->size) -+ (*_bfd_error_handler) -+ (_("%B: duplicate section `%A' has different size\n"), -+ bfd_archive_filename (abfd), sec); -+ else if (sec->size != 0) -+ { -+ bfd_byte *sec_contents, *l_sec_contents; -+ -+ if (!bfd_malloc_and_get_section (abfd, sec, &sec_contents)) -+ (*_bfd_error_handler) -+ (_("%B: warning: could not read contents of section `%A'\n"), -+ bfd_archive_filename (abfd), sec); -+ else if (!bfd_malloc_and_get_section (l->sec->owner, l->sec, -+ &l_sec_contents)) -+ (*_bfd_error_handler) -+ (_("%B: warning: could not read contents of section `%A'\n"), -+ bfd_archive_filename(l->sec->owner), l->sec); -+ else if (memcmp (sec_contents, l_sec_contents, sec->size) != 0) -+ (*_bfd_error_handler) -+ (_("%B: warning: duplicate section `%A' has different contents\n"), -+ bfd_archive_filename (abfd), sec); -+ -+ if (sec_contents) -+ free (sec_contents); -+ if (l_sec_contents) -+ free (l_sec_contents); -+ } -+ break; - } - - /* Set the output_section field so that lang_add_section diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.15.91.0.2/binutils-skip-comments.patch --- a/patches/binutils/2.15.91.0.2/binutils-skip-comments.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html -Fixes -localealias.s:544: Error: junk at end of line, first unrecognized character is `,' -when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3 - -Paths adjusted to match crosstool's patcher. - -Message-Id: m3n052qw2g.fsf@whitebox.m5r.de -From: Andreas Schwab -To: Nathan Sidwell -Cc: Ian Lance Taylor , binutils at sources dot redhat dot com -Date: Fri, 23 Apr 2004 22:27:19 +0200 -Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line - -Nathan Sidwell writes: - -> Index: read.c -> =================================================================== -> RCS file: /cvs/src/src/gas/read.c,v -> retrieving revision 1.76 -> diff -c -3 -p -r1.76 read.c -> *** read.c 12 Mar 2004 17:48:12 -0000 1.76 -> --- read.c 18 Mar 2004 09:56:05 -0000 -> *************** read_a_source_file (char *name) -> *** 1053,1059 **** -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! ignore_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook -> --- 1053,1059 ---- -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! demand_empty_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook - -This means that the unknown character is no longer ignored, despite the -comment. As a side effect a line starting with a line comment character -not followed by APP in NO_APP mode now triggers an error instead of just a -warning, breaking builds of glibc on m68k-linux. Earlier in -read_a_source_file where #APP is handled there is another comment that -claims that unknown comments are ignored, when in fact they aren't (only -the initial line comment character is skipped). - -Note that the presence of #APP will mess up the line counters, but -that appears to be difficult to fix. - -Andreas. - -2004-04-23 Andreas Schwab - - * read.c (read_a_source_file): Ignore unknown text after line - comment character. Fix misleading comment. - ---- binutils/gas/read.c.~1.78.~ 2004-04-23 08:58:23.000000000 +0200 -+++ binutils/gas/read.c 2004-04-23 21:49:01.000000000 +0200 -@@ -1,6 +1,6 @@ - /* read.c - read a source file - - Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, -- 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - -@@ -950,10 +950,14 @@ read_a_source_file (char *name) - unsigned int new_length; - char *tmp_buf = 0; - -- bump_line_counters (); - s = input_line_pointer; - if (strncmp (s, "APP\n", 4)) -- continue; /* We ignore it */ -+ { -+ /* We ignore it */ -+ ignore_rest_of_line (); -+ continue; -+ } -+ bump_line_counters (); - s += 4; - - sb_new (&sbuf); -@@ -1052,7 +1056,7 @@ read_a_source_file (char *name) - continue; - #endif - input_line_pointer--; -- /* Report unknown char as ignored. */ -+ /* Report unknown char as error. */ - demand_empty_rest_of_line (); - } - - --- -Andreas Schwab, SuSE Labs, schwab@suse.de -SuSE Linux AG, MaxfeldstraÃe 5, 90409 NÃrnberg, Germany -Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 -"And now for something completely different." diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.8/100-uclibc-conf.patch --- a/patches/binutils/2.17.50.0.8/100-uclibc-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,139 +0,0 @@ ---- binutils-2.16.91.0.7/bfd/configure -+++ binutils-2.16.91.0.7/bfd/configure -@@ -3576,7 +3576,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/binutils/configure -+++ binutils-2.16.91.0.7/binutils/configure -@@ -3411,7 +3411,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/configure -+++ binutils-2.16.91.0.7/configure -@@ -1270,7 +1270,7 @@ - am33_2.0-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; -- sh-*-linux*) -+ sh*-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; - sh*-*-pe|mips*-*-pe|*arm-wince-pe) -@@ -1578,7 +1578,7 @@ - romp-*-*) - noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" - ;; -- sh-*-* | sh64-*-*) -+ sh*-*-* | sh64-*-*) - case "${host}" in - i[3456789]86-*-vsta) ;; # don't add gprof back in - i[3456789]86-*-go32*) ;; # don't add gprof back in ---- binutils-2.16.91.0.7/configure.in -+++ binutils-2.16.91.0.7/configure.in -@@ -468,7 +468,7 @@ - am33_2.0-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; -- sh-*-linux*) -+ sh*-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; - sh*-*-pe|mips*-*-pe|*arm-wince-pe) -@@ -776,7 +776,7 @@ - romp-*-*) - noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" - ;; -- sh-*-* | sh64-*-*) -+ sh*-*-* | sh64-*-*) - case "${host}" in - i[[3456789]]86-*-vsta) ;; # don't add gprof back in - i[[3456789]]86-*-go32*) ;; # don't add gprof back in ---- binutils-2.16.91.0.7/gas/configure -+++ binutils-2.16.91.0.7/gas/configure -@@ -3411,7 +3411,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/gprof/configure -+++ binutils-2.16.91.0.7/gprof/configure -@@ -3419,6 +3419,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* | 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]+$' ---- binutils-2.16.91.0.7/ld/configure -+++ binutils-2.16.91.0.7/ld/configure -@@ -3413,7 +3413,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/libtool.m4 -+++ binutils-2.16.91.0.7/libtool.m4 -@@ -739,7 +739,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/ltconfig -+++ binutils-2.16.91.0.7/ltconfig -@@ -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 -@@ -1247,7 +1248,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - version_type=linux - need_lib_prefix=no - need_version=no ---- binutils-2.16.91.0.7/opcodes/configure -+++ binutils-2.16.91.0.7/opcodes/configure -@@ -3579,7 +3579,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.8/110-arm-eabi-conf.patch --- a/patches/binutils/2.17.50.0.8/110-arm-eabi-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure ---- binutils-2.16.91.0.7.orig/configure 2006-05-31 14:54:24.000000000 +0300 -+++ binutils-2.16.91.0.7/configure 2006-05-31 14:55:53.000000000 +0300 -@@ -1299,7 +1299,7 @@ - arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - ;; -- arm*-*-linux-gnueabi) -+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - noconfigdirs="$noconfigdirs target-libjava target-libobjc" - ;; -diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in ---- binutils-2.16.91.0.7.orig/configure.in 2006-05-31 14:54:24.000000000 +0300 -+++ binutils-2.16.91.0.7/configure.in 2006-05-31 14:55:53.000000000 +0300 -@@ -497,7 +497,7 @@ - arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - ;; -- arm*-*-linux-gnueabi) -+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - noconfigdirs="$noconfigdirs target-libjava target-libobjc" - ;; diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.8/300-001_ld_makefile_patch.patch --- a/patches/binutils/2.17.50.0.8/300-001_ld_makefile_patch.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -#!/bin/sh -e -## 001_ld_makefile_patch.dpatch -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Description: correct where ld scripts are installed -## DP: Author: Chris Chimelis -## DP: Upstream status: N/A -## DP: Date: ?? - -if [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi - -[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts -patch_opts="${patch_opts:--f --no-backup-if-mismatch}" - -case "$1" in - -patch) patch $patch_opts -p1 < $0;; - -unpatch) patch $patch_opts -p1 -R < $0;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1;; -esac - -exit 0 - -@DPATCH@ ---- binutils-2.16.91.0.1/ld/Makefile.am -+++ binutils-2.16.91.0.1/ld/Makefile.am -@@ -20,7 +20,7 @@ - # We put the scripts in the directory $(scriptdir)/ldscripts. - # We can't put the scripts in $(datadir) because the SEARCH_DIR - # directives need to be different for native and cross linkers. --scriptdir = $(tooldir)/lib -+scriptdir = $(libdir) - - EMUL = @EMUL@ - EMULATION_OFILES = @EMULATION_OFILES@ ---- binutils-2.16.91.0.1/ld/Makefile.in -+++ binutils-2.16.91.0.1/ld/Makefile.in -@@ -268,7 +268,7 @@ - # We put the scripts in the directory $(scriptdir)/ldscripts. - # We can't put the scripts in $(datadir) because the SEARCH_DIR - # directives need to be different for native and cross linkers. --scriptdir = $(tooldir)/lib -+scriptdir = $(libdir) - BASEDIR = $(srcdir)/.. - BFDDIR = $(BASEDIR)/bfd - INCDIR = $(BASEDIR)/include diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.8/300-012_check_ldrunpath_length.patch --- a/patches/binutils/2.17.50.0.8/300-012_check_ldrunpath_length.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -#!/bin/sh -e -## 012_check_ldrunpath_length.dpatch by Chris Chimelis -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for -## DP: cases where -rpath isn't specified. (#151024) - -if [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi - -[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts -patch_opts="${patch_opts:--f --no-backup-if-mismatch}" - -case "$1" in - -patch) patch $patch_opts -p1 < $0;; - -unpatch) patch $patch_opts -p1 -R < $0;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1;; -esac - -exit 0 - -@DPATCH@ -diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em ---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:58.000000000 +0100 -+++ binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:59.000000000 +0100 -@@ -692,6 +692,8 @@ - && command_line.rpath == NULL) - { - lib_path = (const char *) getenv ("LD_RUN_PATH"); -+ if ((lib_path) && (strlen (lib_path) == 0)) -+ lib_path = NULL; - if (gld${EMULATION_NAME}_search_needed (lib_path, &n, - force)) - break; -@@ -871,6 +873,8 @@ - rpath = command_line.rpath; - if (rpath == NULL) - rpath = (const char *) getenv ("LD_RUN_PATH"); -+ if ((rpath) && (strlen (rpath) == 0)) -+ rpath = NULL; - if (! (bfd_elf_size_dynamic_sections - (output_bfd, command_line.soname, rpath, - command_line.filter_shlib, diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.9/100-uclibc-conf.patch --- a/patches/binutils/2.17.50.0.9/100-uclibc-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,139 +0,0 @@ ---- binutils-2.16.91.0.7/bfd/configure -+++ binutils-2.16.91.0.7/bfd/configure -@@ -3576,7 +3576,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/binutils/configure -+++ binutils-2.16.91.0.7/binutils/configure -@@ -3411,7 +3411,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/configure -+++ binutils-2.16.91.0.7/configure -@@ -1270,7 +1270,7 @@ - am33_2.0-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; -- sh-*-linux*) -+ sh*-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; - sh*-*-pe|mips*-*-pe|*arm-wince-pe) -@@ -1578,7 +1578,7 @@ - romp-*-*) - noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" - ;; -- sh-*-* | sh64-*-*) -+ sh*-*-* | sh64-*-*) - case "${host}" in - i[3456789]86-*-vsta) ;; # don't add gprof back in - i[3456789]86-*-go32*) ;; # don't add gprof back in ---- binutils-2.16.91.0.7/configure.in -+++ binutils-2.16.91.0.7/configure.in -@@ -468,7 +468,7 @@ - am33_2.0-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; -- sh-*-linux*) -+ sh*-*-linux*) - noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss" - ;; - sh*-*-pe|mips*-*-pe|*arm-wince-pe) -@@ -776,7 +776,7 @@ - romp-*-*) - noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}" - ;; -- sh-*-* | sh64-*-*) -+ sh*-*-* | sh64-*-*) - case "${host}" in - i[[3456789]]86-*-vsta) ;; # don't add gprof back in - i[[3456789]]86-*-go32*) ;; # don't add gprof back in ---- binutils-2.16.91.0.7/gas/configure -+++ binutils-2.16.91.0.7/gas/configure -@@ -3411,7 +3411,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/gprof/configure -+++ binutils-2.16.91.0.7/gprof/configure -@@ -3419,6 +3419,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* | 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]+$' ---- binutils-2.16.91.0.7/ld/configure -+++ binutils-2.16.91.0.7/ld/configure -@@ -3413,7 +3413,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/libtool.m4 -+++ binutils-2.16.91.0.7/libtool.m4 -@@ -739,7 +739,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - ---- binutils-2.16.91.0.7/ltconfig -+++ binutils-2.16.91.0.7/ltconfig -@@ -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 -@@ -1247,7 +1248,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - version_type=linux - need_lib_prefix=no - need_version=no ---- binutils-2.16.91.0.7/opcodes/configure -+++ binutils-2.16.91.0.7/opcodes/configure -@@ -3579,7 +3579,7 @@ - ;; - - # This must be Linux ELF. --linux-gnu*) -+linux-gnu*|linux-uclibc*) - lt_cv_deplibs_check_method=pass_all - ;; - diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.9/110-arm-eabi-conf.patch --- a/patches/binutils/2.17.50.0.9/110-arm-eabi-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure ---- binutils-2.16.91.0.7.orig/configure 2006-05-31 14:54:24.000000000 +0300 -+++ binutils-2.16.91.0.7/configure 2006-05-31 14:55:53.000000000 +0300 -@@ -1299,7 +1299,7 @@ - arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - ;; -- arm*-*-linux-gnueabi) -+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - noconfigdirs="$noconfigdirs target-libjava target-libobjc" - ;; -diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in ---- binutils-2.16.91.0.7.orig/configure.in 2006-05-31 14:54:24.000000000 +0300 -+++ binutils-2.16.91.0.7/configure.in 2006-05-31 14:55:53.000000000 +0300 -@@ -497,7 +497,7 @@ - arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* ) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - ;; -- arm*-*-linux-gnueabi) -+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) - noconfigdirs="$noconfigdirs target-libffi target-qthreads" - noconfigdirs="$noconfigdirs target-libjava target-libobjc" - ;; diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.9/300-001_ld_makefile_patch.patch --- a/patches/binutils/2.17.50.0.9/300-001_ld_makefile_patch.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -#!/bin/sh -e -## 001_ld_makefile_patch.dpatch -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Description: correct where ld scripts are installed -## DP: Author: Chris Chimelis -## DP: Upstream status: N/A -## DP: Date: ?? - -if [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi - -[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts -patch_opts="${patch_opts:--f --no-backup-if-mismatch}" - -case "$1" in - -patch) patch $patch_opts -p1 < $0;; - -unpatch) patch $patch_opts -p1 -R < $0;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1;; -esac - -exit 0 - -@DPATCH@ ---- binutils-2.16.91.0.1/ld/Makefile.am -+++ binutils-2.16.91.0.1/ld/Makefile.am -@@ -20,7 +20,7 @@ - # We put the scripts in the directory $(scriptdir)/ldscripts. - # We can't put the scripts in $(datadir) because the SEARCH_DIR - # directives need to be different for native and cross linkers. --scriptdir = $(tooldir)/lib -+scriptdir = $(libdir) - - EMUL = @EMUL@ - EMULATION_OFILES = @EMULATION_OFILES@ ---- binutils-2.16.91.0.1/ld/Makefile.in -+++ binutils-2.16.91.0.1/ld/Makefile.in -@@ -268,7 +268,7 @@ - # We put the scripts in the directory $(scriptdir)/ldscripts. - # We can't put the scripts in $(datadir) because the SEARCH_DIR - # directives need to be different for native and cross linkers. --scriptdir = $(tooldir)/lib -+scriptdir = $(libdir) - BASEDIR = $(srcdir)/.. - BFDDIR = $(BASEDIR)/bfd - INCDIR = $(BASEDIR)/include diff -r 419d959441ed -r 447b203edc2e patches/binutils/2.17.50.0.9/300-012_check_ldrunpath_length.patch --- a/patches/binutils/2.17.50.0.9/300-012_check_ldrunpath_length.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -#!/bin/sh -e -## 012_check_ldrunpath_length.dpatch by Chris Chimelis -## -## All lines beginning with `## DP:' are a description of the patch. -## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for -## DP: cases where -rpath isn't specified. (#151024) - -if [ $# -ne 1 ]; then - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1 -fi - -[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts -patch_opts="${patch_opts:--f --no-backup-if-mismatch}" - -case "$1" in - -patch) patch $patch_opts -p1 < $0;; - -unpatch) patch $patch_opts -p1 -R < $0;; - *) - echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" - exit 1;; -esac - -exit 0 - -@DPATCH@ -diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em ---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:58.000000000 +0100 -+++ binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:59.000000000 +0100 -@@ -692,6 +692,8 @@ - && command_line.rpath == NULL) - { - lib_path = (const char *) getenv ("LD_RUN_PATH"); -+ if ((lib_path) && (strlen (lib_path) == 0)) -+ lib_path = NULL; - if (gld${EMULATION_NAME}_search_needed (lib_path, &n, - force)) - break; -@@ -871,6 +873,8 @@ - rpath = command_line.rpath; - if (rpath == NULL) - rpath = (const char *) getenv ("LD_RUN_PATH"); -+ if ((rpath) && (strlen (rpath) == 0)) -+ rpath = NULL; - if (! (bfd_elf_size_dynamic_sections - (output_bfd, command_line.soname, rpath, - command_line.filter_shlib, diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/compat.exp.patch --- a/patches/gcc/3.3.1/compat.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -Fixes the following problem when testing a cross-compiler: - -============================================ -Testing g++.dg/compat/abi/bitfield1, -... -Invoking the compiler as /crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/build-gcc/gcc/testsuite/../g++ ... -/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C -pid is 16028 -16028 -compiler exited with status 1 -output is: -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/powerpc-750-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian -/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/build-gcc/gcc/testsuite/../g++: error while loading shared libraries: /opt/cegl-2.0/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/powerpc-750-linux-gnu/./lib/libc.so.6: ELF file data encoding not little-endian - -FAIL: g++.dg/compat/abi/bitfield1 main_tst.o compile -============================================ - ---- gcc-3.3/gcc/testsuite/g++.dg/compat/compat.exp.old Thu Oct 17 17:22:57 2002 -+++ gcc-3.3/gcc/testsuite/g++.dg/compat/compat.exp Mon Jul 14 10:59:19 2003 -@@ -42,11 +42,13 @@ - proc compat-fix-library-path { } { - global ld_library_path - -- # See comments in lib/g++.exp for why this is needed. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # See comments in lib/g++.exp for why this is needed. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - } - - # diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/config.sub.patch --- a/patches/gcc/3.3.1/config.sub.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -When configuring a s390->s390 or cris->cris crosscompiler -(ok, I haven't hit this yet, but one of these days I'll get me an account -on an s390, and then I'll need this patch :-), you'll get the -following error: - -+ /build/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/gcc-3.3/configure ---target=s390-unknown-linux-gnu --host=s390-host_unknown-linux-gnu ---prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2 ---enable-languages=c ---with-local-prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/s390- -unknown-linux-gnu --enable-threads=no --without-headers --with-newlib ---disable-shared -... -*** --with-headers is only supported when cross compiling - -This error pops up only when you're using Daniel Jacobowitz's technique -of slightly changing the target and host tuples to make them different -enough to force gcc's build system to not try to pull in system libraries -or headers. This technique is needed e.g. to build an x86 -> x86 -cross-compiler. -(The LFS developers ran into the same bug that prompted me to use -this technique; they point people who run into it to -http://linuxfromscratch.org/~greg/pure_lfs.txt, which is a different -way of avoiding this problem. I think the tuple tweak is the way to go, though.) - -config-patches@gnu.org rejected this patch, on the grounds that there -is only one vendor of each of those two architectures, so the -canonicalization is by definition correct. When I pointed out the -difficulty this causes for people building s390 -> s390 or -cris -> cris compilers that are incompatible with the system -libraries and thus must be built like cross-compilers, he grumped and said -"autoconf should let you specify a cross-compiler in some other way than -comparing tuple strings". - - - ---- gcc-3.3/config.sub.old Sun Jun 8 20:38:47 2003 -+++ gcc-3.3/config.sub Sun Jun 8 20:40:34 2003 -@@ -433,9 +433,12 @@ - crds | unos) - basic_machine=m68k-crds - ;; -- cris | cris-* | etrax*) -+ cris | etrax*) - basic_machine=cris-axis - ;; -+ cris-*) -+ basic_machine=cris-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; -@@ -820,11 +823,17 @@ - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; -- s390 | s390-*) -+ s390) - basic_machine=s390-ibm - ;; -- s390x | s390x-*) -+ s390-*) -+ basic_machine=s390-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ s390x) - basic_machine=s390x-ibm -+ ;; -+ s390x-*) -+ basic_machine=s390x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sa29200) - basic_machine=a29k-amd diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/empty6.patch --- a/patches/gcc/3.3.1/empty6.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -From 3.4 branch. Fixes test failure -FAIL: g++.dg/abi/empty6.C (test for warnings, line 6) - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.dg/abi/empty6.C,v -retrieving revision 1.1 -retrieving revision 1.2 -diff -u -r1.1 -r1.2 ---- gcc/gcc/testsuite/g++.dg/abi/empty6.C 2002/09/25 19:07:35 1.1 -+++ gcc/gcc/testsuite/g++.dg/abi/empty6.C 2003/06/03 19:10:09 1.2 -@@ -5,4 +5,9 @@ - struct B { - A a; // { dg-warning "empty" } - virtual void f () {} --}; -+} __attribute__((aligned(8))); -+/* The preceding attribute is necessary on targets with -+ BIGGEST_ALIGNMENT <= 32 to trigger the warning, as otherwise a 32 bit -+ offset is split into DECL_FIELD_OFFSET 4 and DECL_FIELD_BIT_OFFSET 0, -+ and then there is no discrepancy between DECL_FIELD_OFFSET and -+ byte_position to warn about. */ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/gcc-3.2.3-g++.exp.patch --- a/patches/gcc/3.3.1/gcc-3.2.3-g++.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -See http://gcc.gnu.org/PR12010 - -g++ testsuite fixes for cross-compilers, Dan Kegel, Ixia Communications, 12 July 2003 - -The first hunk fixes the error - -/testsuite_flags: /testsuite_flags: No such file or directory - while executing -"exec sh ${odir_v3}/testsuite_flags --build-includes" - (procedure "g++_include_flags" line 21) - invoked from within -"g++_include_flags [get_multilibs] " - (procedure "g++_init" line 63) - invoked from within -"${tool}_init $test_file_name" - (procedure "runtest" line 19) - invoked from within -"runtest $test_name" - ("foreach" body line 42) - invoked from within -... -make[1]: [check-g++] Error 1 (ignored) - -The fix isn't especially pretty, but it worked for me, and can't hurt the -more common native compiler case. Maybe someone who knows the code better -can come up with a better fix. - -The second hunk fixes the error - -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-405-linux-gnu/gcc-3.2.3-glibc-2.2.5/powerpc-405-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian - -when trying to compile g++ testcases (!); setting up -the shared library environment when running crosstests of g++ -should either be done by a special board file, or by -setting up a remote chroot environment (see http://kegel.com/crosstool), -not by blithely setting LD_LIBRARY_PATH on the local system. - ---- gcc-3.2.3/gcc/testsuite/lib/g++.exp.old Fri Jul 11 15:42:47 2003 -+++ gcc-3.2.3/gcc/testsuite/lib/g++.exp Sat Jul 12 12:57:07 2003 -@@ -72,6 +72,8 @@ - # - proc g++_include_flags { paths } { - global srcdir -+ global objdir -+ global target_triplet - global HAVE_LIBSTDCXX_V3 - global TESTING_IN_BUILD_TREE - -@@ -90,6 +92,20 @@ - - if { ${HAVE_LIBSTDCXX_V3} } { - set odir_v3 [lookfor_file ${gccpath} libstdc++-v3] -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on first try, now looking in build directory $objdir" -+ # first assume no multilibs -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on second try, trying multilib" -+ # assume multilib only one level deep -+ set multisub [file tail $gccpath] -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ error "Can't find libstdc++-v3" -+ } - append flags [exec sh ${odir_v3}/testsuite_flags --build-includes] - } else { - set odir_v2 [lookfor_file ${gccpath} libstdc++] -@@ -192,16 +192,20 @@ - } - } - -- # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -- # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -- # (for the 64-bit ABI). The right way to do this would be to modify -- # unix.exp -- but that's not an option since it's part of DejaGNU -- # proper, so we do it here. We really only need to do -- # this on IRIX, but it shouldn't hurt to do it anywhere else. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -+ # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -+ # (for the 64-bit ABI). The right way to do this would be to modify -+ # unix.exp -- but that's not an option since it's part of DejaGNU -+ # proper, so we do it here. We really only need to do -+ # this on IRIX, but it shouldn't hurt to do it anywhere else. -+ -+ # Doing this causes us to be unable to run cross-compilers. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - - return "$flags" - } diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/gcc-3.3-libstdc++-v3-dg.exp.patch --- a/patches/gcc/3.3.1/gcc-3.3-libstdc++-v3-dg.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -Without this patch, the command - -RUNTESTFLAGS=--target=powerpc-750-linux-gnu -v -v -v -v make check-target-libstdc++-v3 - -fails in two ways: -1. the -L option meant to locate the testsuite directory is incorrect, and -2. the wrong compiler is invoked, causing all sorts of havoc, not least of which -is the native compiler is invoked when we really wanted to invoke the cross-compiler -we just built. - -Here's an example log of the problem in action. Every testcase fails, this shows just one: -------------- -Invoking the compiler as g++ -ggdb3 -DDEBUG_ASSERT -I/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite /home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc -g -O2 -DDEBUG_ASSERT -L/testsuite -lv3test -lm -o ./binders.exe -compiler exited with status 1 -output is: -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h: In method `void binder2nd >::operator ()(const Elem &) const':^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_algo.h:83: instantiated from `for_each > >(Elem *, Elem *, binder2nd >)'^M -/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc:43: instantiated from here^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:224: conversion from `const Elem' to `Elem &' discards qualifiers^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:622: in passing argument 1 of `mem_fun1_ref_t::operator ()(Elem &, int) const'^M -... -FAIL: 20_util/binders.cc (test for excess errors) -WARNING: 20_util/binders.cc compilation failed to produce executable -------------- - -And here's the patch. I'm not happy with it, and it probably gets some cases wrong, -but it seems to work for the common native case and for my cross-compiler case. - ---- gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp.old Sun Jul 13 10:42:01 2003 -+++ gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp Sun Jul 13 11:39:54 2003 -@@ -46,8 +46,23 @@ - global gluefile wrap_flags - global ld_library_path - global tool_root_dir -+ global target_triplet - - set blddir [lookfor_file [get_multilibs] libstdc++-v3] -+ if { $blddir == "" } { -+ set multilibs [get_multilibs] -+ # FIXME: assume multilib only one level deep -+ set multisub [file tail $multilibs] -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3 in $multilibs, trying $objdir" -+ set blddir [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3, trying $objdir without multilibs" -+ set blddir [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ error "Can't find libstdc++-v3" -+ } - - # By default, we assume we want to run program images. - global dg-do-what-default diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/gcc-3.3.1-trap-posix.patch --- a/patches/gcc/3.3.1/gcc-3.3.1-trap-posix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde , 2005-04-20 -# -# Error: -# -# creating libintl.h -# Configuring etc... -# loading cache ../config.cache -# checking for a BSD compatible install... (cached) /usr/bin/install -c -# creating ./config.status -# creating Makefile -# trap: usage: trap [-lp] [[arg] signal_spec ...] -# -# Description: -# -# non-posix conform usage of trap causes bash >= 3.0 to fail -# e.g.: http://sourceware.org/ml/crossgcc/2004-12/msg00132.html -# -# Status: -# -# fixed in gcc >= 3.3.5 -# backport of gcc-3.3.5 fix -# -diff -ruN gcc-3.3.1-orig/configure gcc-3.3.1/configure ---- gcc-3.3.1-orig/configure 2002-09-29 18:11:24.000000000 +0200 -+++ gcc-3.3.1/configure 2005-04-20 18:49:20.223220401 +0200 -@@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr10392-1-test.patch --- a/patches/gcc/3.3.1/pr10392-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10392-1.c Sun Sep 14 14:28:24 2003 -@@ -0,0 +1,62 @@ -+/* PR optimization/10392 -+ * Reporter: marcus@mc.pp.se -+ * Summary: [3.3/3.4 regression] [SH] optimizer generates faulty array indexing -+ * Description: -+ * The address calculation of an index operation on an array on the stack -+ * can _under some conditions_ get messed up completely -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Problem only happens with -O2 -m4, so it should only happen on sh4, -+ * but what the heck, let's test other architectures, too. -+ * Not marked as xfail since it's a regression. -+*/ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+/* { dg-options "-O2 -m4" { target sh4-*-* } } */ -+const char *dont_optimize_function_away; -+ -+const char *use(const char *str) -+{ -+ dont_optimize_function_away = str; -+ if (str[0] != 'v') -+ abort(); -+ if (str[1] < '1' || str[1] > '6') -+ abort(); -+ if (str[2]) -+ abort(); -+ return str[2] ? "notused" : "v6"; -+} -+ -+const char *func(char *a, char *b) -+{ -+ char buf[128]; -+ unsigned char i; -+ const char *result; -+ -+ char *item[] = { -+ "v1", -+ "v2", -+ }; -+ -+ buf[0] = 'v'; -+ buf[1] = '3'; -+ buf[2] = 0; -+ -+ for (i = 0; i < 2; i++) { -+ /* bug is: following line passes wild pointer to use() on sh4 -O2 */ -+ result = use(item[i]); -+ -+ use(buf); -+ use(a); -+ use(b); -+ result = use(result); -+ } -+ return result; -+} -+ -+int main() -+{ -+ func("v4", "v5"); -+ return 0; -+} -+ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr10412-1-test.patch --- a/patches/gcc/3.3.1/pr10412-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10412-1.c Sun Sep 14 16:15:21 2003 -@@ -0,0 +1,43 @@ -+/* PR target/10412 -+ * Reporter: shrinivasa@kpitcummins.com -+ * Summary: Renesas SH - Incorrect code generation -+ * Description: -+ * When following code is compiled with -+ * sh-elf-gcc -S -mhitachi -m2 -O2 bug1.c -+ * generates an incorrect code. -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Problem only happens with -mhitachi -m2. Not sure if I can give those -+ * options for all sh targets. They work on sh4, though. -+ * Not marked as xfail as it's a regression relative to hardhat 2.0 gcc-2.97. -+*/ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+int global_val; -+ -+int func0(int x) -+{ -+ global_val += x; -+ return (x != 99); -+} -+ -+int func1(unsigned long addr) -+{ -+ int err; -+ -+ err = func0(addr); -+ if (err) -+ return (err); -+ -+ err = func0(addr * 7); /* address of func0 is lost during multiplication -> probable SIGSEGV */ -+ return (err); -+} -+ -+int main(int argc, char **argv) -+{ -+ global_val = 0; -+ global_val += func1(99); -+ if (global_val != 99 * 8 + 1) -+ abort(); -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr10589-1-test.patch --- a/patches/gcc/3.3.1/pr10589-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10589-1.c Mon Sep 15 08:57:58 2003 -@@ -0,0 +1,14 @@ -+/* PR target/10589 -+ * Reporter: mathieu@thenesis.com -+ * Summary: For Hitachi SH target, GCC crashes when both -fomit-frame-pointer and -mdalign options are specified -+ * Keywords: ice-on-valid-code -+ * Testcase by Kazu Hirata, tweaked by dank@kegel.com -+ * Did not fail in Hard Hat 2.0 gcc-2.97, nor in dodes gcc-3.0.2, so this is a regression, so I'm not marking it xfail -+ */ -+/* { dg-do compile { target sh*-*-* } } */ -+/* { dg-options "-fomit-frame-pointer -mdalign" } */ -+ -+int foo(int a, int b) -+{ -+ return a / b; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr11162-1-test.patch --- a/patches/gcc/3.3.1/pr11162-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11162-1.c Sun Sep 14 16:24:41 2003 -@@ -0,0 +1,22 @@ -+/* -+ * PR optimization/11162 -+ * Reporter: Toshiyasu Morita -+ * Summary: [3.4 Regression] [-fnew-ra] ICE compiling channel.i on sh -+ * Keywords: ice-on-valid-code -+ * Description: -+ * [ICE] when channel.i from stress-1.17 is compiled with options: -+ * -O2 -m4 -fnew-ra -+ * ... -+ * The CFG code gets confused by the addition of a USE insn after a sibcall. -+ * Sibcalls are supposed to end the block (and the function!), so the fact -+ * that we have an instruction following one (even if its fake) is confusing. -+ * -+ * testcase tweaked by dank@kegel.com -+ */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fnew-ra" } */ -+ -+int foo(char *p1) -+{ -+ return bar(p1); -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr11587-1-test.patch --- a/patches/gcc/3.3.1/pr11587-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11587-1.c Mon Sep 15 08:46:00 2003 -@@ -0,0 +1,36 @@ -+/* PR optimization/11587 -+ * Reporter: Michael Eager -+ * Summary: [3.3/3.4 Regression] SH ICE in reload_cse_simplify_operand, postreload.c -+ * Keywords: ice-on-valid-code -+ * -+ * Note: a fix exists; see bugzilla -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Not marked as xfail since it's a regression. -+ */ -+ -+/* { dg-do compile } */ -+/* { dg-options "-O1" } */ -+int foo1(void); -+int foo2(); -+int foo3(); -+ -+static int goo() -+{ -+ int i; -+ -+ if (i <= 0) -+ return i; -+ -+ if (foo1() > 1) { -+ i = foo2(); -+ if (i < 0) -+ return i; -+ if (i) { -+ if (foo3()) -+ return 1; -+ return 0; -+ } -+ } -+ -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr11736-1-test.patch --- a/patches/gcc/3.3.1/pr11736-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11736-1.c Sun Sep 14 14:26:33 2003 -@@ -0,0 +1,45 @@ -+/* PR optimization/11736 -+ * Reporter: marcus@mc.pp.se -+ * Summary: Stackpointer messed up on SuperH -+ * Keywords: wrong-code -+ * Description: -+ * When a function with 5 arguments is called in both branches of a -+ * conditional, and only the last argument differs, the code to push that -+ * last argument on the stack gets confused. -+ * Space for the fifth argument is reserved on the stack by the -+ * instruction I have marked as "A". However, if the else-branch is -+ * taken the stackpointer is decremented _again_ at "B". This -+ * decrementation is never restored, and it is only due to the -+ * restoration of r15 from r14 that the function works at all. With -+ * -fomit-frame-pointer it will crash. -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Not marked as xfail since it's a regression from hardhat 2.0 gcc-2.97 -+ * and dodes gcc-3.0.2 -+ */ -+ -+/* { dg-do run } */ -+/* { dg-options "-O1 -fomit-frame-pointer" } */ -+ -+int expected_e; -+ -+void bar(int a, int b, int c, int d, int e) -+{ -+ if (e != expected_e) -+ abort(); -+} -+ -+void foo(int a) -+{ -+ if (a) -+ bar(0, 0, 0, 0, 1); -+ else -+ bar(0, 0, 0, 0, 0); /* stack pointer decremented extra time here, causing segfault */ -+} -+ -+int main(int argc, char **argv) -+{ -+ for (expected_e = 0; expected_e < 2; expected_e++) -+ foo(expected_e); -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr11864-1-test.patch --- a/patches/gcc/3.3.1/pr11864-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11864-1.c Sun Sep 14 14:32:24 2003 -@@ -0,0 +1,42 @@ -+/* PR optimization/11864 -+ * Reporter: Kazumoto Kojima -+ * Summary: [3.3/3.4 regression] miscompiles zero extension and test -+ * Description: -+ * gcc-3.3/3.4 -O2 for sh target may miscompile the combination of zero extension -+ * and test if it's zero. -+ * -+ * Testcase tweaked by dank@kegel.com. Not marked as xfail because it's a regression. -+ */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+extern void abort(void); -+ -+int val = 0xff00; -+ -+int f(void) -+{ -+ return val; -+} -+ -+unsigned char a[1]; -+ -+void foo(void) -+{ -+ a[0] = f() & 255; -+ -+ if (!a[0]) -+ a[0] = f() & 255; -+ -+ if (!a[0]) -+ a[0] = 1 + (f() & 127); -+} -+ -+int main(int argc, char **argv) -+{ -+ foo(); -+ if (!a[0]) -+ abort(); -+ -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr11949-fix.patch --- a/patches/gcc/3.3.1/pr11949-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -Message-Id: 20030822160024.GA305@ftbfs.org -From: Matt Kraai kraai at alumni dot cmu dot edu -To: gcc-patches at gcc dot gnu dot org -Date: Fri, 22 Aug 2003 09:00:24 -0700 -Subject: PR 11949 - -Howdy, - -I've backported the following patch from the mainline to the 3.3 -branch to fix PR 11949. - -Bootstrapped and regression tested on powerpc-unknown-linux-gnu. - -OK to commit? - - PR c/11949 - Backport from mainline: - - 2003-05-05 Aldy Hernandez aldyh@redhat.com - - * testsuite/gcc.c-torture/compile/simd-6.c: New. - - * c-typeck.c (digest_init): Handle arrays of vector constants. - -Index: gcc/c-typeck.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/c-typeck.c,v -retrieving revision 1.213.2.8 -diff -3 -c -p -r1.213.2.8 c-typeck.c -*** gcc/gcc/c-typeck.c 19 Aug 2003 01:42:35 -0000 1.213.2.8 ---- gcc/gcc/c-typeck.c 22 Aug 2003 09:24:03 -0000 -*************** digest_init (type, init, require_constan -*** 4765,4772 **** - if (code == VECTOR_TYPE - && comptypes (TREE_TYPE (inside_init), type) - && TREE_CONSTANT (inside_init)) -! return build_vector (type, TREE_OPERAND (inside_init, 1)); -! - - /* Any type can be initialized - from an expression of the same type, optionally with braces. */ ---- 4765,4778 ---- - if (code == VECTOR_TYPE - && comptypes (TREE_TYPE (inside_init), type) - && TREE_CONSTANT (inside_init)) -! { -! if (TREE_CODE (inside_init) == VECTOR_CST -! && comptypes (TYPE_MAIN_VARIANT (TREE_TYPE (inside_init)), -! TYPE_MAIN_VARIANT (type))) -! return inside_init; -! else -! return build_vector (type, CONSTRUCTOR_ELTS (inside_init)); -! } - - /* Any type can be initialized - from an expression of the same type, optionally with braces. */ - -typedef int __attribute__((mode(V2SI))) vec; - -vec a[] = {(vec) {1, 2}, {3, 4}}; - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/pr9365-1-test.patch --- a/patches/gcc/3.3.1/pr9365-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr9365-1.c Sun Sep 14 09:34:37 2003 -@@ -0,0 +1,40 @@ -+/* PR target/9365 -+ * Origin: marcus@mc.pp.se -+ * Testcase tweaked by dank@kegel.com -+ * [3.3 regression] [SH] segfault in gen_far_branch (config/sh/sh.c) -+ * ice-on-valid-code -+ * Not marked as xfail since it's a regression -+*/ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fomit-frame-pointer" } */ -+ -+ -+void foo(int n, int *p) -+{ -+ switch(n) { -+ case 100: case 110: case 120: case 130: case 140: -+ case 200: case 210: case 220: case 230: case 240: -+ case 300: case 310: case 320: case 330: case 340: -+ case 400: case 410: case 420: case 430: case 440: -+ case 500: case 510: case 520: case 530: case 540: -+ case 600: case 610: case 620: case 630: case 640: -+ case 700: case 710: case 720: case 730: case 740: -+ case 800: case 810: case 820: case 830: case 840: -+ case 900: case 910: case 920: case 930: case 940: -+ break; -+ default: -+ *p = n; -+ break; -+ } -+} -+ -+int main(int argc, char **argv) -+{ -+ int p; -+ -+ (void) argv; -+ -+ foo(argc, &p); -+ -+ return p; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/sh-pic-set_fpscr.patch --- a/patches/gcc/3.3.1/sh-pic-set_fpscr.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -See http://gcc.gnu.org/PR11901 -Should fix -make[2]: *** [/gcc-3.3-glibc-2.3.2/build-glibc/elf/check-textrel.out] Error 1 -in glibc's "make tests". - -------------- - -Message-Id: <200307300255.h6U2tB906928@r-rr.iij4u.or.jp> -To: dank@kegel.com -Cc: linux-sh@m17n.org -Subject: Re: Writing PIC version of __udivsi3_i4? (was: Re: "make tests" fails - with "libc.so: text relocations used" in glibc-2.3.2 for sh4) -In-Reply-To: Your message of "Wed, 30 Jul 2003 11:20:49 +0900" - <200307300212.h6U2CH901209@r-rr.iij4u.or.jp> -References: <200307300212.h6U2CH901209@r-rr.iij4u.or.jp> -Date: Wed, 30 Jul 2003 12:03:01 +0900 -From: kaz Kojima - -> I'll try to write the PIC version of it, - -Dan, does the attached patch work for you? - -[dank: original patch deleted; here's same thing rediffed against gcc-3.3 instead of HEAD] - ---- gcc-3.3/gcc/config/sh/lib1funcs.asm.old Tue Jul 29 21:37:29 2003 -+++ gcc-3.3/gcc/config/sh/lib1funcs.asm Tue Jul 29 21:40:58 2003 -@@ -1792,7 +1792,17 @@ - .global GLOBAL(set_fpscr) - GLOBAL(set_fpscr): - lds r4,fpscr -+#ifdef __PIC__ -+ mov.l r12,@-r15 -+ mova LOCAL(set_fpscr_L0),r0 -+ mov.l LOCAL(set_fpscr_L0),r12 -+ add r0,r12 -+ mov.l LOCAL(set_fpscr_L1),r0 -+ mov.l @(r0,r12),r1 -+ mov.l @r15+,r12 -+#else - mov.l LOCAL(set_fpscr_L1),r1 -+#endif - swap.w r4,r0 - or #24,r0 - #ifndef FMOVD_WORKS -@@ -1820,8 +1830,16 @@ - mov.l r3,@(4,r1) - #endif - .align 2 -+#ifdef __PIC__ -+LOCAL(set_fpscr_L0): -+ .long _GLOBAL_OFFSET_TABLE_ -+LOCAL(set_fpscr_L1): -+ .long GLOBAL(fpscr_values@GOT) -+#else - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+#endif -+ - #ifdef __ELF__ - .comm GLOBAL(fpscr_values),8,4 - #else diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/sh-spec.patch --- a/patches/gcc/3.3.1/sh-spec.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -See http://gcc.gnu.org/PR11902 - -Part of fix for abort on line - assert (info[DT_RPATH] == NULL); -in glibc-2.3.2's ld.so, which makes all dynamically-linked -programs crash. - -Message-Id: <200308020452.h724q0n01509@r-rr.iij4u.or.jp> -To: dank@kegel.com -Cc: kkojima@rr.iij4u.or.jp -Subject: Re: Writing PIC version of __udivsi3_i4? -In-Reply-To: Your message of "Fri, 01 Aug 2003 21:15:27 -0700" - <3F2B3ADF.6030206@kegel.com> -References: <3F2B3ADF.6030206@kegel.com> -Date: Sat, 02 Aug 2003 13:58:05 +0900 -From: kaz Kojima - -Dan Kegel wrote: -> It seems it might be from gcc's spec file: -> -> *subtarget_link_spec: -> %{shared:-shared} %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} %{!rpath:-rpath /lib}} %{static:-static} -> -> as the only place -rpath showed up was in the output of gcc -v as it -> was linking libc.so. -> -> Well, that's a clue, anyway! Guess I'll dig through the spec files -> tomorrow to see if I can figure it out some more. - -I've grepped gcc/config/*/*.h and found only SH and old libc1 stuffs -of i386/alpha include %{!rpath:-rpath ... in 3.3 release and the -current CVS. And my sh-gcc's specs doesn't have this :-( -It would be the Right Thing to remove this stuff simply. How about -the gcc patch below? - -Regards, - kaz --- ---- gcc-3.3/gcc/config/sh/linux.h.orig Sat Aug 2 13:20:57 2003 -+++ gcc-3.3/gcc/config/sh/linux.h Sat Aug 2 13:22:42 2003 -@@ -48,8 +48,7 @@ do { \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -- %{!rpath:-rpath /lib}} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" - - /* The GNU C++ standard library requires that these macros be defined. */ - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/sh4-pthread.patch --- a/patches/gcc/3.3.1/sh4-pthread.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -See http://gcc.gnu.org/PR11903 - -Patch to fix following test case failure: - - === libstdc++-v3 tests === -FAIL: thread/pthread1.cc (test for excess errors) -Excess errors: -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/sh4-unknown-linux-gnu/bin/ld: cannot find -lthread -collect2: ld returned 1 exit status - -Note that *any* program compiled with -pthread fails: - -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/bin/sh4-unknown-linux-gnu-gcc hello.c -pthread -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/lib/gcc-lib/sh4-unknown-linux-gnu/3.3.1/../../../../sh4-unknown-linux-gnu/bin/ld: cannot find -lthread -collect2: ld returned 1 exit status - -Compiling with -lpthread on the other hand works fine: -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/bin/sh4-unknown-linux-gnu-gcc hello.c -lpthread - -So -pthread is broken in some trivial way; it should invoke -lpthread, not -lthread, -at least when targeting Linux. - -http://www.sh-linux.org/rpm-2003/SRPMS/gcc-3.2.3-3.src.rpm contains a jumbo patch, -gcc-20030210-sh-linux-1.patch, that includes a fix for this. Here's the -appropriate hunk (brings in a fix for the documented -mieee option). -No idea if this fix is completely right, but it works for me... -- dank@kegel.com 20 Jul 2003 - -Index: linux.h -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/config/sh/linux.h,v -retrieving revision 1.9.20.1 -diff -u -d -u -r1.9.20.1 linux.h ---- gcc-ss-3_3-20030714/gcc/config/sh/linux.h.old 6 Jun 2003 02:30:59 -0000 1.9.20.1 -+++ gcc-ss-3_3-20030714/gcc/config/sh/linux.h 20 Jul 2003 23:36:50 -0000 -@@ -59,7 +59,7 @@ - #undef LIB_SPEC - #define LIB_SPEC \ - "%{shared: -lc} \ -- %{!shared: %{pthread:-lthread} \ -+ %{!shared: %{mieee:-lieee} %{pthread:-lpthread} \ - %{profile:-lc_p} %{!profile: -lc}}" - - #undef STARTFILE_SPEC diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.1/thunk3.patch --- a/patches/gcc/3.3.1/thunk3.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -Fixes -FAIL: g++.jason/thunk3.C (test for excess errors) -on sh4-unknown-linux-gnu. - -Does any sh variant *not* use the generic thunk support? If so, the patch should be -more cautious. As it is, it excludes all sh processors from this test. - -Index: thunk3.C -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C,v -retrieving revision 1.13 -diff -u -d -u -r1.13 thunk3.C ---- gcc-ss-3_3-20030714/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C.old 25 Mar 2002 17:57:03 -0000 1.13 -+++ gcc-ss-3_3-20030714/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C 20 Jul 2003 16:57:38 -0000 -@@ -2,7 +2,7 @@ - // Note that this will break on any target that uses the generic thunk - // support, because it doesn't support variadic functions. - --// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3 mn10300-*-* mn10200-*-* v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa-*-* -+// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3 mn10300-*-* mn10200-*-* v850-*-* sh*-*-* h8*-*-* xtensa-*-* - - #include - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/empty6.patch --- a/patches/gcc/3.3.2/empty6.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -From 3.4 branch. Fixes test failure -FAIL: g++.dg/abi/empty6.C (test for warnings, line 6) - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.dg/abi/empty6.C,v -retrieving revision 1.1 -retrieving revision 1.2 -diff -u -r1.1 -r1.2 ---- gcc/gcc/testsuite/g++.dg/abi/empty6.C 2002/09/25 19:07:35 1.1 -+++ gcc/gcc/testsuite/g++.dg/abi/empty6.C 2003/06/03 19:10:09 1.2 -@@ -5,4 +5,9 @@ - struct B { - A a; // { dg-warning "empty" } - virtual void f () {} --}; -+} __attribute__((aligned(8))); -+/* The preceding attribute is necessary on targets with -+ BIGGEST_ALIGNMENT <= 32 to trigger the warning, as otherwise a 32 bit -+ offset is split into DECL_FIELD_OFFSET 4 and DECL_FIELD_BIT_OFFSET 0, -+ and then there is no discrepancy between DECL_FIELD_OFFSET and -+ byte_position to warn about. */ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/gcc-3.2.3-g++.exp.patch --- a/patches/gcc/3.3.2/gcc-3.2.3-g++.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,100 +0,0 @@ -See http://gcc.gnu.org/PR12010 - -g++ testsuite fixes for cross-compilers, Dan Kegel, Ixia Communications, 12 July 2003 - -The first hunk fixes the error - -/testsuite_flags: /testsuite_flags: No such file or directory - while executing -"exec sh ${odir_v3}/testsuite_flags --build-includes" - (procedure "g++_include_flags" line 21) - invoked from within -"g++_include_flags [get_multilibs] " - (procedure "g++_init" line 63) - invoked from within -"${tool}_init $test_file_name" - (procedure "runtest" line 19) - invoked from within -"runtest $test_name" - ("foreach" body line 42) - invoked from within -... -make[1]: [check-g++] Error 1 (ignored) - -The fix isn't especially pretty, but it worked for me, and can't hurt the -more common native compiler case. Maybe someone who knows the code better -can come up with a better fix. - -The second hunk fixes the error - -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-405-linux-gnu/gcc-3.2.3-glibc-2.2.5/powerpc-405-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian - -when trying to compile g++ testcases (!); setting up -the shared library environment when running crosstests of g++ -should either be done by a special board file, or by -setting up a remote chroot environment (see http://kegel.com/crosstool), -not by blithely setting LD_LIBRARY_PATH on the local system. - ---- gcc-3.2.3/gcc/testsuite/lib/g++.exp.old Fri Jul 11 15:42:47 2003 -+++ gcc-3.2.3/gcc/testsuite/lib/g++.exp Sat Jul 12 12:57:07 2003 -@@ -72,6 +72,8 @@ - # - proc g++_include_flags { paths } { - global srcdir -+ global objdir -+ global target_triplet - global HAVE_LIBSTDCXX_V3 - global TESTING_IN_BUILD_TREE - -@@ -90,6 +92,20 @@ - - if { ${HAVE_LIBSTDCXX_V3} } { - set odir_v3 [lookfor_file ${gccpath} libstdc++-v3] -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on first try, now looking in build directory $objdir" -+ # first assume no multilibs -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on second try, trying multilib" -+ # assume multilib only one level deep -+ set multisub [file tail $gccpath] -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ error "Can't find libstdc++-v3" -+ } - append flags [exec sh ${odir_v3}/testsuite_flags --build-includes] - } else { - set odir_v2 [lookfor_file ${gccpath} libstdc++] -@@ -192,16 +192,20 @@ - } - } - -- # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -- # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -- # (for the 64-bit ABI). The right way to do this would be to modify -- # unix.exp -- but that's not an option since it's part of DejaGNU -- # proper, so we do it here. We really only need to do -- # this on IRIX, but it shouldn't hurt to do it anywhere else. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -+ # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -+ # (for the 64-bit ABI). The right way to do this would be to modify -+ # unix.exp -- but that's not an option since it's part of DejaGNU -+ # proper, so we do it here. We really only need to do -+ # this on IRIX, but it shouldn't hurt to do it anywhere else. -+ -+ # Doing this causes us to be unable to run cross-compilers. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - - return "$flags" - } diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/gcc-3.3-libstdc++-v3-dg.exp.patch --- a/patches/gcc/3.3.2/gcc-3.3-libstdc++-v3-dg.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -Without this patch, the command - -RUNTESTFLAGS=--target=powerpc-750-linux-gnu -v -v -v -v make check-target-libstdc++-v3 - -fails in two ways: -1. the -L option meant to locate the testsuite directory is incorrect, and -2. the wrong compiler is invoked, causing all sorts of havoc, not least of which -is the native compiler is invoked when we really wanted to invoke the cross-compiler -we just built. - -Here's an example log of the problem in action. Every testcase fails, this shows just one: -------------- -Invoking the compiler as g++ -ggdb3 -DDEBUG_ASSERT -I/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite /home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc -g -O2 -DDEBUG_ASSERT -L/testsuite -lv3test -lm -o ./binders.exe -compiler exited with status 1 -output is: -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h: In method `void binder2nd >::operator ()(const Elem &) const':^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_algo.h:83: instantiated from `for_each > >(Elem *, Elem *, binder2nd >)'^M -/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc:43: instantiated from here^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:224: conversion from `const Elem' to `Elem &' discards qualifiers^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:622: in passing argument 1 of `mem_fun1_ref_t::operator ()(Elem &, int) const'^M -... -FAIL: 20_util/binders.cc (test for excess errors) -WARNING: 20_util/binders.cc compilation failed to produce executable -------------- - -And here's the patch. I'm not happy with it, and it probably gets some cases wrong, -but it seems to work for the common native case and for my cross-compiler case. - ---- gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp.old Sun Jul 13 10:42:01 2003 -+++ gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp Sun Jul 13 11:39:54 2003 -@@ -46,8 +46,23 @@ - global gluefile wrap_flags - global ld_library_path - global tool_root_dir -+ global target_triplet - - set blddir [lookfor_file [get_multilibs] libstdc++-v3] -+ if { $blddir == "" } { -+ set multilibs [get_multilibs] -+ # FIXME: assume multilib only one level deep -+ set multisub [file tail $multilibs] -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3 in $multilibs, trying $objdir" -+ set blddir [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3, trying $objdir without multilibs" -+ set blddir [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ error "Can't find libstdc++-v3" -+ } - - # By default, we assume we want to run program images. - global dg-do-what-default diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/gcc-3.3.2-arm-bigendian.patch --- a/patches/gcc/3.3.2/gcc-3.3.2-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +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.3.2.orig/gcc/config/arm/linux-elf.h gcc-3.3.2/gcc/config/arm/linux-elf.h ---- gcc-3.3.2.orig/gcc/config/arm/linux-elf.h 2003-09-16 17:39:23.000000000 +0200 -+++ gcc-3.3.2/gcc/config/arm/linux-elf.h 2004-07-07 14:03:54.329839922 +0200 -@@ -30,15 +30,29 @@ - /* 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_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__" - -@@ -86,7 +100,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() \ -diff -urN gcc-3.3.2.orig/gcc/config.gcc gcc-3.3.2/gcc/config.gcc ---- gcc-3.3.2.orig/gcc/config.gcc 2003-10-01 21:07:01.000000000 +0200 -+++ gcc-3.3.2/gcc/config.gcc 2004-07-07 14:04:59.046716638 +0200 -@@ -699,6 +699,11 @@ - ;; - 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" -+ case $machine 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/gcc-3.3.2-trap-posix.patch --- a/patches/gcc/3.3.2/gcc-3.3.2-trap-posix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde , 2005-04-20 -# -# Error: -# -# creating libintl.h -# Configuring etc... -# loading cache ../config.cache -# checking for a BSD compatible install... (cached) /usr/bin/install -c -# creating ./config.status -# creating Makefile -# trap: usage: trap [-lp] [[arg] signal_spec ...] -# -# Description: -# -# non-posix conform usage of trap causes bash >= 3.0 to fail -# e.g.: http://sourceware.org/ml/crossgcc/2004-12/msg00132.html -# -# Status: -# -# fixed in gcc >= 3.3.5 -# backport of gcc-3.3.5 fix -# -diff -ruN gcc-3.3.2-orig/configure gcc-3.3.2/configure ---- gcc-3.3.2-orig/configure 2002-09-29 18:11:24.000000000 +0200 -+++ gcc-3.3.2/configure 2005-04-20 20:55:51.000000000 +0200 -@@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr10392-1-test.patch --- a/patches/gcc/3.3.2/pr10392-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr10392-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr10412-1-test.patch --- a/patches/gcc/3.3.2/pr10412-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr10412-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr10589-1-test.patch --- a/patches/gcc/3.3.2/pr10589-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr10589-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr11162-1-test.patch --- a/patches/gcc/3.3.2/pr11162-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr11162-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr11587-1-test.patch --- a/patches/gcc/3.3.2/pr11587-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr11587-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr11608-fix.patch --- a/patches/gcc/3.3.2/pr11608-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -pr11608 - ------------- -I'm building and testing an x86->sh4 crosscompiler with http://kegel.com/crosstool -With either gcc-3.3 or gcc-ss-3_3-20030714 I get: - -Testing debug/20020327-1.c, -gstabs1 -... -FAIL: gcc.dg/debug/20020327-1.c (test for excess errors) -Excess errors: -/tmp/cc8dFF7Y.s: Assembler messages: -/tmp/cc8dFF7Y.s:66: Error: symbol `Letext' is already defined - ------------- - -Index: elf.h -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/sh/elf.h,v -retrieving revision 1.32 -diff -u -p -r1.32 elf.h ---- gcc-orig/gcc/config/sh/elf.h 27 Sep 2003 04:48:28 -0000 1.32 -+++ gcc-new/gcc/config/sh/elf.h 2 Jan 2004 07:23:23 -0000 -@@ -95,7 +95,7 @@ while (0) - #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \ - do { \ - text_section (); \ -- fprintf ((FILE), "\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO); \ -+ asm_fprintf ((FILE), "\t.stabs \"\",%d,0,0,%LLetext\n%LLetext:\n", N_SO); \ - } while (0) - - #undef STARTFILE_SPEC diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr11736-1-test.patch --- a/patches/gcc/3.3.2/pr11736-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr11736-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr11864-1-test.patch --- a/patches/gcc/3.3.2/pr11864-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr11864-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr13260-test.patch --- a/patches/gcc/3.3.2/pr13260-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -See http://gcc.gnu.org/PR13260 - -/cvs/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20031204-1.c,v --> standard output -revision 1.1 ---- - 1970-01-01 00:00:00.000000000 +0000 -+++ gcc/gcc/testsuite/gcc.c-torture/execute/20031204-1.c -@@ -0,0 +1,49 @@ -+/* PR optimization/13260 */ -+ -+#include -+ -+typedef unsigned long u32; -+ -+u32 in_aton(const char* x) -+{ -+ return 0x0a0b0c0d; -+} -+ -+u32 root_nfs_parse_addr(char *name) -+{ -+ u32 addr; -+ int octets = 0; -+ char *cp, *cq; -+ -+ cp = cq = name; -+ while (octets < 4) { -+ while (*cp >= '0' && *cp <= '9') -+ cp++; -+ if (cp == cq || cp - cq > 3) -+ break; -+ if (*cp == '.' || octets == 3) -+ octets++; -+ if (octets < 4) -+ cp++; -+ cq = cp; -+ } -+ -+ if (octets == 4 && (*cp == ':' || *cp == '\0')) { -+ if (*cp == ':') -+ *cp++ = '\0'; -+ addr = in_aton(name); -+ strcpy(name, cp); -+ } else -+ addr = (-1); -+ -+ return addr; -+} -+ -+int -+main() -+{ -+ static char addr[] = "10.11.12.13:/hello"; -+ u32 result = root_nfs_parse_addr(addr); -+ if (result != 0x0a0b0c0d) { abort(); } -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/pr9365-1-test.patch --- a/patches/gcc/3.3.2/pr9365-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -../3.3.1/pr9365-1-test.patch \ No newline at end of file diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/sh-lib1funcs_sizeAndType.patch --- a/patches/gcc/3.3.2/sh-lib1funcs_sizeAndType.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,610 +0,0 @@ -Fixes the problem - [ libdemo.so and main.o both use assignment on structures ] - $ sh4-unknown-linux-gnu-gcc libdemo.so main.o - sh4-unknown-linux-gnu/bin/ld: warning: type and size of dynamic symbol `__movstr_i4_even' are not defined - [ resulting app links, but crashes at runtime ] -See testcase at http://tsukuba.m17n.org/linux-sh/ml/linux-sh/2003-11/msg00016.html - -Patch was posted as http://gcc.gnu.org/ml/gcc-patches/2002-11/msg01641.html -and is in cvs as http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sh/lib1funcs.asm.diff?r1=1.29.4.1&r2=1.29.4.2 - -but see also sh-libgcc-hidden.patch - -=================================================================== - ---- gcc/gcc/config/sh/lib1funcs.asm 2002/09/20 01:29:21 1.29.4.1 -+++ gcc/gcc/config/sh/lib1funcs.asm 2003/11/18 12:27:31 -@@ -38,9 +38,14 @@ - amylaar@cygnus.com */ - - #ifdef __ELF__ --#define LOCAL(X) .L_##X --#else --#define LOCAL(X) L_##X -+#define LOCAL(X) .L_##X -+#define FUNC(X) .type X,@function -+#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X -+#define ENDFUNC(X) ENDFUNC0(X) -+#else -+#define LOCAL(X) L_##X -+#define FUNC(X) -+#define ENDFUNC(X) - #endif - - #define CONCAT(A,B) A##B -@@ -87,6 +92,40 @@ - .global GLOBAL(ashiftrt_r4_31) - .global GLOBAL(ashiftrt_r4_32) - -+ FUNC(GLOBAL(ashiftrt_r4_0)) -+ FUNC(GLOBAL(ashiftrt_r4_1)) -+ FUNC(GLOBAL(ashiftrt_r4_2)) -+ FUNC(GLOBAL(ashiftrt_r4_3)) -+ FUNC(GLOBAL(ashiftrt_r4_4)) -+ FUNC(GLOBAL(ashiftrt_r4_5)) -+ FUNC(GLOBAL(ashiftrt_r4_6)) -+ FUNC(GLOBAL(ashiftrt_r4_7)) -+ FUNC(GLOBAL(ashiftrt_r4_8)) -+ FUNC(GLOBAL(ashiftrt_r4_9)) -+ FUNC(GLOBAL(ashiftrt_r4_10)) -+ FUNC(GLOBAL(ashiftrt_r4_11)) -+ FUNC(GLOBAL(ashiftrt_r4_12)) -+ FUNC(GLOBAL(ashiftrt_r4_13)) -+ FUNC(GLOBAL(ashiftrt_r4_14)) -+ FUNC(GLOBAL(ashiftrt_r4_15)) -+ FUNC(GLOBAL(ashiftrt_r4_16)) -+ FUNC(GLOBAL(ashiftrt_r4_17)) -+ FUNC(GLOBAL(ashiftrt_r4_18)) -+ FUNC(GLOBAL(ashiftrt_r4_19)) -+ FUNC(GLOBAL(ashiftrt_r4_20)) -+ FUNC(GLOBAL(ashiftrt_r4_21)) -+ FUNC(GLOBAL(ashiftrt_r4_22)) -+ FUNC(GLOBAL(ashiftrt_r4_23)) -+ FUNC(GLOBAL(ashiftrt_r4_24)) -+ FUNC(GLOBAL(ashiftrt_r4_25)) -+ FUNC(GLOBAL(ashiftrt_r4_26)) -+ FUNC(GLOBAL(ashiftrt_r4_27)) -+ FUNC(GLOBAL(ashiftrt_r4_28)) -+ FUNC(GLOBAL(ashiftrt_r4_29)) -+ FUNC(GLOBAL(ashiftrt_r4_30)) -+ FUNC(GLOBAL(ashiftrt_r4_31)) -+ FUNC(GLOBAL(ashiftrt_r4_32)) -+ - .align 1 - GLOBAL(ashiftrt_r4_32): - GLOBAL(ashiftrt_r4_31): -@@ -166,6 +205,40 @@ - GLOBAL(ashiftrt_r4_0): - rts - nop -+ -+ ENDFUNC(GLOBAL(ashiftrt_r4_0)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_1)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_2)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_3)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_4)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_5)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_6)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_7)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_8)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_9)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_10)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_11)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_12)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_13)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_14)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_15)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_16)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_17)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_18)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_19)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_20)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_21)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_22)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_23)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_24)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_25)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_26)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_27)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_28)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_29)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_30)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_31)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_32)) - #endif - - #ifdef L_ashiftrt_n -@@ -188,6 +261,7 @@ - ! - - .global GLOBAL(ashrsi3) -+ FUNC(GLOBAL(ashrsi3)) - .align 2 - GLOBAL(ashrsi3): - mov #31,r0 -@@ -315,6 +389,7 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashrsi3)) - #endif - - #ifdef L_ashiftlt -@@ -336,6 +411,7 @@ - ! (none) - ! - .global GLOBAL(ashlsi3) -+ FUNC(GLOBAL(ashlsi3)) - .align 2 - GLOBAL(ashlsi3): - mov #31,r0 -@@ -472,6 +548,7 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashlsi3)) - #endif - - #ifdef L_lshiftrt -@@ -493,6 +570,7 @@ - ! (none) - ! - .global GLOBAL(lshrsi3) -+ FUNC(GLOBAL(lshrsi3)) - .align 2 - GLOBAL(lshrsi3): - mov #31,r0 -@@ -629,6 +707,7 @@ - rts - nop - -+ ENDFUNC(GLOBAL(lshrsi3)) - #endif - - #ifdef L_movstr -@@ -645,76 +724,113 @@ - add #64,r4 - .align 4 - .global GLOBAL(movstrSI64) -+ FUNC(GLOBAL(movstrSI64)) - GLOBAL(movstrSI64): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) - .global GLOBAL(movstrSI60) -+ FUNC(GLOBAL(movstrSI60)) - GLOBAL(movstrSI60): - mov.l @(56,r5),r0 - mov.l r0,@(56,r4) - .global GLOBAL(movstrSI56) -+ FUNC(GLOBAL(movstrSI56)) - GLOBAL(movstrSI56): - mov.l @(52,r5),r0 - mov.l r0,@(52,r4) - .global GLOBAL(movstrSI52) -+ FUNC(GLOBAL(movstrSI52)) - GLOBAL(movstrSI52): - mov.l @(48,r5),r0 - mov.l r0,@(48,r4) - .global GLOBAL(movstrSI48) -+ FUNC(GLOBAL(movstrSI48)) - GLOBAL(movstrSI48): - mov.l @(44,r5),r0 - mov.l r0,@(44,r4) - .global GLOBAL(movstrSI44) -+ FUNC(GLOBAL(movstrSI44)) - GLOBAL(movstrSI44): - mov.l @(40,r5),r0 - mov.l r0,@(40,r4) - .global GLOBAL(movstrSI40) -+ FUNC(GLOBAL(movstrSI40)) - GLOBAL(movstrSI40): - mov.l @(36,r5),r0 - mov.l r0,@(36,r4) - .global GLOBAL(movstrSI36) -+ FUNC(GLOBAL(movstrSI36)) - GLOBAL(movstrSI36): - mov.l @(32,r5),r0 - mov.l r0,@(32,r4) - .global GLOBAL(movstrSI32) -+ FUNC(GLOBAL(movstrSI32)) - GLOBAL(movstrSI32): - mov.l @(28,r5),r0 - mov.l r0,@(28,r4) - .global GLOBAL(movstrSI28) -+ FUNC(GLOBAL(movstrSI28)) - GLOBAL(movstrSI28): - mov.l @(24,r5),r0 - mov.l r0,@(24,r4) - .global GLOBAL(movstrSI24) -+ FUNC(GLOBAL(movstrSI24)) - GLOBAL(movstrSI24): - mov.l @(20,r5),r0 - mov.l r0,@(20,r4) - .global GLOBAL(movstrSI20) -+ FUNC(GLOBAL(movstrSI20)) - GLOBAL(movstrSI20): - mov.l @(16,r5),r0 - mov.l r0,@(16,r4) - .global GLOBAL(movstrSI16) -+ FUNC(GLOBAL(movstrSI16)) - GLOBAL(movstrSI16): - mov.l @(12,r5),r0 - mov.l r0,@(12,r4) - .global GLOBAL(movstrSI12) -+ FUNC(GLOBAL(movstrSI12)) - GLOBAL(movstrSI12): - mov.l @(8,r5),r0 - mov.l r0,@(8,r4) - .global GLOBAL(movstrSI8) -+ FUNC(GLOBAL(movstrSI8)) - GLOBAL(movstrSI8): - mov.l @(4,r5),r0 - mov.l r0,@(4,r4) - .global GLOBAL(movstrSI4) -+ FUNC(GLOBAL(movstrSI4)) - GLOBAL(movstrSI4): - mov.l @(0,r5),r0 - mov.l r0,@(0,r4) -+ .global GLOBAL(movstrSI0) -+ FUNC(GLOBAL(movstrSI0)) - GLOBAL(movstrSI0): - rts - nop - -+ ENDFUNC(GLOBAL(movstrSI64)) -+ ENDFUNC(GLOBAL(movstrSI60)) -+ ENDFUNC(GLOBAL(movstrSI56)) -+ ENDFUNC(GLOBAL(movstrSI52)) -+ ENDFUNC(GLOBAL(movstrSI48)) -+ ENDFUNC(GLOBAL(movstrSI44)) -+ ENDFUNC(GLOBAL(movstrSI40)) -+ ENDFUNC(GLOBAL(movstrSI36)) -+ ENDFUNC(GLOBAL(movstrSI32)) -+ ENDFUNC(GLOBAL(movstrSI28)) -+ ENDFUNC(GLOBAL(movstrSI24)) -+ ENDFUNC(GLOBAL(movstrSI20)) -+ ENDFUNC(GLOBAL(movstrSI16)) -+ ENDFUNC(GLOBAL(movstrSI12)) -+ ENDFUNC(GLOBAL(movstrSI8)) -+ ENDFUNC(GLOBAL(movstrSI4)) -+ ENDFUNC(GLOBAL(movstrSI0)) -+ - .align 4 - - .global GLOBAL(movstr) -+ FUNC(GLOBAL(movstr)) - GLOBAL(movstr): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) -@@ -771,6 +887,8 @@ - add #64,r5 - bra GLOBAL(movstr) - add #64,r4 -+ -+ FUNC(GLOBAL(movstr)) - #endif - - #ifdef L_movstr_i4 -@@ -779,6 +897,10 @@ - .global GLOBAL(movstr_i4_odd) - .global GLOBAL(movstrSI12_i4) - -+ FUNC(GLOBAL(movstr_i4_even)) -+ FUNC(GLOBAL(movstr_i4_odd)) -+ FUNC(GLOBAL(movstrSI12_i4)) -+ - .p2align 5 - L_movstr_2mod4_end: - mov.l r0,@(16,r4) -@@ -787,6 +909,11 @@ - - .p2align 2 - -+GLOBAL(movstr_i4_even): -+ mov.l @r5+,r0 -+ bra L_movstr_start_even -+ mov.l @r5+,r1 -+ - GLOBAL(movstr_i4_odd): - mov.l @r5+,r1 - add #-4,r4 -@@ -813,10 +940,8 @@ - rts - mov.l r3,@(12,r4) - --GLOBAL(movstr_i4_even): -- mov.l @r5+,r0 -- bra L_movstr_start_even -- mov.l @r5+,r1 -+ ENDFUNC(GLOBAL(movstr_i4_even)) -+ ENDFUNC(GLOBAL(movstr_i4_odd)) - - .p2align 4 - GLOBAL(movstrSI12_i4): -@@ -827,12 +952,15 @@ - mov.l r1,@(4,r4) - rts - mov.l r2,@(8,r4) -+ -+ ENDFUNC(GLOBAL(movstrSI12_i4)) - #endif - - #ifdef L_mulsi3 - - - .global GLOBAL(mulsi3) -+ FUNC(GLOBAL(mulsi3)) - - ! r4 = aabb - ! r5 = ccdd -@@ -865,7 +993,7 @@ - rts - add r2,r0 - -- -+ FUNC(GLOBAL(mulsi3)) - #endif - #endif /* ! __SH5__ */ - #ifdef L_sdivsi3_i4 -@@ -875,6 +1003,7 @@ - !! args in r4 and r5, result in fpul, clobber dr0, dr2 - - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - lds r4,fpul - float fpul,dr0 -@@ -884,6 +1013,7 @@ - rts - ftrc dr0,fpul - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__) - !! args in r4 and r5, result in fpul, clobber r2, dr0, dr2 - -@@ -892,6 +1022,7 @@ - .mode SHcompact - #endif - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - sts.l fpscr,@-r15 - mov #8,r2 -@@ -906,6 +1037,7 @@ - rts - lds.l @r15+,fpscr - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) - #endif /* ! __SH5__ || __SH5__ == 32 */ - #endif /* ! __SH4__ */ - #endif -@@ -920,9 +1052,10 @@ - !! - !! - --!! args in r4 and r5, result in r0 clobber r1,r2,r3 -+!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit - - .global GLOBAL(sdivsi3) -+ FUNC(GLOBAL(sdivsi3)) - #if __SHMEDIA__ - #if __SH5__ == 32 - .section .text..SHmedia32,"ax" -@@ -1166,6 +1299,7 @@ - div0: rts - mov #0,r0 - -+ ENDFUNC(GLOBAL(sdivsi3)) - #endif /* ! __SHMEDIA__ */ - #endif /* ! __SH4__ */ - #endif -@@ -1174,9 +1308,11 @@ - .title "SH DIVIDE" - !! 4 byte integer Divide code for the Hitachi SH - #ifdef __SH4__ --!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 -+!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4, -+!! and t bit - - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - mov #1,r1 - cmp/hi r1,r5 -@@ -1217,11 +1353,13 @@ - L1: - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) - #elif defined (__SH5__) && ! defined (__SH4_NOFPU__) - #if ! __SH5__ || __SH5__ == 32 - !! args in r4 and r5, result in fpul, clobber r20, r21, dr0, fr33 - .mode SHmedia - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - addz.l r4,r63,r20 - addz.l r5,r63,r21 -@@ -1234,6 +1372,8 @@ - ftrc.dq dr0,dr32 - fmov.s fr33,fr32 - blink tr0,r63 -+ -+ ENDFUNC(GLOBAL(udivsi3_i4)) - #endif /* ! __SH5__ || __SH5__ == 32 */ - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) - !! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 -@@ -1287,6 +1427,7 @@ - #endif - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) - #endif /* ! __SH4__ */ - #endif - -@@ -1297,6 +1438,7 @@ - - !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit - .global GLOBAL(udivsi3) -+ FUNC(GLOBAL(udivsi3)) - - #if __SHMEDIA__ - #if __SH5__ == 32 -@@ -1485,6 +1627,7 @@ - rts - rotcl r0 - -+ ENDFUNC(GLOBAL(udivsi3)) - #endif /* ! __SHMEDIA__ */ - #endif /* __SH4__ */ - #endif /* L_udivsi3 */ -@@ -1790,6 +1933,7 @@ - .mode SHcompact - #endif - .global GLOBAL(set_fpscr) -+ FUNC(GLOBAL(set_fpscr)) - GLOBAL(set_fpscr): - lds r4,fpscr - mov.l LOCAL(set_fpscr_L1),r1 -@@ -1822,6 +1966,8 @@ - .align 2 - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+ -+ ENDFUNC(GLOBAL(set_fpscr)) - #ifdef __ELF__ - .comm GLOBAL(fpscr_values),8,4 - #else -@@ -1860,6 +2006,7 @@ - blink tr0, r63 - #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) - .global GLOBAL(ic_invalidate) -+ FUNC(GLOBAL(ic_invalidate)) - GLOBAL(ic_invalidate): - ocbwb @r4 - mova 0f,r0 -@@ -1882,6 +2029,8 @@ - nop - .endr - .endr -+ -+ ENDFUNC(GLOBAL(ic_invalidate)) - #endif /* SH4 */ - #endif /* L_ic_invalidate */ - -@@ -1940,6 +2089,7 @@ - will be expanded into r2/r3 upon return. */ - - .global GLOBAL(GCC_shcompact_call_trampoline) -+ FUNC(GLOBAL(GCC_shcompact_call_trampoline)) - GLOBAL(GCC_shcompact_call_trampoline): - ptabs/l r0, tr0 /* Prepare to call the actual function. */ - movi ((datalabel LOCAL(ct_main_table) - 31 * 2) >> 16) & 65535, r0 -@@ -2290,6 +2440,8 @@ - shari r2, 32, r2 - #endif - blink tr0, r63 -+ -+ ENDFUNC(GLOBAL(GCC_shcompact_call_trampoline)) - #endif /* L_shcompact_call_trampoline */ - - #ifdef L_shcompact_return_trampoline -@@ -2302,6 +2454,7 @@ - .section .text..SHmedia32, "ax" - .align 2 - .global GLOBAL(GCC_shcompact_return_trampoline) -+ FUNC(GLOBAL(GCC_shcompact_return_trampoline)) - GLOBAL(GCC_shcompact_return_trampoline): - ptabs/l r18, tr0 - #if __LITTLE_ENDIAN__ -@@ -2313,6 +2466,8 @@ - #endif - or r3, r2, r2 - blink tr0, r63 -+ -+ ENDFUNC(GLOBAL(GCC_shcompact_return_trampoline)) - #endif /* L_shcompact_return_trampoline */ - - #ifdef L_shcompact_incoming_args -@@ -2367,6 +2522,7 @@ - actual bit pattern. */ - - .global GLOBAL(GCC_shcompact_incoming_args) -+ FUNC(GLOBAL(GCC_shcompact_incoming_args)) - GLOBAL(GCC_shcompact_incoming_args): - ptabs/l r18, tr0 /* Prepare to return. */ - shlri r17, 32, r0 /* Load the cookie. */ -@@ -2519,6 +2675,7 @@ - LOCAL(ia_return): /* Return. */ - blink tr0, r63 - LOCAL(ia_end_of_push_seq): /* Label used to compute the first push instruction. */ -+ ENDFUNC(GLOBAL(GCC_shcompact_incoming_args)) - #endif /* L_shcompact_incoming_args */ - #endif - #if __SH5__ -@@ -2530,6 +2687,7 @@ - #endif - .align 3 /* It is copied in units of 8 bytes in SHmedia mode. */ - .global GLOBAL(GCC_nested_trampoline) -+ FUNC(GLOBAL(GCC_nested_trampoline)) - GLOBAL(GCC_nested_trampoline): - .mode SHmedia - ptrel/u r63, tr0 -@@ -2546,6 +2704,8 @@ - ld.l r0, 28, r1 - #endif - blink tr1, r63 -+ -+ ENDFUNC(GLOBAL(GCC_nested_trampoline)) - #endif /* L_nested_trampoline */ - #endif /* __SH5__ */ - #if __SH5__ == 32 -@@ -2555,6 +2715,7 @@ - .align 2 - #ifndef __SH4_NOFPU__ - .global GLOBAL(GCC_push_shmedia_regs) -+ FUNC(GLOBAL(GCC_push_shmedia_regs)) - GLOBAL(GCC_push_shmedia_regs): - addi.l r15, -14*8, r15 - fst.d r15, 13*8, dr62 -@@ -2573,6 +2734,7 @@ - fst.d r15, 0*8, dr36 - #endif - .global GLOBAL(GCC_push_shmedia_regs_nofpu) -+ FUNC(GLOBAL(GCC_push_shmedia_regs_nofpu)) - GLOBAL(GCC_push_shmedia_regs_nofpu): - ptabs/l r18, tr0 - addi.l r15, -27*8, r15 -@@ -2608,8 +2770,13 @@ - st.q r15, 0*8, r28 - blink tr0, r63 - -+#ifndef __SH4_NOFPU__ -+ ENDFUNC(GLOBAL(GCC_push_shmedia_regs)) -+#endif -+ ENDFUNC(GLOBAL(GCC_push_shmedia_regs_nofpu)) - #ifndef __SH4_NOFPU__ - .global GLOBAL(GCC_pop_shmedia_regs) -+ FUNC(GLOBAL(GCC_pop_shmedia_regs)) - GLOBAL(GCC_pop_shmedia_regs): - pt .L0, tr1 - movi 41*8, r0 -@@ -2630,6 +2797,7 @@ - blink tr1, r63 - #endif - .global GLOBAL(GCC_pop_shmedia_regs_nofpu) -+ FUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu)) - GLOBAL(GCC_pop_shmedia_regs_nofpu): - movi 27*8, r0 - .L0: -@@ -2666,5 +2834,10 @@ - ld.q r15, 0*8, r28 - add.l r15, r0, r15 - blink tr0, r63 -+ -+#ifndef __SH4_NOFPU__ -+ ENDFUNC(GLOBAL(GCC_pop_shmedia_regs)) -+#endif -+ ENDFUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu)) - #endif /* __SH5__ == 32 */ - #endif /* L_push_pop_shmedia_regs */ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/sh-libgcc-hidden.patch --- a/patches/gcc/3.3.2/sh-libgcc-hidden.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -[adjusted very slightly to apply to gcc-3.3.2 - dank] - -From: kaz Kojima - -I've noticed one more problem about this issue. In the testcase given -by ZhouChang, libdemo.so exports __movstr_i4_even which is a function -in libgcc.a. This itself is not a problem but it means that some functions -in libgcc.a which should not be exported from shared objects might be -exported from shared libs - -Date: Wed, 19 Nov 2003 09:04:12 +0900 (JST) -From: kaz Kojima -Subject: [linux-sh:03096] Re: [linux] Re: About tool chain in - http://kegel.com/crosstool/ -To: dank@kegel.com -Cc: zjuzhou@yahoo.com.cn, linux-sh@m17n.org, zhan_sh@yahoo.com.cn, - crossgcc@sources.redhat.com -Message-Id: <20031119.090412.85413542.kkojima@rr.iij4u.or.jp> - -Hi, - -Dan Kegel wrote: -> I'll try that, thanks. I notice that the '.hidden' isn't in cvs yet. -> I also notice you've been trying to get that into CVS for two years -> now (http://gcc.gnu.org/ml/gcc-patches/2001-10/msg00053.html). -> Time for another try? It'd be nice if gcc-3.4 (and maybe even gcc-3.3.3) -> didn't need a patch for this. - -The situation is a bit complicated. sh-linux target doesn't make -shared libgcc in gcc-3.3.x. -OTOH, I withdrew that .hidden patch because gcc-3.3 has a general -mechanism to make all libgcc functions .hidden. But I missed that -that mechanism was conditionalized later so that it's done only -when the target creates the shared libgcc. -In 3.4, sh-linux target becomes to use the shared libgcc like as -all other linux targets, so there is no problem. - -I inclined to backport 3.4 shared libgcc stuff to 3.3.3 rather -than the old .hidden patch. How do you think about it? -I'm happy if you or ZhouChang create a PR on gcc bugzilla about -this issue. - -Regards, - kaz --- - This is a backport of 3.4 shared libgcc stuff to 3.3 branch. - * config.gcc (sh*-*-linux*): Add t-slibgcc-elf-ver and t-linux. - to tmake_file. * config/sh/libgcc-glibc.ver: New file. - * config/sh/t-linux (SHLIB_LINK): Override to use a linker script - libgcc_s.so. - (SHLIB_INSTALL): Likewise. - -diff -u3prN ORIG/gcc-3.3/gcc/config/sh/libgcc-glibc.ver gcc-3.3/gcc/config/sh/libgcc-glibc.ver ---- ORIG/gcc-3.3/gcc/config/sh/libgcc-glibc.ver Thu Jan 1 09:00:00 1970 -+++ gcc-3.3/gcc/config/sh/libgcc-glibc.ver Wed Nov 19 08:15:16 2003 -@@ -0,0 +1,21 @@ -+# In order to work around the very problems that force us to now generally -+# create a libgcc.so, glibc reexported a number of routines from libgcc.a. -+# By now choosing the same version tags for these specific routines, we -+# maintain enough binary compatibility to allow future versions of glibc -+# to defer implementation of these routines to libgcc.so via DT_AUXILIARY. -+ -+# Note that we cannot use the default libgcc-glibc.ver file on sh, -+# because GLIBC_2.0 does not exist on this architecture, as the first -+# ever glibc release on the platform was GLIBC_2.2. -+ -+%inherit GCC_3.0 GLIBC_2.2 -+GLIBC_2.2 { -+ __register_frame -+ __register_frame_table -+ __deregister_frame -+ __register_frame_info -+ __deregister_frame_info -+ __frame_state_for -+ __register_frame_info_table -+} -+ -diff -u3prN ORIG/gcc-3.3/gcc/config/sh/t-linux gcc-3.3/gcc/config/sh/t-linux ---- ORIG/gcc-3.3/gcc/config/sh/t-linux Fri Jun 6 11:07:14 2003 -+++ gcc-3.3/gcc/config/sh/t-linux Wed Nov 19 08:09:26 2003 -@@ -12,3 +12,27 @@ MULTILIB_MATCHES = - MULTILIB_EXCEPTIONS= - - EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used. -+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/sh/libgcc-glibc.ver -+ -+# Override SHLIB_LINK and SHLIB_INSTALL to use linker script -+# libgcc_s.so. -+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \ -+ -Wl,--soname=$(SHLIB_SONAME) \ -+ -Wl,--version-script=$(SHLIB_MAP) \ -+ -o $(SHLIB_NAME) @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ -+ rm -f $(SHLIB_SOLINK) && \ -+ (echo "/* GNU ld script"; \ -+ echo " Use the shared library, but some functions are only in"; \ -+ echo " the static library. */"; \ -+ echo "GROUP ( $(SHLIB_SONAME) libgcc.a )" \ -+ ) > $(SHLIB_SOLINK) -+SHLIB_INSTALL = \ -+ $$(SHELL) $$(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ -+ $(INSTALL_DATA) $(SHLIB_NAME) \ -+ $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \ -+ rm -f $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \ -+ $(INSTALL_DATA) $(SHLIB_SOLINK) \ -+ $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK) -diff -u3prN ORIG/gcc-3.3/gcc/config.gcc gcc-3.3/gcc/config.gcc ---- ORIG/gcc-3.3/gcc/config.gcc Sat Aug 9 07:19:07 2003 -+++ gcc-3.3/gcc/config.gcc Wed Nov 19 08:07:53 2003 -@@ -2308,7 +2308,7 @@ sh-*-rtems*) - fi - ;; - sh-*-linux* | sh[2346lbe]*-*-linux*) -- tmake_file="sh/t-sh sh/t-elf" -+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux" - case $machine in - sh*be-*-* | sh*eb-*-*) ;; - *) - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/sh-pic-set_fpscr-gcc-3.3.2.patch --- a/patches/gcc/3.3.2/sh-pic-set_fpscr-gcc-3.3.2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -See http://gcc.gnu.org/PR11901 -Should fix -make[2]: *** [/gcc-3.3-glibc-2.3.2/build-glibc/elf/check-textrel.out] Error 1 -in glibc's "make tests". - -Note: this patch is named -sh-pic-set_fpscr-gcc-3.3.2.patch -and must be applied after -sh-lib1funcs_sizeAndType.patch -but that'll happen naturally if you apply them in alphabetical order. - -------------- - -Date: Wed, 30 Jul 2003 12:03:01 +0900 -From: kaz Kojima -Subject: [linux-sh:02916] Re: Writing PIC version of __udivsi3_i4? (was: Re: "make tests" fails - with "libc.so: text relocations used" in glibc-2.3.2 for sh4) -To: dank@kegel.com -Cc: linux-sh@m17n.org -Message-Id: <200307300255.h6U2tB906928@r-rr.iij4u.or.jp> - -> I'll try to write the PIC version of it, - -Dan, does the attached patch work for you? - -Regards, - kaz --- -diff -u3prN ORIG/gcc/gcc/config/sh/lib1funcs.asm LOCAL/gcc/gcc/config/sh/lib1funcs.asm ---- ORIG/gcc/gcc/config/sh/lib1funcs.asm Thu Jun 19 07:38:59 2003 -+++ gcc-3.3.2/gcc/config/sh/lib1funcs.asm Wed Jul 30 11:08:49 2003 -@@ -1936,7 +1944,17 @@ GLOBAL(moddi3): - FUNC(GLOBAL(set_fpscr)) - GLOBAL(set_fpscr): - lds r4,fpscr -+#ifdef __PIC__ -+ mov.l r12,@-r15 -+ mova LOCAL(set_fpscr_L0),r0 -+ mov.l LOCAL(set_fpscr_L0),r12 -+ add r0,r12 -+ mov.l LOCAL(set_fpscr_L1),r0 -+ mov.l @(r0,r12),r1 -+ mov.l @r15+,r12 -+#else - mov.l LOCAL(set_fpscr_L1),r1 -+#endif - swap.w r4,r0 - or #24,r0 - #ifndef FMOVD_WORKS -@@ -1964,8 +1982,15 @@ GLOBAL(set_fpscr): - mov.l r3,@(4,r1) - #endif - .align 2 -+#ifdef __PIC__ -+LOCAL(set_fpscr_L0): -+ .long _GLOBAL_OFFSET_TABLE_ -+LOCAL(set_fpscr_L1): -+ .long GLOBAL(fpscr_values@GOT) -+#else - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+#endif - - ENDFUNC(GLOBAL(set_fpscr)) - #ifndef NO_FPSCR_VALUES - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.2/thunk3.patch --- a/patches/gcc/3.3.2/thunk3.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -Fixes -FAIL: g++.jason/thunk3.C (test for excess errors) -on sh4-unknown-linux-gnu. - -Does any sh variant *not* use the generic thunk support? If so, the patch should be -more cautious. As it is, it excludes all sh processors from this test. - -Index: thunk3.C -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C,v -retrieving revision 1.13 -diff -u -d -u -r1.13 thunk3.C ---- gcc-ss-3_3-20030714/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C.old 25 Mar 2002 17:57:03 -0000 1.13 -+++ gcc-ss-3_3-20030714/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C 20 Jul 2003 16:57:38 -0000 -@@ -2,7 +2,7 @@ - // Note that this will break on any target that uses the generic thunk - // support, because it doesn't support variadic functions. - --// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3 mn10300-*-* mn10200-*-* v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa-*-* -+// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3 mn10300-*-* mn10200-*-* v850-*-* sh*-*-* h8*-*-* xtensa-*-* - - #include - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/config.sub.patch --- a/patches/gcc/3.3.3/config.sub.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -When configuring a s390->s390 or cris->cris crosscompiler -(ok, I haven't hit this yet, but one of these days I'll get me an account -on an s390, and then I'll need this patch :-), you'll get the -following error: - -+ /build/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/gcc-3.3/configure ---target=s390-unknown-linux-gnu --host=s390-host_unknown-linux-gnu ---prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2 ---enable-languages=c ---with-local-prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/s390- -unknown-linux-gnu --enable-threads=no --without-headers --with-newlib ---disable-shared -... -*** --with-headers is only supported when cross compiling - -This error pops up only when you're using Daniel Jacobowitz's technique -of slightly changing the target and host tuples to make them different -enough to force gcc's build system to not try to pull in system libraries -or headers. This technique is needed e.g. to build an x86 -> x86 -cross-compiler. -(The LFS developers ran into the same bug that prompted me to use -this technique; they point people who run into it to -http://linuxfromscratch.org/~greg/pure_lfs.txt, which is a different -way of avoiding this problem. I think the tuple tweak is the way to go, though.) - -config-patches@gnu.org rejected this patch, on the grounds that there -is only one vendor of each of those two architectures, so the -canonicalization is by definition correct. When I pointed out the -difficulty this causes for people building s390 -> s390 or -cris -> cris compilers that are incompatible with the system -libraries and thus must be built like cross-compilers, he grumped and said -"autoconf should let you specify a cross-compiler in some other way than -comparing tuple strings". - - - ---- gcc-3.3/config.sub.old Sun Jun 8 20:38:47 2003 -+++ gcc-3.3/config.sub Sun Jun 8 20:40:34 2003 -@@ -433,9 +433,12 @@ - crds | unos) - basic_machine=m68k-crds - ;; -- cris | cris-* | etrax*) -+ cris | etrax*) - basic_machine=cris-axis - ;; -+ cris-*) -+ basic_machine=cris-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; -@@ -820,11 +823,17 @@ - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; -- s390 | s390-*) -+ s390) - basic_machine=s390-ibm - ;; -- s390x | s390x-*) -+ s390-*) -+ basic_machine=s390-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ s390x) - basic_machine=s390x-ibm -+ ;; -+ s390x-*) -+ basic_machine=s390x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sa29200) - basic_machine=a29k-amd diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/empty6.patch --- a/patches/gcc/3.3.3/empty6.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -From 3.4 branch. Fixes test failure -FAIL: g++.dg/abi/empty6.C (test for warnings, line 6) - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.dg/abi/empty6.C,v -retrieving revision 1.1 -retrieving revision 1.2 -diff -u -r1.1 -r1.2 ---- gcc/gcc/testsuite/g++.dg/abi/empty6.C 2002/09/25 19:07:35 1.1 -+++ gcc/gcc/testsuite/g++.dg/abi/empty6.C 2003/06/03 19:10:09 1.2 -@@ -5,4 +5,9 @@ - struct B { - A a; // { dg-warning "empty" } - virtual void f () {} --}; -+} __attribute__((aligned(8))); -+/* The preceding attribute is necessary on targets with -+ BIGGEST_ALIGNMENT <= 32 to trigger the warning, as otherwise a 32 bit -+ offset is split into DECL_FIELD_OFFSET 4 and DECL_FIELD_BIT_OFFSET 0, -+ and then there is no discrepancy between DECL_FIELD_OFFSET and -+ byte_position to warn about. */ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/gcc-3.3.2-arm-bigendian.patch --- a/patches/gcc/3.3.3/gcc-3.3.2-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +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.3.2.orig/gcc/config/arm/linux-elf.h gcc-3.3.2/gcc/config/arm/linux-elf.h ---- gcc-3.3.2.orig/gcc/config/arm/linux-elf.h 2003-09-16 17:39:23.000000000 +0200 -+++ gcc-3.3.2/gcc/config/arm/linux-elf.h 2004-07-07 14:03:54.329839922 +0200 -@@ -30,15 +30,29 @@ - /* 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_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__" - -@@ -86,7 +100,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() \ -diff -urN gcc-3.3.2.orig/gcc/config.gcc gcc-3.3.2/gcc/config.gcc ---- gcc-3.3.2.orig/gcc/config.gcc 2003-10-01 21:07:01.000000000 +0200 -+++ gcc-3.3.2/gcc/config.gcc 2004-07-07 14:04:59.046716638 +0200 -@@ -699,6 +699,11 @@ - ;; - 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" -+ case $machine 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/gcc-3.3.3-trap-posix.patch --- a/patches/gcc/3.3.3/gcc-3.3.3-trap-posix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde , 2005-04-20 -# -# Error: -# -# creating libintl.h -# Configuring etc... -# loading cache ../config.cache -# checking for a BSD compatible install... (cached) /usr/bin/install -c -# creating ./config.status -# creating Makefile -# trap: usage: trap [-lp] [[arg] signal_spec ...] -# -# Description: -# -# non-posix conform usage of trap causes bash >= 3.0 to fail -# e.g.: http://sourceware.org/ml/crossgcc/2004-12/msg00132.html -# -# Status: -# -# fixed in gcc >= 3.3.5 -# backport of gcc-3.3.5 fix -# -diff -ruN gcc-3.3.3-orig/configure gcc-3.3.3/configure ---- gcc-3.3.3-orig/configure 2002-09-29 18:11:24.000000000 +0200 -+++ gcc-3.3.3/configure 2005-04-20 21:03:51.000000000 +0200 -@@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr10392-1-test.patch --- a/patches/gcc/3.3.3/pr10392-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10392-1.c Sun Sep 14 14:28:24 2003 -@@ -0,0 +1,62 @@ -+/* PR optimization/10392 -+ * Reporter: marcus@mc.pp.se -+ * Summary: [3.3/3.4 regression] [SH] optimizer generates faulty array indexing -+ * Description: -+ * The address calculation of an index operation on an array on the stack -+ * can _under some conditions_ get messed up completely -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Problem only happens with -O2 -m4, so it should only happen on sh4, -+ * but what the heck, let's test other architectures, too. -+ * Not marked as xfail since it's a regression. -+*/ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+/* { dg-options "-O2 -m4" { target sh4-*-* } } */ -+const char *dont_optimize_function_away; -+ -+const char *use(const char *str) -+{ -+ dont_optimize_function_away = str; -+ if (str[0] != 'v') -+ abort(); -+ if (str[1] < '1' || str[1] > '6') -+ abort(); -+ if (str[2]) -+ abort(); -+ return str[2] ? "notused" : "v6"; -+} -+ -+const char *func(char *a, char *b) -+{ -+ char buf[128]; -+ unsigned char i; -+ const char *result; -+ -+ char *item[] = { -+ "v1", -+ "v2", -+ }; -+ -+ buf[0] = 'v'; -+ buf[1] = '3'; -+ buf[2] = 0; -+ -+ for (i = 0; i < 2; i++) { -+ /* bug is: following line passes wild pointer to use() on sh4 -O2 */ -+ result = use(item[i]); -+ -+ use(buf); -+ use(a); -+ use(b); -+ result = use(result); -+ } -+ return result; -+} -+ -+int main() -+{ -+ func("v4", "v5"); -+ return 0; -+} -+ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr10412-1-test.patch --- a/patches/gcc/3.3.3/pr10412-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10412-1.c Sun Sep 14 16:15:21 2003 -@@ -0,0 +1,43 @@ -+/* PR target/10412 -+ * Reporter: shrinivasa@kpitcummins.com -+ * Summary: Renesas SH - Incorrect code generation -+ * Description: -+ * When following code is compiled with -+ * sh-elf-gcc -S -mhitachi -m2 -O2 bug1.c -+ * generates an incorrect code. -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Problem only happens with -mhitachi -m2. Not sure if I can give those -+ * options for all sh targets. They work on sh4, though. -+ * Not marked as xfail as it's a regression relative to hardhat 2.0 gcc-2.97. -+*/ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+int global_val; -+ -+int func0(int x) -+{ -+ global_val += x; -+ return (x != 99); -+} -+ -+int func1(unsigned long addr) -+{ -+ int err; -+ -+ err = func0(addr); -+ if (err) -+ return (err); -+ -+ err = func0(addr * 7); /* address of func0 is lost during multiplication -> probable SIGSEGV */ -+ return (err); -+} -+ -+int main(int argc, char **argv) -+{ -+ global_val = 0; -+ global_val += func1(99); -+ if (global_val != 99 * 8 + 1) -+ abort(); -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr10589-1-test.patch --- a/patches/gcc/3.3.3/pr10589-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr10589-1.c Mon Sep 15 08:57:58 2003 -@@ -0,0 +1,14 @@ -+/* PR target/10589 -+ * Reporter: mathieu@thenesis.com -+ * Summary: For Hitachi SH target, GCC crashes when both -fomit-frame-pointer and -mdalign options are specified -+ * Keywords: ice-on-valid-code -+ * Testcase by Kazu Hirata, tweaked by dank@kegel.com -+ * Did not fail in Hard Hat 2.0 gcc-2.97, nor in dodes gcc-3.0.2, so this is a regression, so I'm not marking it xfail -+ */ -+/* { dg-do compile { target sh*-*-* } } */ -+/* { dg-options "-fomit-frame-pointer -mdalign" } */ -+ -+int foo(int a, int b) -+{ -+ return a / b; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr11162-1-test.patch --- a/patches/gcc/3.3.3/pr11162-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11162-1.c Sun Sep 14 16:24:41 2003 -@@ -0,0 +1,22 @@ -+/* -+ * PR optimization/11162 -+ * Reporter: Toshiyasu Morita -+ * Summary: [3.4 Regression] [-fnew-ra] ICE compiling channel.i on sh -+ * Keywords: ice-on-valid-code -+ * Description: -+ * [ICE] when channel.i from stress-1.17 is compiled with options: -+ * -O2 -m4 -fnew-ra -+ * ... -+ * The CFG code gets confused by the addition of a USE insn after a sibcall. -+ * Sibcalls are supposed to end the block (and the function!), so the fact -+ * that we have an instruction following one (even if its fake) is confusing. -+ * -+ * testcase tweaked by dank@kegel.com -+ */ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fnew-ra" } */ -+ -+int foo(char *p1) -+{ -+ return bar(p1); -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr11587-1-test.patch --- a/patches/gcc/3.3.3/pr11587-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11587-1.c Mon Sep 15 08:46:00 2003 -@@ -0,0 +1,36 @@ -+/* PR optimization/11587 -+ * Reporter: Michael Eager -+ * Summary: [3.3/3.4 Regression] SH ICE in reload_cse_simplify_operand, postreload.c -+ * Keywords: ice-on-valid-code -+ * -+ * Note: a fix exists; see bugzilla -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Not marked as xfail since it's a regression. -+ */ -+ -+/* { dg-do compile } */ -+/* { dg-options "-O1" } */ -+int foo1(void); -+int foo2(); -+int foo3(); -+ -+static int goo() -+{ -+ int i; -+ -+ if (i <= 0) -+ return i; -+ -+ if (foo1() > 1) { -+ i = foo2(); -+ if (i < 0) -+ return i; -+ if (i) { -+ if (foo3()) -+ return 1; -+ return 0; -+ } -+ } -+ -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr11608.patch --- a/patches/gcc/3.3.3/pr11608.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -# See http://gcc.gnu.org/PR11608 -# Fixes following error when testing sh4 toolchain: -# -# Testing debug/20020327-1.c, -gstabs1 -# ... -# FAIL: gcc.dg/debug/20020327-1.c (test for excess errors) -# Excess errors: -# /tmp/cc8dFF7Y.s: Assembler messages: -# /tmp/cc8dFF7Y.s:66: Error: symbol `Letext' is already defined - -Index: elf.h -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/sh/elf.h,v -retrieving revision 1.32 -diff -u -p -r1.32 elf.h ---- gcc/gcc/config/sh/elf.h.old 27 Sep 2003 04:48:28 -0000 1.32 -+++ gcc/gcc/config/sh/elf.h 2 Jan 2004 07:23:23 -0000 -@@ -95,7 +95,7 @@ while (0) - #define DBX_OUTPUT_MAIN_SOURCE_FILE_END(FILE, FILENAME) \ - do { \ - text_section (); \ -- fprintf ((FILE), "\t.stabs \"\",%d,0,0,Letext\nLetext:\n", N_SO); \ -+ asm_fprintf ((FILE), "\t.stabs \"\",%d,0,0,%LLetext\n%LLetext:\n", N_SO); \ - } while (0) - - #undef STARTFILE_SPEC diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr11736-1-test.patch --- a/patches/gcc/3.3.3/pr11736-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11736-1.c Sun Sep 14 14:26:33 2003 -@@ -0,0 +1,45 @@ -+/* PR optimization/11736 -+ * Reporter: marcus@mc.pp.se -+ * Summary: Stackpointer messed up on SuperH -+ * Keywords: wrong-code -+ * Description: -+ * When a function with 5 arguments is called in both branches of a -+ * conditional, and only the last argument differs, the code to push that -+ * last argument on the stack gets confused. -+ * Space for the fifth argument is reserved on the stack by the -+ * instruction I have marked as "A". However, if the else-branch is -+ * taken the stackpointer is decremented _again_ at "B". This -+ * decrementation is never restored, and it is only due to the -+ * restoration of r15 from r14 that the function works at all. With -+ * -fomit-frame-pointer it will crash. -+ * -+ * Testcase tweaked by dank@kegel.com -+ * Not marked as xfail since it's a regression from hardhat 2.0 gcc-2.97 -+ * and dodes gcc-3.0.2 -+ */ -+ -+/* { dg-do run } */ -+/* { dg-options "-O1 -fomit-frame-pointer" } */ -+ -+int expected_e; -+ -+void bar(int a, int b, int c, int d, int e) -+{ -+ if (e != expected_e) -+ abort(); -+} -+ -+void foo(int a) -+{ -+ if (a) -+ bar(0, 0, 0, 0, 1); -+ else -+ bar(0, 0, 0, 0, 0); /* stack pointer decremented extra time here, causing segfault */ -+} -+ -+int main(int argc, char **argv) -+{ -+ for (expected_e = 0; expected_e < 2; expected_e++) -+ foo(expected_e); -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr11864-1-test.patch --- a/patches/gcc/3.3.3/pr11864-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr11864-1.c Sun Sep 14 14:32:24 2003 -@@ -0,0 +1,42 @@ -+/* PR optimization/11864 -+ * Reporter: Kazumoto Kojima -+ * Summary: [3.3/3.4 regression] miscompiles zero extension and test -+ * Description: -+ * gcc-3.3/3.4 -O2 for sh target may miscompile the combination of zero extension -+ * and test if it's zero. -+ * -+ * Testcase tweaked by dank@kegel.com. Not marked as xfail because it's a regression. -+ */ -+/* { dg-do run } */ -+/* { dg-options "-O2" } */ -+ -+extern void abort(void); -+ -+int val = 0xff00; -+ -+int f(void) -+{ -+ return val; -+} -+ -+unsigned char a[1]; -+ -+void foo(void) -+{ -+ a[0] = f() & 255; -+ -+ if (!a[0]) -+ a[0] = f() & 255; -+ -+ if (!a[0]) -+ a[0] = 1 + (f() & 127); -+} -+ -+int main(int argc, char **argv) -+{ -+ foo(); -+ if (!a[0]) -+ abort(); -+ -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr12009.patch --- a/patches/gcc/3.3.3/pr12009.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ -See http://gcc.gnu.org/PR12009 - -Fixes the following problems when testing a cross-compiler: - -============================================ -Testing g++.dg/compat/abi/bitfield1, -... -Invoking the compiler as /crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-gli -bc-2.2.5/build-gcc/gcc/testsuite/../g++ ... -/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/gcc/test -suite/g++.dg/compat/abi/bitfield1_main.C -pid is 16028 -16028 -compiler exited with status 1 -output is: -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-750-linux-gnu/gc -c-3.3-glibc-2.2.5/powerpc-750-linux-gnu/./lib/libdl.so.2: ELF file data encoding - not little-endian -/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/build-gcc/gcc/te -stsuite/../g++: error while loading shared libraries: /opt/cegl-2.0/powerpc-750- -linux-gnu/gcc-3.3-glibc-2.2.5/powerpc-750-linux-gnu/./lib/libc.so.6: ELF file da -ta encoding not little-endian - -FAIL: g++.dg/compat/abi/bitfield1 main_tst.o compile -============================================ - -and - -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-405-linux-gnu/gcc-3.2.3-glibc-2.2.5/powerpc-405-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian - - - ---- gcc-3.3/gcc/testsuite/g++.dg/compat/compat.exp.old Thu Oct 17 17:22:57 2002 -+++ gcc-3.3/gcc/testsuite/g++.dg/compat/compat.exp Mon Jul 14 10:59:19 2003 -@@ -42,11 +42,13 @@ - proc compat-fix-library-path { } { - global ld_library_path - -- # See comments in lib/g++.exp for why this is needed. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # See comments in lib/g++.exp for why this is needed. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - } - - # ---- gcc-3.4-20030813/gcc/testsuite/lib/g++.exp.orig Tue Jun 17 18:56:45 2003 -+++ gcc-3.4-20030813/gcc/testsuite/lib/g++.exp Sun Aug 17 18:35:38 2003 -@@ -166,16 +182,20 @@ - } - } - -- # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -- # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -- # (for the 64-bit ABI). The right way to do this would be to modify -- # unix.exp -- but that's not an option since it's part of DejaGNU -- # proper, so we do it here. We really only need to do -- # this on IRIX, but it shouldn't hurt to do it anywhere else. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -+ # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -+ # (for the 64-bit ABI). The right way to do this would be to modify -+ # unix.exp -- but that's not an option since it's part of DejaGNU -+ # proper, so we do it here. We really only need to do -+ # this on IRIX, but it shouldn't hurt to do it anywhere else. -+ -+ # Doing this causes us to be unable to run cross-compilers. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - - return "$flags" - } diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr12010.patch --- a/patches/gcc/3.3.3/pr12010.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -Adjusted for gcc-3.3-20040119 - -See http://gcc.gnu.org/PR12010 - -Without this patch, one gets both compile and link time errors in -'make check' when configured for cross-compiling. - -In particular, 'make check' on a cross-compiler fails with - -/testsuite_flags: /testsuite_flags: No such file or directory - while executing -"exec sh ${odir_v3}/testsuite_flags --build-includes" - (procedure "g++_include_flags" line 21) - invoked from within -"g++_include_flags [get_multilibs] " - (procedure "g++_init" line 63) - invoked from within -"${tool}_init $test_file_name" - (procedure "runtest" line 19) -... -make[1]: [check-g++] Error 1 (ignored) - ---- gcc-3.3-20040119/gcc/testsuite/lib/g++.exp.orig 2004-01-25 17:56:24.000000000 -0800 -+++ gcc-3.3-20040119/gcc/testsuite/lib/g++.exp 2004-01-25 18:29:44.000000000 -0800 -@@ -72,6 +72,8 @@ proc g++_version { } { - # - proc g++_include_flags { paths } { - global srcdir -+ global objdir -+ global target_triplet - global HAVE_LIBSTDCXX_V3 - global TESTING_IN_BUILD_TREE - -@@ -90,6 +92,20 @@ proc g++_include_flags { paths } { - - if { ${HAVE_LIBSTDCXX_V3} } { - set odir_v3 [lookfor_file ${gccpath} libstdc++-v3] -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on first try, now looking in build directory $objdir" -+ # first assume no multilibs -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on second try, trying multilib" -+ # assume multilib only one level deep -+ set multisub [file tail $gccpath] -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ error "Can't find libstdc++-v3" -+ } - append flags [exec sh ${odir_v3}/testsuite_flags --build-includes] - } else { - set odir_v2 [lookfor_file ${gccpath} libstdc++] - ---- gcc-3.3-20040119/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp.old Sun Jul 13 10:42:01 2003 -+++ gcc-3.3-20040119/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp Sun Jul 13 11:39:54 2003 -@@ -48,8 +48,23 @@ - global ld_library_path - global original_ld_library_path - global tool_root_dir -+ global target_triplet - - set blddir [lookfor_file [get_multilibs] libstdc++-v3] -+ if { $blddir == "" } { -+ set multilibs [get_multilibs] -+ # FIXME: assume multilib only one level deep -+ set multisub [file tail $multilibs] -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3 in $multilibs, trying $objdir" -+ set blddir [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3, trying $objdir without multilibs" -+ set blddir [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ error "Can't find libstdc++-v3" -+ } - - # By default, we assume we want to run program images. - global dg-do-what-default diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr13250-fix.patch --- a/patches/gcc/3.3.3/pr13250-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -See http://gcc.gnu.org/PR13250 -Fixes bad code generated when compiling SHA256 for SH processor - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.md,v -retrieving revision 1.171 -retrieving revision 1.172 -diff -u -r1.171 -r1.172 ---- gcc/gcc/config/sh/sh.md 2004/05/10 23:25:13 1.171 -+++ gcc/gcc/config/sh/sh.md 2004/05/28 05:47:36 1.172 -@@ -2194,7 +2194,7 @@ - parts[0] = gen_reg_rtx (SImode); - parts[1] = gen_reg_rtx (SImode); - emit_insn (gen_rotlsi3_16 (parts[2-choice], operands[1])); -- parts[choice-1] = operands[1]; -+ emit_move_insn (parts[choice-1], operands[1]); - emit_insn (gen_ashlsi3 (parts[0], parts[0], GEN_INT (8))); - emit_insn (gen_lshrsi3 (parts[1], parts[1], GEN_INT (8))); - emit_insn (gen_iorsi3 (operands[0], parts[0], parts[1])); diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr13260-fix-3.3.3.patch --- a/patches/gcc/3.3.3/pr13260-fix-3.3.3.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,246 +0,0 @@ -Date: Fri, 06 Feb 2004 12:35:58 +0900 -From: SUGIOKA Toshinobu -Subject: [linux-sh:03150] Re: gcc 3.3 optimisation problem -To: linux-sh@m17n.org -Message-Id: <4.2.0.58.J.20040206122503.04fe3058@router.itonet.co.jp> -List-Help: -List-Id: linux-sh.m17n.org - -At 19:40 03/12/01 +0000, Stuart Menefy wrote: ->On Sat, 29 Nov 2003 20:19:08 +0900 kkojima@rr.iij4u.or.jp wrote: -> ->> Dan Kegel wrote: ->> > Stuart Menefy wrote: ->> >> I've just been trying to put together a gcc 3.3.2 based toolchain, and ->> >> appear to be hitting a gcc optimisation bug. I was just wondering if ->> >> anyone else had seen anything similar. ->> >> ->> >> The problem is seen when building the kernel, in the function ->> >> root_nfs_parse_addr(). I've extracted this into a small stand alone ->> >> program which demonstrates the problem. ->> > ->> > Excellent work. I haven't seen anything like this (doesn't mean much) ->> > and the sh-specific optimization bugs in the gcc bug database don't look ->> > similar. I think you should submit this as a bug report at ->> > http://gcc.gnu.org/bugzilla/ ->> > It would be good if you could make your test case call abort() if ->> > the problem is present, so the test case can be automated. ->> ->> Indeed. It'd be very nice to create a gcc PR for this issue. -> ->OK, I've done that. PR 13260. - -PR 13260 was fixed by amylaar@gcc.gnu.org at 2003-12-04 20:10:29 on mainline(gcc-3.4). -I have back-ported that patch to gcc-3.3.3 and seems fine for me. - - * sh-protos.h (sh_expand_t_scc): Declare. - * sh.h (PREDICATE_CODES): Add cmpsi_operand. - * sh.c (cmpsi_operand, sh_expand_t_scc): New functions. - * sh.md (cmpsi): Use cmpsi_operand. If T_REG is compared to - something that is not a CONST_INT, copy it into a pseudo register. - (subc): Fix description of new T value. - (slt, sgt, sge, sgtu): Don't clobber T after rtl generation is over. - (sltu, sleu, sgeu): Likewise. - (seq, sne): Likewise. Use sh_expand_t_scc. - -diff -ru gcc-3.3-20040126-1/gcc/config/sh/sh-protos.h gcc-3.3-20040126/gcc/config/sh/sh-protos.h ---- gcc-3.3-20040126-1/gcc/config/sh/sh-protos.h Tue Jan 13 02:03:24 2004 -+++ gcc-3.3-20040126/gcc/config/sh/sh-protos.h Fri Jan 30 17:54:04 2004 -@@ -102,6 +102,7 @@ - extern int sh_can_redirect_branch PARAMS ((rtx, rtx)); - extern void sh_expand_unop_v2sf PARAMS ((enum rtx_code, rtx, rtx)); - extern void sh_expand_binop_v2sf PARAMS ((enum rtx_code, rtx, rtx, rtx)); -+extern int sh_expand_t_scc (enum rtx_code code, rtx target); - #ifdef TREE_CODE - extern void sh_va_start PARAMS ((tree, rtx)); - extern rtx sh_va_arg PARAMS ((tree, tree)); -diff -ru gcc-3.3-20040126-1/gcc/config/sh/sh.c gcc-3.3-20040126/gcc/config/sh/sh.c ---- gcc-3.3-20040126-1/gcc/config/sh/sh.c Thu Jan 15 03:11:36 2004 -+++ gcc-3.3-20040126/gcc/config/sh/sh.c Fri Jan 30 17:53:58 2004 -@@ -7870,6 +7870,15 @@ - return register_operand (op, mode); - } - -+int -+cmpsi_operand (rtx op, enum machine_mode mode) -+{ -+ if (GET_CODE (op) == REG && REGNO (op) == T_REG -+ && GET_MODE (op) == SImode) -+ return 1; -+ return arith_operand (op, mode); -+} -+ - /* INSN is an sfunc; return the rtx that describes the address used. */ - static rtx - extract_sfunc_addr (rtx insn) -@@ -7917,4 +7926,33 @@ - abort (); - } - -+int -+sh_expand_t_scc (enum rtx_code code, rtx target) -+{ -+ rtx result = target; -+ HOST_WIDE_INT val; -+ -+ if (GET_CODE (sh_compare_op0) != REG || REGNO (sh_compare_op0) != T_REG -+ || GET_CODE (sh_compare_op1) != CONST_INT) -+ return 0; -+ if (GET_CODE (result) != REG) -+ result = gen_reg_rtx (SImode); -+ val = INTVAL (sh_compare_op1); -+ if ((code == EQ && val == 1) || (code == NE && val == 0)) -+ emit_insn (gen_movt (result)); -+ else if ((code == EQ && val == 0) || (code == NE && val == 1)) -+ { -+ emit_insn (gen_rtx_CLOBBER (VOIDmode, result)); -+ emit_insn (gen_subc (result, result, result)); -+ emit_insn (gen_addsi3 (result, result, GEN_INT (1))); -+ } -+ else if (code == EQ || code == NE) -+ emit_insn (gen_move_insn (result, GEN_INT (code == NE))); -+ else -+ return 0; -+ if (result != target) -+ emit_move_insn (target, result); -+ return 1; -+} -+ - #include "gt-sh.h" -diff -ru gcc-3.3-20040126-1/gcc/config/sh/sh.h gcc-3.3-20040126/gcc/config/sh/sh.h ---- gcc-3.3-20040126-1/gcc/config/sh/sh.h Wed Apr 16 02:06:09 2003 -+++ gcc-3.3-20040126/gcc/config/sh/sh.h Fri Jan 30 17:53:51 2004 -@@ -3231,6 +3231,7 @@ - {"arith_reg_or_0_operand", {SUBREG, REG, CONST_INT, CONST_VECTOR}}, \ - {"binary_float_operator", {PLUS, MINUS, MULT, DIV}}, \ - {"binary_logical_operator", {AND, IOR, XOR}}, \ -+ {"cmpsi_operand", {SUBREG, REG, CONST_INT}}, \ - {"commutative_float_operator", {PLUS, MULT}}, \ - {"equality_comparison_operator", {EQ,NE}}, \ - {"extend_reg_operand", {SUBREG, REG, TRUNCATE}}, \ -diff -ru gcc-3.3-20040126-1/gcc/config/sh/sh.md gcc-3.3-20040126/gcc/config/sh/sh.md ---- gcc-3.3-20040126-1/gcc/config/sh/sh.md Tue Jan 13 02:03:25 2004 -+++ gcc-3.3-20040126/gcc/config/sh/sh.md Fri Jan 30 17:54:20 2004 -@@ -685,11 +685,14 @@ - - (define_expand "cmpsi" - [(set (reg:SI T_REG) -- (compare (match_operand:SI 0 "arith_operand" "") -+ (compare (match_operand:SI 0 "cmpsi_operand" "") - (match_operand:SI 1 "arith_operand" "")))] - "TARGET_SH1" - " - { -+ if (GET_CODE (operands[0]) == REG && REGNO (operands[0]) == T_REG -+ && GET_CODE (operands[1]) != CONST_INT) -+ operands[0] = copy_to_mode_reg (SImode, operands[0]); - sh_compare_op0 = operands[0]; - sh_compare_op1 = operands[1]; - DONE; -@@ -1147,7 +1150,9 @@ - (match_operand:SI 2 "arith_reg_operand" "r")) - (reg:SI T_REG))) - (set (reg:SI T_REG) -- (gtu:SI (minus:SI (match_dup 1) (match_dup 2)) (match_dup 1)))] -+ (gtu:SI (minus:SI (minus:SI (match_dup 1) (match_dup 2)) -+ (reg:SI T_REG)) -+ (match_dup 1)))] - "TARGET_SH1" - "subc %2,%0" - [(set_attr "type" "arith")]) -@@ -7223,6 +7228,10 @@ - } - DONE; - } -+ if (sh_expand_t_scc (EQ, operands[0])) -+ DONE; -+ if (! rtx_equal_function_value_matters) -+ FAIL; - operands[1] = prepare_scc_operands (EQ); - }") - -@@ -7269,6 +7278,8 @@ - } - DONE; - } -+ if (! rtx_equal_function_value_matters) -+ FAIL; - operands[1] = prepare_scc_operands (LT); - }") - -@@ -7371,6 +7382,8 @@ - } - DONE; - } -+ if (! rtx_equal_function_value_matters) -+ FAIL; - operands[1] = prepare_scc_operands (GT); - }") - -@@ -7423,6 +7436,8 @@ - DONE; - } - -+ if (! rtx_equal_function_value_matters) -+ FAIL; - if (GET_MODE_CLASS (GET_MODE (sh_compare_op0)) == MODE_FLOAT) - { - if (TARGET_IEEE) -@@ -7462,6 +7477,8 @@ - sh_compare_op0, sh_compare_op1)); - DONE; - } -+ if (! rtx_equal_function_value_matters) -+ FAIL; - operands[1] = prepare_scc_operands (GTU); - }") - -@@ -7486,6 +7503,8 @@ - sh_compare_op1, sh_compare_op0)); - DONE; - } -+ if (! rtx_equal_function_value_matters) -+ FAIL; - operands[1] = prepare_scc_operands (LTU); - }") - -@@ -7515,6 +7534,8 @@ - - DONE; - } -+ if (! rtx_equal_function_value_matters) -+ FAIL; - operands[1] = prepare_scc_operands (LEU); - }") - -@@ -7545,6 +7566,8 @@ - DONE; - } - -+ if (! rtx_equal_function_value_matters) -+ FAIL; - operands[1] = prepare_scc_operands (GEU); - }") - -@@ -7592,8 +7615,12 @@ - DONE; - } - -- operands[1] = prepare_scc_operands (EQ); -- operands[2] = gen_reg_rtx (SImode); -+ if (sh_expand_t_scc (NE, operands[0])) -+ DONE; -+ if (! rtx_equal_function_value_matters) -+ FAIL; -+ operands[1] = prepare_scc_operands (EQ); -+ operands[2] = gen_reg_rtx (SImode); - }") - - (define_expand "sunordered" - ----- -SUGIOKA Toshinobu - - - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr13260-test.patch --- a/patches/gcc/3.3.3/pr13260-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -See http://gcc.gnu.org/PR13260 - -/cvs/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20031204-1.c,v --> standard output -revision 1.1 ---- - 1970-01-01 00:00:00.000000000 +0000 -+++ gcc/gcc/testsuite/gcc.c-torture/execute/20031204-1.c -@@ -0,0 +1,49 @@ -+/* PR optimization/13260 */ -+ -+#include -+ -+typedef unsigned long u32; -+ -+u32 in_aton(const char* x) -+{ -+ return 0x0a0b0c0d; -+} -+ -+u32 root_nfs_parse_addr(char *name) -+{ -+ u32 addr; -+ int octets = 0; -+ char *cp, *cq; -+ -+ cp = cq = name; -+ while (octets < 4) { -+ while (*cp >= '0' && *cp <= '9') -+ cp++; -+ if (cp == cq || cp - cq > 3) -+ break; -+ if (*cp == '.' || octets == 3) -+ octets++; -+ if (octets < 4) -+ cp++; -+ cq = cp; -+ } -+ -+ if (octets == 4 && (*cp == ':' || *cp == '\0')) { -+ if (*cp == ':') -+ *cp++ = '\0'; -+ addr = in_aton(name); -+ strcpy(name, cp); -+ } else -+ addr = (-1); -+ -+ return addr; -+} -+ -+int -+main() -+{ -+ static char addr[] = "10.11.12.13:/hello"; -+ u32 result = root_nfs_parse_addr(addr); -+ if (result != 0x0a0b0c0d) { abort(); } -+ return 0; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr15089-fix.patch --- a/patches/gcc/3.3.3/pr15089-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -See http://gcc.gnu.org/PR15089 -"In some cases the specified register for a local variable meant to be -used with inline assembly code is not respected. This breaks code -relying on this feature to implement non-standard calling convension." - -This fix is probably needed to properly implement linux syscalls in some architectures. - -First added to crosstool by Jamie Hicks, see -http://www.handhelds.org/hypermail/kernel-discuss/current/0066.html - -Index: gcc/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-old/gcc/loop.c 14 Feb 2004 14:46:03 -0000 1.488.2.3 -+++ gcc-new/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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/pr9365-1-test.patch --- a/patches/gcc/3.3.3/pr9365-1-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ ---- /dev/null Sat Dec 14 13:56:51 2002 -+++ gcc-3.3.1/gcc/testsuite/gcc.dg/pr9365-1.c Sun Sep 14 09:34:37 2003 -@@ -0,0 +1,40 @@ -+/* PR target/9365 -+ * Origin: marcus@mc.pp.se -+ * Testcase tweaked by dank@kegel.com -+ * [3.3 regression] [SH] segfault in gen_far_branch (config/sh/sh.c) -+ * ice-on-valid-code -+ * Not marked as xfail since it's a regression -+*/ -+/* { dg-do compile } */ -+/* { dg-options "-O2 -fomit-frame-pointer" } */ -+ -+ -+void foo(int n, int *p) -+{ -+ switch(n) { -+ case 100: case 110: case 120: case 130: case 140: -+ case 200: case 210: case 220: case 230: case 240: -+ case 300: case 310: case 320: case 330: case 340: -+ case 400: case 410: case 420: case 430: case 440: -+ case 500: case 510: case 520: case 530: case 540: -+ case 600: case 610: case 620: case 630: case 640: -+ case 700: case 710: case 720: case 730: case 740: -+ case 800: case 810: case 820: case 830: case 840: -+ case 900: case 910: case 920: case 930: case 940: -+ break; -+ default: -+ *p = n; -+ break; -+ } -+} -+ -+int main(int argc, char **argv) -+{ -+ int p; -+ -+ (void) argv; -+ -+ foo(argc, &p); -+ -+ return p; -+} diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/sh-lib1funcs_sizeAndType.patch --- a/patches/gcc/3.3.3/sh-lib1funcs_sizeAndType.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,610 +0,0 @@ -Fixes the problem - [ libdemo.so and main.o both use assignment on structures ] - $ sh4-unknown-linux-gnu-gcc libdemo.so main.o - sh4-unknown-linux-gnu/bin/ld: warning: type and size of dynamic symbol `__movstr_i4_even' are not defined - [ resulting app links, but crashes at runtime ] -See testcase at http://tsukuba.m17n.org/linux-sh/ml/linux-sh/2003-11/msg00016.html - -Patch was posted as http://gcc.gnu.org/ml/gcc-patches/2002-11/msg01641.html -and is in cvs as http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sh/lib1funcs.asm.diff?r1=1.29.4.1&r2=1.29.4.2 - -but see also sh-libgcc-hidden.patch (part of gcc-3.3.3 as of 20040119 or so) - -=================================================================== - ---- gcc/gcc/config/sh/lib1funcs.asm 2002/09/20 01:29:21 1.29.4.1 -+++ gcc/gcc/config/sh/lib1funcs.asm 2003/11/18 12:27:31 -@@ -38,9 +38,14 @@ - amylaar@cygnus.com */ - - #ifdef __ELF__ --#define LOCAL(X) .L_##X --#else --#define LOCAL(X) L_##X -+#define LOCAL(X) .L_##X -+#define FUNC(X) .type X,@function -+#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X -+#define ENDFUNC(X) ENDFUNC0(X) -+#else -+#define LOCAL(X) L_##X -+#define FUNC(X) -+#define ENDFUNC(X) - #endif - - #define CONCAT(A,B) A##B -@@ -87,6 +92,40 @@ - .global GLOBAL(ashiftrt_r4_31) - .global GLOBAL(ashiftrt_r4_32) - -+ FUNC(GLOBAL(ashiftrt_r4_0)) -+ FUNC(GLOBAL(ashiftrt_r4_1)) -+ FUNC(GLOBAL(ashiftrt_r4_2)) -+ FUNC(GLOBAL(ashiftrt_r4_3)) -+ FUNC(GLOBAL(ashiftrt_r4_4)) -+ FUNC(GLOBAL(ashiftrt_r4_5)) -+ FUNC(GLOBAL(ashiftrt_r4_6)) -+ FUNC(GLOBAL(ashiftrt_r4_7)) -+ FUNC(GLOBAL(ashiftrt_r4_8)) -+ FUNC(GLOBAL(ashiftrt_r4_9)) -+ FUNC(GLOBAL(ashiftrt_r4_10)) -+ FUNC(GLOBAL(ashiftrt_r4_11)) -+ FUNC(GLOBAL(ashiftrt_r4_12)) -+ FUNC(GLOBAL(ashiftrt_r4_13)) -+ FUNC(GLOBAL(ashiftrt_r4_14)) -+ FUNC(GLOBAL(ashiftrt_r4_15)) -+ FUNC(GLOBAL(ashiftrt_r4_16)) -+ FUNC(GLOBAL(ashiftrt_r4_17)) -+ FUNC(GLOBAL(ashiftrt_r4_18)) -+ FUNC(GLOBAL(ashiftrt_r4_19)) -+ FUNC(GLOBAL(ashiftrt_r4_20)) -+ FUNC(GLOBAL(ashiftrt_r4_21)) -+ FUNC(GLOBAL(ashiftrt_r4_22)) -+ FUNC(GLOBAL(ashiftrt_r4_23)) -+ FUNC(GLOBAL(ashiftrt_r4_24)) -+ FUNC(GLOBAL(ashiftrt_r4_25)) -+ FUNC(GLOBAL(ashiftrt_r4_26)) -+ FUNC(GLOBAL(ashiftrt_r4_27)) -+ FUNC(GLOBAL(ashiftrt_r4_28)) -+ FUNC(GLOBAL(ashiftrt_r4_29)) -+ FUNC(GLOBAL(ashiftrt_r4_30)) -+ FUNC(GLOBAL(ashiftrt_r4_31)) -+ FUNC(GLOBAL(ashiftrt_r4_32)) -+ - .align 1 - GLOBAL(ashiftrt_r4_32): - GLOBAL(ashiftrt_r4_31): -@@ -166,6 +205,40 @@ - GLOBAL(ashiftrt_r4_0): - rts - nop -+ -+ ENDFUNC(GLOBAL(ashiftrt_r4_0)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_1)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_2)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_3)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_4)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_5)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_6)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_7)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_8)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_9)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_10)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_11)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_12)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_13)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_14)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_15)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_16)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_17)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_18)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_19)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_20)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_21)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_22)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_23)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_24)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_25)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_26)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_27)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_28)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_29)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_30)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_31)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_32)) - #endif - - #ifdef L_ashiftrt_n -@@ -188,6 +261,7 @@ - ! - - .global GLOBAL(ashrsi3) -+ FUNC(GLOBAL(ashrsi3)) - .align 2 - GLOBAL(ashrsi3): - mov #31,r0 -@@ -315,6 +389,7 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashrsi3)) - #endif - - #ifdef L_ashiftlt -@@ -336,6 +411,7 @@ - ! (none) - ! - .global GLOBAL(ashlsi3) -+ FUNC(GLOBAL(ashlsi3)) - .align 2 - GLOBAL(ashlsi3): - mov #31,r0 -@@ -472,6 +548,7 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashlsi3)) - #endif - - #ifdef L_lshiftrt -@@ -493,6 +570,7 @@ - ! (none) - ! - .global GLOBAL(lshrsi3) -+ FUNC(GLOBAL(lshrsi3)) - .align 2 - GLOBAL(lshrsi3): - mov #31,r0 -@@ -629,6 +707,7 @@ - rts - nop - -+ ENDFUNC(GLOBAL(lshrsi3)) - #endif - - #ifdef L_movstr -@@ -645,76 +724,113 @@ - add #64,r4 - .align 4 - .global GLOBAL(movstrSI64) -+ FUNC(GLOBAL(movstrSI64)) - GLOBAL(movstrSI64): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) - .global GLOBAL(movstrSI60) -+ FUNC(GLOBAL(movstrSI60)) - GLOBAL(movstrSI60): - mov.l @(56,r5),r0 - mov.l r0,@(56,r4) - .global GLOBAL(movstrSI56) -+ FUNC(GLOBAL(movstrSI56)) - GLOBAL(movstrSI56): - mov.l @(52,r5),r0 - mov.l r0,@(52,r4) - .global GLOBAL(movstrSI52) -+ FUNC(GLOBAL(movstrSI52)) - GLOBAL(movstrSI52): - mov.l @(48,r5),r0 - mov.l r0,@(48,r4) - .global GLOBAL(movstrSI48) -+ FUNC(GLOBAL(movstrSI48)) - GLOBAL(movstrSI48): - mov.l @(44,r5),r0 - mov.l r0,@(44,r4) - .global GLOBAL(movstrSI44) -+ FUNC(GLOBAL(movstrSI44)) - GLOBAL(movstrSI44): - mov.l @(40,r5),r0 - mov.l r0,@(40,r4) - .global GLOBAL(movstrSI40) -+ FUNC(GLOBAL(movstrSI40)) - GLOBAL(movstrSI40): - mov.l @(36,r5),r0 - mov.l r0,@(36,r4) - .global GLOBAL(movstrSI36) -+ FUNC(GLOBAL(movstrSI36)) - GLOBAL(movstrSI36): - mov.l @(32,r5),r0 - mov.l r0,@(32,r4) - .global GLOBAL(movstrSI32) -+ FUNC(GLOBAL(movstrSI32)) - GLOBAL(movstrSI32): - mov.l @(28,r5),r0 - mov.l r0,@(28,r4) - .global GLOBAL(movstrSI28) -+ FUNC(GLOBAL(movstrSI28)) - GLOBAL(movstrSI28): - mov.l @(24,r5),r0 - mov.l r0,@(24,r4) - .global GLOBAL(movstrSI24) -+ FUNC(GLOBAL(movstrSI24)) - GLOBAL(movstrSI24): - mov.l @(20,r5),r0 - mov.l r0,@(20,r4) - .global GLOBAL(movstrSI20) -+ FUNC(GLOBAL(movstrSI20)) - GLOBAL(movstrSI20): - mov.l @(16,r5),r0 - mov.l r0,@(16,r4) - .global GLOBAL(movstrSI16) -+ FUNC(GLOBAL(movstrSI16)) - GLOBAL(movstrSI16): - mov.l @(12,r5),r0 - mov.l r0,@(12,r4) - .global GLOBAL(movstrSI12) -+ FUNC(GLOBAL(movstrSI12)) - GLOBAL(movstrSI12): - mov.l @(8,r5),r0 - mov.l r0,@(8,r4) - .global GLOBAL(movstrSI8) -+ FUNC(GLOBAL(movstrSI8)) - GLOBAL(movstrSI8): - mov.l @(4,r5),r0 - mov.l r0,@(4,r4) - .global GLOBAL(movstrSI4) -+ FUNC(GLOBAL(movstrSI4)) - GLOBAL(movstrSI4): - mov.l @(0,r5),r0 - mov.l r0,@(0,r4) -+ .global GLOBAL(movstrSI0) -+ FUNC(GLOBAL(movstrSI0)) - GLOBAL(movstrSI0): - rts - nop - -+ ENDFUNC(GLOBAL(movstrSI64)) -+ ENDFUNC(GLOBAL(movstrSI60)) -+ ENDFUNC(GLOBAL(movstrSI56)) -+ ENDFUNC(GLOBAL(movstrSI52)) -+ ENDFUNC(GLOBAL(movstrSI48)) -+ ENDFUNC(GLOBAL(movstrSI44)) -+ ENDFUNC(GLOBAL(movstrSI40)) -+ ENDFUNC(GLOBAL(movstrSI36)) -+ ENDFUNC(GLOBAL(movstrSI32)) -+ ENDFUNC(GLOBAL(movstrSI28)) -+ ENDFUNC(GLOBAL(movstrSI24)) -+ ENDFUNC(GLOBAL(movstrSI20)) -+ ENDFUNC(GLOBAL(movstrSI16)) -+ ENDFUNC(GLOBAL(movstrSI12)) -+ ENDFUNC(GLOBAL(movstrSI8)) -+ ENDFUNC(GLOBAL(movstrSI4)) -+ ENDFUNC(GLOBAL(movstrSI0)) -+ - .align 4 - - .global GLOBAL(movstr) -+ FUNC(GLOBAL(movstr)) - GLOBAL(movstr): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) -@@ -771,6 +887,8 @@ - add #64,r5 - bra GLOBAL(movstr) - add #64,r4 -+ -+ FUNC(GLOBAL(movstr)) - #endif - - #ifdef L_movstr_i4 -@@ -779,6 +897,10 @@ - .global GLOBAL(movstr_i4_odd) - .global GLOBAL(movstrSI12_i4) - -+ FUNC(GLOBAL(movstr_i4_even)) -+ FUNC(GLOBAL(movstr_i4_odd)) -+ FUNC(GLOBAL(movstrSI12_i4)) -+ - .p2align 5 - L_movstr_2mod4_end: - mov.l r0,@(16,r4) -@@ -787,6 +909,11 @@ - - .p2align 2 - -+GLOBAL(movstr_i4_even): -+ mov.l @r5+,r0 -+ bra L_movstr_start_even -+ mov.l @r5+,r1 -+ - GLOBAL(movstr_i4_odd): - mov.l @r5+,r1 - add #-4,r4 -@@ -813,10 +940,8 @@ - rts - mov.l r3,@(12,r4) - --GLOBAL(movstr_i4_even): -- mov.l @r5+,r0 -- bra L_movstr_start_even -- mov.l @r5+,r1 -+ ENDFUNC(GLOBAL(movstr_i4_even)) -+ ENDFUNC(GLOBAL(movstr_i4_odd)) - - .p2align 4 - GLOBAL(movstrSI12_i4): -@@ -827,12 +952,15 @@ - mov.l r1,@(4,r4) - rts - mov.l r2,@(8,r4) -+ -+ ENDFUNC(GLOBAL(movstrSI12_i4)) - #endif - - #ifdef L_mulsi3 - - - .global GLOBAL(mulsi3) -+ FUNC(GLOBAL(mulsi3)) - - ! r4 = aabb - ! r5 = ccdd -@@ -865,7 +993,7 @@ - rts - add r2,r0 - -- -+ FUNC(GLOBAL(mulsi3)) - #endif - #endif /* ! __SH5__ */ - #ifdef L_sdivsi3_i4 -@@ -875,6 +1003,7 @@ - !! args in r4 and r5, result in fpul, clobber dr0, dr2 - - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - lds r4,fpul - float fpul,dr0 -@@ -884,6 +1013,7 @@ - rts - ftrc dr0,fpul - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__) - !! args in r4 and r5, result in fpul, clobber r2, dr0, dr2 - -@@ -892,6 +1022,7 @@ - .mode SHcompact - #endif - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - sts.l fpscr,@-r15 - mov #8,r2 -@@ -906,6 +1037,7 @@ - rts - lds.l @r15+,fpscr - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) - #endif /* ! __SH5__ || __SH5__ == 32 */ - #endif /* ! __SH4__ */ - #endif -@@ -920,9 +1052,10 @@ - !! - !! - --!! args in r4 and r5, result in r0 clobber r1,r2,r3 -+!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit - - .global GLOBAL(sdivsi3) -+ FUNC(GLOBAL(sdivsi3)) - #if __SHMEDIA__ - #if __SH5__ == 32 - .section .text..SHmedia32,"ax" -@@ -1166,6 +1299,7 @@ - div0: rts - mov #0,r0 - -+ ENDFUNC(GLOBAL(sdivsi3)) - #endif /* ! __SHMEDIA__ */ - #endif /* ! __SH4__ */ - #endif -@@ -1174,9 +1308,11 @@ - .title "SH DIVIDE" - !! 4 byte integer Divide code for the Hitachi SH - #ifdef __SH4__ --!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 -+!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4, -+!! and t bit - - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - mov #1,r1 - cmp/hi r1,r5 -@@ -1217,11 +1353,13 @@ - L1: - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) - #elif defined (__SH5__) && ! defined (__SH4_NOFPU__) - #if ! __SH5__ || __SH5__ == 32 - !! args in r4 and r5, result in fpul, clobber r20, r21, dr0, fr33 - .mode SHmedia - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - addz.l r4,r63,r20 - addz.l r5,r63,r21 -@@ -1234,6 +1372,8 @@ - ftrc.dq dr0,dr32 - fmov.s fr33,fr32 - blink tr0,r63 -+ -+ ENDFUNC(GLOBAL(udivsi3_i4)) - #endif /* ! __SH5__ || __SH5__ == 32 */ - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) - !! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 -@@ -1287,6 +1427,7 @@ - #endif - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) - #endif /* ! __SH4__ */ - #endif - -@@ -1297,6 +1438,7 @@ - - !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit - .global GLOBAL(udivsi3) -+ FUNC(GLOBAL(udivsi3)) - - #if __SHMEDIA__ - #if __SH5__ == 32 -@@ -1485,6 +1627,7 @@ - rts - rotcl r0 - -+ ENDFUNC(GLOBAL(udivsi3)) - #endif /* ! __SHMEDIA__ */ - #endif /* __SH4__ */ - #endif /* L_udivsi3 */ -@@ -1790,6 +1933,7 @@ - .mode SHcompact - #endif - .global GLOBAL(set_fpscr) -+ FUNC(GLOBAL(set_fpscr)) - GLOBAL(set_fpscr): - lds r4,fpscr - mov.l LOCAL(set_fpscr_L1),r1 -@@ -1822,6 +1966,8 @@ - .align 2 - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+ -+ ENDFUNC(GLOBAL(set_fpscr)) - #ifdef __ELF__ - .comm GLOBAL(fpscr_values),8,4 - #else -@@ -1860,6 +2006,7 @@ - blink tr0, r63 - #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) - .global GLOBAL(ic_invalidate) -+ FUNC(GLOBAL(ic_invalidate)) - GLOBAL(ic_invalidate): - ocbwb @r4 - mova 0f,r0 -@@ -1882,6 +2029,8 @@ - nop - .endr - .endr -+ -+ ENDFUNC(GLOBAL(ic_invalidate)) - #endif /* SH4 */ - #endif /* L_ic_invalidate */ - -@@ -1940,6 +2089,7 @@ - will be expanded into r2/r3 upon return. */ - - .global GLOBAL(GCC_shcompact_call_trampoline) -+ FUNC(GLOBAL(GCC_shcompact_call_trampoline)) - GLOBAL(GCC_shcompact_call_trampoline): - ptabs/l r0, tr0 /* Prepare to call the actual function. */ - movi ((datalabel LOCAL(ct_main_table) - 31 * 2) >> 16) & 65535, r0 -@@ -2290,6 +2440,8 @@ - shari r2, 32, r2 - #endif - blink tr0, r63 -+ -+ ENDFUNC(GLOBAL(GCC_shcompact_call_trampoline)) - #endif /* L_shcompact_call_trampoline */ - - #ifdef L_shcompact_return_trampoline -@@ -2302,6 +2454,7 @@ - .section .text..SHmedia32, "ax" - .align 2 - .global GLOBAL(GCC_shcompact_return_trampoline) -+ FUNC(GLOBAL(GCC_shcompact_return_trampoline)) - GLOBAL(GCC_shcompact_return_trampoline): - ptabs/l r18, tr0 - #if __LITTLE_ENDIAN__ -@@ -2313,6 +2466,8 @@ - #endif - or r3, r2, r2 - blink tr0, r63 -+ -+ ENDFUNC(GLOBAL(GCC_shcompact_return_trampoline)) - #endif /* L_shcompact_return_trampoline */ - - #ifdef L_shcompact_incoming_args -@@ -2367,6 +2522,7 @@ - actual bit pattern. */ - - .global GLOBAL(GCC_shcompact_incoming_args) -+ FUNC(GLOBAL(GCC_shcompact_incoming_args)) - GLOBAL(GCC_shcompact_incoming_args): - ptabs/l r18, tr0 /* Prepare to return. */ - shlri r17, 32, r0 /* Load the cookie. */ -@@ -2519,6 +2675,7 @@ - LOCAL(ia_return): /* Return. */ - blink tr0, r63 - LOCAL(ia_end_of_push_seq): /* Label used to compute the first push instruction. */ -+ ENDFUNC(GLOBAL(GCC_shcompact_incoming_args)) - #endif /* L_shcompact_incoming_args */ - #endif - #if __SH5__ -@@ -2530,6 +2687,7 @@ - #endif - .align 3 /* It is copied in units of 8 bytes in SHmedia mode. */ - .global GLOBAL(GCC_nested_trampoline) -+ FUNC(GLOBAL(GCC_nested_trampoline)) - GLOBAL(GCC_nested_trampoline): - .mode SHmedia - ptrel/u r63, tr0 -@@ -2546,6 +2704,8 @@ - ld.l r0, 28, r1 - #endif - blink tr1, r63 -+ -+ ENDFUNC(GLOBAL(GCC_nested_trampoline)) - #endif /* L_nested_trampoline */ - #endif /* __SH5__ */ - #if __SH5__ == 32 -@@ -2555,6 +2715,7 @@ - .align 2 - #ifndef __SH4_NOFPU__ - .global GLOBAL(GCC_push_shmedia_regs) -+ FUNC(GLOBAL(GCC_push_shmedia_regs)) - GLOBAL(GCC_push_shmedia_regs): - addi.l r15, -14*8, r15 - fst.d r15, 13*8, dr62 -@@ -2573,6 +2734,7 @@ - fst.d r15, 0*8, dr36 - #endif - .global GLOBAL(GCC_push_shmedia_regs_nofpu) -+ FUNC(GLOBAL(GCC_push_shmedia_regs_nofpu)) - GLOBAL(GCC_push_shmedia_regs_nofpu): - ptabs/l r18, tr0 - addi.l r15, -27*8, r15 -@@ -2608,8 +2770,13 @@ - st.q r15, 0*8, r28 - blink tr0, r63 - -+#ifndef __SH4_NOFPU__ -+ ENDFUNC(GLOBAL(GCC_push_shmedia_regs)) -+#endif -+ ENDFUNC(GLOBAL(GCC_push_shmedia_regs_nofpu)) - #ifndef __SH4_NOFPU__ - .global GLOBAL(GCC_pop_shmedia_regs) -+ FUNC(GLOBAL(GCC_pop_shmedia_regs)) - GLOBAL(GCC_pop_shmedia_regs): - pt .L0, tr1 - movi 41*8, r0 -@@ -2630,6 +2797,7 @@ - blink tr1, r63 - #endif - .global GLOBAL(GCC_pop_shmedia_regs_nofpu) -+ FUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu)) - GLOBAL(GCC_pop_shmedia_regs_nofpu): - movi 27*8, r0 - .L0: -@@ -2666,5 +2834,10 @@ - ld.q r15, 0*8, r28 - add.l r15, r0, r15 - blink tr0, r63 -+ -+#ifndef __SH4_NOFPU__ -+ ENDFUNC(GLOBAL(GCC_pop_shmedia_regs)) -+#endif -+ ENDFUNC(GLOBAL(GCC_pop_shmedia_regs_nofpu)) - #endif /* __SH5__ == 32 */ - #endif /* L_push_pop_shmedia_regs */ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/sh-pic-set_fpscr-gcc-3.3.2.patch --- a/patches/gcc/3.3.3/sh-pic-set_fpscr-gcc-3.3.2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -See http://gcc.gnu.org/PR11901 -Should fix -make[2]: *** [/gcc-3.3-glibc-2.3.2/build-glibc/elf/check-textrel.out] Error 1 -in glibc's "make tests". - -Note: this patch is named -sh-pic-set_fpscr-gcc-3.3.2.patch -and must be applied after -sh-lib1funcs_sizeAndType.patch -but that'll happen naturally if you apply them in alphabetical order. - -------------- - -Date: Wed, 30 Jul 2003 12:03:01 +0900 -From: kaz Kojima -Subject: [linux-sh:02916] Re: Writing PIC version of __udivsi3_i4? (was: Re: "make tests" fails - with "libc.so: text relocations used" in glibc-2.3.2 for sh4) -To: dank@kegel.com -Cc: linux-sh@m17n.org -Message-Id: <200307300255.h6U2tB906928@r-rr.iij4u.or.jp> - -> I'll try to write the PIC version of it, - -Dan, does the attached patch work for you? - -Regards, - kaz --- -diff -u3prN ORIG/gcc/gcc/config/sh/lib1funcs.asm LOCAL/gcc/gcc/config/sh/lib1funcs.asm ---- ORIG/gcc/gcc/config/sh/lib1funcs.asm Thu Jun 19 07:38:59 2003 -+++ gcc-3.3.2/gcc/config/sh/lib1funcs.asm Wed Jul 30 11:08:49 2003 -@@ -1936,7 +1944,17 @@ GLOBAL(moddi3): - FUNC(GLOBAL(set_fpscr)) - GLOBAL(set_fpscr): - lds r4,fpscr -+#ifdef __PIC__ -+ mov.l r12,@-r15 -+ mova LOCAL(set_fpscr_L0),r0 -+ mov.l LOCAL(set_fpscr_L0),r12 -+ add r0,r12 -+ mov.l LOCAL(set_fpscr_L1),r0 -+ mov.l @(r0,r12),r1 -+ mov.l @r15+,r12 -+#else - mov.l LOCAL(set_fpscr_L1),r1 -+#endif - swap.w r4,r0 - or #24,r0 - #ifndef FMOVD_WORKS -@@ -1964,8 +1982,15 @@ GLOBAL(set_fpscr): - mov.l r3,@(4,r1) - #endif - .align 2 -+#ifdef __PIC__ -+LOCAL(set_fpscr_L0): -+ .long _GLOBAL_OFFSET_TABLE_ -+LOCAL(set_fpscr_L1): -+ .long GLOBAL(fpscr_values@GOT) -+#else - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+#endif - - ENDFUNC(GLOBAL(set_fpscr)) - #ifndef NO_FPSCR_VALUES - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.3/thunk3.patch --- a/patches/gcc/3.3.3/thunk3.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -Fixes -FAIL: g++.jason/thunk3.C (test for excess errors) -on sh4-unknown-linux-gnu. - -Does any sh variant *not* use the generic thunk support? If so, the patch should be -more cautious. As it is, it excludes all sh processors from this test. - -Index: thunk3.C -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C,v -retrieving revision 1.13 -diff -u -d -u -r1.13 thunk3.C ---- gcc-ss-3_3-20030714/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C.old 25 Mar 2002 17:57:03 -0000 1.13 -+++ gcc-ss-3_3-20030714/gcc/testsuite/g++.old-deja/g++.jason/thunk3.C 20 Jul 2003 16:57:38 -0000 -@@ -2,7 +2,7 @@ - // Note that this will break on any target that uses the generic thunk - // support, because it doesn't support variadic functions. - --// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3 mn10300-*-* mn10200-*-* v850-*-* sh-*-* sh64-*-* h8*-*-* xtensa-*-* -+// excess errors test - XFAIL mips*-*-* rs6000-*-* powerpc-*-eabi m68k-*-coff m68k-motorola-sysv m88k-motorola-sysv3 mn10300-*-* mn10200-*-* v850-*-* sh*-*-* h8*-*-* xtensa-*-* - - #include - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.4/gcc-3.3.4-arm-bigendian.patch --- a/patches/gcc/3.3.4/gcc-3.3.4-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -diff -urN gcc-3.3.4.orig/gcc/config/arm/linux-elf.h gcc-3.3.4/gcc/config/arm/linux-elf.h ---- gcc-3.3.4.orig/gcc/config/arm/linux-elf.h 2004-03-30 22:43:45.000000000 +0200 -+++ gcc-3.3.4/gcc/config/arm/linux-elf.h 2004-08-20 02:13:02.969084177 +0200 -@@ -30,17 +30,31 @@ - /* 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__" - -@@ -88,7 +102,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() \ -diff -urN gcc-3.3.4.orig/gcc/config.gcc gcc-3.3.4/gcc/config.gcc ---- gcc-3.3.4.orig/gcc/config.gcc 2004-04-29 06:42:47.000000000 +0200 -+++ gcc-3.3.4/gcc/config.gcc 2004-08-20 02:11:04.326143343 +0200 -@@ -699,6 +699,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $machine 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.4/gcc-3.3.4-arm-pr22528.patch --- a/patches/gcc/3.3.4/gcc-3.3.4-arm-pr22528.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -From http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00832.html, by -Richard Earnshaw. Fixes http://gcc.gnu.org/PR22528 - ---- gcc-3.3.4/gcc/config/arm/arm.md.orig 2004-03-30 22:43:44.000000000 +0200 -+++ gcc-3.3.4/gcc/config/arm/arm.md 2005-08-15 12:21:55.000000000 +0200 -@@ -4275,7 +4275,7 @@ - (set (match_dup 2) - (ashiftrt:SI (match_operand 0 "" "") (const_int 8))) - ;; store the high byte -- (set (match_dup 4) (subreg:QI (match_dup 2) 0))] ;explicit subreg safe -+ (set (match_dup 4) (match_dup 5))] - "TARGET_ARM" - " - { -@@ -4291,7 +4291,8 @@ - operands[1] = adjust_address (operands[1], QImode, 0); - operands[3] = gen_lowpart (QImode, operands[0]); - operands[0] = gen_lowpart (SImode, operands[0]); -- operands[2] = gen_reg_rtx (SImode); -+ operands[2] = gen_reg_rtx (SImode); -+ operands[5] = gen_lowpart (QImode, operands[2]); - }" - ) - -@@ -4299,7 +4300,7 @@ - [(set (match_dup 4) (match_dup 3)) - (set (match_dup 2) - (ashiftrt:SI (match_operand 0 "" "") (const_int 8))) -- (set (match_operand 1 "" "") (subreg:QI (match_dup 2) 3))] -+ (set (match_operand 1 "" "") (match_dup 5))] - "TARGET_ARM" - " - { -@@ -4316,13 +4317,14 @@ - operands[3] = gen_lowpart (QImode, operands[0]); - operands[0] = gen_lowpart (SImode, operands[0]); - operands[2] = gen_reg_rtx (SImode); -+ operands[5] = gen_lowpart (QImode, operands[2]); - }" - ) - - ;; Subroutine to store a half word integer constant into memory. - (define_expand "storeinthi" - [(set (match_operand 0 "" "") -- (subreg:QI (match_operand 1 "" "") 0)) -+ (match_operand 1 "" "")) - (set (match_dup 3) (match_dup 2))] - "TARGET_ARM" - " -@@ -4363,6 +4365,7 @@ - operands[3] = adjust_address (op0, QImode, 1); - operands[0] = adjust_address (operands[0], QImode, 0); - operands[2] = gen_lowpart (QImode, operands[2]); -+ operands[1] = gen_lowpart (QImode, operands[1]); - }" - ) - -@@ -4682,11 +4685,12 @@ - (set (match_dup 3) - (ashiftrt:SI (match_dup 2) (const_int 16))) - (set (match_operand:HI 0 "s_register_operand" "") -- (subreg:HI (match_dup 3) 0))] -+ (match_dup 4))] - "TARGET_ARM" - " - operands[2] = gen_reg_rtx (SImode); - operands[3] = gen_reg_rtx (SImode); -+ operands[4] = gen_lowpart (HImode, operands[3]); - " - ) - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.4/gcc-3.3.4-libstdcxx-sh.patch --- a/patches/gcc/3.3.4/gcc-3.3.4-libstdcxx-sh.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -Date: Tue, 06 Jul 2004 10:40:57 +0900 (JST) -Message-Id: <20040706.104057.48529182.kkojima@rr.iij4u.or.jp> -To: dank@kegel.com -Cc: linux-sh@m17n.org, linuxsh-dev@lists.sourceforge.net -Subject: gcc-3.4.1 (Was: The current kernel for a Jornada 680 SH3) -From: Kaz Kojima -In-Reply-To: <20040529.175014.48668611.kkojima@rr.iij4u.or.jp> -References: <20040528.125858.50336810.kkojima@rr.iij4u.or.jp> - <40B8205D.8030200@kegel.com> - <20040529.175014.48668611.kkojima@rr.iij4u.or.jp> - -Hi, - -... - -BTW, gcc-3.3.4 was also released and there is a bad news :-( Someone -reverted wrongly a configury patch against libstdc++ for sh-linux at -the last moment. We have to regenerate gcc-3.3.4/libstdc++-v3/configure -with autoconf 2.13 or apply the one-line patch below manually: - ---- gcc-3.3.4-orig/libstdc++-v3/configure 2004-06-01 09:45:44.000000000 +0900 -+++ gcc-3.3.4/libstdc++-v3/configure 2004-06-29 22:38:05.000000000 +0900 -@@ -2009,7 +2009,7 @@ irix5* | irix6*) - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM - - -Regards, - kaz - - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.4/gcc-3.3.4-ppc-asm-spec.patch --- a/patches/gcc/3.3.4/gcc-3.3.4-ppc-asm-spec.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -Based on gcc-3.4.0/gcc-3.3.3h-ppc-asm-spec.patch - -Fixes the following errors when building gcc for ppc7450: - -/tmp/ccj38uQs.s: Assembler messages: -/tmp/ccj38uQs.s:4370: Error: Unrecognized opcode: `mfvrsave' -/tmp/ccj38uQs.s:4404: Error: Unrecognized opcode: `stvx' -/tmp/ccj38uQs.s:4571: Error: Unrecognized opcode: `lvx' -/tmp/ccj38uQs.s:4572: Error: Unrecognized opcode: `mtvrsave' -make[2]: *** [libgcc/./unwind-dw2.o] Error 1 -make[2]: Leaving directory `/opt/crosstool-0.28-rc35/build/powerpc-7450-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-gcc-core/gcc' -make[1]: *** [stmp-multilib] Error 2 -make[1]: Leaving directory `/opt/crosstool-0.28-rc35/build/powerpc-7450-linux-gnu/gcc-3.3.4-glibc-2.3.2/build-gcc-core/gcc' -make: *** [all-gcc] Error 2 - -Note that the "-mcpu=7450" option must appear on the "gcc" command line in -order for "-maltivec" to be passed to the assembler. Or, "-maltivec" itself -may be passed to the "gcc" command. - -Contributed by Tom Warzeka - -=================================================================== ---- gcc-3.3.4/gcc/config/rs6000/rs6000.h~ 2004-02-01 23:40:49.000000000 -0500 -+++ gcc-3.3.4/gcc/config/rs6000/rs6000.h 2004-08-18 14:15:57.000000000 -0400 -@@ -52,23 +52,29 @@ - "%{!mcpu*: \ - %{mpower: %{!mpower2: -mpwr}} \ - %{mpower2: -mpwrx} \ -- %{mpowerpc*: -mppc} \ -+ %{mpowerpc64*: -mppc64} \ -+ %{!mpowerpc64*: %{mpowerpc*: -mppc}} \ - %{mno-power: %{!mpowerpc*: -mcom}} \ -- %{!mno-power: %{!mpower2: %(asm_default)}}} \ -+ %{!mno-power: %{!mpower*: %(asm_default)}}} \ - %{mcpu=common: -mcom} \ - %{mcpu=power: -mpwr} \ - %{mcpu=power2: -mpwrx} \ --%{mcpu=power3: -m604} \ -+%{mcpu=power3: -mppc64} \ - %{mcpu=power4: -mpower4} \ -+%{mcpu=power5: -mpower4} \ - %{mcpu=powerpc: -mppc} \ - %{mcpu=rios: -mpwr} \ - %{mcpu=rios1: -mpwr} \ - %{mcpu=rios2: -mpwrx} \ - %{mcpu=rsc: -mpwr} \ - %{mcpu=rsc1: -mpwr} \ -+%{mcpu=rs64a: -mppc64} \ - %{mcpu=401: -mppc} \ - %{mcpu=403: -m403} \ - %{mcpu=405: -m405} \ -+%{mcpu=405fp: -m405} \ -+%{mcpu=440: -m440} \ -+%{mcpu=440fp: -m440} \ - %{mcpu=505: -mppc} \ - %{mcpu=601: -m601} \ - %{mcpu=602: -mppc} \ -@@ -77,18 +83,23 @@ - %{mcpu=ec603e: -mppc} \ - %{mcpu=604: -mppc} \ - %{mcpu=604e: -mppc} \ --%{mcpu=620: -mppc} \ --%{mcpu=630: -m604} \ -+%{mcpu=620: -mppc64} \ -+%{mcpu=630: -mppc64} \ - %{mcpu=740: -mppc} \ --%{mcpu=7400: -mppc} \ --%{mcpu=7450: -mppc} \ - %{mcpu=750: -mppc} \ -+%{mcpu=G3: -mppc} \ -+%{mcpu=7400: -mppc -maltivec} \ -+%{mcpu=7450: -mppc -maltivec} \ -+%{mcpu=G4: -mppc -maltivec} \ - %{mcpu=801: -mppc} \ - %{mcpu=821: -mppc} \ - %{mcpu=823: -mppc} \ - %{mcpu=860: -mppc} \ -+%{mcpu=970: -mpower4 -maltivec} \ -+%{mcpu=G5: -mpower4 -maltivec} \ - %{mcpu=8540: -me500} \ --%{maltivec: -maltivec}" -+%{maltivec: -maltivec} \ -+-many" - - #define CPP_DEFAULT_SPEC "" - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.4/gcc-3.3.4-trap-posix.patch --- a/patches/gcc/3.3.4/gcc-3.3.4-trap-posix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde , 2005-04-20 -# -# Error: -# -# creating libintl.h -# Configuring etc... -# loading cache ../config.cache -# checking for a BSD compatible install... (cached) /usr/bin/install -c -# creating ./config.status -# creating Makefile -# trap: usage: trap [-lp] [[arg] signal_spec ...] -# -# Description: -# -# non-posix conform usage of trap causes bash >= 3.0 to fail -# e.g.: http://sourceware.org/ml/crossgcc/2004-12/msg00132.html -# -# Status: -# -# fixed in gcc >= 3.3.5 -# backport of gcc-3.3.5 fix -# -diff -ruN gcc-3.3.4-orig/configure gcc-3.3.4/configure ---- gcc-3.3.4-orig/configure 2002-09-29 18:11:24.000000000 +0200 -+++ gcc-3.3.4/configure 2005-04-20 21:11:30.000000000 +0200 -@@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.5/gcc-3.3.4-arm-bigendian.patch --- a/patches/gcc/3.3.5/gcc-3.3.4-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -diff -urN gcc-3.3.4.orig/gcc/config/arm/linux-elf.h gcc-3.3.4/gcc/config/arm/linux-elf.h ---- gcc-3.3.4.orig/gcc/config/arm/linux-elf.h 2004-03-30 22:43:45.000000000 +0200 -+++ gcc-3.3.4/gcc/config/arm/linux-elf.h 2004-08-20 02:13:02.969084177 +0200 -@@ -30,17 +30,31 @@ - /* 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__" - -@@ -88,7 +102,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() \ -diff -urN gcc-3.3.4.orig/gcc/config.gcc gcc-3.3.4/gcc/config.gcc ---- gcc-3.3.4.orig/gcc/config.gcc 2004-04-29 06:42:47.000000000 +0200 -+++ gcc-3.3.4/gcc/config.gcc 2004-08-20 02:11:04.326143343 +0200 -@@ -699,6 +699,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $machine 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.3.5/gcc-3.3.4-arm-pr22528.patch --- a/patches/gcc/3.3.5/gcc-3.3.4-arm-pr22528.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -From http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00832.html, by -Richard Earnshaw. Fixes http://gcc.gnu.org/PR22528 - ---- gcc-3.3.4/gcc/config/arm/arm.md.orig 2004-03-30 22:43:44.000000000 +0200 -+++ gcc-3.3.4/gcc/config/arm/arm.md 2005-08-15 12:21:55.000000000 +0200 -@@ -4275,7 +4275,7 @@ - (set (match_dup 2) - (ashiftrt:SI (match_operand 0 "" "") (const_int 8))) - ;; store the high byte -- (set (match_dup 4) (subreg:QI (match_dup 2) 0))] ;explicit subreg safe -+ (set (match_dup 4) (match_dup 5))] - "TARGET_ARM" - " - { -@@ -4291,7 +4291,8 @@ - operands[1] = adjust_address (operands[1], QImode, 0); - operands[3] = gen_lowpart (QImode, operands[0]); - operands[0] = gen_lowpart (SImode, operands[0]); -- operands[2] = gen_reg_rtx (SImode); -+ operands[2] = gen_reg_rtx (SImode); -+ operands[5] = gen_lowpart (QImode, operands[2]); - }" - ) - -@@ -4299,7 +4300,7 @@ - [(set (match_dup 4) (match_dup 3)) - (set (match_dup 2) - (ashiftrt:SI (match_operand 0 "" "") (const_int 8))) -- (set (match_operand 1 "" "") (subreg:QI (match_dup 2) 3))] -+ (set (match_operand 1 "" "") (match_dup 5))] - "TARGET_ARM" - " - { -@@ -4316,13 +4317,14 @@ - operands[3] = gen_lowpart (QImode, operands[0]); - operands[0] = gen_lowpart (SImode, operands[0]); - operands[2] = gen_reg_rtx (SImode); -+ operands[5] = gen_lowpart (QImode, operands[2]); - }" - ) - - ;; Subroutine to store a half word integer constant into memory. - (define_expand "storeinthi" - [(set (match_operand 0 "" "") -- (subreg:QI (match_operand 1 "" "") 0)) -+ (match_operand 1 "" "")) - (set (match_dup 3) (match_dup 2))] - "TARGET_ARM" - " -@@ -4363,6 +4365,7 @@ - operands[3] = adjust_address (op0, QImode, 1); - operands[0] = adjust_address (operands[0], QImode, 0); - operands[2] = gen_lowpart (QImode, operands[2]); -+ operands[1] = gen_lowpart (QImode, operands[1]); - }" - ) - -@@ -4682,11 +4685,12 @@ - (set (match_dup 3) - (ashiftrt:SI (match_dup 2) (const_int 16))) - (set (match_operand:HI 0 "s_register_operand" "") -- (subreg:HI (match_dup 3) 0))] -+ (match_dup 4))] - "TARGET_ARM" - " - operands[2] = gen_reg_rtx (SImode); - operands[3] = gen_reg_rtx (SImode); -+ operands[4] = gen_lowpart (HImode, operands[3]); - " - ) - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/compat.exp.patch --- a/patches/gcc/3.3/compat.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -Fixes the following problem when testing a cross-compiler: - -============================================ -Testing g++.dg/compat/abi/bitfield1, -... -Invoking the compiler as /crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/build-gcc/gcc/testsuite/../g++ ... -/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/gcc/testsuite/g++.dg/compat/abi/bitfield1_main.C -pid is 16028 -16028 -compiler exited with status 1 -output is: -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/powerpc-750-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian -/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/build-gcc/gcc/testsuite/../g++: error while loading shared libraries: /opt/cegl-2.0/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/powerpc-750-linux-gnu/./lib/libc.so.6: ELF file data encoding not little-endian - -FAIL: g++.dg/compat/abi/bitfield1 main_tst.o compile -============================================ - ---- gcc-3.3/gcc/testsuite/g++.dg/compat/compat.exp.old Thu Oct 17 17:22:57 2002 -+++ gcc-3.3/gcc/testsuite/g++.dg/compat/compat.exp Mon Jul 14 10:59:19 2003 -@@ -42,11 +42,13 @@ - proc compat-fix-library-path { } { - global ld_library_path - -- # See comments in lib/g++.exp for why this is needed. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # See comments in lib/g++.exp for why this is needed. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - } - - # diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/config.sub.patch --- a/patches/gcc/3.3/config.sub.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -When configuring a s390->s390 or cris->cris crosscompiler -(ok, I haven't hit this yet, but one of these days I'll get me an account -on an s390, and then I'll need this patch :-), you'll get the -following error: - -+ /build/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/gcc-3.3/configure ---target=s390-unknown-linux-gnu --host=s390-host_unknown-linux-gnu ---prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2 ---enable-languages=c ---with-local-prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/s390- -unknown-linux-gnu --enable-threads=no --without-headers --with-newlib ---disable-shared -... -*** --with-headers is only supported when cross compiling - -This error pops up only when you're using Daniel Jacobowitz's technique -of slightly changing the target and host tuples to make them different -enough to force gcc's build system to not try to pull in system libraries -or headers. This technique is needed e.g. to build an x86 -> x86 -cross-compiler. -(The LFS developers ran into the same bug that prompted me to use -this technique; they point people who run into it to -http://linuxfromscratch.org/~greg/pure_lfs.txt, which is a different -way of avoiding this problem. I think the tuple tweak is the way to go, though.) - -config-patches@gnu.org rejected this patch, on the grounds that there -is only one vendor of each of those two architectures, so the -canonicalization is by definition correct. When I pointed out the -difficulty this causes for people building s390 -> s390 or -cris -> cris compilers that are incompatible with the system -libraries and thus must be built like cross-compilers, he grumped and said -"autoconf should let you specify a cross-compiler in some other way than -comparing tuple strings". - - - ---- gcc-3.3/config.sub.old Sun Jun 8 20:38:47 2003 -+++ gcc-3.3/config.sub Sun Jun 8 20:40:34 2003 -@@ -433,9 +433,12 @@ - crds | unos) - basic_machine=m68k-crds - ;; -- cris | cris-* | etrax*) -+ cris | etrax*) - basic_machine=cris-axis - ;; -+ cris-*) -+ basic_machine=cris-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; -@@ -820,11 +823,17 @@ - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; -- s390 | s390-*) -+ s390) - basic_machine=s390-ibm - ;; -- s390x | s390x-*) -+ s390-*) -+ basic_machine=s390-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ s390x) - basic_machine=s390x-ibm -+ ;; -+ s390x-*) -+ basic_machine=s390x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sa29200) - basic_machine=a29k-amd diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/gcc-3.2.3-g++.exp.patch --- a/patches/gcc/3.3/gcc-3.2.3-g++.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -g++ testsuite fixes for cross-compilers, Dan Kegel, Ixia Communications, 12 July 2003 - -The first hunk fixes the error - -/testsuite_flags: /testsuite_flags: No such file or directory - while executing -"exec sh ${odir_v3}/testsuite_flags --build-includes" - (procedure "g++_include_flags" line 21) - invoked from within -"g++_include_flags [get_multilibs] " - (procedure "g++_init" line 63) - invoked from within -"${tool}_init $test_file_name" - (procedure "runtest" line 19) - invoked from within -"runtest $test_name" - ("foreach" body line 42) - invoked from within -... -make[1]: [check-g++] Error 1 (ignored) - -The fix isn't especially pretty, but it worked for me, and can't hurt the -more common native compiler case. Maybe someone who knows the code better -can come up with a better fix. - -The second hunk fixes the error - -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-405-linux-gnu/gcc-3.2.3-glibc-2.2.5/powerpc-405-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian - -when trying to compile g++ testcases (!); setting up -the shared library environment when running crosstests of g++ -should either be done by a special board file, or by -setting up a remote chroot environment (see http://kegel.com/crosstool), -not by blithely setting LD_LIBRARY_PATH on the local system. - ---- gcc-3.2.3/gcc/testsuite/lib/g++.exp.old Fri Jul 11 15:42:47 2003 -+++ gcc-3.2.3/gcc/testsuite/lib/g++.exp Sat Jul 12 12:57:07 2003 -@@ -72,6 +72,8 @@ - # - proc g++_include_flags { paths } { - global srcdir -+ global objdir -+ global target_triplet - global HAVE_LIBSTDCXX_V3 - global TESTING_IN_BUILD_TREE - -@@ -90,6 +92,20 @@ - - if { ${HAVE_LIBSTDCXX_V3} } { - set odir_v3 [lookfor_file ${gccpath} libstdc++-v3] -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on first try, now looking in build directory $objdir" -+ # first assume no multilibs -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on second try, trying multilib" -+ # assume multilib only one level deep -+ set multisub [file tail $gccpath] -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ error "Can't find libstdc++-v3" -+ } - append flags [exec sh ${odir_v3}/testsuite_flags --build-includes] - } else { - set odir_v2 [lookfor_file ${gccpath} libstdc++] -@@ -192,16 +192,20 @@ - } - } - -- # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -- # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -- # (for the 64-bit ABI). The right way to do this would be to modify -- # unix.exp -- but that's not an option since it's part of DejaGNU -- # proper, so we do it here. We really only need to do -- # this on IRIX, but it shouldn't hurt to do it anywhere else. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -+ # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -+ # (for the 64-bit ABI). The right way to do this would be to modify -+ # unix.exp -- but that's not an option since it's part of DejaGNU -+ # proper, so we do it here. We really only need to do -+ # this on IRIX, but it shouldn't hurt to do it anywhere else. -+ -+ # Doing this causes us to be unable to run cross-compilers. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - - return "$flags" - } diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/gcc-3.3-libstdc++-v3-dg.exp.patch --- a/patches/gcc/3.3/gcc-3.3-libstdc++-v3-dg.exp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -Without this patch, the command - -RUNTESTFLAGS=--target=powerpc-750-linux-gnu -v -v -v -v make check-target-libstdc++-v3 - -fails in two ways: -1. the -L option meant to locate the testsuite directory is incorrect, and -2. the wrong compiler is invoked, causing all sorts of havoc, not least of which -is the native compiler is invoked when we really wanted to invoke the cross-compiler -we just built. - -Here's an example log of the problem in action. Every testcase fails, this shows just one: -------------- -Invoking the compiler as g++ -ggdb3 -DDEBUG_ASSERT -I/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite /home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc -g -O2 -DDEBUG_ASSERT -L/testsuite -lv3test -lm -o ./binders.exe -compiler exited with status 1 -output is: -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h: In method `void binder2nd >::operator ()(const Elem &) const':^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_algo.h:83: instantiated from `for_each > >(Elem *, Elem *, binder2nd >)'^M -/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc:43: instantiated from here^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:224: conversion from `const Elem' to `Elem &' discards qualifiers^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:622: in passing argument 1 of `mem_fun1_ref_t::operator ()(Elem &, int) const'^M -... -FAIL: 20_util/binders.cc (test for excess errors) -WARNING: 20_util/binders.cc compilation failed to produce executable -------------- - -And here's the patch. I'm not happy with it, and it probably gets some cases wrong, -but it seems to work for the common native case and for my cross-compiler case. - ---- gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp.old Sun Jul 13 10:42:01 2003 -+++ gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp Sun Jul 13 11:39:54 2003 -@@ -46,8 +46,23 @@ - global gluefile wrap_flags - global ld_library_path - global tool_root_dir -+ global target_triplet - - set blddir [lookfor_file [get_multilibs] libstdc++-v3] -+ if { $blddir == "" } { -+ set multilibs [get_multilibs] -+ # FIXME: assume multilib only one level deep -+ set multisub [file tail $multilibs] -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3 in $multilibs, trying $objdir" -+ set blddir [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3, trying $objdir without multilibs" -+ set blddir [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ error "Can't find libstdc++-v3" -+ } - - # By default, we assume we want to run program images. - global dg-do-what-default diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/sh-pic-set_fpscr.patch --- a/patches/gcc/3.3/sh-pic-set_fpscr.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -Should fix -make[2]: *** [/gcc-3.3-glibc-2.3.2/build-glibc/elf/check-textrel.out] Error 1 -in glibc's "make tests". - -------------- - -Message-Id: <200307300255.h6U2tB906928@r-rr.iij4u.or.jp> -To: dank@kegel.com -Cc: linux-sh@m17n.org -Subject: Re: Writing PIC version of __udivsi3_i4? (was: Re: "make tests" fails - with "libc.so: text relocations used" in glibc-2.3.2 for sh4) -In-Reply-To: Your message of "Wed, 30 Jul 2003 11:20:49 +0900" - <200307300212.h6U2CH901209@r-rr.iij4u.or.jp> -References: <200307300212.h6U2CH901209@r-rr.iij4u.or.jp> -Date: Wed, 30 Jul 2003 12:03:01 +0900 -From: kaz Kojima - -> I'll try to write the PIC version of it, - -Dan, does the attached patch work for you? - -[dank: original patch deleted; here's same thing rediffed against gcc-3.3 instead of HEAD] - ---- gcc-3.3/gcc/config/sh/lib1funcs.asm.old Tue Jul 29 21:37:29 2003 -+++ gcc-3.3/gcc/config/sh/lib1funcs.asm Tue Jul 29 21:40:58 2003 -@@ -1792,7 +1792,17 @@ - .global GLOBAL(set_fpscr) - GLOBAL(set_fpscr): - lds r4,fpscr -+#ifdef __PIC__ -+ mov.l r12,@-r15 -+ mova LOCAL(set_fpscr_L0),r0 -+ mov.l LOCAL(set_fpscr_L0),r12 -+ add r0,r12 -+ mov.l LOCAL(set_fpscr_L1),r0 -+ mov.l @(r0,r12),r1 -+ mov.l @r15+,r12 -+#else - mov.l LOCAL(set_fpscr_L1),r1 -+#endif - swap.w r4,r0 - or #24,r0 - #ifndef FMOVD_WORKS -@@ -1820,8 +1830,16 @@ - mov.l r3,@(4,r1) - #endif - .align 2 -+#ifdef __PIC__ -+LOCAL(set_fpscr_L0): -+ .long _GLOBAL_OFFSET_TABLE_ -+LOCAL(set_fpscr_L1): -+ .long GLOBAL(fpscr_values@GOT) -+#else - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+#endif -+ - #ifdef __ELF__ - .comm GLOBAL(fpscr_values),8,4 - #else diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/sh-predef-gnu_source.patch --- a/patches/gcc/3.3/sh-predef-gnu_source.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11096 -and http://gcc.gnu.org/ml/gcc-patches/2003-06/msg00424.html - ---- gcc-3.3/gcc/config/sh/linux.h.old Wed Jun 4 17:37:40 2003 -+++ gcc-3.3/gcc/config/sh/linux.h Wed Jun 4 17:38:16 2003 -@@ -53,5 +53,9 @@ - %{static:-static}" - -+/* The GNU C++ standard library requires that these macros be defined. */ -+#undef CPLUSPLUS_CPP_SPEC -+#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" -+ - #undef LIB_SPEC - #define LIB_SPEC \ - "%{shared: -lc} \ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/sh-spec.patch --- a/patches/gcc/3.3/sh-spec.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -Message-Id: <200308020452.h724q0n01509@r-rr.iij4u.or.jp> -To: dank@kegel.com -Cc: kkojima@rr.iij4u.or.jp -Subject: Re: Writing PIC version of __udivsi3_i4? -In-Reply-To: Your message of "Fri, 01 Aug 2003 21:15:27 -0700" - <3F2B3ADF.6030206@kegel.com> -References: <3F2B3ADF.6030206@kegel.com> -Date: Sat, 02 Aug 2003 13:58:05 +0900 -From: kaz Kojima - -Dan Kegel wrote: -> It seems it might be from gcc's spec file: -> -> *subtarget_link_spec: -> %{shared:-shared} %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} %{!rpath:-rpath /lib}} %{static:-static} -> -> as the only place -rpath showed up was in the output of gcc -v as it -> was linking libc.so. -> -> Well, that's a clue, anyway! Guess I'll dig through the spec files -> tomorrow to see if I can figure it out some more. - -I've grepped gcc/config/*/*.h and found only SH and old libc1 stuffs -of i386/alpha include %{!rpath:-rpath ... in 3.3 release and the -current CVS. And my sh-gcc's specs doesn't have this :-( -It would be the Right Thing to remove this stuff simply. How about -the gcc patch below? - -Regards, - kaz --- ---- gcc-3.3/gcc/config/sh/linux.h.orig Sat Aug 2 13:20:57 2003 -+++ gcc-3.3/gcc/config/sh/linux.h Sat Aug 2 13:22:42 2003 -@@ -48,8 +48,7 @@ do { \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -- %{!rpath:-rpath /lib}} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" - - /* The GNU C++ standard library requires that these macros be defined. */ - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/sh4-kaz-workaround.patch --- a/patches/gcc/3.3/sh4-kaz-workaround.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -[lightly edited to fit my patch directory - dank] - -From: kaz Kojima -Date: Sat, 09 Aug 2003 09:46:21 +0900 -To: dank@kegel.com - -Hi Dan, - -I've come back from the vacation and looked glibc string test -failures on sh4. This looks a gcc problem. gcc-3.3/3.4 doesn't -compile these tests correctly. The attached testcase aborts on -gcc-3.3/3.4 -O2 but exits normally gcc-3.2 and gcc-3.0. -The option -O2 is not essential but it makes the testcase small. -The failed string tests include the same pattern of the code with -f=random to generate ramdom strings but they get strings with -embedded NULL characters :-( - -... -I've got a workaround below for this bug, though it might merely -paper over the real bug. Anyway, I'd like to send a PR for this. - -Regards, - kaz --- -int val = 0xff00; - -int f (void) { return val; } - -unsigned char a[1]; - -void -foo (void) -{ - a[0] = f () & 255; - - if (!a[0]) - a[0] = f () & 255; - - if (!a[0]) - a[0] = 1 + (f () & 127); -} - -int -main (int argc, char **argv) -{ - foo (); - if (!a[0]) - abort (); - - return 0; -} - --- - -diff -u3prN ORIG/gcc/gcc/config/sh/sh.c LOCAL/gcc/gcc/config/sh/sh.c ---- gcc/gcc/config/sh/sh.c.old Fri Aug 8 18:39:02 2003 -+++ gcc/gcc/config/sh/sh.c Fri Aug 8 22:31:02 2003 -@@ -6657,6 +6657,19 @@ arith_reg_dest (op, mode) - return arith_reg_operand (op, mode); - } - -+/* Like above, but for SImode compare destinations: forbid paradoxical -+ subregs, because it would get the combiner confused. */ -+int -+arith_reg_cmp_dest (op, mode) -+ rtx op; -+ enum machine_mode mode; -+{ -+ if (mode == SImode && GET_CODE (op) == SUBREG -+ && GET_MODE_SIZE (GET_MODE (SUBREG_REG (op))) < 4) -+ return 0; -+ return arith_reg_operand (op, mode); -+} -+ - int - int_gpr_dest (op, mode) - rtx op; -diff -u3prN ORIG/gcc/gcc/config/sh/sh.h LOCAL/gcc/gcc/config/sh/sh.h ---- gcc/gcc/config/sh/sh.h.old Fri Aug 8 18:39:02 2003 -+++ gcc/gcc/config/sh/sh.h Fri Aug 8 22:31:02 2003 -@@ -3365,6 +3365,7 @@ extern int rtx_equal_function_value_matt - {"and_operand", {SUBREG, REG, CONST_INT}}, \ - {"any_register_operand", {SUBREG, REG}}, \ - {"arith_operand", {SUBREG, REG, CONST_INT}}, \ -+ {"arith_reg_cmp_dest", {SUBREG, REG}}, \ - {"arith_reg_dest", {SUBREG, REG}}, \ - {"arith_reg_operand", {SUBREG, REG}}, \ - {"arith_reg_or_0_operand", {SUBREG, REG, CONST_INT, CONST_VECTOR}}, \ - ---- gcc-3.3/gcc/config/sh/sh.md.orig Tue Apr 15 10:06:10 2003 -+++ gcc-3.3/gcc/config/sh/sh.md Sat Aug 9 22:31:13 2003 -@@ -616,7 +616,7 @@ - - (define_insn "" - [(set (reg:SI T_REG) -- (eq:SI (and:SI (match_operand:SI 0 "arith_reg_operand" "z,r") -+ (eq:SI (and:SI (match_operand:SI 0 "arith_reg_cmp_dest" "z,r") - (match_operand:SI 1 "arith_operand" "L,r")) - (const_int 0)))] - "TARGET_SH1" -@@ -631,7 +631,7 @@ - - (define_insn "cmpeqsi_t" - [(set (reg:SI T_REG) -- (eq:SI (match_operand:SI 0 "arith_reg_operand" "r,z,r") -+ (eq:SI (match_operand:SI 0 "arith_reg_cmp_dest" "r,z,r") - (match_operand:SI 1 "arith_operand" "N,rI,r")))] - "TARGET_SH1" - "@ -@@ -642,7 +642,7 @@ - - (define_insn "cmpgtsi_t" - [(set (reg:SI T_REG) -- (gt:SI (match_operand:SI 0 "arith_reg_operand" "r,r") -+ (gt:SI (match_operand:SI 0 "arith_reg_cmp_dest" "r,r") - (match_operand:SI 1 "arith_reg_or_0_operand" "r,N")))] - "TARGET_SH1" - "@ -@@ -652,7 +652,7 @@ - - (define_insn "cmpgesi_t" - [(set (reg:SI T_REG) -- (ge:SI (match_operand:SI 0 "arith_reg_operand" "r,r") -+ (ge:SI (match_operand:SI 0 "arith_reg_cmp_dest" "r,r") - (match_operand:SI 1 "arith_reg_or_0_operand" "r,N")))] - "TARGET_SH1" - "@ -@@ -666,7 +666,7 @@ - - (define_insn "cmpgeusi_t" - [(set (reg:SI T_REG) -- (geu:SI (match_operand:SI 0 "arith_reg_operand" "r") -+ (geu:SI (match_operand:SI 0 "arith_reg_cmp_dest" "r") - (match_operand:SI 1 "arith_reg_operand" "r")))] - "TARGET_SH1" - "cmp/hs %1,%0" -@@ -674,7 +674,7 @@ - - (define_insn "cmpgtusi_t" - [(set (reg:SI T_REG) -- (gtu:SI (match_operand:SI 0 "arith_reg_operand" "r") -+ (gtu:SI (match_operand:SI 0 "arith_reg_cmp_dest" "r") - (match_operand:SI 1 "arith_reg_operand" "r")))] - "TARGET_SH1" - "cmp/hi %1,%0" diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/sh4-no-fix-protos.patch --- a/patches/gcc/3.3/sh4-no-fix-protos.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=10331 -and http://gcc.gnu.org/ml/gcc-patches/2003-06/msg00423.html - ---- gcc-3.3/gcc/config/sh/t-linux.old Wed Jun 4 13:01:39 2003 -+++ gcc-3.3/gcc/config/sh/t-linux Wed Jun 4 13:02:12 2003 -@@ -1,3 +1,6 @@ -+# Don't run fixproto -+STMP_FIXPROTO = -+ - TARGET_LIBGCC2_CFLAGS = -fpic - LIB1ASMFUNCS_CACHE = _ic_invalidate - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.3/sh4-pthread.patch --- a/patches/gcc/3.3/sh4-pthread.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -Patch to fix following test case failure: - - === libstdc++-v3 tests === -FAIL: thread/pthread1.cc (test for excess errors) -Excess errors: -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/sh4-unknown-linux-gnu/bin/ld: cannot find -lthread -collect2: ld returned 1 exit status - -Note that *any* program compiled with -pthread fails: - -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/bin/sh4-unknown-linux-gnu-gcc hello.c -pthread -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/lib/gcc-lib/sh4-unknown-linux-gnu/3.3.1/../../../../sh4-unknown-linux-gnu/bin/ld: cannot find -lthread -collect2: ld returned 1 exit status - -Compiling with -lpthread on the other hand works fine: -/opt/cegl-2.0/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/bin/sh4-unknown-linux-gnu-gcc hello.c -lpthread - -So -pthread is broken in some trivial way; it should invoke -lpthread, not -lthread, -at least when targeting Linux. - -http://www.sh-linux.org/rpm-2003/SRPMS/gcc-3.2.3-3.src.rpm contains a jumbo patch, -gcc-20030210-sh-linux-1.patch, that includes a fix for this. Here's the -appropriate hunk (brings in a fix for the documented -mieee option). -No idea if this fix is completely right, but it works for me... -- dank@kegel.com 20 Jul 2003 - -Index: linux.h -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/config/sh/linux.h,v -retrieving revision 1.9.20.1 -diff -u -d -u -r1.9.20.1 linux.h ---- gcc-ss-3_3-20030714/gcc/config/sh/linux.h.old 6 Jun 2003 02:30:59 -0000 1.9.20.1 -+++ gcc-ss-3_3-20030714/gcc/config/sh/linux.h 20 Jul 2003 23:36:50 -0000 -@@ -59,7 +59,7 @@ - #undef LIB_SPEC - #define LIB_SPEC \ - "%{shared: -lc} \ -- %{!shared: %{pthread:-lthread} \ -+ %{!shared: %{mieee:-lieee} %{pthread:-lpthread} \ - %{profile:-lc_p} %{!profile: -lc}}" - - #undef STARTFILE_SPEC diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/gcc-3.3.3h-ppc-asm-spec.patch --- a/patches/gcc/3.4.0/gcc-3.3.3h-ppc-asm-spec.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -Retrieved from http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/rs6000/rs6000.h.diff?r1=1.234.2.28&r2=1.234.2.29 - -Should fix following error building gcc for ppc7450: - -/tmp/ccmfQBT9.s:5197: Error: Unrecognized opcode: `lvx' -make[2]: *** [libgcc/./unwind-dw2.o] Error 1 -make[2]: Leaving directory `build-gcc-core/gcc' -make[1]: *** [stmp-multilib] Error 2 -make[1]: Leaving directory `build-gcc-core/gcc' -make: *** [all-gcc] Error 2 - -(I'm not so sure about the unconditional -many it sends to binutils; -that seems redundant?) - -Revision 1.234.2.29, Tue May 25 06:08:57 2004 UTC (6 days, 11 hours ago) by amodra -Branch: hammer-3_3-branch -Changes since 1.234.2.28: +15 -11 lines - - * config/rs6000/rs6000.h (ASM_CPU_SPEC): Handle -mpowerpc64 and -mcpu - for power5 and rs64a. Correct condition for default. Correct power3, - 620, 630, 7400, 7450, G4, 970 and G5 -mcpu entries. Add -many. - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.h,v -retrieving revision 1.234.2.28 -retrieving revision 1.234.2.29 -diff -u -r1.234.2.28 -r1.234.2.29 ---- gcc/gcc/config/rs6000/rs6000.h 2004/05/18 14:26:57 1.234.2.28 -+++ gcc/gcc/config/rs6000/rs6000.h 2004/05/25 06:08:57 1.234.2.29 -@@ -51,20 +51,23 @@ - "%{!mcpu*: \ - %{mpower: %{!mpower2: -mpwr}} \ - %{mpower2: -mpwrx} \ -- %{mpowerpc*: -mppc} \ -+ %{mpowerpc64*: -mppc64} \ -+ %{!mpowerpc64*: %{mpowerpc*: -mppc}} \ - %{mno-power: %{!mpowerpc*: -mcom}} \ -- %{!mno-power: %{!mpower2: %(asm_default)}}} \ -+ %{!mno-power: %{!mpower*: %(asm_default)}}} \ - %{mcpu=common: -mcom} \ - %{mcpu=power: -mpwr} \ - %{mcpu=power2: -mpwrx} \ --%{mcpu=power3: -m604} \ -+%{mcpu=power3: -mppc64} \ - %{mcpu=power4: -mpower4} \ -+%{mcpu=power5: -mpower4} \ - %{mcpu=powerpc: -mppc} \ - %{mcpu=rios: -mpwr} \ - %{mcpu=rios1: -mpwr} \ - %{mcpu=rios2: -mpwrx} \ - %{mcpu=rsc: -mpwr} \ - %{mcpu=rsc1: -mpwr} \ -+%{mcpu=rs64a: -mppc64} \ - %{mcpu=401: -mppc} \ - %{mcpu=403: -m403} \ - %{mcpu=405: -m405} \ -@@ -79,22 +82,23 @@ - %{mcpu=ec603e: -mppc} \ - %{mcpu=604: -mppc} \ - %{mcpu=604e: -mppc} \ --%{mcpu=620: -mppc} \ --%{mcpu=630: -m604} \ -+%{mcpu=620: -mppc64} \ -+%{mcpu=630: -mppc64} \ - %{mcpu=740: -mppc} \ --%{mcpu=7400: -mppc} \ --%{mcpu=7450: -mppc} \ --%{mcpu=G4: -mppc} \ - %{mcpu=750: -mppc} \ - %{mcpu=G3: -mppc} \ -+%{mcpu=7400: -mppc -maltivec} \ -+%{mcpu=7450: -mppc -maltivec} \ -+%{mcpu=G4: -mppc -maltivec} \ - %{mcpu=801: -mppc} \ - %{mcpu=821: -mppc} \ - %{mcpu=823: -mppc} \ - %{mcpu=860: -mppc} \ --%{mcpu=970: -mpower4} \ --%{mcpu=G5: -mpower4} \ -+%{mcpu=970: -mpower4 -maltivec} \ -+%{mcpu=G5: -mpower4 -maltivec} \ - %{mcpu=8540: -me500} \ --%{maltivec: -maltivec}" -+%{maltivec: -maltivec} \ -+-many" - - #define CPP_DEFAULT_SPEC "" - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/gcc-3.4.0-arm-bigendian.patch --- a/patches/gcc/3.4.0/gcc-3.4.0-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/gcc-3.4.0-arm-lib1asm.patch --- a/patches/gcc/3.4.0/gcc-3.4.0-arm-lib1asm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# Origin: from a patch by Dimitry Andric , 2004-05-01 -# See http://gcc.gnu.org/PR14352 and http://gcc.gnu.org/PR16314 -# See also http://gcc.gnu.org/ml/gcc-patches/2004-08/msg02568.html et seq for why this isn't in mainline -# 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/gcc-3.4.0-arm-nolibfloat.patch --- a/patches/gcc/3.4.0/gcc-3.4.0-arm-nolibfloat.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/gcc-3.4.0-pr14808-refix.patch --- a/patches/gcc/3.4.0/gcc-3.4.0-pr14808-refix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -See http://gcc.gnu.org/ml/gcc/2004-06/msg00394.html -This might fix the error - -strstream.s: Assembler messages: -strstream.s:8390: Error: junk `(%ecx)' after expression -strstream.s:8402: Error: junk `(%ecx)' after expression -strstream.s:8551: Error: junk `(%ecx)' after expression -strstream.s:8563: Error: junk `(%ecx)' after expression -make[3]: *** [strstream.lo] Error 1 -make[3]: Leaving directory `i686-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-gcc/i686-unknown-linux-gnu/libstdc++-v3/src' - -when building a cygwin->linux cross-compiler with gcc-3.4.0, -probably caused by patch to fix http://gcc.gnu.org/PR14808 - - ---- gcc-3.4.0/gcc/cp/method.c.old Sun Jun 6 22:46:04 2004 -+++ gcc-3.4.0/gcc/cp/method.c Sun Jun 6 22:48:13 2004 -@@ -286,7 +286,7 @@ - tree alias; - char buf[256]; - --#if defined (__CYGWIN__) || defined (__MINGW32__) -+#if defined (TARGET_IS_PE_COFF) - if (DECL_ONE_ONLY (function)) - return function; - #endif -@@ -404,7 +404,7 @@ - push_to_top_level (); - - #if defined (ASM_OUTPUT_DEF) \ -- && !(defined (__CYGWIN__) || defined (__MINGW32__)) -+ && !defined (TARGET_IS_PE_COFF) - if (targetm.have_named_sections) - { - resolve_unique_section (function, 0, flag_function_sections); ---- gcc-3.4.0/gcc/config/i386/cygming.h.old Sun Jun 6 22:50:46 2004 -+++ gcc-3.4.0/gcc/config/i386/cygming.h Sun Jun 6 22:52:10 2004 -@@ -27,6 +27,8 @@ - - #define TARGET_EXECUTABLE_SUFFIX ".exe" - -+#define TARGET_IS_PE_COFF 1 -+ - #include - - /* Masks for subtarget switches used by other files. */ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/gcc-3.4.0-ultrasparc3-default64.patch --- a/patches/gcc/3.4.0/gcc-3.4.0-ultrasparc3-default64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -Date: Sat, 1 May 2004 21:08:10 +0200 -From: Jakub Jelinek -To: Dan Kegel , mark@codesourcery.com -Cc: gcc-patches@gcc.gnu.org -Subject: [PATCH] sparc64-linux --with-cpu=ultrasparc fix -Message-ID: <20040501190810.GD5191@sunsite.ms.mff.cuni.cz> -Reply-To: Jakub Jelinek -References: <40940B11.9080907@kegel.com> -In-Reply-To: <40940B11.9080907@kegel.com> - -On Sat, May 01, 2004 at 01:39:45PM -0700, Dan Kegel wrote: -> I'm having a bit of trouble configuring gcc-3.4.0 for sparc64-linux. -> The resulting compiler defaults to sparc32, which is a problem -> because it means having to figure out how to add -> -mcpu=ultrasparc3 -Wa,-Av9a -m64 to CFLAGS for everything I build. -> The worst part is that this even affects libgcc.a, which makes it -> pretty hard to link any sparc64 executables. I could figure out -> how mklibgcc and multilibbing work, and maybe thereby get a good 64 bit -> libgcc.a, -> but I'd kind of like to avoid that for the moment, and just really get -> gcc to default to 64 bit output. -> -> What's the right way to get gcc to default to building 64 bit executables -> when targeting sparc64-linux? - -There was TARGET_CPU_ultrasparc3 missing in linux64.h. -I've commited the following fix to the trunk, but as it is not a regression, -I'm not sure if Mark is ok with this for gcc-3_4-branch. - -2004-05-01 Jakub Jelinek - - * config/sparc/linux64.h (TARGET_DEFAULT): Make 64-bit by default - also for TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3. - ---- gcc-3.4.0/gcc/config/sparc/linux64.h.jj 2004-05-01 22:59:52.000000000 +0200 -+++ gcc-3.4.0/gcc/config/sparc/linux64.h 2004-05-01 23:00:41.126176529 +0200 -@@ -39,7 +39,9 @@ Boston, MA 02111-1307, USA. */ - #undef MD_EXEC_PREFIX - #undef MD_STARTFILE_PREFIX - --#if TARGET_CPU_DEFAULT == TARGET_CPU_v9 || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc -+#if TARGET_CPU_DEFAULT == TARGET_CPU_v9 \ -+ || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc \ -+ || TARGET_CPU_DEFAULT == TARGET_CPU_ultrasparc3 - /* A 64 bit v9 compiler with stack-bias, - in a Medium/Low code model environment. */ - - - Jakub - - - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/pr13250-fix.patch --- a/patches/gcc/3.4.0/pr13250-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -See http://gcc.gnu.org/PR13250 -Fixes bad code generated when compiling SHA256 for SH processor - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.md,v -retrieving revision 1.171 -retrieving revision 1.172 -diff -u -r1.171 -r1.172 ---- gcc/gcc/config/sh/sh.md 2004/05/10 23:25:13 1.171 -+++ gcc/gcc/config/sh/sh.md 2004/05/28 05:47:36 1.172 -@@ -2194,7 +2194,7 @@ - parts[0] = gen_reg_rtx (SImode); - parts[1] = gen_reg_rtx (SImode); - emit_insn (gen_rotlsi3_16 (parts[2-choice], operands[1])); -- parts[choice-1] = operands[1]; -+ emit_move_insn (parts[choice-1], operands[1]); - emit_insn (gen_ashlsi3 (parts[0], parts[0], GEN_INT (8))); - emit_insn (gen_lshrsi3 (parts[1], parts[1], GEN_INT (8))); - emit_insn (gen_iorsi3 (operands[0], parts[0], parts[1])); diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.0/pr15647-fix.patch --- a/patches/gcc/3.4.0/pr15647-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,288 +0,0 @@ -Received: (qmail 11693 invoked from network); 26 May 2004 03:17:41 -0000 -Received: from unknown (HELO r-rr.iij4u.or.jp) (210.130.0.76) - by sourceware dot org with SMTP; 26 May 2004 03:17:41 -0000 -Received: from localhost (frgw.3in.ne.jp [210.251.121.226]) - by r-rr dot iij4u dot or dot jp (8 dot 11 dot 6+IIJ/8 dot 11 dot 6) with ESMTP id i4Q3HbJ21421; - Wed, 26 May 2004 12:17:37 +0900 (JST) -Date: Wed, 26 May 2004 12:13:58 +0900 (JST) -Message-Id: <20040526.121358.39460214.kkojima@rr.iij4u.or.jp> -To: gcc-patches at gcc dot gnu dot org -Cc: Mark Mitchell -Subject: [PATCH] Fix PR target/15647 for sh-linux -From: Kaz Kojima -Mime-Version: 1.0 -Content-Type: Text/Plain; charset=us-ascii -Content-Transfer-Encoding: 7bit - -Hi, - -The appended patch is to fix PR target/15647 - http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15647 -for linux. -__udivsi3 is exported from libgcc_s.so.1 and gcc generates the code -which assumes r1 will be not clobbered when calling __udivsi3 in SH3 -case. This is bad because r1 is clobbered by PLT. -The another functions listed in the standard libgcc-std.ver which -possively have similar problem are __ashlsi3, __ashrsi3 and __lshrsi3, -though these are used only by SH1/2. -The patch below simply uses an SH specific libgcc-std.ver which drops -these functions. SH linux uses a linker script libgcc_s.so having -libgcc.a as a suppementary library, so these functions given by -libgcc.a when needed in the link time. -Although mainline has one failure in bulding zlib which can be avoided -with -fno-reorder-blocks for sh3-unknown-linux-gnu target, x86 cross -to sh3-unknown-linux-gnu can be build successfully on mainline with -this patch except the above failure. 3.4-branch successfully bootstraps -with it and there are no new failures on the native sh4-unknown-linux-gnu. -The patch is highly sh-linux specific and seems to be safe. I'll check -it into mainline. -The original PR is also for sh3 netbsd. I'd like to leave it for the -netbsd experts. - -I think that it's too late for 3.3.4. Mark, is it also late for -3.4.1? - -Regards, - kaz --- -2004-05-26 Kaz Kojima - - * config/sh/t-linux (SHLIB_MAPFILES): Use sh specific - libgcc-std.ver. - * config/sh/libgcc-std.ver: New file. - -diff -u3prN ORIG-gcc/gcc/config/sh/t-linux LOCAL-gcc/gcc/config/sh/t-linux ---- ORIG-gcc/gcc/config/sh/t-linux Mon Feb 16 20:13:25 2004 -+++ LOCAL-gcc/gcc/config/sh/t-linux Tue May 25 18:25:48 2004 -@@ -11,8 +11,11 @@ MULTILIB_EXCEPTIONS= - EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o - - # Override t-slibgcc-elf-ver to export some libgcc symbols with --# the symbol versions that glibc used. --SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver $(srcdir)/config/sh/libgcc-glibc.ver -+# the symbol versions that glibc used. Also use an sh specific -+# libgcc-std.ver to avoid to export some lib1func routines which -+# should not be called via PLT. -+SHLIB_MAPFILES = $(srcdir)/config/sh/libgcc-std.ver \ -+ $(srcdir)/config/sh/libgcc-glibc.ver - - # Override SHLIB_LINK and SHLIB_INSTALL to use linker script - # libgcc_s.so. -diff -u3prN ORIG-gcc/gcc/config/sh/libgcc-std.ver LOCAL-gcc/gcc/config/sh/libgcc-std.ver ---- ORIG-gcc/gcc/config/sh/libgcc-std.ver Thu Jan 1 09:00:00 1970 -+++ LOCAL-gcc/gcc/config/sh/libgcc-std.ver Tue May 25 18:50:54 2004 -@@ -0,0 +1,213 @@ -+GCC_3.0 { -+ # libgcc1 integer symbols -+ __absvsi2 -+ __addvsi3 -+ # __ashlsi3 -+ # __ashrsi3 -+ __divsi3 -+ # __lshrsi3 -+ __modsi3 -+ __mulsi3 -+ __mulvsi3 -+ __negvsi2 -+ __subvsi3 -+ # __udivsi3 -+ __umodsi3 -+ -+ # libgcc1 floating point symbols -+ __addsf3 -+ __adddf3 -+ __addxf3 -+ __addtf3 -+ __divsf3 -+ __divdf3 -+ __divxf3 -+ __divtf3 -+ __eqsf2 -+ __eqdf2 -+ __eqxf2 -+ __eqtf2 -+ __extenddfxf2 -+ __extenddftf2 -+ __extendsfdf2 -+ __extendsfxf2 -+ __extendsftf2 -+ __fixsfsi -+ __fixdfsi -+ __fixxfsi -+ __fixtfsi -+ __floatsisf -+ __floatsidf -+ __floatsixf -+ __floatsitf -+ __gesf2 -+ __gedf2 -+ __gexf2 -+ __getf2 -+ __gtsf2 -+ __gtdf2 -+ __gtxf2 -+ __gttf2 -+ __lesf2 -+ __ledf2 -+ __lexf2 -+ __letf2 -+ __ltsf2 -+ __ltdf2 -+ __ltxf2 -+ __lttf2 -+ __mulsf3 -+ __muldf3 -+ __mulxf3 -+ __multf3 -+ __negsf2 -+ __negdf2 -+ __negxf2 -+ __negtf2 -+ __nesf2 -+ __nedf2 -+ __nexf2 -+ __netf2 -+ __subsf3 -+ __subdf3 -+ __subxf3 -+ __subtf3 -+ __truncdfsf2 -+ __truncxfsf2 -+ __trunctfsf2 -+ __truncxfdf2 -+ __trunctfdf2 -+ -+ # libgcc2 DImode arithmetic (for 32-bit targets). -+ __absvdi2 -+ __addvdi3 -+ __ashldi3 -+ __ashrdi3 -+ __cmpdi2 -+ __divdi3 -+ __ffsdi2 -+ __fixdfdi -+ __fixsfdi -+ __fixtfdi -+ __fixxfdi -+ __fixunsdfdi -+ __fixunsdfsi -+ __fixunssfsi -+ __fixunssfdi -+ __fixunstfdi -+ __fixunstfsi -+ __fixunsxfdi -+ __fixunsxfsi -+ __floatdidf -+ __floatdisf -+ __floatdixf -+ __floatditf -+ __lshrdi3 -+ __moddi3 -+ __muldi3 -+ __mulvdi3 -+ __negdi2 -+ __negvdi2 -+ __subvdi3 -+ __ucmpdi2 -+ __udivdi3 -+ __udivmoddi4 -+ __umoddi3 -+ -+ # libgcc2 TImode arithmetic (for 64-bit targets). -+ __ashlti3 -+ __ashrti3 -+ __cmpti2 -+ __divti3 -+ __ffsti2 -+ __fixdfti -+ __fixsfti -+ __fixtfti -+ __fixxfti -+ __lshrti3 -+ __modti3 -+ __multi3 -+ __negti2 -+ __ucmpti2 -+ __udivmodti4 -+ __udivti3 -+ __umodti3 -+ __fixunsdfti -+ __fixunssfti -+ __fixunstfti -+ __fixunsxfti -+ __floattidf -+ __floattisf -+ __floattixf -+ __floattitf -+ -+ # Used to deal with trampoline initialization on some platforms -+ __clear_cache -+ -+ # EH symbols -+ _Unwind_DeleteException -+ _Unwind_Find_FDE -+ _Unwind_ForcedUnwind -+ _Unwind_GetGR -+ _Unwind_GetIP -+ _Unwind_GetLanguageSpecificData -+ _Unwind_GetRegionStart -+ _Unwind_GetTextRelBase -+ _Unwind_GetDataRelBase -+ _Unwind_RaiseException -+ _Unwind_Resume -+ _Unwind_SetGR -+ _Unwind_SetIP -+ __deregister_frame -+ __deregister_frame_info -+ __deregister_frame_info_bases -+ __register_frame -+ __register_frame_info -+ __register_frame_info_bases -+ __register_frame_info_table -+ __register_frame_info_table_bases -+ __register_frame_table -+ -+ # SjLj EH symbols -+ _Unwind_SjLj_Register -+ _Unwind_SjLj_Unregister -+ _Unwind_SjLj_RaiseException -+ _Unwind_SjLj_ForcedUnwind -+ _Unwind_SjLj_Resume -+} -+ -+%inherit GCC_3.3 GCC_3.0 -+GCC_3.3 { -+ _Unwind_FindEnclosingFunction -+ _Unwind_GetCFA -+ _Unwind_Backtrace -+ _Unwind_Resume_or_Rethrow -+ _Unwind_SjLj_Resume_or_Rethrow -+} -+ -+%inherit GCC_3.3.1 GCC_3.3 -+GCC_3.3.1 { -+ __gcc_personality_sj0 -+ __gcc_personality_v0 -+} -+ -+%inherit GCC_3.3.2 GCC_3.3.1 -+GCC_3.3.2 { -+} -+ -+%inherit GCC_3.4 GCC_3.3.2 -+GCC_3.4 { -+ # bit scanning and counting built-ins -+ __clzsi2 -+ __clzdi2 -+ __clzti2 -+ __ctzsi2 -+ __ctzdi2 -+ __ctzti2 -+ __popcountsi2 -+ __popcountdi2 -+ __popcountti2 -+ __paritysi2 -+ __paritydi2 -+ __parityti2 -+} - diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.1/fix-fixincl.patch --- a/patches/gcc/3.4.1/fix-fixincl.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.0 as a cross into a clean $PREFIX -(the only two I've tried like this), the configure script happily copies -the glibc include files from include to sys-include; here's the line -from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - - ---- gcc-3.4.3/gcc/Makefile.in.foo 2005-05-20 11:41:39.000000000 -0700 -+++ gcc-3.4.3/gcc/Makefile.in 2005-05-20 12:08:46.000000000 -0700 -@@ -350,7 +350,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2532,11 +2535,13 @@ - $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(gcc_tooldir) - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: fixinc.sh gsyslimits.h - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.1/gcc-3.4-sparc-pr16430-fix.patch --- a/patches/gcc/3.4.1/gcc-3.4-sparc-pr16430-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -Message-ID: <33159.207.230.144.240.1093980498.squirrel@207.230.144.240> -Date: Tue, 31 Aug 2004 14:28:18 -0500 (CDT) -Subject: Crosstool 0.28-rc35 -From: "Jason Rothstein" -To: dank@kegel.com - -Could you please add the patches in GCC PR 16430 to GCC 3.4.1? - -http://gcc.gnu.org/PR16430 - -These fix one of 2 current ICE conditions when building a sparc64 ada -compilers. - - -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sparc/sparc.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.271.4.16&r2=1.271.4.17 - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/sparc/sparc.c,v -retrieving revision 1.271.4.16 -retrieving revision 1.271.4.17 -diff -u -r1.271.4.16 -r1.271.4.17 ---- gcc/gcc/config/sparc/sparc.c 2004/07/08 13:00:56 1.271.4.16 -+++ gcc/gcc/config/sparc/sparc.c 2004/07/08 14:36:51 1.271.4.17 -@@ -5808,6 +5808,18 @@ - abort (); - - mode = mode_for_size (bytes * BITS_PER_UNIT, MODE_INT, 0); -+ -+ /* ??? We probably should have made the same ABI change in -+ 3.4.0 as the one we made for unions. The latter was -+ required by the SCD though, while the former is not -+ specified, so we favored compatibility and efficiency. -+ -+ Now we're stuck for aggregates larger than 16 bytes, -+ because OImode vanished in the meantime. Let's not -+ try to be unduly clever, and simply follow the ABI -+ for unions in that case. */ -+ if (mode == BLKmode) -+ return function_arg_union_value (bytes, mode, regbase); - } - else if (GET_MODE_CLASS (mode) == MODE_INT - && GET_MODE_SIZE (mode) < UNITS_PER_WORD) diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.1/gcc-3.4.0-arm-bigendian.patch --- a/patches/gcc/3.4.1/gcc-3.4.0-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.1/gcc-3.4.0-arm-lib1asm.patch --- a/patches/gcc/3.4.1/gcc-3.4.0-arm-lib1asm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# Origin: from a patch by Dimitry Andric , 2004-05-01 -# See http://gcc.gnu.org/PR14352 and http://gcc.gnu.org/PR16314 -# See also http://gcc.gnu.org/ml/gcc-patches/2004-08/msg02568.html et seq for why this isn't in mainline -# 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.1/gcc-3.4.0-arm-nolibfloat.patch --- a/patches/gcc/3.4.1/gcc-3.4.0-arm-nolibfloat.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.1/pr15068-fix.patch --- a/patches/gcc/3.4.1/pr15068-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -See http://gcc.gnu.org/PR15068 - -Fixes error - -../sysdeps/generic/s_fmax.c: In function `__fmax': -../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257 -Please submit a full bug report, -with preprocessed source if appropriate. -See for instructions. -make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math' -make[1]: *** [math/others] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822' -make: *** [all] Error 2 - -[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ] - ---- gcc-3.4.1/gcc/flow.c.old 2004-02-27 19:39:19.000000000 -0800 -+++ gcc-3.4.1/gcc/flow.c 2004-08-26 07:29:46.000000000 -0700 -@@ -1878,6 +1878,7 @@ - rtx set_src = SET_SRC (pc_set (BB_END (bb))); - rtx cond_true = XEXP (set_src, 0); - rtx reg = XEXP (cond_true, 0); -+ enum rtx_code inv_cond; - - if (GET_CODE (reg) == SUBREG) - reg = SUBREG_REG (reg); -@@ -1886,11 +1887,13 @@ - in the form of a comparison of a register against zero. - If the condition is more complex than that, then it is safe - not to record any information. */ -- if (GET_CODE (reg) == REG -+ inv_cond = reversed_comparison_code (cond_true, BB_END (bb)); -+ if (inv_cond != UNKNOWN -+ && GET_CODE (reg) == REG - && XEXP (cond_true, 1) == const0_rtx) - { - rtx cond_false -- = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+ = gen_rtx_fmt_ee (inv_cond, - GET_MODE (cond_true), XEXP (cond_true, 0), - XEXP (cond_true, 1)); - if (GET_CODE (XEXP (set_src, 1)) == PC) diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.2/gcc-3.4.0-arm-bigendian.patch --- a/patches/gcc/3.4.2/gcc-3.4.0-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -Fixes build error - -/opt/crosstool/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/armeb-unknown-linux-gnu/bin/ld: unrecognised emulation mode: armelf_linux -Supported emulations: armelfb_linux armelfb -collect2: ld returned 1 exit status -make[2]: *** [/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/build-glibc/csu/crt1.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/glibc-2.3.3/csu' -make[1]: *** [csu/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/glibc-2.3.3' -make: *** [all] Error 2 - - -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.2/gcc-3.4.0-arm-lib1asm.patch --- a/patches/gcc/3.4.2/gcc-3.4.0-arm-lib1asm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# Origin: from a patch by Dimitry Andric , 2004-05-01 -# See http://gcc.gnu.org/PR14352 and http://gcc.gnu.org/PR16314 -# See also http://gcc.gnu.org/ml/gcc-patches/2004-08/msg02568.html et seq for why this isn't in mainline -# 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.2/gcc-3.4.0-arm-nolibfloat.patch --- a/patches/gcc/3.4.2/gcc-3.4.0-arm-nolibfloat.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.3/fix-fixincl.patch --- a/patches/gcc/3.4.3/fix-fixincl.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.0 as a cross into a clean $PREFIX -(the only two I've tried like this), the configure script happily copies -the glibc include files from include to sys-include; here's the line -from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - - ---- gcc-3.4.3/gcc/Makefile.in.foo 2005-05-20 11:41:39.000000000 -0700 -+++ gcc-3.4.3/gcc/Makefile.in 2005-05-20 12:08:46.000000000 -0700 -@@ -350,7 +350,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2532,11 +2535,13 @@ - $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(gcc_tooldir) - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: fixinc.sh gsyslimits.h - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.3/gcc-3.4.0-arm-bigendian.patch --- a/patches/gcc/3.4.3/gcc-3.4.0-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -Fixes build error - -/opt/crosstool/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/armeb-unknown-linux-gnu/bin/ld: unrecognised emulation mode: armelf_linux -Supported emulations: armelfb_linux armelfb -collect2: ld returned 1 exit status -make[2]: *** [/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/build-glibc/csu/crt1.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/glibc-2.3.3/csu' -make[1]: *** [csu/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/glibc-2.3.3' -make: *** [all] Error 2 - - -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.3/gcc-3.4.0-arm-lib1asm.patch --- a/patches/gcc/3.4.3/gcc-3.4.0-arm-lib1asm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# Origin: from a patch by Dimitry Andric , 2004-05-01 -# See http://gcc.gnu.org/PR14352 and http://gcc.gnu.org/PR16314 -# See also http://gcc.gnu.org/ml/gcc-patches/2004-08/msg02568.html et seq for why this isn't in mainline -# 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.3/gcc-3.4.0-arm-nolibfloat.patch --- a/patches/gcc/3.4.3/gcc-3.4.0-arm-nolibfloat.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.3/pr15068-fix.patch --- a/patches/gcc/3.4.3/pr15068-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -See http://gcc.gnu.org/PR15068 - -Fixes error - -../sysdeps/generic/s_fmax.c: In function `__fmax': -../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257 -Please submit a full bug report, -with preprocessed source if appropriate. -See for instructions. -make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math' -make[1]: *** [math/others] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822' -make: *** [all] Error 2 - -[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ] - ---- gcc-3.4.1/gcc/flow.c.old 2004-02-27 19:39:19.000000000 -0800 -+++ gcc-3.4.1/gcc/flow.c 2004-08-26 07:29:46.000000000 -0700 -@@ -1878,6 +1878,7 @@ - rtx set_src = SET_SRC (pc_set (BB_END (bb))); - rtx cond_true = XEXP (set_src, 0); - rtx reg = XEXP (cond_true, 0); -+ enum rtx_code inv_cond; - - if (GET_CODE (reg) == SUBREG) - reg = SUBREG_REG (reg); -@@ -1886,11 +1887,13 @@ - in the form of a comparison of a register against zero. - If the condition is more complex than that, then it is safe - not to record any information. */ -- if (GET_CODE (reg) == REG -+ inv_cond = reversed_comparison_code (cond_true, BB_END (bb)); -+ if (inv_cond != UNKNOWN -+ && GET_CODE (reg) == REG - && XEXP (cond_true, 1) == const0_rtx) - { - rtx cond_false -- = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+ = gen_rtx_fmt_ee (inv_cond, - GET_MODE (cond_true), XEXP (cond_true, 0), - XEXP (cond_true, 1)); - if (GET_CODE (XEXP (set_src, 1)) == PC) diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.3/pr16201-fix.patch --- a/patches/gcc/3.4.3/pr16201-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,149 +0,0 @@ -See http://gcc.gnu.org/PR16201 - -Should fix "bad immediate value for offset" errors for several flavors of arm, e.g. - -/tmp/ccmdoQyg.s: Assembler messages: -/tmp/ccmdoQyg.s:6235: Error: bad immediate value for offset (4096) -make[2]: *** [crosstool-0.32/build/arm-xscale-linux-gnu/gcc-3.4.3-glibc-2.3.3/build-glibc/locale/ld-collate.o] Error 1 - -/tmp/cc0c7qop.s: Assembler messages: -/tmp/cc0c7qop.s:6234: Error: bad immediate value for offset (4104) -make[2]: *** [crosstool-0.32/build/armv5b-softfloat-linux/gcc-3.4.3-glibc-2.3.3/build-glibc/locale/ld-collate.o] Error 1 - - -CVSROOT: /cvs/gcc -Module name: gcc -Branch: gcc-3_4-branch -Changes by: rearnsha@gcc.gnu.org 2005-02-01 15:07:05 - -Modified files: - gcc : ChangeLog - gcc/config/arm : arm-protos.h arm.c - -Log message: - PR target/16201 - * arm.c (arm_eliminable_register): New function. - (adjacent_mem_locations): Don't allow eliminable registers. Use - HOST_WIDE_INT for address offsets. - * arm-protos.h (arm_eliminable_register): Add prototype. - -Patches: -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.2326.2.790&r2=2.2326.2.791 -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm-protos.h.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.61&r2=1.61.4.1 -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/arm/arm.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.317.4.8&r2=1.317.4.9 - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/arm/arm-protos.h,v -retrieving revision 1.61 -retrieving revision 1.61.4.1 -diff -u -r1.61 -r1.61.4.1 ---- gcc/gcc/config/arm/arm-protos.h 2003/11/20 11:44:18 1.61 -+++ gcc/gcc/config/arm/arm-protos.h 2005/02/01 15:07:02 1.61.4.1 -@@ -1,5 +1,6 @@ - /* Prototypes for exported functions defined in arm.c and pe.c -- Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005 -+ Free Software Foundation, Inc. - Contributed by Richard Earnshaw (rearnsha@arm.com) - Minor hacks by Nick Clifton (nickc@cygnus.com) - -@@ -138,6 +139,7 @@ - extern int arm_is_longcall_p (rtx, int, int); - extern int arm_emit_vector_const (FILE *, rtx); - extern const char * arm_output_load_gr (rtx *); -+extern int arm_eliminable_register (rtx); - - #if defined TREE_CODE - extern rtx arm_function_arg (CUMULATIVE_ARGS *, enum machine_mode, tree, int); -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.c,v -retrieving revision 1.317.4.8 -retrieving revision 1.317.4.9 -diff -u -r1.317.4.8 -r1.317.4.9 ---- gcc/gcc/config/arm/arm.c 2004/04/29 19:52:41 1.317.4.8 -+++ gcc/gcc/config/arm/arm.c 2005/02/01 15:07:02 1.317.4.9 -@@ -1,6 +1,6 @@ - /* Output routines for GCC for ARM. - Copyright (C) 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -- 2002, 2003, 2004 Free Software Foundation, Inc. -+ 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl) - and Martin Simmons (@harleqn.co.uk). - More major hacks by Richard Earnshaw (rearnsha@arm.com). -@@ -4056,6 +4056,16 @@ - && INTVAL (op) < 64); - } - -+/* Return true if X is a register that will be eliminated later on. */ -+int -+arm_eliminable_register (rtx x) -+{ -+ return REG_P (x) && (REGNO (x) == FRAME_POINTER_REGNUM -+ || REGNO (x) == ARG_POINTER_REGNUM -+ || (REGNO (x) >= FIRST_VIRTUAL_REGISTER -+ && REGNO (x) <= LAST_VIRTUAL_REGISTER)); -+} -+ - /* Returns TRUE if INSN is an "LDR REG, ADDR" instruction. - Use by the Cirrus Maverick code which has to workaround - a hardware bug triggered by such instructions. */ -@@ -4569,33 +4579,42 @@ - || (GET_CODE (XEXP (b, 0)) == PLUS - && GET_CODE (XEXP (XEXP (b, 0), 1)) == CONST_INT))) - { -- int val0 = 0, val1 = 0; -- int reg0, reg1; -- -+ HOST_WIDE_INT val0 = 0, val1 = 0; -+ rtx reg0, reg1; -+ int val_diff; -+ - if (GET_CODE (XEXP (a, 0)) == PLUS) - { -- reg0 = REGNO (XEXP (XEXP (a, 0), 0)); -+ reg0 = XEXP (XEXP (a, 0), 0); - val0 = INTVAL (XEXP (XEXP (a, 0), 1)); - } - else -- reg0 = REGNO (XEXP (a, 0)); -+ reg0 = XEXP (a, 0); - - if (GET_CODE (XEXP (b, 0)) == PLUS) - { -- reg1 = REGNO (XEXP (XEXP (b, 0), 0)); -+ reg1 = XEXP (XEXP (b, 0), 0); - val1 = INTVAL (XEXP (XEXP (b, 0), 1)); - } - else -- reg1 = REGNO (XEXP (b, 0)); -+ reg1 = XEXP (b, 0); - - /* Don't accept any offset that will require multiple - instructions to handle, since this would cause the - 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); -+ -+ /* Don't allow an eliminable register: register elimination can make -+ the offset too large. */ -+ if (arm_eliminable_register (reg0)) -+ return 0; -+ -+ val_diff = val1 - val0; -+ return ((REGNO (reg0) == REGNO (reg1)) -+ && (val_diff == 4 || val_diff == -4)); - } -+ - return 0; - } - -@@ -7301,7 +7320,6 @@ - return ""; - } - -- - /* Output a move from arm registers to an fpa registers. - OPERANDS[0] is an fpa register. - OPERANDS[1] is the first registers of an arm register pair. */ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.3/pr18508-fix.patch --- a/patches/gcc/3.4.3/pr18508-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ -See http://gcc.gnu.org/PR18508 - -This should fix cygwin errors like: - -basename: missing operand -Try `basename --help' for more information. -mv: `libgcc_s_nof.so.1' and `libgcc_s_nof.so.1.' are the same file -make[2]: *** [nof/libgcc_s_nof.so] Error 1 -make[2]: Leaving directory `/home/cvachoucek/crosstool-0.32/build/powerpc-750-linux-gnu/gcc-3.4.3-glibc-2.3.5/build-gcc/gcc' -make[1]: *** [stmp-multilib] Error 2 -make[1]: Leaving directory `/home/cvachoucek/crosstool-0.32/build/powerpc-750-linux-gnu/gcc-3.4.3-glibc-2.3.5/build-gcc/gcc' -make: *** [install-gcc] Error 2 - -From gcc-patches-return-133821-listarch-gcc-patches=gcc dot gnu dot org at gcc dot gnu dot org Wed Nov 17 00:15:28 2004 -Return-Path: -Delivered-To: listarch-gcc-patches at gcc dot gnu dot org -Received: (qmail 12823 invoked by alias); 17 Nov 2004 00:15:19 -0000 -Mailing-List: contact gcc-patches-help at gcc dot gnu dot org; run by ezmlm -List-Archive: -List-Post: -List-Help: -Sender: gcc-patches-owner at gcc dot gnu dot org -Date: Tue, 16 Nov 2004 16:14:57 -0800 -From: "H dot J dot Lu" -To: gcc-patches at gcc dot gnu dot org -Subject: PATCH: PR other/18508: "basename: too few arguments" when building without bootstrap -Message-ID: <20041117001457.GA13610@lucon.org> - -I think it is safe to use `.backup' to backup the existing shared -library. No processes should be using the old shared library when -we get there. - - -H.J. ---- -2004-11-16 H.J. Lu - - PR other/18508 - * config/alpha/t-osf4 (SHLIB_LINK): Use `.backup' as the suffix - to back up the existing shared library. - * config/arm/t-netbsd (SHLIB_LINK): Likewise. - * config/i386/t-nwld (SHLIB_LINK): Likewise. [deleted] - * config/mips/t-slibgcc-irix (SHLIB_LINK): Likewise. [deleted] - * config/pa/t-hpux-shlib (SHLIB_LINK): Likewise. - * config/sh/t-linux (SHLIB_LINK): Likewise. - * config/t-libunwind-elf (SHLIBUNWIND_LINK): Likewise. - * config/t-slibgcc-darwin (SHLIB_LINK): Likewise. - * config/t-slibgcc-elf-ver (SHLIB_LINK): Likewise. - * config/t-slibgcc-sld (SHLIB_LINK): Likewise. - -[ paths adjusted for patch -p1, rediffed agaainst gcc-3.4.3. - Looks like the t-iris5-6 hunk in cvs is missing here; this must - have been the mainline patch. ] - ---- gcc-3.4.3/gcc/config/alpha/t-osf4.stage 2004-10-18 09:14:39.000000000 -0700 -+++ gcc-3.4.3/gcc/config/alpha/t-osf4 2004-11-16 16:06:41.686905479 -0800 -@@ -19,7 +19,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2 - -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \ - rm -f $(SHLIB_SONAME) && \ - if [ -f $(SHLIB_NAME) ]; then \ -- mv -f $(SHLIB_NAME) $(SHLIB_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ - else true; fi && \ - mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ - $(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME) ---- gcc-3.4.3/gcc/config/arm/t-netbsd.stage 2004-10-18 09:14:40.000000000 -0700 -+++ gcc-3.4.3/gcc/config/arm/t-netbsd 2004-11-16 16:06:46.016348194 -0800 -@@ -14,7 +14,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2 - -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \ - rm -f $(SHLIB_SONAME) && \ - if [ -f $(SHLIB_NAME) ]; then \ -- mv -f $(SHLIB_NAME) $(SHLIB_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ - else true; fi && \ - mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ - $(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME) ---- gcc-3.4.3/gcc/config/pa/t-hpux-shlib.stage 2004-10-18 09:14:46.000000000 -0700 -+++ gcc-3.4.3/gcc/config/pa/t-hpux-shlib 2004-11-16 16:06:57.982807875 -0800 -@@ -8,7 +8,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2 - -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \ - rm -f $(SHLIB_SONAME) && \ - if [ -f $(SHLIB_NAME) ]; then \ -- mv -f $(SHLIB_NAME) $(SHLIB_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ - else true; fi && \ - mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ - $(LN_S) $(SHLIB_NAME) $(SHLIB_SONAME) ---- gcc-3.4.3/gcc/config/sh/t-linux.stage 2004-10-18 09:14:48.000000000 -0700 -+++ gcc-3.4.3/gcc/config/sh/t-linux 2004-11-16 16:07:00.787446863 -0800 -@@ -24,7 +24,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2 - -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ - rm -f $(SHLIB_SOLINK) && \ - if [ -f $(SHLIB_NAME) ]; then \ -- mv -f $(SHLIB_NAME) $(SHLIB_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ - else true; fi && \ - mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ - (echo "/* GNU ld script"; \ ---- gcc-3.4.3/gcc/config/t-libunwind-elf.stage 2004-10-18 09:14:39.000000000 -0700 -+++ gcc-3.4.3/gcc/config/t-libunwind-elf 2004-11-16 16:07:08.133501281 -0800 -@@ -14,8 +14,7 @@ SHLIBUNWIND_LINK = $(GCC_FOR_TARGET) $(L - @multilib_flags@ $(SHLIB_OBJS) -lc && \ - rm -f $(SHLIB_SOLINK) && \ - if [ -f $(SHLIBUNWIND_NAME) ]; then \ -- mv -f $(SHLIBUNWIND_NAME) \ -- $(SHLIBUNWIND_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIBUNWIND_NAME) $(SHLIBUNWIND_NAME).backup; \ - else true; fi && \ - mv $(SHLIBUNWIND_NAME).tmp $(SHLIBUNWIND_NAME) && \ - $(LN_S) $(SHLIBUNWIND_NAME) $(SHLIB_SOLINK) ---- gcc-3.4.3/gcc/config/t-slibgcc-darwin.stage 2004-10-18 09:14:39.000000000 -0700 -+++ gcc-3.4.3/gcc/config/t-slibgcc-darwin 2004-11-16 16:07:13.777774752 -0800 -@@ -17,7 +17,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2 - @multilib_flags@ $(SHLIB_OBJS) -lc && \ - rm -f $(SHLIB_SOLINK) && \ - if [ -f $(SHLIB_NAME) ]; then \ -- mv -f $(SHLIB_NAME) $(SHLIB_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ - else true; fi && \ - mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ - $(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK) ---- gcc-3.4.3/gcc/config/t-slibgcc-elf-ver.stage 2004-10-18 09:14:39.000000000 -0700 -+++ gcc-3.4.3/gcc/config/t-slibgcc-elf-ver 2004-11-16 16:04:40.961445223 -0800 -@@ -17,7 +17,7 @@ SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2 - -o $(SHLIB_NAME).tmp @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) && \ - rm -f $(SHLIB_SOLINK) && \ - if [ -f $(SHLIB_NAME) ]; then \ -- mv -f $(SHLIB_NAME) $(SHLIB_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ - else true; fi && \ - mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ - $(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK) ---- gcc-3.4.3/gcc/config/t-slibgcc-sld.old 2004-10-18 09:00:47.000000000 -0700 -+++ gcc-3.4.3/gcc/config/t-slibgcc-sld 2005-05-14 13:44:48.000000000 -0700 -@@ -14,7 +14,7 @@ - @multilib_flags@ $(SHLIB_OBJS) -lc && \ - rm -f $(SHLIB_SOLINK) && \ - if [ -f $(SHLIB_NAME) ]; then \ -- mv -f $(SHLIB_NAME) $(SHLIB_NAME).`basename $(STAGE_PREFIX)`; \ -+ mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \ - else true; fi && \ - mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \ - $(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK) diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/100-uclibc-conf.patch --- a/patches/gcc/3.4.4/100-uclibc-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,470 +0,0 @@ ---- gcc-3.4.1/gcc/config/t-linux-uclibc -+++ gcc-3.4.1/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-3.4.1/gcc/config.gcc -+++ gcc-3.4.1/gcc/config.gcc -@@ -2310,10 +2310,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 - - # Support for --with-cpu and related options (and a few unrelated options, - # too). - case ${with_cpu} in - yes | no) ---- gcc-3.4.4/gcc/config/alpha/linux-elf.h -+++ gcc-3.4.4/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-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 -@@ -80,14 +80,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-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 */ - ---- 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 -@@ -110,22 +110,21 @@ - - #undef LINK_SPEC - #ifdef USE_GNULIBC_1 --#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ -- %{!shared: \ -- %{!ibcs: \ -- %{!static: \ -- %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ -- %{static:-static}}}" -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.1" -+#else -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" - #else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif -+#endif - #define LINK_SPEC "-m elf_i386 %{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}}}" --#endif - - /* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named ---- gcc-3.4.4/gcc/config/i386/linux64.h -+++ gcc-3.4.4/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-3.4.4/gcc/config/ia64/linux.h -+++ gcc-3.4.4/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-3.4.4/gcc/config/m68k/linux.h -+++ gcc-3.4.4/gcc/config/m68k/linux.h -@@ -131,12 +131,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-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,14 +109,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-3.4.4/gcc/config/pa/pa-linux.h -+++ gcc-3.4.4/gcc/config/pa/pa-linux.h -@@ -77,13 +77,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-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 -@@ -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-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) }" - -@@ -1125,6 +1126,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 -@@ -1291,6 +1296,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-3.4.4/gcc/config/s390/linux.h -+++ gcc-3.4.4/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-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,11 +73,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-3.4.4/gcc/config/sparc/linux.h -+++ gcc-3.4.4/gcc/config/sparc/linux.h -@@ -162,13 +162,18 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ - %{static:-static}}}" - #else -+#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 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}}}" - #endif - ---- gcc-3.4.4/gcc/config/sparc/linux64.h -+++ gcc-3.4.4/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-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]+$'] ---- 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 ---- 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]+$' ---- 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/200-uclibc-locale.patch --- a/patches/gcc/3.4.4/200-uclibc-locale.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3255 +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]+$' -@@ -5479,7 +5479,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; }; } ;; -@@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/300-libstdc++-pic.patch --- a/patches/gcc/3.4.4/300-libstdc++-pic.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -diff -dur gcc-3.4.4.orig/libstdc++-v3/src/Makefile.am gcc-3.4.4/libstdc++-v3/src/Makefile.am ---- gcc-3.4.4.orig/libstdc++-v3/src/Makefile.am 2004-04-16 21:08:35.000000000 +0200 -+++ gcc-3.4.4/libstdc++-v3/src/Makefile.am 2007-02-14 17:24:53.000000000 +0100 -@@ -209,6 +209,9 @@ - CXXLINK = $(LIBTOOL) --tag CXX --mode=link $(CXX) \ - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ - -+install-exec-local: -+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) - - # Added bits to build debug library. - if GLIBCXX_BUILD_DEBUG -diff -dur gcc-3.4.4.orig/libstdc++-v3/src/Makefile.in gcc-3.4.4/libstdc++-v3/src/Makefile.in ---- gcc-3.4.4.orig/libstdc++-v3/src/Makefile.in 2004-04-16 21:08:35.000000000 +0200 -+++ gcc-3.4.4/libstdc++-v3/src/Makefile.in 2007-02-14 17:25:18.000000000 +0100 -@@ -592,7 +592,7 @@ - - install-data-am: install-data-local - --install-exec-am: install-toolexeclibLTLIBRARIES -+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local - - install-info: install-info-am - -@@ -625,6 +625,7 @@ - distclean-tags distdir dvi dvi-am info info-am install \ - install-am install-data install-data-am install-data-local \ - install-exec install-exec-am install-info install-info-am \ -+ install-exec-local \ - install-man install-strip install-toolexeclibLTLIBRARIES \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ -@@ -709,6 +710,11 @@ - install_debug: - (cd ${debugdir} && $(MAKE) \ - toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) -+ -+install-exec-local: -+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+ - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: -Only in gcc-3.4.4/libstdc++-v3/src: Makefile.in.orig diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/600-gcc34-arm-ldm-peephole.patch --- a/patches/gcc/3.4.4/600-gcc34-arm-ldm-peephole.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +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 -@@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/601-gcc34-arm-ldm-peephole2.patch --- a/patches/gcc/3.4.4/601-gcc34-arm-ldm-peephole2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -The 30_all_gcc34-arm-ldm-peephole.patch from Debian was conflicting -with the newer 36_all_pr16201-fix.patch, so i cut out the hunk from -it that was causing problems and grabbed an updated version from -upstream cvs. - -Index: gcc/config/arm/arm.c -=================================================================== -RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm.c,v -retrieving revision 1.432 -retrieving revision 1.433 -diff -u -r1.432 -r1.433 ---- gcc-3.4.4/gcc/config/arm/arm.c 29 Mar 2005 03:00:23 -0000 1.432 -+++ gcc-3.4.4/gcc/config/arm/arm.c 1 Apr 2005 11:02:22 -0000 1.433 -@@ -5139,6 +5139,10 @@ - int - adjacent_mem_locations (rtx a, rtx b) - { -+ /* We don't guarantee to preserve the order of these memory refs. */ -+ if (volatile_refs_p (a) || volatile_refs_p (b)) -+ return 0; -+ - if ((GET_CODE (XEXP (a, 0)) == REG - || (GET_CODE (XEXP (a, 0)) == PLUS - && GET_CODE (XEXP (XEXP (a, 0), 1)) == CONST_INT)) -@@ -5178,6 +5182,17 @@ - return 0; - - val_diff = val1 - val0; -+ -+ if (arm_ld_sched) -+ { -+ /* If the target has load delay slots, then there's no benefit -+ to using an ldm instruction unless the offset is zero and -+ we are optimizing for size. */ -+ return (optimize_size && (REGNO (reg0) == REGNO (reg1)) -+ && (val0 == 0 || val1 == 0 || val0 == 4 || val1 == 4) -+ && (val_diff == 4 || val_diff == -4)); -+ } -+ - return ((REGNO (reg0) == REGNO (reg1)) - && (val_diff == 4 || val_diff == -4)); - } diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/601-gcc34-arm-ldm.patch --- a/patches/gcc/3.4.4/601-gcc34-arm-ldm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/602-sdk-libstdc++-includes.patch --- a/patches/gcc/3.4.4/602-sdk-libstdc++-includes.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/700-pr15068-fix.patch --- a/patches/gcc/3.4.4/700-pr15068-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -See http://gcc.gnu.org/PR15068 - -Fixes error - -../sysdeps/generic/s_fmax.c: In function `__fmax': -../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257 -Please submit a full bug report, -with preprocessed source if appropriate. -See for instructions. -make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math' -make[1]: *** [math/others] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822' -make: *** [all] Error 2 - -[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ] - ---- gcc-3.4.1/gcc/flow.c.old 2004-02-27 19:39:19.000000000 -0800 -+++ gcc-3.4.1/gcc/flow.c 2004-08-26 07:29:46.000000000 -0700 -@@ -1878,6 +1878,7 @@ - rtx set_src = SET_SRC (pc_set (BB_END (bb))); - rtx cond_true = XEXP (set_src, 0); - rtx reg = XEXP (cond_true, 0); -+ enum rtx_code inv_cond; - - if (GET_CODE (reg) == SUBREG) - reg = SUBREG_REG (reg); -@@ -1886,11 +1887,13 @@ - in the form of a comparison of a register against zero. - If the condition is more complex than that, then it is safe - not to record any information. */ -- if (GET_CODE (reg) == REG -+ inv_cond = reversed_comparison_code (cond_true, BB_END (bb)); -+ if (inv_cond != UNKNOWN -+ && GET_CODE (reg) == REG - && XEXP (cond_true, 1) == const0_rtx) - { - rtx cond_false -- = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+ = gen_rtx_fmt_ee (inv_cond, - GET_MODE (cond_true), XEXP (cond_true, 0), - XEXP (cond_true, 1)); - if (GET_CODE (XEXP (set_src, 1)) == PC) diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/71_all_sh-pr16665-fix.patch --- a/patches/gcc/3.4.4/71_all_sh-pr16665-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ ---- gcc/gcc/config/sh/sh.c -+++ gcc/gcc/config/sh/sh.c -@@ -9106,6 +9106,15 @@ sh_output_mi_thunk (FILE *file, tree thu - } - this = FUNCTION_ARG (cum, Pmode, ptr_type_node, 1); - -+ /* In PIC case, we set PIC register to compute the target address. We -+ can use a scratch register to save and restore the original value -+ except for SHcompact. For SHcompact, use stack. */ -+ if (flag_pic && TARGET_SHCOMPACT) -+ { -+ push (PIC_OFFSET_TABLE_REGNUM); -+ emit_insn (gen_GOTaddr2picreg ()); -+ } -+ - /* For SHcompact, we only have r0 for a scratch register: r1 is the - static chain pointer (even if you can't have nested virtual functions - right now, someone might implement them sometime), and the rest of the -@@ -9188,8 +9197,24 @@ sh_output_mi_thunk (FILE *file, tree thu - assemble_external (function); - TREE_USED (function) = 1; - } -+ /* We can use scratch1 to save and restore the original value of -+ PIC register except for SHcompact. */ -+ if (flag_pic && ! TARGET_SHCOMPACT) -+ { -+ emit_move_insn (scratch1, -+ gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM)); -+ emit_insn (gen_GOTaddr2picreg ()); -+ } - funexp = XEXP (DECL_RTL (function), 0); - emit_move_insn (scratch2, funexp); -+ if (flag_pic) -+ { -+ if (! TARGET_SHCOMPACT) -+ emit_move_insn (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM), -+ scratch1); -+ else -+ pop (PIC_OFFSET_TABLE_REGNUM); -+ } - funexp = gen_rtx_MEM (FUNCTION_MODE, scratch2); - sibcall = emit_call_insn (gen_sibcall (funexp, const0_rtx, NULL_RTX)); - SIBLING_CALL_P (sibcall) = 1; diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/72_all_sh-no-reorder-blocks.patch --- a/patches/gcc/3.4.4/72_all_sh-no-reorder-blocks.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ ---- g/gcc/config/sh/sh.h -+++ g/gcc/config/sh/sh.h -@@ -422,6 +422,10 @@ - do { \ - if (LEVEL) \ - flag_omit_frame_pointer = -1; \ -+ if (LEVEL <= 2) \ -+ { \ -+ flag_reorder_blocks = 0; \ -+ } \ - if (SIZE) \ - target_flags |= SPACE_BIT; \ - if (TARGET_SHMEDIA && LEVEL > 1) \ diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/73_all_sh-pr20617.patch --- a/patches/gcc/3.4.4/73_all_sh-pr20617.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -2005-03-24 J"orn Rennecke - - Band aid for PR target/20617: - * config/sh/lib1funcs.asm (FUNC, ALIAS): Add .hidden directive. - ---- g/gcc/config/sh/lib1funcs.asm -+++ g/gcc/config/sh/lib1funcs.asm -@@ -37,9 +37,19 @@ Boston, MA 02111-1307, USA. */ - ELF local label prefixes by J"orn Rennecke - amylaar@cygnus.com */ - -+#define ALIAS(X,Y) .global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y) -+ - #ifdef __ELF__ - #define LOCAL(X) .L_##X --#define FUNC(X) .type X,@function -+ -+#if 1 /* ??? The export list mechanism is broken, everything that is not -+ hidden is exported. */ -+#undef FUNC -+#define FUNC(X) .type X,@function; .hidden X -+#undef ALIAS -+#define ALIAS(X,Y) .global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y); .hidden GLOBAL(X) -+#endif -+ - #define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X - #define ENDFUNC(X) ENDFUNC0(X) - #else diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/800-arm-bigendian.patch --- a/patches/gcc/3.4.4/800-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -diff -dur gcc-3.4.4.orig/gcc/config/arm/linux-elf.h gcc-3.4.4/gcc/config/arm/linux-elf.h ---- gcc-3.4.4.orig/gcc/config/arm/linux-elf.h 2007-02-14 17:44:27.000000000 +0100 -+++ gcc-3.4.4/gcc/config/arm/linux-elf.h 2007-02-14 17:47:32.000000000 +0100 -@@ -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__" - -@@ -94,7 +111,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() -Only in gcc-3.4.4/gcc/config/arm: linux-elf.h.orig -diff -dur gcc-3.4.4.orig/gcc/config.gcc gcc-3.4.4/gcc/config.gcc ---- gcc-3.4.4.orig/gcc/config.gcc 2007-02-14 17:44:27.000000000 +0100 -+++ gcc-3.4.4/gcc/config.gcc 2007-02-14 17:47:32.000000000 +0100 -@@ -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="t-slibgcc-elf-ver t-linux arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/800-powerpc-libc_stack_end-uclibc.patch --- a/patches/gcc/3.4.4/800-powerpc-libc_stack_end-uclibc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ---- gcc-3.4.4/gcc/config/rs6000/linux-unwind.h.org 2005-06-23 17:50:34.000000000 -0600 -+++ gcc-3.4.4/gcc/config/rs6000/linux-unwind.h 2005-06-23 17:52:02.000000000 -0600 -@@ -32,6 +32,7 @@ - these structs elsewhere; Many fields are missing, particularly - from the end of the structures. */ - -+#ifndef inhibit_libc - struct gcc_vregs - { - __attribute__ ((vector_size (16))) int vr[32]; -@@ -320,3 +321,4 @@ - \ - goto SUCCESS; \ - } while (0) -+#endif diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/830-gcc-bug-num-22167.patch --- a/patches/gcc/3.4.4/830-gcc-bug-num-22167.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -Index: gcc/gcse.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/gcse.c,v -retrieving revision 1.288.2.9 -diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c ---- gcc/gcc/gcse.c 30 Oct 2004 18:02:53 -0000 1.288.2.9 -+++ gcc/gcc/gcse.c 14 Jul 2005 13:19:57 -0000 -@@ -6445,7 +6445,7 @@ hoist_code (void) - insn_inserted_p = 0; - - /* These tests should be the same as the tests above. */ -- if (TEST_BIT (hoist_vbeout[bb->index], i)) -+ if (TEST_BIT (hoist_exprs[bb->index], i)) - { - /* We've found a potentially hoistable expression, now - we look at every block BB dominates to see if it diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/900-nios2.patch --- a/patches/gcc/3.4.4/900-nios2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10211 +0,0 @@ ---- gcc-3.4.3/gcc/Makefile.in -+++ gcc-3.4.3-nios2/gcc/Makefile.in -@@ -3085,7 +3085,7 @@ install-mkheaders: stmp-int-hdrs $(STMP_ - $(INSTALL_DATA) $(srcdir)/README-fixinc \ - $(DESTDIR)$(itoolsdatadir)/include/README ; \ - $(INSTALL_SCRIPT) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \ -- $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \ -+ $(INSTALL_PROGRAM) fixinc/fixincl$(build_exeext) $(DESTDIR)$(itoolsdir)/fixincl$(build_exeext) ; \ - $(INSTALL_DATA) $(srcdir)/gsyslimits.h \ - $(DESTDIR)$(itoolsdatadir)/gsyslimits.h ; \ - else :; fi ---- gcc-3.4.3/gcc/combine.c -+++ gcc-3.4.3-nios2/gcc/combine.c -@@ -4380,6 +4380,14 @@ combine_simplify_rtx (rtx x, enum machin - mode); - } - -+#ifndef __nios2__ -+/* This screws up Nios II in this test case: -+ -+if (x & 1) -+ return 2; -+else -+ return 3; -+*/ - else if (STORE_FLAG_VALUE == 1 - && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT - && op1 == const0_rtx -@@ -4391,6 +4399,7 @@ combine_simplify_rtx (rtx x, enum machin - gen_lowpart_for_combine (mode, op0), - const1_rtx); - } -+#endif - - else if (STORE_FLAG_VALUE == 1 - && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT ---- gcc-3.4.3/gcc/config/nios2/crti.asm -+++ gcc-3.4.3-nios2/gcc/config/nios2/crti.asm -@@ -0,0 +1,88 @@ -+/* -+ Copyright (C) 2003 -+ by Jonah Graham (jgraham@altera.com) -+ -+This file 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. -+ -+In addition to the permissions in the GNU General Public License, the -+Free Software Foundation gives you unlimited permission to link the -+compiled version of this file with other programs, and to distribute -+those programs without any restriction coming from the use of this -+file. (The General Public License restrictions do apply in other -+respects; for example, they cover modification of the file, and -+distribution when not linked into another program.) -+ -+This file 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 program; 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, if you link this library with files -+ compiled with GCC to produce an executable, this does not 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. -+ -+ -+This file just make a stack frame for the contents of the .fini and -+.init sections. Users may put any desired instructions in those -+sections. -+ -+ -+While technically any code can be put in the init and fini sections -+most stuff will not work other than stuff which obeys the call frame -+and ABI. All the call-preserved registers are saved, the call clobbered -+registers should have been saved by the code calling init and fini. -+ -+See crtstuff.c for an example of code that inserts itself in the -+init and fini sections. -+ -+See crt0.s for the code that calls init and fini. -+*/ -+ -+ .file "crti.asm" -+ -+ .section ".init" -+ .align 2 -+ .global _init -+_init: -+ addi sp, sp, -48 -+ stw ra, 44(sp) -+ stw r23, 40(sp) -+ stw r22, 36(sp) -+ stw r21, 32(sp) -+ stw r20, 28(sp) -+ stw r19, 24(sp) -+ stw r18, 20(sp) -+ stw r17, 16(sp) -+ stw r16, 12(sp) -+ stw fp, 8(sp) -+ mov fp, sp -+ -+ -+ .section ".fini" -+ .align 2 -+ .global _fini -+_fini: -+ addi sp, sp, -48 -+ stw ra, 44(sp) -+ stw r23, 40(sp) -+ stw r22, 36(sp) -+ stw r21, 32(sp) -+ stw r20, 28(sp) -+ stw r19, 24(sp) -+ stw r18, 20(sp) -+ stw r17, 16(sp) -+ stw r16, 12(sp) -+ stw fp, 8(sp) -+ mov fp, sp -+ -+ ---- gcc-3.4.3/gcc/config/nios2/crtn.asm -+++ gcc-3.4.3-nios2/gcc/config/nios2/crtn.asm -@@ -0,0 +1,70 @@ -+/* -+ Copyright (C) 2003 -+ by Jonah Graham (jgraham@altera.com) -+ -+This file 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. -+ -+In addition to the permissions in the GNU General Public License, the -+Free Software Foundation gives you unlimited permission to link the -+compiled version of this file with other programs, and to distribute -+those programs without any restriction coming from the use of this -+file. (The General Public License restrictions do apply in other -+respects; for example, they cover modification of the file, and -+distribution when not linked into another program.) -+ -+This file 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 program; 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, if you link this library with files -+ compiled with GCC to produce an executable, this does not 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. -+ -+ -+This file just makes sure that the .fini and .init sections do in -+fact return. Users may put any desired instructions in those sections. -+This file is the last thing linked into any executable. -+*/ -+ .file "crtn.asm" -+ -+ -+ -+ .section ".init" -+ ldw ra, 44(sp) -+ ldw r23, 40(sp) -+ ldw r22, 36(sp) -+ ldw r21, 32(sp) -+ ldw r20, 28(sp) -+ ldw r19, 24(sp) -+ ldw r18, 20(sp) -+ ldw r17, 16(sp) -+ ldw r16, 12(sp) -+ ldw fp, 8(sp) -+ addi sp, sp, -48 -+ ret -+ -+ .section ".fini" -+ ldw ra, 44(sp) -+ ldw r23, 40(sp) -+ ldw r22, 36(sp) -+ ldw r21, 32(sp) -+ ldw r20, 28(sp) -+ ldw r19, 24(sp) -+ ldw r18, 20(sp) -+ ldw r17, 16(sp) -+ ldw r16, 12(sp) -+ ldw fp, 8(sp) -+ addi sp, sp, -48 -+ ret -+ ---- gcc-3.4.3/gcc/config/nios2/lib2-divmod-hi.c -+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod-hi.c -@@ -0,0 +1,123 @@ -+ -+/* We include auto-host.h here to get HAVE_GAS_HIDDEN. This is -+ supposedly valid even though this is a "target" file. */ -+#include "auto-host.h" -+ -+ -+#include "tconfig.h" -+#include "tsystem.h" -+#include "coretypes.h" -+#include "tm.h" -+ -+ -+/* Don't use `fancy_abort' here even if config.h says to use it. */ -+#ifdef abort -+#undef abort -+#endif -+ -+ -+#ifdef HAVE_GAS_HIDDEN -+#define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden"))) -+#else -+#define ATTRIBUTE_HIDDEN -+#endif -+ -+#include "libgcc2.h" -+ -+extern HItype __modhi3 (HItype, HItype); -+extern HItype __divhi3 (HItype, HItype); -+extern HItype __umodhi3 (HItype, HItype); -+extern HItype __udivhi3 (HItype, HItype); -+ -+static UHItype udivmodhi4(UHItype, UHItype, word_type); -+ -+static UHItype -+udivmodhi4(UHItype num, UHItype den, word_type modwanted) -+{ -+ UHItype bit = 1; -+ UHItype res = 0; -+ -+ while (den < num && bit && !(den & (1L<<15))) -+ { -+ den <<=1; -+ bit <<=1; -+ } -+ while (bit) -+ { -+ if (num >= den) -+ { -+ num -= den; -+ res |= bit; -+ } -+ bit >>=1; -+ den >>=1; -+ } -+ if (modwanted) return num; -+ return res; -+} -+ -+ -+HItype -+__divhi3 (HItype a, HItype b) -+{ -+ word_type neg = 0; -+ HItype res; -+ -+ if (a < 0) -+ { -+ a = -a; -+ neg = !neg; -+ } -+ -+ if (b < 0) -+ { -+ b = -b; -+ neg = !neg; -+ } -+ -+ res = udivmodhi4 (a, b, 0); -+ -+ if (neg) -+ res = -res; -+ -+ return res; -+} -+ -+ -+HItype -+__modhi3 (HItype a, HItype b) -+{ -+ word_type neg = 0; -+ HItype res; -+ -+ if (a < 0) -+ { -+ a = -a; -+ neg = 1; -+ } -+ -+ if (b < 0) -+ b = -b; -+ -+ res = udivmodhi4 (a, b, 1); -+ -+ if (neg) -+ res = -res; -+ -+ return res; -+} -+ -+ -+HItype -+__udivhi3 (HItype a, HItype b) -+{ -+ return udivmodhi4 (a, b, 0); -+} -+ -+ -+HItype -+__umodhi3 (HItype a, HItype b) -+{ -+ return udivmodhi4 (a, b, 1); -+} -+ ---- gcc-3.4.3/gcc/config/nios2/lib2-divmod.c -+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod.c -@@ -0,0 +1,126 @@ -+ -+/* We include auto-host.h here to get HAVE_GAS_HIDDEN. This is -+ supposedly valid even though this is a "target" file. */ -+#include "auto-host.h" -+ -+ -+#include "tconfig.h" -+#include "tsystem.h" -+#include "coretypes.h" -+#include "tm.h" -+ -+ -+/* Don't use `fancy_abort' here even if config.h says to use it. */ -+#ifdef abort -+#undef abort -+#endif -+ -+ -+#ifdef HAVE_GAS_HIDDEN -+#define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden"))) -+#else -+#define ATTRIBUTE_HIDDEN -+#endif -+ -+#include "libgcc2.h" -+ -+extern SItype __modsi3 (SItype, SItype); -+extern SItype __divsi3 (SItype, SItype); -+extern SItype __umodsi3 (SItype, SItype); -+extern SItype __udivsi3 (SItype, SItype); -+ -+static USItype udivmodsi4(USItype, USItype, word_type); -+ -+/* 16-bit SI divide and modulo as used in NIOS */ -+ -+ -+static USItype -+udivmodsi4(USItype num, USItype den, word_type modwanted) -+{ -+ USItype bit = 1; -+ USItype res = 0; -+ -+ while (den < num && bit && !(den & (1L<<31))) -+ { -+ den <<=1; -+ bit <<=1; -+ } -+ while (bit) -+ { -+ if (num >= den) -+ { -+ num -= den; -+ res |= bit; -+ } -+ bit >>=1; -+ den >>=1; -+ } -+ if (modwanted) return num; -+ return res; -+} -+ -+ -+SItype -+__divsi3 (SItype a, SItype b) -+{ -+ word_type neg = 0; -+ SItype res; -+ -+ if (a < 0) -+ { -+ a = -a; -+ neg = !neg; -+ } -+ -+ if (b < 0) -+ { -+ b = -b; -+ neg = !neg; -+ } -+ -+ res = udivmodsi4 (a, b, 0); -+ -+ if (neg) -+ res = -res; -+ -+ return res; -+} -+ -+ -+SItype -+__modsi3 (SItype a, SItype b) -+{ -+ word_type neg = 0; -+ SItype res; -+ -+ if (a < 0) -+ { -+ a = -a; -+ neg = 1; -+ } -+ -+ if (b < 0) -+ b = -b; -+ -+ res = udivmodsi4 (a, b, 1); -+ -+ if (neg) -+ res = -res; -+ -+ return res; -+} -+ -+ -+SItype -+__udivsi3 (SItype a, SItype b) -+{ -+ return udivmodsi4 (a, b, 0); -+} -+ -+ -+SItype -+__umodsi3 (SItype a, SItype b) -+{ -+ return udivmodsi4 (a, b, 1); -+} -+ ---- gcc-3.4.3/gcc/config/nios2/lib2-divtable.c -+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divtable.c -@@ -0,0 +1,46 @@ -+ -+/* We include auto-host.h here to get HAVE_GAS_HIDDEN. This is -+ supposedly valid even though this is a "target" file. */ -+#include "auto-host.h" -+ -+ -+#include "tconfig.h" -+#include "tsystem.h" -+#include "coretypes.h" -+#include "tm.h" -+ -+ -+/* Don't use `fancy_abort' here even if config.h says to use it. */ -+#ifdef abort -+#undef abort -+#endif -+ -+ -+#ifdef HAVE_GAS_HIDDEN -+#define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden"))) -+#else -+#define ATTRIBUTE_HIDDEN -+#endif -+ -+#include "libgcc2.h" -+ -+UQItype __divsi3_table[] = -+{ -+ 0, 0/1, 0/2, 0/3, 0/4, 0/5, 0/6, 0/7, 0/8, 0/9, 0/10, 0/11, 0/12, 0/13, 0/14, 0/15, -+ 0, 1/1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, -+ 0, 2/1, 2/2, 2/3, 2/4, 2/5, 2/6, 2/7, 2/8, 2/9, 2/10, 2/11, 2/12, 2/13, 2/14, 2/15, -+ 0, 3/1, 3/2, 3/3, 3/4, 3/5, 3/6, 3/7, 3/8, 3/9, 3/10, 3/11, 3/12, 3/13, 3/14, 3/15, -+ 0, 4/1, 4/2, 4/3, 4/4, 4/5, 4/6, 4/7, 4/8, 4/9, 4/10, 4/11, 4/12, 4/13, 4/14, 4/15, -+ 0, 5/1, 5/2, 5/3, 5/4, 5/5, 5/6, 5/7, 5/8, 5/9, 5/10, 5/11, 5/12, 5/13, 5/14, 5/15, -+ 0, 6/1, 6/2, 6/3, 6/4, 6/5, 6/6, 6/7, 6/8, 6/9, 6/10, 6/11, 6/12, 6/13, 6/14, 6/15, -+ 0, 7/1, 7/2, 7/3, 7/4, 7/5, 7/6, 7/7, 7/8, 7/9, 7/10, 7/11, 7/12, 7/13, 7/14, 7/15, -+ 0, 8/1, 8/2, 8/3, 8/4, 8/5, 8/6, 8/7, 8/8, 8/9, 8/10, 8/11, 8/12, 8/13, 8/14, 8/15, -+ 0, 9/1, 9/2, 9/3, 9/4, 9/5, 9/6, 9/7, 9/8, 9/9, 9/10, 9/11, 9/12, 9/13, 9/14, 9/15, -+ 0, 10/1, 10/2, 10/3, 10/4, 10/5, 10/6, 10/7, 10/8, 10/9, 10/10, 10/11, 10/12, 10/13, 10/14, 10/15, -+ 0, 11/1, 11/2, 11/3, 11/4, 11/5, 11/6, 11/7, 11/8, 11/9, 11/10, 11/11, 11/12, 11/13, 11/14, 11/15, -+ 0, 12/1, 12/2, 12/3, 12/4, 12/5, 12/6, 12/7, 12/8, 12/9, 12/10, 12/11, 12/12, 12/13, 12/14, 12/15, -+ 0, 13/1, 13/2, 13/3, 13/4, 13/5, 13/6, 13/7, 13/8, 13/9, 13/10, 13/11, 13/12, 13/13, 13/14, 13/15, -+ 0, 14/1, 14/2, 14/3, 14/4, 14/5, 14/6, 14/7, 14/8, 14/9, 14/10, 14/11, 14/12, 14/13, 14/14, 14/15, -+ 0, 15/1, 15/2, 15/3, 15/4, 15/5, 15/6, 15/7, 15/8, 15/9, 15/10, 15/11, 15/12, 15/13, 15/14, 15/15, -+}; -+ ---- gcc-3.4.3/gcc/config/nios2/lib2-mul.c -+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-mul.c -@@ -0,0 +1,103 @@ -+/* while we are debugging (ie compile outside of gcc build) -+ disable gcc specific headers */ -+#ifndef DEBUG_MULSI3 -+ -+ -+/* We include auto-host.h here to get HAVE_GAS_HIDDEN. This is -+ supposedly valid even though this is a "target" file. */ -+#include "auto-host.h" -+ -+ -+#include "tconfig.h" -+#include "tsystem.h" -+#include "coretypes.h" -+#include "tm.h" -+ -+ -+/* Don't use `fancy_abort' here even if config.h says to use it. */ -+#ifdef abort -+#undef abort -+#endif -+ -+ -+#ifdef HAVE_GAS_HIDDEN -+#define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden"))) -+#else -+#define ATTRIBUTE_HIDDEN -+#endif -+ -+#include "libgcc2.h" -+ -+#else -+#define SItype int -+#define USItype unsigned int -+#endif -+ -+ -+extern SItype __mulsi3 (SItype, SItype); -+ -+SItype -+__mulsi3 (SItype a, SItype b) -+{ -+ SItype res = 0; -+ USItype cnt = a; -+ -+ while (cnt) -+ { -+ if (cnt & 1) -+ { -+ res += b; -+ } -+ b <<= 1; -+ cnt >>= 1; -+ } -+ -+ return res; -+} -+/* -+TODO: Choose best alternative implementation. -+ -+SItype -+__divsi3 (SItype a, SItype b) -+{ -+ SItype res = 0; -+ USItype cnt = 0; -+ -+ while (cnt < 32) -+ { -+ if (a & (1L << cnt)) -+ { -+ res += b; -+ } -+ b <<= 1; -+ cnt++; -+ } -+ -+ return res; -+} -+*/ -+ -+ -+#ifdef DEBUG_MULSI3 -+ -+int -+main () -+{ -+ int i, j; -+ int error = 0; -+ -+ for (i = -1000; i < 1000; i++) -+ for (j = -1000; j < 1000; j++) -+ { -+ int expect = i * j; -+ int actual = A__divsi3 (i, j); -+ if (expect != actual) -+ { -+ printf ("error: %d * %d = %d not %d\n", i, j, expect, actual); -+ error = 1; -+ } -+ } -+ -+ return error; -+} -+#endif ---- gcc-3.4.3/gcc/config/nios2/nios2-dp-bit.c -+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-dp-bit.c -@@ -0,0 +1,1652 @@ -+ -+/* This is a software floating point library which can be used -+ for targets without hardware floating point. -+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004 -+ Free Software Foundation, Inc. -+ -+This file 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. -+ -+In addition to the permissions in the GNU General Public License, the -+Free Software Foundation gives you unlimited permission to link the -+compiled version of this file with other programs, and to distribute -+those programs without any restriction coming from the use of this -+file. (The General Public License restrictions do apply in other -+respects; for example, they cover modification of the file, and -+distribution when not linked into another program.) -+ -+This file 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 program; 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, if you link this library with other files, -+ some of which are compiled with GCC, to produce an executable, -+ this library 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. */ -+ -+/* This implements IEEE 754 format arithmetic, but does not provide a -+ mechanism for setting the rounding mode, or for generating or handling -+ exceptions. -+ -+ The original code by Steve Chamberlain, hacked by Mark Eichin and Jim -+ Wilson, all of Cygnus Support. */ -+ -+/* The intended way to use this file is to make two copies, add `#define FLOAT' -+ to one copy, then compile both copies and add them to libgcc.a. */ -+ -+#include "tconfig.h" -+#include "coretypes.h" -+#include "tm.h" -+#include "config/fp-bit.h" -+ -+/* The following macros can be defined to change the behavior of this file: -+ FLOAT: Implement a `float', aka SFmode, fp library. If this is not -+ defined, then this file implements a `double', aka DFmode, fp library. -+ FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e. -+ don't include float->double conversion which requires the double library. -+ This is useful only for machines which can't support doubles, e.g. some -+ 8-bit processors. -+ CMPtype: Specify the type that floating point compares should return. -+ This defaults to SItype, aka int. -+ US_SOFTWARE_GOFAST: This makes all entry points use the same names as the -+ US Software goFast library. -+ _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding -+ two integers to the FLO_union_type. -+ NO_DENORMALS: Disable handling of denormals. -+ NO_NANS: Disable nan and infinity handling -+ SMALL_MACHINE: Useful when operations on QIs and HIs are faster -+ than on an SI */ -+ -+/* We don't currently support extended floats (long doubles) on machines -+ without hardware to deal with them. -+ -+ These stubs are just to keep the linker from complaining about unresolved -+ references which can be pulled in from libio & libstdc++, even if the -+ user isn't using long doubles. However, they may generate an unresolved -+ external to abort if abort is not used by the function, and the stubs -+ are referenced from within libc, since libgcc goes before and after the -+ system library. */ -+ -+#ifdef DECLARE_LIBRARY_RENAMES -+ DECLARE_LIBRARY_RENAMES -+#endif -+ -+#ifdef EXTENDED_FLOAT_STUBS -+extern void abort (void); -+void __extendsfxf2 (void) { abort(); } -+void __extenddfxf2 (void) { abort(); } -+void __truncxfdf2 (void) { abort(); } -+void __truncxfsf2 (void) { abort(); } -+void __fixxfsi (void) { abort(); } -+void __floatsixf (void) { abort(); } -+void __addxf3 (void) { abort(); } -+void __subxf3 (void) { abort(); } -+void __mulxf3 (void) { abort(); } -+void __divxf3 (void) { abort(); } -+void __negxf2 (void) { abort(); } -+void __eqxf2 (void) { abort(); } -+void __nexf2 (void) { abort(); } -+void __gtxf2 (void) { abort(); } -+void __gexf2 (void) { abort(); } -+void __lexf2 (void) { abort(); } -+void __ltxf2 (void) { abort(); } -+ -+void __extendsftf2 (void) { abort(); } -+void __extenddftf2 (void) { abort(); } -+void __trunctfdf2 (void) { abort(); } -+void __trunctfsf2 (void) { abort(); } -+void __fixtfsi (void) { abort(); } -+void __floatsitf (void) { abort(); } -+void __addtf3 (void) { abort(); } -+void __subtf3 (void) { abort(); } -+void __multf3 (void) { abort(); } -+void __divtf3 (void) { abort(); } -+void __negtf2 (void) { abort(); } -+void __eqtf2 (void) { abort(); } -+void __netf2 (void) { abort(); } -+void __gttf2 (void) { abort(); } -+void __getf2 (void) { abort(); } -+void __letf2 (void) { abort(); } -+void __lttf2 (void) { abort(); } -+#else /* !EXTENDED_FLOAT_STUBS, rest of file */ -+ -+/* IEEE "special" number predicates */ -+ -+#ifdef NO_NANS -+ -+#define nan() 0 -+#define isnan(x) 0 -+#define isinf(x) 0 -+#else -+ -+#if defined L_thenan_sf -+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} }; -+#elif defined L_thenan_df -+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} }; -+#elif defined L_thenan_tf -+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} }; -+#elif defined TFLOAT -+extern const fp_number_type __thenan_tf; -+#elif defined FLOAT -+extern const fp_number_type __thenan_sf; -+#else -+extern const fp_number_type __thenan_df; -+#endif -+ -+INLINE -+static fp_number_type * -+nan (void) -+{ -+ /* Discard the const qualifier... */ -+#ifdef TFLOAT -+ return (fp_number_type *) (& __thenan_tf); -+#elif defined FLOAT -+ return (fp_number_type *) (& __thenan_sf); -+#else -+ return (fp_number_type *) (& __thenan_df); -+#endif -+} -+ -+INLINE -+static int -+isnan ( fp_number_type * x) -+{ -+ return x->class == CLASS_SNAN || x->class == CLASS_QNAN; -+} -+ -+INLINE -+static int -+isinf ( fp_number_type * x) -+{ -+ return x->class == CLASS_INFINITY; -+} -+ -+#endif /* NO_NANS */ -+ -+INLINE -+static int -+iszero ( fp_number_type * x) -+{ -+ return x->class == CLASS_ZERO; -+} -+ -+INLINE -+static void -+flip_sign ( fp_number_type * x) -+{ -+ x->sign = !x->sign; -+} -+ -+extern FLO_type pack_d ( fp_number_type * ); -+ -+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf) -+FLO_type -+pack_d ( fp_number_type * src) -+{ -+ FLO_union_type dst; -+ fractype fraction = src->fraction.ll; /* wasn't unsigned before? */ -+ int sign = src->sign; -+ int exp = 0; -+ -+ if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src))) -+ { -+ /* We can't represent these values accurately. By using the -+ largest possible magnitude, we guarantee that the conversion -+ of infinity is at least as big as any finite number. */ -+ exp = EXPMAX; -+ fraction = ((fractype) 1 << FRACBITS) - 1; -+ } -+ else if (isnan (src)) -+ { -+ exp = EXPMAX; -+ if (src->class == CLASS_QNAN || 1) -+ { -+#ifdef QUIET_NAN_NEGATED -+ fraction |= QUIET_NAN - 1; -+#else -+ fraction |= QUIET_NAN; -+#endif -+ } -+ } -+ else if (isinf (src)) -+ { -+ exp = EXPMAX; -+ fraction = 0; -+ } -+ else if (iszero (src)) -+ { -+ exp = 0; -+ fraction = 0; -+ } -+ else if (fraction == 0) -+ { -+ exp = 0; -+ } -+ else -+ { -+ if (src->normal_exp < NORMAL_EXPMIN) -+ { -+#ifdef NO_DENORMALS -+ /* Go straight to a zero representation if denormals are not -+ supported. The denormal handling would be harmless but -+ isn't unnecessary. */ -+ exp = 0; -+ fraction = 0; -+#else /* NO_DENORMALS */ -+ /* This number's exponent is too low to fit into the bits -+ available in the number, so we'll store 0 in the exponent and -+ shift the fraction to the right to make up for it. */ -+ -+ int shift = NORMAL_EXPMIN - src->normal_exp; -+ -+ exp = 0; -+ -+ if (shift > FRAC_NBITS - NGARDS) -+ { -+ /* No point shifting, since it's more that 64 out. */ -+ fraction = 0; -+ } -+ else -+ { -+ int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0; -+ fraction = (fraction >> shift) | lowbit; -+ } -+ if ((fraction & GARDMASK) == GARDMSB) -+ { -+ if ((fraction & (1 << NGARDS))) -+ fraction += GARDROUND + 1; -+ } -+ else -+ { -+ /* Add to the guards to round up. */ -+ fraction += GARDROUND; -+ } -+ /* Perhaps the rounding means we now need to change the -+ exponent, because the fraction is no longer denormal. */ -+ if (fraction >= IMPLICIT_1) -+ { -+ exp += 1; -+ } -+ fraction >>= NGARDS; -+#endif /* NO_DENORMALS */ -+ } -+ else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) -+ && src->normal_exp > EXPBIAS) -+ { -+ exp = EXPMAX; -+ fraction = 0; -+ } -+ else -+ { -+ exp = src->normal_exp + EXPBIAS; -+ if (!ROUND_TOWARDS_ZERO) -+ { -+ /* IF the gard bits are the all zero, but the first, then we're -+ half way between two numbers, choose the one which makes the -+ lsb of the answer 0. */ -+ if ((fraction & GARDMASK) == GARDMSB) -+ { -+ if (fraction & (1 << NGARDS)) -+ fraction += GARDROUND + 1; -+ } -+ else -+ { -+ /* Add a one to the guards to round up */ -+ fraction += GARDROUND; -+ } -+ if (fraction >= IMPLICIT_2) -+ { -+ fraction >>= 1; -+ exp += 1; -+ } -+ } -+ fraction >>= NGARDS; -+ -+ if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX) -+ { -+ /* Saturate on overflow. */ -+ exp = EXPMAX; -+ fraction = ((fractype) 1 << FRACBITS) - 1; -+ } -+ } -+ } -+ -+ /* We previously used bitfields to store the number, but this doesn't -+ handle little/big endian systems conveniently, so use shifts and -+ masks */ -+#ifdef FLOAT_BIT_ORDER_MISMATCH -+ dst.bits.fraction = fraction; -+ dst.bits.exp = exp; -+ dst.bits.sign = sign; -+#else -+# if defined TFLOAT && defined HALFFRACBITS -+ { -+ halffractype high, low, unity; -+ int lowsign, lowexp; -+ -+ unity = (halffractype) 1 << HALFFRACBITS; -+ -+ /* Set HIGH to the high double's significand, masking out the implicit 1. -+ Set LOW to the low double's full significand. */ -+ high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1); -+ low = fraction & (unity * 2 - 1); -+ -+ /* Get the initial sign and exponent of the low double. */ -+ lowexp = exp - HALFFRACBITS - 1; -+ lowsign = sign; -+ -+ /* HIGH should be rounded like a normal double, making |LOW| <= -+ 0.5 ULP of HIGH. Assume round-to-nearest. */ -+ if (exp < EXPMAX) -+ if (low > unity || (low == unity && (high & 1) == 1)) -+ { -+ /* Round HIGH up and adjust LOW to match. */ -+ high++; -+ if (high == unity) -+ { -+ /* May make it infinite, but that's OK. */ -+ high = 0; -+ exp++; -+ } -+ low = unity * 2 - low; -+ lowsign ^= 1; -+ } -+ -+ high |= (halffractype) exp << HALFFRACBITS; -+ high |= (halffractype) sign << (HALFFRACBITS + EXPBITS); -+ -+ if (exp == EXPMAX || exp == 0 || low == 0) -+ low = 0; -+ else -+ { -+ while (lowexp > 0 && low < unity) -+ { -+ low <<= 1; -+ lowexp--; -+ } -+ -+ if (lowexp <= 0) -+ { -+ halffractype roundmsb, round; -+ int shift; -+ -+ shift = 1 - lowexp; -+ roundmsb = (1 << (shift - 1)); -+ round = low & ((roundmsb << 1) - 1); -+ -+ low >>= shift; -+ lowexp = 0; -+ -+ if (round > roundmsb || (round == roundmsb && (low & 1) == 1)) -+ { -+ low++; -+ if (low == unity) -+ /* LOW rounds up to the smallest normal number. */ -+ lowexp++; -+ } -+ } -+ -+ low &= unity - 1; -+ low |= (halffractype) lowexp << HALFFRACBITS; -+ low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS); -+ } -+ dst.value_raw = ((fractype) high << HALFSHIFT) | low; -+ } -+# else -+ dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1); -+ dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS; -+ dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS); -+# endif -+#endif -+ -+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT) -+#ifdef TFLOAT -+ { -+ qrtrfractype tmp1 = dst.words[0]; -+ qrtrfractype tmp2 = dst.words[1]; -+ dst.words[0] = dst.words[3]; -+ dst.words[1] = dst.words[2]; -+ dst.words[2] = tmp2; -+ dst.words[3] = tmp1; -+ } -+#else -+ { -+ halffractype tmp = dst.words[0]; -+ dst.words[0] = dst.words[1]; -+ dst.words[1] = tmp; -+ } -+#endif -+#endif -+ -+ return dst.value; -+} -+#endif -+ -+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf) -+void -+unpack_d (FLO_union_type * src, fp_number_type * dst) -+{ -+ /* We previously used bitfields to store the number, but this doesn't -+ handle little/big endian systems conveniently, so use shifts and -+ masks */ -+ fractype fraction; -+ int exp; -+ int sign; -+ -+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT) -+ FLO_union_type swapped; -+ -+#ifdef TFLOAT -+ swapped.words[0] = src->words[3]; -+ swapped.words[1] = src->words[2]; -+ swapped.words[2] = src->words[1]; -+ swapped.words[3] = src->words[0]; -+#else -+ swapped.words[0] = src->words[1]; -+ swapped.words[1] = src->words[0]; -+#endif -+ src = &swapped; -+#endif -+ -+#ifdef FLOAT_BIT_ORDER_MISMATCH -+ fraction = src->bits.fraction; -+ exp = src->bits.exp; -+ sign = src->bits.sign; -+#else -+# if defined TFLOAT && defined HALFFRACBITS -+ { -+ halffractype high, low; -+ -+ high = src->value_raw >> HALFSHIFT; -+ low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1); -+ -+ fraction = high & ((((fractype)1) << HALFFRACBITS) - 1); -+ fraction <<= FRACBITS - HALFFRACBITS; -+ exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1); -+ sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1; -+ -+ if (exp != EXPMAX && exp != 0 && low != 0) -+ { -+ int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1); -+ int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1; -+ int shift; -+ fractype xlow; -+ -+ xlow = low & ((((fractype)1) << HALFFRACBITS) - 1); -+ if (lowexp) -+ xlow |= (((halffractype)1) << HALFFRACBITS); -+ else -+ lowexp = 1; -+ shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp); -+ if (shift > 0) -+ xlow <<= shift; -+ else if (shift < 0) -+ xlow >>= -shift; -+ if (sign == lowsign) -+ fraction += xlow; -+ else if (fraction >= xlow) -+ fraction -= xlow; -+ else -+ { -+ /* The high part is a power of two but the full number is lower. -+ This code will leave the implicit 1 in FRACTION, but we'd -+ have added that below anyway. */ -+ fraction = (((fractype) 1 << FRACBITS) - xlow) << 1; -+ exp--; -+ } -+ } -+ } -+# else -+ fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1); -+ exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1); -+ sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1; -+# endif -+#endif -+ -+ dst->sign = sign; -+ if (exp == 0) -+ { -+ /* Hmm. Looks like 0 */ -+ if (fraction == 0 -+#ifdef NO_DENORMALS -+ || 1 -+#endif -+ ) -+ { -+ /* tastes like zero */ -+ dst->class = CLASS_ZERO; -+ } -+ else -+ { -+ /* Zero exponent with nonzero fraction - it's denormalized, -+ so there isn't a leading implicit one - we'll shift it so -+ it gets one. */ -+ dst->normal_exp = exp - EXPBIAS + 1; -+ fraction <<= NGARDS; -+ -+ dst->class = CLASS_NUMBER; -+#if 1 -+ while (fraction < IMPLICIT_1) -+ { -+ fraction <<= 1; -+ dst->normal_exp--; -+ } -+#endif -+ dst->fraction.ll = fraction; -+ } -+ } -+ else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX) -+ { -+ /* Huge exponent*/ -+ if (fraction == 0) -+ { -+ /* Attached to a zero fraction - means infinity */ -+ dst->class = CLASS_INFINITY; -+ } -+ else -+ { -+ /* Nonzero fraction, means nan */ -+#ifdef QUIET_NAN_NEGATED -+ if ((fraction & QUIET_NAN) == 0) -+#else -+ if (fraction & QUIET_NAN) -+#endif -+ { -+ dst->class = CLASS_QNAN; -+ } -+ else -+ { -+ dst->class = CLASS_SNAN; -+ } -+ /* Keep the fraction part as the nan number */ -+ dst->fraction.ll = fraction; -+ } -+ } -+ else -+ { -+ /* Nothing strange about this number */ -+ dst->normal_exp = exp - EXPBIAS; -+ dst->class = CLASS_NUMBER; -+ dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1; -+ } -+} -+#endif /* L_unpack_df || L_unpack_sf */ -+ -+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf) -+static fp_number_type * -+_fpadd_parts (fp_number_type * a, -+ fp_number_type * b, -+ fp_number_type * tmp) -+{ -+ intfrac tfraction; -+ -+ /* Put commonly used fields in local variables. */ -+ int a_normal_exp; -+ int b_normal_exp; -+ fractype a_fraction; -+ fractype b_fraction; -+ -+ if (isnan (a)) -+ { -+ return a; -+ } -+ if (isnan (b)) -+ { -+ return b; -+ } -+ if (isinf (a)) -+ { -+ /* Adding infinities with opposite signs yields a NaN. */ -+ if (isinf (b) && a->sign != b->sign) -+ return nan (); -+ return a; -+ } -+ if (isinf (b)) -+ { -+ return b; -+ } -+ if (iszero (b)) -+ { -+ if (iszero (a)) -+ { -+ *tmp = *a; -+ tmp->sign = a->sign & b->sign; -+ return tmp; -+ } -+ return a; -+ } -+ if (iszero (a)) -+ { -+ return b; -+ } -+ -+ /* Got two numbers. shift the smaller and increment the exponent till -+ they're the same */ -+ { -+ int diff; -+ -+ a_normal_exp = a->normal_exp; -+ b_normal_exp = b->normal_exp; -+ a_fraction = a->fraction.ll; -+ b_fraction = b->fraction.ll; -+ -+ diff = a_normal_exp - b_normal_exp; -+ -+ if (diff < 0) -+ diff = -diff; -+ if (diff < FRAC_NBITS) -+ { -+ /* ??? This does shifts one bit at a time. Optimize. */ -+ while (a_normal_exp > b_normal_exp) -+ { -+ b_normal_exp++; -+ LSHIFT (b_fraction); -+ } -+ while (b_normal_exp > a_normal_exp) -+ { -+ a_normal_exp++; -+ LSHIFT (a_fraction); -+ } -+ } -+ else -+ { -+ /* Somethings's up.. choose the biggest */ -+ if (a_normal_exp > b_normal_exp) -+ { -+ b_normal_exp = a_normal_exp; -+ b_fraction = 0; -+ } -+ else -+ { -+ a_normal_exp = b_normal_exp; -+ a_fraction = 0; -+ } -+ } -+ } -+ -+ if (a->sign != b->sign) -+ { -+ if (a->sign) -+ { -+ tfraction = -a_fraction + b_fraction; -+ } -+ else -+ { -+ tfraction = a_fraction - b_fraction; -+ } -+ if (tfraction >= 0) -+ { -+ tmp->sign = 0; -+ tmp->normal_exp = a_normal_exp; -+ tmp->fraction.ll = tfraction; -+ } -+ else -+ { -+ tmp->sign = 1; -+ tmp->normal_exp = a_normal_exp; -+ tmp->fraction.ll = -tfraction; -+ } -+ /* and renormalize it */ -+ -+ while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll) -+ { -+ tmp->fraction.ll <<= 1; -+ tmp->normal_exp--; -+ } -+ } -+ else -+ { -+ tmp->sign = a->sign; -+ tmp->normal_exp = a_normal_exp; -+ tmp->fraction.ll = a_fraction + b_fraction; -+ } -+ tmp->class = CLASS_NUMBER; -+ /* Now the fraction is added, we have to shift down to renormalize the -+ number */ -+ -+ if (tmp->fraction.ll >= IMPLICIT_2) -+ { -+ LSHIFT (tmp->fraction.ll); -+ tmp->normal_exp++; -+ } -+ return tmp; -+ -+} -+ -+FLO_type -+add (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type tmp; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ res = _fpadd_parts (&a, &b, &tmp); -+ -+ return pack_d (res); -+} -+ -+FLO_type -+sub (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type tmp; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ b.sign ^= 1; -+ -+ res = _fpadd_parts (&a, &b, &tmp); -+ -+ return pack_d (res); -+} -+#endif /* L_addsub_sf || L_addsub_df */ -+ -+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf) -+static inline __attribute__ ((__always_inline__)) fp_number_type * -+_fpmul_parts ( fp_number_type * a, -+ fp_number_type * b, -+ fp_number_type * tmp) -+{ -+ fractype low = 0; -+ fractype high = 0; -+ -+ if (isnan (a)) -+ { -+ a->sign = a->sign != b->sign; -+ return a; -+ } -+ if (isnan (b)) -+ { -+ b->sign = a->sign != b->sign; -+ return b; -+ } -+ if (isinf (a)) -+ { -+ if (iszero (b)) -+ return nan (); -+ a->sign = a->sign != b->sign; -+ return a; -+ } -+ if (isinf (b)) -+ { -+ if (iszero (a)) -+ { -+ return nan (); -+ } -+ b->sign = a->sign != b->sign; -+ return b; -+ } -+ if (iszero (a)) -+ { -+ a->sign = a->sign != b->sign; -+ return a; -+ } -+ if (iszero (b)) -+ { -+ b->sign = a->sign != b->sign; -+ return b; -+ } -+ -+ /* Calculate the mantissa by multiplying both numbers to get a -+ twice-as-wide number. */ -+ { -+#if defined(NO_DI_MODE) || defined(TFLOAT) -+ { -+ fractype x = a->fraction.ll; -+ fractype ylow = b->fraction.ll; -+ fractype yhigh = 0; -+ int bit; -+ -+ /* ??? This does multiplies one bit at a time. Optimize. */ -+ for (bit = 0; bit < FRAC_NBITS; bit++) -+ { -+ int carry; -+ -+ if (x & 1) -+ { -+ carry = (low += ylow) < ylow; -+ high += yhigh + carry; -+ } -+ yhigh <<= 1; -+ if (ylow & FRACHIGH) -+ { -+ yhigh |= 1; -+ } -+ ylow <<= 1; -+ x >>= 1; -+ } -+ } -+#elif defined(FLOAT) -+ /* Multiplying two USIs to get a UDI, we're safe. */ -+ { -+ UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll; -+ -+ high = answer >> BITS_PER_SI; -+ low = answer; -+ } -+#else -+ /* fractype is DImode, but we need the result to be twice as wide. -+ Assuming a widening multiply from DImode to TImode is not -+ available, build one by hand. */ -+ { -+ USItype nl = a->fraction.ll; -+ USItype nh = a->fraction.ll >> BITS_PER_SI; -+ USItype ml = b->fraction.ll; -+ USItype mh = b->fraction.ll >> BITS_PER_SI; -+ UDItype pp_ll = (UDItype) ml * nl; -+ UDItype pp_hl = (UDItype) mh * nl; -+ UDItype pp_lh = (UDItype) ml * nh; -+ UDItype pp_hh = (UDItype) mh * nh; -+ UDItype res2 = 0; -+ UDItype res0 = 0; -+ UDItype ps_hh__ = pp_hl + pp_lh; -+ if (ps_hh__ < pp_hl) -+ res2 += (UDItype)1 << BITS_PER_SI; -+ pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI; -+ res0 = pp_ll + pp_hl; -+ if (res0 < pp_ll) -+ res2++; -+ res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh; -+ high = res2; -+ low = res0; -+ } -+#endif -+ } -+ -+ tmp->normal_exp = a->normal_exp + b->normal_exp -+ + FRAC_NBITS - (FRACBITS + NGARDS); -+ tmp->sign = a->sign != b->sign; -+ while (high >= IMPLICIT_2) -+ { -+ tmp->normal_exp++; -+ if (high & 1) -+ { -+ low >>= 1; -+ low |= FRACHIGH; -+ } -+ high >>= 1; -+ } -+ while (high < IMPLICIT_1) -+ { -+ tmp->normal_exp--; -+ -+ high <<= 1; -+ if (low & FRACHIGH) -+ high |= 1; -+ low <<= 1; -+ } -+ /* rounding is tricky. if we only round if it won't make us round later. */ -+#if 0 -+ if (low & FRACHIGH2) -+ { -+ if (((high & GARDMASK) != GARDMSB) -+ && (((high + 1) & GARDMASK) == GARDMSB)) -+ { -+ /* don't round, it gets done again later. */ -+ } -+ else -+ { -+ high++; -+ } -+ } -+#endif -+ if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB) -+ { -+ if (high & (1 << NGARDS)) -+ { -+ /* half way, so round to even */ -+ high += GARDROUND + 1; -+ } -+ else if (low) -+ { -+ /* but we really weren't half way */ -+ high += GARDROUND + 1; -+ } -+ } -+ tmp->fraction.ll = high; -+ tmp->class = CLASS_NUMBER; -+ return tmp; -+} -+ -+FLO_type -+multiply (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type tmp; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ res = _fpmul_parts (&a, &b, &tmp); -+ -+ return pack_d (res); -+} -+#endif /* L_mul_sf || L_mul_df */ -+ -+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf) -+static inline __attribute__ ((__always_inline__)) fp_number_type * -+_fpdiv_parts (fp_number_type * a, -+ fp_number_type * b) -+{ -+ fractype bit; -+ fractype numerator; -+ fractype denominator; -+ fractype quotient; -+ -+ if (isnan (a)) -+ { -+ return a; -+ } -+ if (isnan (b)) -+ { -+ return b; -+ } -+ -+ a->sign = a->sign ^ b->sign; -+ -+ if (isinf (a) || iszero (a)) -+ { -+ if (a->class == b->class) -+ return nan (); -+ return a; -+ } -+ -+ if (isinf (b)) -+ { -+ a->fraction.ll = 0; -+ a->normal_exp = 0; -+ return a; -+ } -+ if (iszero (b)) -+ { -+ a->class = CLASS_INFINITY; -+ return a; -+ } -+ -+ /* Calculate the mantissa by multiplying both 64bit numbers to get a -+ 128 bit number */ -+ { -+ /* quotient = -+ ( numerator / denominator) * 2^(numerator exponent - denominator exponent) -+ */ -+ -+ a->normal_exp = a->normal_exp - b->normal_exp; -+ numerator = a->fraction.ll; -+ denominator = b->fraction.ll; -+ -+ if (numerator < denominator) -+ { -+ /* Fraction will be less than 1.0 */ -+ numerator *= 2; -+ a->normal_exp--; -+ } -+ bit = IMPLICIT_1; -+ quotient = 0; -+ /* ??? Does divide one bit at a time. Optimize. */ -+ while (bit) -+ { -+ if (numerator >= denominator) -+ { -+ quotient |= bit; -+ numerator -= denominator; -+ } -+ bit >>= 1; -+ numerator *= 2; -+ } -+ -+ if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB) -+ { -+ if (quotient & (1 << NGARDS)) -+ { -+ /* half way, so round to even */ -+ quotient += GARDROUND + 1; -+ } -+ else if (numerator) -+ { -+ /* but we really weren't half way, more bits exist */ -+ quotient += GARDROUND + 1; -+ } -+ } -+ -+ a->fraction.ll = quotient; -+ return (a); -+ } -+} -+ -+FLO_type -+divide (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ res = _fpdiv_parts (&a, &b); -+ -+ return pack_d (res); -+} -+#endif /* L_div_sf || L_div_df */ -+ -+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \ -+ || defined(L_fpcmp_parts_tf) -+/* according to the demo, fpcmp returns a comparison with 0... thus -+ a -1 -+ a==b -> 0 -+ a>b -> +1 -+ */ -+ -+int -+__fpcmp_parts (fp_number_type * a, fp_number_type * b) -+{ -+#if 0 -+ /* either nan -> unordered. Must be checked outside of this routine. */ -+ if (isnan (a) && isnan (b)) -+ { -+ return 1; /* still unordered! */ -+ } -+#endif -+ -+ if (isnan (a) || isnan (b)) -+ { -+ return 1; /* how to indicate unordered compare? */ -+ } -+ if (isinf (a) && isinf (b)) -+ { -+ /* +inf > -inf, but +inf != +inf */ -+ /* b \a| +inf(0)| -inf(1) -+ ______\+--------+-------- -+ +inf(0)| a==b(0)| ab(1) | a==b(0) -+ -------+--------+-------- -+ So since unordered must be nonzero, just line up the columns... -+ */ -+ return b->sign - a->sign; -+ } -+ /* but not both... */ -+ if (isinf (a)) -+ { -+ return a->sign ? -1 : 1; -+ } -+ if (isinf (b)) -+ { -+ return b->sign ? 1 : -1; -+ } -+ if (iszero (a) && iszero (b)) -+ { -+ return 0; -+ } -+ if (iszero (a)) -+ { -+ return b->sign ? 1 : -1; -+ } -+ if (iszero (b)) -+ { -+ return a->sign ? -1 : 1; -+ } -+ /* now both are "normal". */ -+ if (a->sign != b->sign) -+ { -+ /* opposite signs */ -+ return a->sign ? -1 : 1; -+ } -+ /* same sign; exponents? */ -+ if (a->normal_exp > b->normal_exp) -+ { -+ return a->sign ? -1 : 1; -+ } -+ if (a->normal_exp < b->normal_exp) -+ { -+ return a->sign ? 1 : -1; -+ } -+ /* same exponents; check size. */ -+ if (a->fraction.ll > b->fraction.ll) -+ { -+ return a->sign ? -1 : 1; -+ } -+ if (a->fraction.ll < b->fraction.ll) -+ { -+ return a->sign ? 1 : -1; -+ } -+ /* after all that, they're equal. */ -+ return 0; -+} -+#endif -+ -+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf) -+CMPtype -+compare (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ return __fpcmp_parts (&a, &b); -+} -+#endif /* L_compare_sf || L_compare_df */ -+ -+#ifndef US_SOFTWARE_GOFAST -+ -+/* These should be optimized for their specific tasks someday. */ -+ -+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf) -+CMPtype -+_eq_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* false, truth == 0 */ -+ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_eq_sf || L_eq_df */ -+ -+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf) -+CMPtype -+_ne_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* true, truth != 0 */ -+ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_ne_sf || L_ne_df */ -+ -+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf) -+CMPtype -+_gt_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return -1; /* false, truth > 0 */ -+ -+ return __fpcmp_parts (&a, &b); -+} -+#endif /* L_gt_sf || L_gt_df */ -+ -+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf) -+CMPtype -+_ge_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return -1; /* false, truth >= 0 */ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_ge_sf || L_ge_df */ -+ -+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf) -+CMPtype -+_lt_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* false, truth < 0 */ -+ -+ return __fpcmp_parts (&a, &b); -+} -+#endif /* L_lt_sf || L_lt_df */ -+ -+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf) -+CMPtype -+_le_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* false, truth <= 0 */ -+ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_le_sf || L_le_df */ -+ -+#endif /* ! US_SOFTWARE_GOFAST */ -+ -+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf) -+CMPtype -+_unord_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ return (isnan (&a) || isnan (&b)); -+} -+#endif /* L_unord_sf || L_unord_df */ -+ -+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf) -+FLO_type -+si_to_float (SItype arg_a) -+{ -+ fp_number_type in; -+ -+ in.class = CLASS_NUMBER; -+ in.sign = arg_a < 0; -+ if (!arg_a) -+ { -+ in.class = CLASS_ZERO; -+ } -+ else -+ { -+ in.normal_exp = FRACBITS + NGARDS; -+ if (in.sign) -+ { -+ /* Special case for minint, since there is no +ve integer -+ representation for it */ -+ if (arg_a == (- MAX_SI_INT - 1)) -+ { -+ return (FLO_type)(- MAX_SI_INT - 1); -+ } -+ in.fraction.ll = (-arg_a); -+ } -+ else -+ in.fraction.ll = arg_a; -+ -+ while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS))) -+ { -+ in.fraction.ll <<= 1; -+ in.normal_exp -= 1; -+ } -+ } -+ return pack_d (&in); -+} -+#endif /* L_si_to_sf || L_si_to_df */ -+ -+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf) -+FLO_type -+usi_to_float (USItype arg_a) -+{ -+ fp_number_type in; -+ -+ in.sign = 0; -+ if (!arg_a) -+ { -+ in.class = CLASS_ZERO; -+ } -+ else -+ { -+ in.class = CLASS_NUMBER; -+ in.normal_exp = FRACBITS + NGARDS; -+ in.fraction.ll = arg_a; -+ -+ while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS))) -+ { -+ in.fraction.ll >>= 1; -+ in.normal_exp += 1; -+ } -+ while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS))) -+ { -+ in.fraction.ll <<= 1; -+ in.normal_exp -= 1; -+ } -+ } -+ return pack_d (&in); -+} -+#endif -+ -+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si) -+SItype -+float_to_si (FLO_type arg_a) -+{ -+ fp_number_type a; -+ SItype tmp; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &a); -+ -+ if (iszero (&a)) -+ return 0; -+ if (isnan (&a)) -+ return 0; -+ /* get reasonable MAX_SI_INT... */ -+ if (isinf (&a)) -+ return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT; -+ /* it is a number, but a small one */ -+ if (a.normal_exp < 0) -+ return 0; -+ if (a.normal_exp > BITS_PER_SI - 2) -+ return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT; -+ tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp); -+ return a.sign ? (-tmp) : (tmp); -+} -+#endif /* L_sf_to_si || L_df_to_si */ -+ -+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi) -+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi) -+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines, -+ we also define them for GOFAST because the ones in libgcc2.c have the -+ wrong names and I'd rather define these here and keep GOFAST CYG-LOC's -+ out of libgcc2.c. We can't define these here if not GOFAST because then -+ there'd be duplicate copies. */ -+ -+USItype -+float_to_usi (FLO_type arg_a) -+{ -+ fp_number_type a; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &a); -+ -+ if (iszero (&a)) -+ return 0; -+ if (isnan (&a)) -+ return 0; -+ /* it is a negative number */ -+ if (a.sign) -+ return 0; -+ /* get reasonable MAX_USI_INT... */ -+ if (isinf (&a)) -+ return MAX_USI_INT; -+ /* it is a number, but a small one */ -+ if (a.normal_exp < 0) -+ return 0; -+ if (a.normal_exp > BITS_PER_SI - 1) -+ return MAX_USI_INT; -+ else if (a.normal_exp > (FRACBITS + NGARDS)) -+ return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS)); -+ else -+ return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp); -+} -+#endif /* US_SOFTWARE_GOFAST */ -+#endif /* L_sf_to_usi || L_df_to_usi */ -+ -+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf) -+FLO_type -+negate (FLO_type arg_a) -+{ -+ fp_number_type a; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &a); -+ -+ flip_sign (&a); -+ return pack_d (&a); -+} -+#endif /* L_negate_sf || L_negate_df */ -+ -+#ifdef FLOAT -+ -+#if defined(L_make_sf) -+SFtype -+__make_fp(fp_class_type class, -+ unsigned int sign, -+ int exp, -+ USItype frac) -+{ -+ fp_number_type in; -+ -+ in.class = class; -+ in.sign = sign; -+ in.normal_exp = exp; -+ in.fraction.ll = frac; -+ return pack_d (&in); -+} -+#endif /* L_make_sf */ -+ -+#ifndef FLOAT_ONLY -+ -+/* This enables one to build an fp library that supports float but not double. -+ Otherwise, we would get an undefined reference to __make_dp. -+ This is needed for some 8-bit ports that can't handle well values that -+ are 8-bytes in size, so we just don't support double for them at all. */ -+ -+#if defined(L_sf_to_df) -+DFtype -+sf_to_df (SFtype arg_a) -+{ -+ fp_number_type in; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ return __make_dp (in.class, in.sign, in.normal_exp, -+ ((UDItype) in.fraction.ll) << F_D_BITOFF); -+} -+#endif /* L_sf_to_df */ -+ -+#if defined(L_sf_to_tf) && defined(TMODES) -+TFtype -+sf_to_tf (SFtype arg_a) -+{ -+ fp_number_type in; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ return __make_tp (in.class, in.sign, in.normal_exp, -+ ((UTItype) in.fraction.ll) << F_T_BITOFF); -+} -+#endif /* L_sf_to_df */ -+ -+#endif /* ! FLOAT_ONLY */ -+#endif /* FLOAT */ -+ -+#ifndef FLOAT -+ -+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype); -+ -+#if defined(L_make_df) -+DFtype -+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac) -+{ -+ fp_number_type in; -+ -+ in.class = class; -+ in.sign = sign; -+ in.normal_exp = exp; -+ in.fraction.ll = frac; -+ return pack_d (&in); -+} -+#endif /* L_make_df */ -+ -+#if defined(L_df_to_sf) -+SFtype -+df_to_sf (DFtype arg_a) -+{ -+ fp_number_type in; -+ USItype sffrac; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ sffrac = in.fraction.ll >> F_D_BITOFF; -+ -+ /* We set the lowest guard bit in SFFRAC if we discarded any non -+ zero bits. */ -+ if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) -+ sffrac |= 1; -+ -+ return __make_fp (in.class, in.sign, in.normal_exp, sffrac); -+} -+#endif /* L_df_to_sf */ -+ -+#if defined(L_df_to_tf) && defined(TMODES) \ -+ && !defined(FLOAT) && !defined(TFLOAT) -+TFtype -+df_to_tf (DFtype arg_a) -+{ -+ fp_number_type in; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ return __make_tp (in.class, in.sign, in.normal_exp, -+ ((UTItype) in.fraction.ll) << D_T_BITOFF); -+} -+#endif /* L_sf_to_df */ -+ -+#ifdef TFLOAT -+#if defined(L_make_tf) -+TFtype -+__make_tp(fp_class_type class, -+ unsigned int sign, -+ int exp, -+ UTItype frac) -+{ -+ fp_number_type in; -+ -+ in.class = class; -+ in.sign = sign; -+ in.normal_exp = exp; -+ in.fraction.ll = frac; -+ return pack_d (&in); -+} -+#endif /* L_make_tf */ -+ -+#if defined(L_tf_to_df) -+DFtype -+tf_to_df (TFtype arg_a) -+{ -+ fp_number_type in; -+ UDItype sffrac; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ sffrac = in.fraction.ll >> D_T_BITOFF; -+ -+ /* We set the lowest guard bit in SFFRAC if we discarded any non -+ zero bits. */ -+ if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0) -+ sffrac |= 1; -+ -+ return __make_dp (in.class, in.sign, in.normal_exp, sffrac); -+} -+#endif /* L_tf_to_df */ -+ -+#if defined(L_tf_to_sf) -+SFtype -+tf_to_sf (TFtype arg_a) -+{ -+ fp_number_type in; -+ USItype sffrac; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ sffrac = in.fraction.ll >> F_T_BITOFF; -+ -+ /* We set the lowest guard bit in SFFRAC if we discarded any non -+ zero bits. */ -+ if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0) -+ sffrac |= 1; -+ -+ return __make_fp (in.class, in.sign, in.normal_exp, sffrac); -+} -+#endif /* L_tf_to_sf */ -+#endif /* TFLOAT */ -+ -+#endif /* ! FLOAT */ -+#endif /* !EXTENDED_FLOAT_STUBS */ ---- gcc-3.4.3/gcc/config/nios2/nios2-fp-bit.c -+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-fp-bit.c -@@ -0,0 +1,1652 @@ -+#define FLOAT -+/* This is a software floating point library which can be used -+ for targets without hardware floating point. -+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004 -+ Free Software Foundation, Inc. -+ -+This file 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. -+ -+In addition to the permissions in the GNU General Public License, the -+Free Software Foundation gives you unlimited permission to link the -+compiled version of this file with other programs, and to distribute -+those programs without any restriction coming from the use of this -+file. (The General Public License restrictions do apply in other -+respects; for example, they cover modification of the file, and -+distribution when not linked into another program.) -+ -+This file 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 program; 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, if you link this library with other files, -+ some of which are compiled with GCC, to produce an executable, -+ this library 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. */ -+ -+/* This implements IEEE 754 format arithmetic, but does not provide a -+ mechanism for setting the rounding mode, or for generating or handling -+ exceptions. -+ -+ The original code by Steve Chamberlain, hacked by Mark Eichin and Jim -+ Wilson, all of Cygnus Support. */ -+ -+/* The intended way to use this file is to make two copies, add `#define FLOAT' -+ to one copy, then compile both copies and add them to libgcc.a. */ -+ -+#include "tconfig.h" -+#include "coretypes.h" -+#include "tm.h" -+#include "config/fp-bit.h" -+ -+/* The following macros can be defined to change the behavior of this file: -+ FLOAT: Implement a `float', aka SFmode, fp library. If this is not -+ defined, then this file implements a `double', aka DFmode, fp library. -+ FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e. -+ don't include float->double conversion which requires the double library. -+ This is useful only for machines which can't support doubles, e.g. some -+ 8-bit processors. -+ CMPtype: Specify the type that floating point compares should return. -+ This defaults to SItype, aka int. -+ US_SOFTWARE_GOFAST: This makes all entry points use the same names as the -+ US Software goFast library. -+ _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding -+ two integers to the FLO_union_type. -+ NO_DENORMALS: Disable handling of denormals. -+ NO_NANS: Disable nan and infinity handling -+ SMALL_MACHINE: Useful when operations on QIs and HIs are faster -+ than on an SI */ -+ -+/* We don't currently support extended floats (long doubles) on machines -+ without hardware to deal with them. -+ -+ These stubs are just to keep the linker from complaining about unresolved -+ references which can be pulled in from libio & libstdc++, even if the -+ user isn't using long doubles. However, they may generate an unresolved -+ external to abort if abort is not used by the function, and the stubs -+ are referenced from within libc, since libgcc goes before and after the -+ system library. */ -+ -+#ifdef DECLARE_LIBRARY_RENAMES -+ DECLARE_LIBRARY_RENAMES -+#endif -+ -+#ifdef EXTENDED_FLOAT_STUBS -+extern void abort (void); -+void __extendsfxf2 (void) { abort(); } -+void __extenddfxf2 (void) { abort(); } -+void __truncxfdf2 (void) { abort(); } -+void __truncxfsf2 (void) { abort(); } -+void __fixxfsi (void) { abort(); } -+void __floatsixf (void) { abort(); } -+void __addxf3 (void) { abort(); } -+void __subxf3 (void) { abort(); } -+void __mulxf3 (void) { abort(); } -+void __divxf3 (void) { abort(); } -+void __negxf2 (void) { abort(); } -+void __eqxf2 (void) { abort(); } -+void __nexf2 (void) { abort(); } -+void __gtxf2 (void) { abort(); } -+void __gexf2 (void) { abort(); } -+void __lexf2 (void) { abort(); } -+void __ltxf2 (void) { abort(); } -+ -+void __extendsftf2 (void) { abort(); } -+void __extenddftf2 (void) { abort(); } -+void __trunctfdf2 (void) { abort(); } -+void __trunctfsf2 (void) { abort(); } -+void __fixtfsi (void) { abort(); } -+void __floatsitf (void) { abort(); } -+void __addtf3 (void) { abort(); } -+void __subtf3 (void) { abort(); } -+void __multf3 (void) { abort(); } -+void __divtf3 (void) { abort(); } -+void __negtf2 (void) { abort(); } -+void __eqtf2 (void) { abort(); } -+void __netf2 (void) { abort(); } -+void __gttf2 (void) { abort(); } -+void __getf2 (void) { abort(); } -+void __letf2 (void) { abort(); } -+void __lttf2 (void) { abort(); } -+#else /* !EXTENDED_FLOAT_STUBS, rest of file */ -+ -+/* IEEE "special" number predicates */ -+ -+#ifdef NO_NANS -+ -+#define nan() 0 -+#define isnan(x) 0 -+#define isinf(x) 0 -+#else -+ -+#if defined L_thenan_sf -+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} }; -+#elif defined L_thenan_df -+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} }; -+#elif defined L_thenan_tf -+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} }; -+#elif defined TFLOAT -+extern const fp_number_type __thenan_tf; -+#elif defined FLOAT -+extern const fp_number_type __thenan_sf; -+#else -+extern const fp_number_type __thenan_df; -+#endif -+ -+INLINE -+static fp_number_type * -+nan (void) -+{ -+ /* Discard the const qualifier... */ -+#ifdef TFLOAT -+ return (fp_number_type *) (& __thenan_tf); -+#elif defined FLOAT -+ return (fp_number_type *) (& __thenan_sf); -+#else -+ return (fp_number_type *) (& __thenan_df); -+#endif -+} -+ -+INLINE -+static int -+isnan ( fp_number_type * x) -+{ -+ return x->class == CLASS_SNAN || x->class == CLASS_QNAN; -+} -+ -+INLINE -+static int -+isinf ( fp_number_type * x) -+{ -+ return x->class == CLASS_INFINITY; -+} -+ -+#endif /* NO_NANS */ -+ -+INLINE -+static int -+iszero ( fp_number_type * x) -+{ -+ return x->class == CLASS_ZERO; -+} -+ -+INLINE -+static void -+flip_sign ( fp_number_type * x) -+{ -+ x->sign = !x->sign; -+} -+ -+extern FLO_type pack_d ( fp_number_type * ); -+ -+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf) -+FLO_type -+pack_d ( fp_number_type * src) -+{ -+ FLO_union_type dst; -+ fractype fraction = src->fraction.ll; /* wasn't unsigned before? */ -+ int sign = src->sign; -+ int exp = 0; -+ -+ if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src))) -+ { -+ /* We can't represent these values accurately. By using the -+ largest possible magnitude, we guarantee that the conversion -+ of infinity is at least as big as any finite number. */ -+ exp = EXPMAX; -+ fraction = ((fractype) 1 << FRACBITS) - 1; -+ } -+ else if (isnan (src)) -+ { -+ exp = EXPMAX; -+ if (src->class == CLASS_QNAN || 1) -+ { -+#ifdef QUIET_NAN_NEGATED -+ fraction |= QUIET_NAN - 1; -+#else -+ fraction |= QUIET_NAN; -+#endif -+ } -+ } -+ else if (isinf (src)) -+ { -+ exp = EXPMAX; -+ fraction = 0; -+ } -+ else if (iszero (src)) -+ { -+ exp = 0; -+ fraction = 0; -+ } -+ else if (fraction == 0) -+ { -+ exp = 0; -+ } -+ else -+ { -+ if (src->normal_exp < NORMAL_EXPMIN) -+ { -+#ifdef NO_DENORMALS -+ /* Go straight to a zero representation if denormals are not -+ supported. The denormal handling would be harmless but -+ isn't unnecessary. */ -+ exp = 0; -+ fraction = 0; -+#else /* NO_DENORMALS */ -+ /* This number's exponent is too low to fit into the bits -+ available in the number, so we'll store 0 in the exponent and -+ shift the fraction to the right to make up for it. */ -+ -+ int shift = NORMAL_EXPMIN - src->normal_exp; -+ -+ exp = 0; -+ -+ if (shift > FRAC_NBITS - NGARDS) -+ { -+ /* No point shifting, since it's more that 64 out. */ -+ fraction = 0; -+ } -+ else -+ { -+ int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0; -+ fraction = (fraction >> shift) | lowbit; -+ } -+ if ((fraction & GARDMASK) == GARDMSB) -+ { -+ if ((fraction & (1 << NGARDS))) -+ fraction += GARDROUND + 1; -+ } -+ else -+ { -+ /* Add to the guards to round up. */ -+ fraction += GARDROUND; -+ } -+ /* Perhaps the rounding means we now need to change the -+ exponent, because the fraction is no longer denormal. */ -+ if (fraction >= IMPLICIT_1) -+ { -+ exp += 1; -+ } -+ fraction >>= NGARDS; -+#endif /* NO_DENORMALS */ -+ } -+ else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) -+ && src->normal_exp > EXPBIAS) -+ { -+ exp = EXPMAX; -+ fraction = 0; -+ } -+ else -+ { -+ exp = src->normal_exp + EXPBIAS; -+ if (!ROUND_TOWARDS_ZERO) -+ { -+ /* IF the gard bits are the all zero, but the first, then we're -+ half way between two numbers, choose the one which makes the -+ lsb of the answer 0. */ -+ if ((fraction & GARDMASK) == GARDMSB) -+ { -+ if (fraction & (1 << NGARDS)) -+ fraction += GARDROUND + 1; -+ } -+ else -+ { -+ /* Add a one to the guards to round up */ -+ fraction += GARDROUND; -+ } -+ if (fraction >= IMPLICIT_2) -+ { -+ fraction >>= 1; -+ exp += 1; -+ } -+ } -+ fraction >>= NGARDS; -+ -+ if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX) -+ { -+ /* Saturate on overflow. */ -+ exp = EXPMAX; -+ fraction = ((fractype) 1 << FRACBITS) - 1; -+ } -+ } -+ } -+ -+ /* We previously used bitfields to store the number, but this doesn't -+ handle little/big endian systems conveniently, so use shifts and -+ masks */ -+#ifdef FLOAT_BIT_ORDER_MISMATCH -+ dst.bits.fraction = fraction; -+ dst.bits.exp = exp; -+ dst.bits.sign = sign; -+#else -+# if defined TFLOAT && defined HALFFRACBITS -+ { -+ halffractype high, low, unity; -+ int lowsign, lowexp; -+ -+ unity = (halffractype) 1 << HALFFRACBITS; -+ -+ /* Set HIGH to the high double's significand, masking out the implicit 1. -+ Set LOW to the low double's full significand. */ -+ high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1); -+ low = fraction & (unity * 2 - 1); -+ -+ /* Get the initial sign and exponent of the low double. */ -+ lowexp = exp - HALFFRACBITS - 1; -+ lowsign = sign; -+ -+ /* HIGH should be rounded like a normal double, making |LOW| <= -+ 0.5 ULP of HIGH. Assume round-to-nearest. */ -+ if (exp < EXPMAX) -+ if (low > unity || (low == unity && (high & 1) == 1)) -+ { -+ /* Round HIGH up and adjust LOW to match. */ -+ high++; -+ if (high == unity) -+ { -+ /* May make it infinite, but that's OK. */ -+ high = 0; -+ exp++; -+ } -+ low = unity * 2 - low; -+ lowsign ^= 1; -+ } -+ -+ high |= (halffractype) exp << HALFFRACBITS; -+ high |= (halffractype) sign << (HALFFRACBITS + EXPBITS); -+ -+ if (exp == EXPMAX || exp == 0 || low == 0) -+ low = 0; -+ else -+ { -+ while (lowexp > 0 && low < unity) -+ { -+ low <<= 1; -+ lowexp--; -+ } -+ -+ if (lowexp <= 0) -+ { -+ halffractype roundmsb, round; -+ int shift; -+ -+ shift = 1 - lowexp; -+ roundmsb = (1 << (shift - 1)); -+ round = low & ((roundmsb << 1) - 1); -+ -+ low >>= shift; -+ lowexp = 0; -+ -+ if (round > roundmsb || (round == roundmsb && (low & 1) == 1)) -+ { -+ low++; -+ if (low == unity) -+ /* LOW rounds up to the smallest normal number. */ -+ lowexp++; -+ } -+ } -+ -+ low &= unity - 1; -+ low |= (halffractype) lowexp << HALFFRACBITS; -+ low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS); -+ } -+ dst.value_raw = ((fractype) high << HALFSHIFT) | low; -+ } -+# else -+ dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1); -+ dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS; -+ dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS); -+# endif -+#endif -+ -+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT) -+#ifdef TFLOAT -+ { -+ qrtrfractype tmp1 = dst.words[0]; -+ qrtrfractype tmp2 = dst.words[1]; -+ dst.words[0] = dst.words[3]; -+ dst.words[1] = dst.words[2]; -+ dst.words[2] = tmp2; -+ dst.words[3] = tmp1; -+ } -+#else -+ { -+ halffractype tmp = dst.words[0]; -+ dst.words[0] = dst.words[1]; -+ dst.words[1] = tmp; -+ } -+#endif -+#endif -+ -+ return dst.value; -+} -+#endif -+ -+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf) -+void -+unpack_d (FLO_union_type * src, fp_number_type * dst) -+{ -+ /* We previously used bitfields to store the number, but this doesn't -+ handle little/big endian systems conveniently, so use shifts and -+ masks */ -+ fractype fraction; -+ int exp; -+ int sign; -+ -+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT) -+ FLO_union_type swapped; -+ -+#ifdef TFLOAT -+ swapped.words[0] = src->words[3]; -+ swapped.words[1] = src->words[2]; -+ swapped.words[2] = src->words[1]; -+ swapped.words[3] = src->words[0]; -+#else -+ swapped.words[0] = src->words[1]; -+ swapped.words[1] = src->words[0]; -+#endif -+ src = &swapped; -+#endif -+ -+#ifdef FLOAT_BIT_ORDER_MISMATCH -+ fraction = src->bits.fraction; -+ exp = src->bits.exp; -+ sign = src->bits.sign; -+#else -+# if defined TFLOAT && defined HALFFRACBITS -+ { -+ halffractype high, low; -+ -+ high = src->value_raw >> HALFSHIFT; -+ low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1); -+ -+ fraction = high & ((((fractype)1) << HALFFRACBITS) - 1); -+ fraction <<= FRACBITS - HALFFRACBITS; -+ exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1); -+ sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1; -+ -+ if (exp != EXPMAX && exp != 0 && low != 0) -+ { -+ int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1); -+ int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1; -+ int shift; -+ fractype xlow; -+ -+ xlow = low & ((((fractype)1) << HALFFRACBITS) - 1); -+ if (lowexp) -+ xlow |= (((halffractype)1) << HALFFRACBITS); -+ else -+ lowexp = 1; -+ shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp); -+ if (shift > 0) -+ xlow <<= shift; -+ else if (shift < 0) -+ xlow >>= -shift; -+ if (sign == lowsign) -+ fraction += xlow; -+ else if (fraction >= xlow) -+ fraction -= xlow; -+ else -+ { -+ /* The high part is a power of two but the full number is lower. -+ This code will leave the implicit 1 in FRACTION, but we'd -+ have added that below anyway. */ -+ fraction = (((fractype) 1 << FRACBITS) - xlow) << 1; -+ exp--; -+ } -+ } -+ } -+# else -+ fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1); -+ exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1); -+ sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1; -+# endif -+#endif -+ -+ dst->sign = sign; -+ if (exp == 0) -+ { -+ /* Hmm. Looks like 0 */ -+ if (fraction == 0 -+#ifdef NO_DENORMALS -+ || 1 -+#endif -+ ) -+ { -+ /* tastes like zero */ -+ dst->class = CLASS_ZERO; -+ } -+ else -+ { -+ /* Zero exponent with nonzero fraction - it's denormalized, -+ so there isn't a leading implicit one - we'll shift it so -+ it gets one. */ -+ dst->normal_exp = exp - EXPBIAS + 1; -+ fraction <<= NGARDS; -+ -+ dst->class = CLASS_NUMBER; -+#if 1 -+ while (fraction < IMPLICIT_1) -+ { -+ fraction <<= 1; -+ dst->normal_exp--; -+ } -+#endif -+ dst->fraction.ll = fraction; -+ } -+ } -+ else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX) -+ { -+ /* Huge exponent*/ -+ if (fraction == 0) -+ { -+ /* Attached to a zero fraction - means infinity */ -+ dst->class = CLASS_INFINITY; -+ } -+ else -+ { -+ /* Nonzero fraction, means nan */ -+#ifdef QUIET_NAN_NEGATED -+ if ((fraction & QUIET_NAN) == 0) -+#else -+ if (fraction & QUIET_NAN) -+#endif -+ { -+ dst->class = CLASS_QNAN; -+ } -+ else -+ { -+ dst->class = CLASS_SNAN; -+ } -+ /* Keep the fraction part as the nan number */ -+ dst->fraction.ll = fraction; -+ } -+ } -+ else -+ { -+ /* Nothing strange about this number */ -+ dst->normal_exp = exp - EXPBIAS; -+ dst->class = CLASS_NUMBER; -+ dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1; -+ } -+} -+#endif /* L_unpack_df || L_unpack_sf */ -+ -+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf) -+static fp_number_type * -+_fpadd_parts (fp_number_type * a, -+ fp_number_type * b, -+ fp_number_type * tmp) -+{ -+ intfrac tfraction; -+ -+ /* Put commonly used fields in local variables. */ -+ int a_normal_exp; -+ int b_normal_exp; -+ fractype a_fraction; -+ fractype b_fraction; -+ -+ if (isnan (a)) -+ { -+ return a; -+ } -+ if (isnan (b)) -+ { -+ return b; -+ } -+ if (isinf (a)) -+ { -+ /* Adding infinities with opposite signs yields a NaN. */ -+ if (isinf (b) && a->sign != b->sign) -+ return nan (); -+ return a; -+ } -+ if (isinf (b)) -+ { -+ return b; -+ } -+ if (iszero (b)) -+ { -+ if (iszero (a)) -+ { -+ *tmp = *a; -+ tmp->sign = a->sign & b->sign; -+ return tmp; -+ } -+ return a; -+ } -+ if (iszero (a)) -+ { -+ return b; -+ } -+ -+ /* Got two numbers. shift the smaller and increment the exponent till -+ they're the same */ -+ { -+ int diff; -+ -+ a_normal_exp = a->normal_exp; -+ b_normal_exp = b->normal_exp; -+ a_fraction = a->fraction.ll; -+ b_fraction = b->fraction.ll; -+ -+ diff = a_normal_exp - b_normal_exp; -+ -+ if (diff < 0) -+ diff = -diff; -+ if (diff < FRAC_NBITS) -+ { -+ /* ??? This does shifts one bit at a time. Optimize. */ -+ while (a_normal_exp > b_normal_exp) -+ { -+ b_normal_exp++; -+ LSHIFT (b_fraction); -+ } -+ while (b_normal_exp > a_normal_exp) -+ { -+ a_normal_exp++; -+ LSHIFT (a_fraction); -+ } -+ } -+ else -+ { -+ /* Somethings's up.. choose the biggest */ -+ if (a_normal_exp > b_normal_exp) -+ { -+ b_normal_exp = a_normal_exp; -+ b_fraction = 0; -+ } -+ else -+ { -+ a_normal_exp = b_normal_exp; -+ a_fraction = 0; -+ } -+ } -+ } -+ -+ if (a->sign != b->sign) -+ { -+ if (a->sign) -+ { -+ tfraction = -a_fraction + b_fraction; -+ } -+ else -+ { -+ tfraction = a_fraction - b_fraction; -+ } -+ if (tfraction >= 0) -+ { -+ tmp->sign = 0; -+ tmp->normal_exp = a_normal_exp; -+ tmp->fraction.ll = tfraction; -+ } -+ else -+ { -+ tmp->sign = 1; -+ tmp->normal_exp = a_normal_exp; -+ tmp->fraction.ll = -tfraction; -+ } -+ /* and renormalize it */ -+ -+ while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll) -+ { -+ tmp->fraction.ll <<= 1; -+ tmp->normal_exp--; -+ } -+ } -+ else -+ { -+ tmp->sign = a->sign; -+ tmp->normal_exp = a_normal_exp; -+ tmp->fraction.ll = a_fraction + b_fraction; -+ } -+ tmp->class = CLASS_NUMBER; -+ /* Now the fraction is added, we have to shift down to renormalize the -+ number */ -+ -+ if (tmp->fraction.ll >= IMPLICIT_2) -+ { -+ LSHIFT (tmp->fraction.ll); -+ tmp->normal_exp++; -+ } -+ return tmp; -+ -+} -+ -+FLO_type -+add (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type tmp; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ res = _fpadd_parts (&a, &b, &tmp); -+ -+ return pack_d (res); -+} -+ -+FLO_type -+sub (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type tmp; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ b.sign ^= 1; -+ -+ res = _fpadd_parts (&a, &b, &tmp); -+ -+ return pack_d (res); -+} -+#endif /* L_addsub_sf || L_addsub_df */ -+ -+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf) -+static inline __attribute__ ((__always_inline__)) fp_number_type * -+_fpmul_parts ( fp_number_type * a, -+ fp_number_type * b, -+ fp_number_type * tmp) -+{ -+ fractype low = 0; -+ fractype high = 0; -+ -+ if (isnan (a)) -+ { -+ a->sign = a->sign != b->sign; -+ return a; -+ } -+ if (isnan (b)) -+ { -+ b->sign = a->sign != b->sign; -+ return b; -+ } -+ if (isinf (a)) -+ { -+ if (iszero (b)) -+ return nan (); -+ a->sign = a->sign != b->sign; -+ return a; -+ } -+ if (isinf (b)) -+ { -+ if (iszero (a)) -+ { -+ return nan (); -+ } -+ b->sign = a->sign != b->sign; -+ return b; -+ } -+ if (iszero (a)) -+ { -+ a->sign = a->sign != b->sign; -+ return a; -+ } -+ if (iszero (b)) -+ { -+ b->sign = a->sign != b->sign; -+ return b; -+ } -+ -+ /* Calculate the mantissa by multiplying both numbers to get a -+ twice-as-wide number. */ -+ { -+#if defined(NO_DI_MODE) || defined(TFLOAT) -+ { -+ fractype x = a->fraction.ll; -+ fractype ylow = b->fraction.ll; -+ fractype yhigh = 0; -+ int bit; -+ -+ /* ??? This does multiplies one bit at a time. Optimize. */ -+ for (bit = 0; bit < FRAC_NBITS; bit++) -+ { -+ int carry; -+ -+ if (x & 1) -+ { -+ carry = (low += ylow) < ylow; -+ high += yhigh + carry; -+ } -+ yhigh <<= 1; -+ if (ylow & FRACHIGH) -+ { -+ yhigh |= 1; -+ } -+ ylow <<= 1; -+ x >>= 1; -+ } -+ } -+#elif defined(FLOAT) -+ /* Multiplying two USIs to get a UDI, we're safe. */ -+ { -+ UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll; -+ -+ high = answer >> BITS_PER_SI; -+ low = answer; -+ } -+#else -+ /* fractype is DImode, but we need the result to be twice as wide. -+ Assuming a widening multiply from DImode to TImode is not -+ available, build one by hand. */ -+ { -+ USItype nl = a->fraction.ll; -+ USItype nh = a->fraction.ll >> BITS_PER_SI; -+ USItype ml = b->fraction.ll; -+ USItype mh = b->fraction.ll >> BITS_PER_SI; -+ UDItype pp_ll = (UDItype) ml * nl; -+ UDItype pp_hl = (UDItype) mh * nl; -+ UDItype pp_lh = (UDItype) ml * nh; -+ UDItype pp_hh = (UDItype) mh * nh; -+ UDItype res2 = 0; -+ UDItype res0 = 0; -+ UDItype ps_hh__ = pp_hl + pp_lh; -+ if (ps_hh__ < pp_hl) -+ res2 += (UDItype)1 << BITS_PER_SI; -+ pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI; -+ res0 = pp_ll + pp_hl; -+ if (res0 < pp_ll) -+ res2++; -+ res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh; -+ high = res2; -+ low = res0; -+ } -+#endif -+ } -+ -+ tmp->normal_exp = a->normal_exp + b->normal_exp -+ + FRAC_NBITS - (FRACBITS + NGARDS); -+ tmp->sign = a->sign != b->sign; -+ while (high >= IMPLICIT_2) -+ { -+ tmp->normal_exp++; -+ if (high & 1) -+ { -+ low >>= 1; -+ low |= FRACHIGH; -+ } -+ high >>= 1; -+ } -+ while (high < IMPLICIT_1) -+ { -+ tmp->normal_exp--; -+ -+ high <<= 1; -+ if (low & FRACHIGH) -+ high |= 1; -+ low <<= 1; -+ } -+ /* rounding is tricky. if we only round if it won't make us round later. */ -+#if 0 -+ if (low & FRACHIGH2) -+ { -+ if (((high & GARDMASK) != GARDMSB) -+ && (((high + 1) & GARDMASK) == GARDMSB)) -+ { -+ /* don't round, it gets done again later. */ -+ } -+ else -+ { -+ high++; -+ } -+ } -+#endif -+ if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB) -+ { -+ if (high & (1 << NGARDS)) -+ { -+ /* half way, so round to even */ -+ high += GARDROUND + 1; -+ } -+ else if (low) -+ { -+ /* but we really weren't half way */ -+ high += GARDROUND + 1; -+ } -+ } -+ tmp->fraction.ll = high; -+ tmp->class = CLASS_NUMBER; -+ return tmp; -+} -+ -+FLO_type -+multiply (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type tmp; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ res = _fpmul_parts (&a, &b, &tmp); -+ -+ return pack_d (res); -+} -+#endif /* L_mul_sf || L_mul_df */ -+ -+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf) -+static inline __attribute__ ((__always_inline__)) fp_number_type * -+_fpdiv_parts (fp_number_type * a, -+ fp_number_type * b) -+{ -+ fractype bit; -+ fractype numerator; -+ fractype denominator; -+ fractype quotient; -+ -+ if (isnan (a)) -+ { -+ return a; -+ } -+ if (isnan (b)) -+ { -+ return b; -+ } -+ -+ a->sign = a->sign ^ b->sign; -+ -+ if (isinf (a) || iszero (a)) -+ { -+ if (a->class == b->class) -+ return nan (); -+ return a; -+ } -+ -+ if (isinf (b)) -+ { -+ a->fraction.ll = 0; -+ a->normal_exp = 0; -+ return a; -+ } -+ if (iszero (b)) -+ { -+ a->class = CLASS_INFINITY; -+ return a; -+ } -+ -+ /* Calculate the mantissa by multiplying both 64bit numbers to get a -+ 128 bit number */ -+ { -+ /* quotient = -+ ( numerator / denominator) * 2^(numerator exponent - denominator exponent) -+ */ -+ -+ a->normal_exp = a->normal_exp - b->normal_exp; -+ numerator = a->fraction.ll; -+ denominator = b->fraction.ll; -+ -+ if (numerator < denominator) -+ { -+ /* Fraction will be less than 1.0 */ -+ numerator *= 2; -+ a->normal_exp--; -+ } -+ bit = IMPLICIT_1; -+ quotient = 0; -+ /* ??? Does divide one bit at a time. Optimize. */ -+ while (bit) -+ { -+ if (numerator >= denominator) -+ { -+ quotient |= bit; -+ numerator -= denominator; -+ } -+ bit >>= 1; -+ numerator *= 2; -+ } -+ -+ if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB) -+ { -+ if (quotient & (1 << NGARDS)) -+ { -+ /* half way, so round to even */ -+ quotient += GARDROUND + 1; -+ } -+ else if (numerator) -+ { -+ /* but we really weren't half way, more bits exist */ -+ quotient += GARDROUND + 1; -+ } -+ } -+ -+ a->fraction.ll = quotient; -+ return (a); -+ } -+} -+ -+FLO_type -+divide (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ fp_number_type *res; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ res = _fpdiv_parts (&a, &b); -+ -+ return pack_d (res); -+} -+#endif /* L_div_sf || L_div_df */ -+ -+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \ -+ || defined(L_fpcmp_parts_tf) -+/* according to the demo, fpcmp returns a comparison with 0... thus -+ a -1 -+ a==b -> 0 -+ a>b -> +1 -+ */ -+ -+int -+__fpcmp_parts (fp_number_type * a, fp_number_type * b) -+{ -+#if 0 -+ /* either nan -> unordered. Must be checked outside of this routine. */ -+ if (isnan (a) && isnan (b)) -+ { -+ return 1; /* still unordered! */ -+ } -+#endif -+ -+ if (isnan (a) || isnan (b)) -+ { -+ return 1; /* how to indicate unordered compare? */ -+ } -+ if (isinf (a) && isinf (b)) -+ { -+ /* +inf > -inf, but +inf != +inf */ -+ /* b \a| +inf(0)| -inf(1) -+ ______\+--------+-------- -+ +inf(0)| a==b(0)| ab(1) | a==b(0) -+ -------+--------+-------- -+ So since unordered must be nonzero, just line up the columns... -+ */ -+ return b->sign - a->sign; -+ } -+ /* but not both... */ -+ if (isinf (a)) -+ { -+ return a->sign ? -1 : 1; -+ } -+ if (isinf (b)) -+ { -+ return b->sign ? 1 : -1; -+ } -+ if (iszero (a) && iszero (b)) -+ { -+ return 0; -+ } -+ if (iszero (a)) -+ { -+ return b->sign ? 1 : -1; -+ } -+ if (iszero (b)) -+ { -+ return a->sign ? -1 : 1; -+ } -+ /* now both are "normal". */ -+ if (a->sign != b->sign) -+ { -+ /* opposite signs */ -+ return a->sign ? -1 : 1; -+ } -+ /* same sign; exponents? */ -+ if (a->normal_exp > b->normal_exp) -+ { -+ return a->sign ? -1 : 1; -+ } -+ if (a->normal_exp < b->normal_exp) -+ { -+ return a->sign ? 1 : -1; -+ } -+ /* same exponents; check size. */ -+ if (a->fraction.ll > b->fraction.ll) -+ { -+ return a->sign ? -1 : 1; -+ } -+ if (a->fraction.ll < b->fraction.ll) -+ { -+ return a->sign ? 1 : -1; -+ } -+ /* after all that, they're equal. */ -+ return 0; -+} -+#endif -+ -+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf) -+CMPtype -+compare (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ return __fpcmp_parts (&a, &b); -+} -+#endif /* L_compare_sf || L_compare_df */ -+ -+#ifndef US_SOFTWARE_GOFAST -+ -+/* These should be optimized for their specific tasks someday. */ -+ -+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf) -+CMPtype -+_eq_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* false, truth == 0 */ -+ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_eq_sf || L_eq_df */ -+ -+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf) -+CMPtype -+_ne_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* true, truth != 0 */ -+ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_ne_sf || L_ne_df */ -+ -+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf) -+CMPtype -+_gt_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return -1; /* false, truth > 0 */ -+ -+ return __fpcmp_parts (&a, &b); -+} -+#endif /* L_gt_sf || L_gt_df */ -+ -+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf) -+CMPtype -+_ge_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return -1; /* false, truth >= 0 */ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_ge_sf || L_ge_df */ -+ -+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf) -+CMPtype -+_lt_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* false, truth < 0 */ -+ -+ return __fpcmp_parts (&a, &b); -+} -+#endif /* L_lt_sf || L_lt_df */ -+ -+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf) -+CMPtype -+_le_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ if (isnan (&a) || isnan (&b)) -+ return 1; /* false, truth <= 0 */ -+ -+ return __fpcmp_parts (&a, &b) ; -+} -+#endif /* L_le_sf || L_le_df */ -+ -+#endif /* ! US_SOFTWARE_GOFAST */ -+ -+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf) -+CMPtype -+_unord_f2 (FLO_type arg_a, FLO_type arg_b) -+{ -+ fp_number_type a; -+ fp_number_type b; -+ FLO_union_type au, bu; -+ -+ au.value = arg_a; -+ bu.value = arg_b; -+ -+ unpack_d (&au, &a); -+ unpack_d (&bu, &b); -+ -+ return (isnan (&a) || isnan (&b)); -+} -+#endif /* L_unord_sf || L_unord_df */ -+ -+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf) -+FLO_type -+si_to_float (SItype arg_a) -+{ -+ fp_number_type in; -+ -+ in.class = CLASS_NUMBER; -+ in.sign = arg_a < 0; -+ if (!arg_a) -+ { -+ in.class = CLASS_ZERO; -+ } -+ else -+ { -+ in.normal_exp = FRACBITS + NGARDS; -+ if (in.sign) -+ { -+ /* Special case for minint, since there is no +ve integer -+ representation for it */ -+ if (arg_a == (- MAX_SI_INT - 1)) -+ { -+ return (FLO_type)(- MAX_SI_INT - 1); -+ } -+ in.fraction.ll = (-arg_a); -+ } -+ else -+ in.fraction.ll = arg_a; -+ -+ while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS))) -+ { -+ in.fraction.ll <<= 1; -+ in.normal_exp -= 1; -+ } -+ } -+ return pack_d (&in); -+} -+#endif /* L_si_to_sf || L_si_to_df */ -+ -+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf) -+FLO_type -+usi_to_float (USItype arg_a) -+{ -+ fp_number_type in; -+ -+ in.sign = 0; -+ if (!arg_a) -+ { -+ in.class = CLASS_ZERO; -+ } -+ else -+ { -+ in.class = CLASS_NUMBER; -+ in.normal_exp = FRACBITS + NGARDS; -+ in.fraction.ll = arg_a; -+ -+ while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS))) -+ { -+ in.fraction.ll >>= 1; -+ in.normal_exp += 1; -+ } -+ while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS))) -+ { -+ in.fraction.ll <<= 1; -+ in.normal_exp -= 1; -+ } -+ } -+ return pack_d (&in); -+} -+#endif -+ -+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si) -+SItype -+float_to_si (FLO_type arg_a) -+{ -+ fp_number_type a; -+ SItype tmp; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &a); -+ -+ if (iszero (&a)) -+ return 0; -+ if (isnan (&a)) -+ return 0; -+ /* get reasonable MAX_SI_INT... */ -+ if (isinf (&a)) -+ return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT; -+ /* it is a number, but a small one */ -+ if (a.normal_exp < 0) -+ return 0; -+ if (a.normal_exp > BITS_PER_SI - 2) -+ return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT; -+ tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp); -+ return a.sign ? (-tmp) : (tmp); -+} -+#endif /* L_sf_to_si || L_df_to_si */ -+ -+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi) -+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi) -+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines, -+ we also define them for GOFAST because the ones in libgcc2.c have the -+ wrong names and I'd rather define these here and keep GOFAST CYG-LOC's -+ out of libgcc2.c. We can't define these here if not GOFAST because then -+ there'd be duplicate copies. */ -+ -+USItype -+float_to_usi (FLO_type arg_a) -+{ -+ fp_number_type a; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &a); -+ -+ if (iszero (&a)) -+ return 0; -+ if (isnan (&a)) -+ return 0; -+ /* it is a negative number */ -+ if (a.sign) -+ return 0; -+ /* get reasonable MAX_USI_INT... */ -+ if (isinf (&a)) -+ return MAX_USI_INT; -+ /* it is a number, but a small one */ -+ if (a.normal_exp < 0) -+ return 0; -+ if (a.normal_exp > BITS_PER_SI - 1) -+ return MAX_USI_INT; -+ else if (a.normal_exp > (FRACBITS + NGARDS)) -+ return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS)); -+ else -+ return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp); -+} -+#endif /* US_SOFTWARE_GOFAST */ -+#endif /* L_sf_to_usi || L_df_to_usi */ -+ -+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf) -+FLO_type -+negate (FLO_type arg_a) -+{ -+ fp_number_type a; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &a); -+ -+ flip_sign (&a); -+ return pack_d (&a); -+} -+#endif /* L_negate_sf || L_negate_df */ -+ -+#ifdef FLOAT -+ -+#if defined(L_make_sf) -+SFtype -+__make_fp(fp_class_type class, -+ unsigned int sign, -+ int exp, -+ USItype frac) -+{ -+ fp_number_type in; -+ -+ in.class = class; -+ in.sign = sign; -+ in.normal_exp = exp; -+ in.fraction.ll = frac; -+ return pack_d (&in); -+} -+#endif /* L_make_sf */ -+ -+#ifndef FLOAT_ONLY -+ -+/* This enables one to build an fp library that supports float but not double. -+ Otherwise, we would get an undefined reference to __make_dp. -+ This is needed for some 8-bit ports that can't handle well values that -+ are 8-bytes in size, so we just don't support double for them at all. */ -+ -+#if defined(L_sf_to_df) -+DFtype -+sf_to_df (SFtype arg_a) -+{ -+ fp_number_type in; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ return __make_dp (in.class, in.sign, in.normal_exp, -+ ((UDItype) in.fraction.ll) << F_D_BITOFF); -+} -+#endif /* L_sf_to_df */ -+ -+#if defined(L_sf_to_tf) && defined(TMODES) -+TFtype -+sf_to_tf (SFtype arg_a) -+{ -+ fp_number_type in; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ return __make_tp (in.class, in.sign, in.normal_exp, -+ ((UTItype) in.fraction.ll) << F_T_BITOFF); -+} -+#endif /* L_sf_to_df */ -+ -+#endif /* ! FLOAT_ONLY */ -+#endif /* FLOAT */ -+ -+#ifndef FLOAT -+ -+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype); -+ -+#if defined(L_make_df) -+DFtype -+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac) -+{ -+ fp_number_type in; -+ -+ in.class = class; -+ in.sign = sign; -+ in.normal_exp = exp; -+ in.fraction.ll = frac; -+ return pack_d (&in); -+} -+#endif /* L_make_df */ -+ -+#if defined(L_df_to_sf) -+SFtype -+df_to_sf (DFtype arg_a) -+{ -+ fp_number_type in; -+ USItype sffrac; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ sffrac = in.fraction.ll >> F_D_BITOFF; -+ -+ /* We set the lowest guard bit in SFFRAC if we discarded any non -+ zero bits. */ -+ if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0) -+ sffrac |= 1; -+ -+ return __make_fp (in.class, in.sign, in.normal_exp, sffrac); -+} -+#endif /* L_df_to_sf */ -+ -+#if defined(L_df_to_tf) && defined(TMODES) \ -+ && !defined(FLOAT) && !defined(TFLOAT) -+TFtype -+df_to_tf (DFtype arg_a) -+{ -+ fp_number_type in; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ return __make_tp (in.class, in.sign, in.normal_exp, -+ ((UTItype) in.fraction.ll) << D_T_BITOFF); -+} -+#endif /* L_sf_to_df */ -+ -+#ifdef TFLOAT -+#if defined(L_make_tf) -+TFtype -+__make_tp(fp_class_type class, -+ unsigned int sign, -+ int exp, -+ UTItype frac) -+{ -+ fp_number_type in; -+ -+ in.class = class; -+ in.sign = sign; -+ in.normal_exp = exp; -+ in.fraction.ll = frac; -+ return pack_d (&in); -+} -+#endif /* L_make_tf */ -+ -+#if defined(L_tf_to_df) -+DFtype -+tf_to_df (TFtype arg_a) -+{ -+ fp_number_type in; -+ UDItype sffrac; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ sffrac = in.fraction.ll >> D_T_BITOFF; -+ -+ /* We set the lowest guard bit in SFFRAC if we discarded any non -+ zero bits. */ -+ if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0) -+ sffrac |= 1; -+ -+ return __make_dp (in.class, in.sign, in.normal_exp, sffrac); -+} -+#endif /* L_tf_to_df */ -+ -+#if defined(L_tf_to_sf) -+SFtype -+tf_to_sf (TFtype arg_a) -+{ -+ fp_number_type in; -+ USItype sffrac; -+ FLO_union_type au; -+ -+ au.value = arg_a; -+ unpack_d (&au, &in); -+ -+ sffrac = in.fraction.ll >> F_T_BITOFF; -+ -+ /* We set the lowest guard bit in SFFRAC if we discarded any non -+ zero bits. */ -+ if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0) -+ sffrac |= 1; -+ -+ return __make_fp (in.class, in.sign, in.normal_exp, sffrac); -+} -+#endif /* L_tf_to_sf */ -+#endif /* TFLOAT */ -+ -+#endif /* ! FLOAT */ -+#endif /* !EXTENDED_FLOAT_STUBS */ ---- gcc-3.4.3/gcc/config/nios2/nios2-protos.h -+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-protos.h -@@ -0,0 +1,70 @@ -+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version. -+ Copyright (C) 2003 Altera -+ Contributed by Jonah Graham (jgraham@altera.com). -+ -+This file is part of GNU CC. -+ -+GNU CC 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. -+ -+GNU CC 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 GNU CC; see the file COPYING. If not, write to -+the Free Software Foundation, 59 Temple Place - Suite 330, -+Boston, MA 02111-1307, USA. */ -+ -+extern void dump_frame_size (FILE *); -+extern HOST_WIDE_INT compute_frame_size (void); -+extern int nios2_initial_elimination_offset (int, int); -+extern void override_options (void); -+extern void optimization_options (int, int); -+extern int nios2_can_use_return_insn (void); -+extern void expand_prologue (void); -+extern void expand_epilogue (bool); -+extern void function_profiler (FILE *, int); -+ -+ -+#ifdef RTX_CODE -+extern int nios2_legitimate_address (rtx, enum machine_mode, int); -+extern void nios2_print_operand (FILE *, rtx, int); -+extern void nios2_print_operand_address (FILE *, rtx); -+ -+extern int nios2_emit_move_sequence (rtx *, enum machine_mode); -+extern int nios2_emit_expensive_div (rtx *, enum machine_mode); -+ -+extern void gen_int_relational (enum rtx_code, rtx, rtx, rtx, rtx); -+extern void gen_conditional_move (rtx *, enum machine_mode); -+extern const char *asm_output_opcode (FILE *, const char *); -+ -+/* predicates */ -+extern int arith_operand (rtx, enum machine_mode); -+extern int uns_arith_operand (rtx, enum machine_mode); -+extern int logical_operand (rtx, enum machine_mode); -+extern int shift_operand (rtx, enum machine_mode); -+extern int reg_or_0_operand (rtx, enum machine_mode); -+extern int equality_op (rtx, enum machine_mode); -+extern int custom_insn_opcode (rtx, enum machine_mode); -+extern int rdwrctl_operand (rtx, enum machine_mode); -+ -+# ifdef HAVE_MACHINE_MODES -+# if defined TREE_CODE -+extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree, int); -+extern rtx function_arg (const CUMULATIVE_ARGS *, enum machine_mode, tree, int); -+extern int function_arg_partial_nregs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int); -+extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int); -+extern int nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int); -+ -+# endif /* TREE_CODE */ -+# endif /* HAVE_MACHINE_MODES */ -+#endif -+ -+#ifdef TREE_CODE -+extern int nios2_return_in_memory (tree); -+ -+#endif /* TREE_CODE */ ---- gcc-3.4.3/gcc/config/nios2/nios2.c -+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.c -@@ -0,0 +1,2853 @@ -+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version. -+ Copyright (C) 2003 Altera -+ Contributed by Jonah Graham (jgraham@altera.com). -+ -+This file is part of GNU CC. -+ -+GNU CC 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. -+ -+GNU CC 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 GNU CC; see the file COPYING. If not, write to -+the Free Software Foundation, 59 Temple Place - Suite 330, -+Boston, MA 02111-1307, USA. */ -+ -+ -+#include -+#include "config.h" -+#include "system.h" -+#include "coretypes.h" -+#include "tm.h" -+#include "rtl.h" -+#include "tree.h" -+#include "tm_p.h" -+#include "regs.h" -+#include "hard-reg-set.h" -+#include "real.h" -+#include "insn-config.h" -+#include "conditions.h" -+#include "output.h" -+#include "insn-attr.h" -+#include "flags.h" -+#include "recog.h" -+#include "expr.h" -+#include "toplev.h" -+#include "basic-block.h" -+#include "function.h" -+#include "ggc.h" -+#include "reload.h" -+#include "debug.h" -+#include "optabs.h" -+#include "target.h" -+#include "target-def.h" -+ -+/* local prototypes */ -+static bool nios2_rtx_costs (rtx, int, int, int *); -+ -+static void nios2_asm_function_prologue (FILE *, HOST_WIDE_INT); -+static int nios2_use_dfa_pipeline_interface (void); -+static int nios2_issue_rate (void); -+static struct machine_function *nios2_init_machine_status (void); -+static bool nios2_in_small_data_p (tree); -+static rtx save_reg (int, HOST_WIDE_INT, rtx); -+static rtx restore_reg (int, HOST_WIDE_INT); -+static unsigned int nios2_section_type_flags (tree, const char *, int); -+static void nios2_init_builtins (void); -+static rtx nios2_expand_builtin (tree, rtx, rtx, enum machine_mode, int); -+static bool nios2_function_ok_for_sibcall (tree, tree); -+static void nios2_encode_section_info (tree, rtx, int); -+ -+/* Initialize the GCC target structure. */ -+#undef TARGET_ASM_FUNCTION_PROLOGUE -+#define TARGET_ASM_FUNCTION_PROLOGUE nios2_asm_function_prologue -+ -+#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE -+#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE \ -+ nios2_use_dfa_pipeline_interface -+#undef TARGET_SCHED_ISSUE_RATE -+#define TARGET_SCHED_ISSUE_RATE nios2_issue_rate -+#undef TARGET_IN_SMALL_DATA_P -+#define TARGET_IN_SMALL_DATA_P nios2_in_small_data_p -+#undef TARGET_ENCODE_SECTION_INFO -+#define TARGET_ENCODE_SECTION_INFO nios2_encode_section_info -+#undef TARGET_SECTION_TYPE_FLAGS -+#define TARGET_SECTION_TYPE_FLAGS nios2_section_type_flags -+ -+#undef TARGET_INIT_BUILTINS -+#define TARGET_INIT_BUILTINS nios2_init_builtins -+#undef TARGET_EXPAND_BUILTIN -+#define TARGET_EXPAND_BUILTIN nios2_expand_builtin -+ -+#undef TARGET_FUNCTION_OK_FOR_SIBCALL -+#define TARGET_FUNCTION_OK_FOR_SIBCALL nios2_function_ok_for_sibcall -+ -+#undef TARGET_RTX_COSTS -+#define TARGET_RTX_COSTS nios2_rtx_costs -+ -+ -+struct gcc_target targetm = TARGET_INITIALIZER; -+ -+ -+ -+/* Threshold for data being put into the small data/bss area, instead -+ of the normal data area (references to the small data/bss area take -+ 1 instruction, and use the global pointer, references to the normal -+ data area takes 2 instructions). */ -+unsigned HOST_WIDE_INT nios2_section_threshold = NIOS2_DEFAULT_GVALUE; -+ -+ -+/* Structure to be filled in by compute_frame_size with register -+ save masks, and offsets for the current function. */ -+ -+struct nios2_frame_info -+GTY (()) -+{ -+ long total_size; /* # bytes that the entire frame takes up */ -+ long var_size; /* # bytes that variables take up */ -+ long args_size; /* # bytes that outgoing arguments take up */ -+ int save_reg_size; /* # bytes needed to store gp regs */ -+ int save_reg_rounded; /* # bytes needed to store gp regs */ -+ long save_regs_offset; /* offset from new sp to store gp registers */ -+ int initialized; /* != 0 if frame size already calculated */ -+ int num_regs; /* number of gp registers saved */ -+}; -+ -+struct machine_function -+GTY (()) -+{ -+ -+ /* Current frame information, calculated by compute_frame_size. */ -+ struct nios2_frame_info frame; -+}; -+ -+ -+/*************************************** -+ * Section encodings -+ ***************************************/ -+ -+ -+ -+ -+ -+/*************************************** -+ * Stack Layout and Calling Conventions -+ ***************************************/ -+ -+ -+#define TOO_BIG_OFFSET(X) ((X) > ((1 << 15) - 1)) -+#define TEMP_REG_NUM 8 -+ -+static void -+nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED) -+{ -+ if (flag_verbose_asm || flag_debug_asm) -+ { -+ compute_frame_size (); -+ dump_frame_size (file); -+ } -+} -+ -+static rtx -+save_reg (int regno, HOST_WIDE_INT offset, rtx cfa_store_reg) -+{ -+ rtx insn, stack_slot; -+ -+ stack_slot = gen_rtx_PLUS (SImode, -+ cfa_store_reg, -+ GEN_INT (offset)); -+ -+ insn = emit_insn (gen_rtx_SET (SImode, -+ gen_rtx_MEM (SImode, stack_slot), -+ gen_rtx_REG (SImode, regno))); -+ -+ RTX_FRAME_RELATED_P (insn) = 1; -+ -+ return insn; -+} -+ -+static rtx -+restore_reg (int regno, HOST_WIDE_INT offset) -+{ -+ rtx insn, stack_slot; -+ -+ if (TOO_BIG_OFFSET (offset)) -+ { -+ stack_slot = gen_rtx_REG (SImode, TEMP_REG_NUM); -+ insn = emit_insn (gen_rtx_SET (SImode, -+ stack_slot, -+ GEN_INT (offset))); -+ -+ insn = emit_insn (gen_rtx_SET (SImode, -+ stack_slot, -+ gen_rtx_PLUS (SImode, -+ stack_slot, -+ stack_pointer_rtx))); -+ } -+ else -+ { -+ stack_slot = gen_rtx_PLUS (SImode, -+ stack_pointer_rtx, -+ GEN_INT (offset)); -+ } -+ -+ stack_slot = gen_rtx_MEM (SImode, stack_slot); -+ -+ insn = emit_move_insn (gen_rtx_REG (SImode, regno), stack_slot); -+ -+ return insn; -+} -+ -+ -+/* There are two possible paths for prologue expansion, -+- the first is if the total frame size is < 2^15-1. In that -+case all the immediates will fit into the 16-bit immediate -+fields. -+- the second is when the frame size is too big, in that -+case an additional temporary register is used, first -+as a cfa_temp to offset the sp, second as the cfa_store -+register. -+ -+See the comment above dwarf2out_frame_debug_expr in -+dwarf2out.c for more explanation of the "rules." -+ -+ -+Case 1: -+Rule # Example Insn Effect -+2 addi sp, sp, -total_frame_size cfa.reg=sp, cfa.offset=total_frame_size -+ cfa_store.reg=sp, cfa_store.offset=total_frame_size -+12 stw ra, offset(sp) -+12 stw r16, offset(sp) -+1 mov fp, sp -+ -+Case 2: -+Rule # Example Insn Effect -+6 movi r8, total_frame_size cfa_temp.reg=r8, cfa_temp.offset=total_frame_size -+2 sub sp, sp, r8 cfa.reg=sp, cfa.offset=total_frame_size -+ cfa_store.reg=sp, cfa_store.offset=total_frame_size -+5 add r8, r8, sp cfa_store.reg=r8, cfa_store.offset=0 -+12 stw ra, offset(r8) -+12 stw r16, offset(r8) -+1 mov fp, sp -+ -+*/ -+ -+void -+expand_prologue () -+{ -+ int i; -+ HOST_WIDE_INT total_frame_size; -+ int cfa_store_offset; -+ rtx insn; -+ rtx cfa_store_reg = 0; -+ -+ total_frame_size = compute_frame_size (); -+ -+ if (total_frame_size) -+ { -+ -+ if (TOO_BIG_OFFSET (total_frame_size)) -+ { -+ /* cfa_temp and cfa_store_reg are the same register, -+ cfa_store_reg overwrites cfa_temp */ -+ cfa_store_reg = gen_rtx_REG (SImode, TEMP_REG_NUM); -+ insn = emit_insn (gen_rtx_SET (SImode, -+ cfa_store_reg, -+ GEN_INT (total_frame_size))); -+ -+ RTX_FRAME_RELATED_P (insn) = 1; -+ -+ -+ insn = gen_rtx_SET (SImode, -+ stack_pointer_rtx, -+ gen_rtx_MINUS (SImode, -+ stack_pointer_rtx, -+ cfa_store_reg)); -+ -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ -+ -+ /* if there are no registers to save, I don't need to -+ create a cfa_store */ -+ if (cfun->machine->frame.save_reg_size) -+ { -+ insn = gen_rtx_SET (SImode, -+ cfa_store_reg, -+ gen_rtx_PLUS (SImode, -+ cfa_store_reg, -+ stack_pointer_rtx)); -+ -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ -+ cfa_store_offset -+ = total_frame_size -+ - (cfun->machine->frame.save_regs_offset -+ + cfun->machine->frame.save_reg_rounded); -+ } -+ else -+ { -+ insn = gen_rtx_SET (SImode, -+ stack_pointer_rtx, -+ gen_rtx_PLUS (SImode, -+ stack_pointer_rtx, -+ GEN_INT (-total_frame_size))); -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ -+ cfa_store_reg = stack_pointer_rtx; -+ cfa_store_offset -+ = cfun->machine->frame.save_regs_offset -+ + cfun->machine->frame.save_reg_rounded; -+ } -+ } -+ -+ if (MUST_SAVE_REGISTER (RA_REGNO)) -+ { -+ cfa_store_offset -= 4; -+ save_reg (RA_REGNO, cfa_store_offset, cfa_store_reg); -+ } -+ if (MUST_SAVE_REGISTER (FP_REGNO)) -+ { -+ cfa_store_offset -= 4; -+ save_reg (FP_REGNO, cfa_store_offset, cfa_store_reg); -+ } -+ -+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) -+ { -+ if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO) -+ { -+ cfa_store_offset -= 4; -+ save_reg (i, cfa_store_offset, cfa_store_reg); -+ } -+ } -+ -+ if (frame_pointer_needed) -+ { -+ insn = emit_insn (gen_rtx_SET (SImode, -+ gen_rtx_REG (SImode, FP_REGNO), -+ gen_rtx_REG (SImode, SP_REGNO))); -+ -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ -+ /* If we are profiling, make sure no instructions are scheduled before -+ the call to mcount. */ -+ if (current_function_profile) -+ emit_insn (gen_blockage ()); -+} -+ -+void -+expand_epilogue (bool sibcall_p) -+{ -+ rtx insn; -+ int i; -+ HOST_WIDE_INT total_frame_size; -+ int register_store_offset; -+ -+ total_frame_size = compute_frame_size (); -+ -+ if (!sibcall_p && nios2_can_use_return_insn ()) -+ { -+ insn = emit_jump_insn (gen_return ()); -+ return; -+ } -+ -+ emit_insn (gen_blockage ()); -+ -+ register_store_offset = -+ cfun->machine->frame.save_regs_offset + -+ cfun->machine->frame.save_reg_rounded; -+ -+ if (MUST_SAVE_REGISTER (RA_REGNO)) -+ { -+ register_store_offset -= 4; -+ restore_reg (RA_REGNO, register_store_offset); -+ } -+ -+ if (MUST_SAVE_REGISTER (FP_REGNO)) -+ { -+ register_store_offset -= 4; -+ restore_reg (FP_REGNO, register_store_offset); -+ } -+ -+ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) -+ { -+ if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO) -+ { -+ register_store_offset -= 4; -+ restore_reg (i, register_store_offset); -+ } -+ } -+ -+ if (total_frame_size) -+ { -+ rtx sp_adjust; -+ -+ if (TOO_BIG_OFFSET (total_frame_size)) -+ { -+ sp_adjust = gen_rtx_REG (SImode, TEMP_REG_NUM); -+ insn = emit_insn (gen_rtx_SET (SImode, -+ sp_adjust, -+ GEN_INT (total_frame_size))); -+ -+ } -+ else -+ { -+ sp_adjust = GEN_INT (total_frame_size); -+ } -+ -+ insn = gen_rtx_SET (SImode, -+ stack_pointer_rtx, -+ gen_rtx_PLUS (SImode, -+ stack_pointer_rtx, -+ sp_adjust)); -+ insn = emit_insn (insn); -+ } -+ -+ -+ if (!sibcall_p) -+ { -+ insn = emit_jump_insn (gen_return_from_epilogue (gen_rtx (REG, Pmode, -+ RA_REGNO))); -+ } -+} -+ -+ -+bool -+nios2_function_ok_for_sibcall (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED) -+{ -+ return true; -+} -+ -+ -+ -+ -+ -+/* ----------------------- * -+ * Profiling -+ * ----------------------- */ -+ -+void -+function_profiler (FILE *file, int labelno) -+{ -+ fprintf (file, "\t%s mcount begin, label: .LP%d\n", -+ ASM_COMMENT_START, labelno); -+ fprintf (file, "\tnextpc\tr8\n"); -+ fprintf (file, "\tmov\tr9, ra\n"); -+ fprintf (file, "\tmovhi\tr10, %%hiadj(.LP%d)\n", labelno); -+ fprintf (file, "\taddi\tr10, r10, %%lo(.LP%d)\n", labelno); -+ fprintf (file, "\tcall\tmcount\n"); -+ fprintf (file, "\tmov\tra, r9\n"); -+ fprintf (file, "\t%s mcount end\n", ASM_COMMENT_START); -+} -+ -+ -+/*************************************** -+ * Stack Layout -+ ***************************************/ -+ -+ -+void -+dump_frame_size (FILE *file) -+{ -+ fprintf (file, "\t%s Current Frame Info\n", ASM_COMMENT_START); -+ -+ fprintf (file, "\t%s total_size = %ld\n", ASM_COMMENT_START, -+ cfun->machine->frame.total_size); -+ fprintf (file, "\t%s var_size = %ld\n", ASM_COMMENT_START, -+ cfun->machine->frame.var_size); -+ fprintf (file, "\t%s args_size = %ld\n", ASM_COMMENT_START, -+ cfun->machine->frame.args_size); -+ fprintf (file, "\t%s save_reg_size = %d\n", ASM_COMMENT_START, -+ cfun->machine->frame.save_reg_size); -+ fprintf (file, "\t%s save_reg_rounded = %d\n", ASM_COMMENT_START, -+ cfun->machine->frame.save_reg_rounded); -+ fprintf (file, "\t%s initialized = %d\n", ASM_COMMENT_START, -+ cfun->machine->frame.initialized); -+ fprintf (file, "\t%s num_regs = %d\n", ASM_COMMENT_START, -+ cfun->machine->frame.num_regs); -+ fprintf (file, "\t%s save_regs_offset = %ld\n", ASM_COMMENT_START, -+ cfun->machine->frame.save_regs_offset); -+ fprintf (file, "\t%s current_function_is_leaf = %d\n", ASM_COMMENT_START, -+ current_function_is_leaf); -+ fprintf (file, "\t%s frame_pointer_needed = %d\n", ASM_COMMENT_START, -+ frame_pointer_needed); -+ fprintf (file, "\t%s pretend_args_size = %d\n", ASM_COMMENT_START, -+ current_function_pretend_args_size); -+ -+} -+ -+ -+/* Return the bytes needed to compute the frame pointer from the current -+ stack pointer. -+*/ -+ -+HOST_WIDE_INT -+compute_frame_size () -+{ -+ unsigned int regno; -+ HOST_WIDE_INT var_size; /* # of var. bytes allocated */ -+ HOST_WIDE_INT total_size; /* # bytes that the entire frame takes up */ -+ HOST_WIDE_INT save_reg_size; /* # bytes needed to store callee save regs */ -+ HOST_WIDE_INT save_reg_rounded; -+ /* # bytes needed to store callee save regs (rounded) */ -+ HOST_WIDE_INT out_args_size; /* # bytes needed for outgoing args */ -+ -+ save_reg_size = 0; -+ var_size = STACK_ALIGN (get_frame_size ()); -+ out_args_size = STACK_ALIGN (current_function_outgoing_args_size); -+ -+ total_size = var_size + out_args_size; -+ -+ /* Calculate space needed for gp registers. */ -+ for (regno = 0; regno <= FIRST_PSEUDO_REGISTER; regno++) -+ { -+ if (MUST_SAVE_REGISTER (regno)) -+ { -+ save_reg_size += 4; -+ } -+ } -+ -+ save_reg_rounded = STACK_ALIGN (save_reg_size); -+ total_size += save_reg_rounded; -+ -+ total_size += STACK_ALIGN (current_function_pretend_args_size); -+ -+ /* Save other computed information. */ -+ cfun->machine->frame.total_size = total_size; -+ cfun->machine->frame.var_size = var_size; -+ cfun->machine->frame.args_size = current_function_outgoing_args_size; -+ cfun->machine->frame.save_reg_size = save_reg_size; -+ cfun->machine->frame.save_reg_rounded = save_reg_rounded; -+ cfun->machine->frame.initialized = reload_completed; -+ cfun->machine->frame.num_regs = save_reg_size / UNITS_PER_WORD; -+ -+ cfun->machine->frame.save_regs_offset -+ = save_reg_rounded ? current_function_outgoing_args_size + var_size : 0; -+ -+ return total_size; -+} -+ -+ -+int -+nios2_initial_elimination_offset (int from, int to ATTRIBUTE_UNUSED) -+{ -+ int offset; -+ -+ /* Set OFFSET to the offset from the stack pointer. */ -+ switch (from) -+ { -+ case FRAME_POINTER_REGNUM: -+ offset = 0; -+ break; -+ -+ case ARG_POINTER_REGNUM: -+ compute_frame_size (); -+ offset = cfun->machine->frame.total_size; -+ offset -= current_function_pretend_args_size; -+ break; -+ -+ case RETURN_ADDRESS_POINTER_REGNUM: -+ compute_frame_size (); -+ /* since the return address is always the first of the -+ saved registers, return the offset to the beginning -+ of the saved registers block */ -+ offset = cfun->machine->frame.save_regs_offset; -+ break; -+ -+ default: -+ abort (); -+ } -+ -+ return offset; -+} -+ -+/* Return nonzero if this function is known to have a null epilogue. -+ This allows the optimizer to omit jumps to jumps if no stack -+ was created. */ -+int -+nios2_can_use_return_insn () -+{ -+ if (!reload_completed) -+ return 0; -+ -+ if (regs_ever_live[RA_REGNO] || current_function_profile) -+ return 0; -+ -+ if (cfun->machine->frame.initialized) -+ return cfun->machine->frame.total_size == 0; -+ -+ return compute_frame_size () == 0; -+} -+ -+ -+ -+ -+ -+/*************************************** -+ * -+ ***************************************/ -+ -+const char *nios2_sys_nosys_string; /* for -msys=nosys */ -+const char *nios2_sys_lib_string; /* for -msys-lib= */ -+const char *nios2_sys_crt0_string; /* for -msys-crt0= */ -+ -+void -+override_options () -+{ -+ /* Function to allocate machine-dependent function status. */ -+ init_machine_status = &nios2_init_machine_status; -+ -+ nios2_section_threshold -+ = g_switch_set ? g_switch_value : NIOS2_DEFAULT_GVALUE; -+ -+ if (nios2_sys_nosys_string && *nios2_sys_nosys_string) -+ { -+ error ("invalid option '-msys=nosys%s'", nios2_sys_nosys_string); -+ } -+ -+ /* If we don't have mul, we don't have mulx either! */ -+ if (!TARGET_HAS_MUL && TARGET_HAS_MULX) -+ { -+ target_flags &= ~HAS_MULX_FLAG; -+ } -+ -+} -+ -+void -+optimization_options (int level, int size) -+{ -+ if (level || size) -+ { -+ target_flags |= INLINE_MEMCPY_FLAG; -+ } -+ -+ if (level >= 3 && !size) -+ { -+ target_flags |= FAST_SW_DIV_FLAG; -+ } -+} -+ -+/* Allocate a chunk of memory for per-function machine-dependent data. */ -+static struct machine_function * -+nios2_init_machine_status () -+{ -+ return ((struct machine_function *) -+ ggc_alloc_cleared (sizeof (struct machine_function))); -+} -+ -+ -+ -+/***************** -+ * Describing Relative Costs of Operations -+ *****************/ -+ -+/* Compute a (partial) cost for rtx X. Return true if the complete -+ cost has been computed, and false if subexpressions should be -+ scanned. In either case, *TOTAL contains the cost result. */ -+ -+ -+ -+static bool -+nios2_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total) -+{ -+ switch (code) -+ { -+ case CONST_INT: -+ if (INTVAL (x) == 0) -+ { -+ *total = COSTS_N_INSNS (0); -+ return true; -+ } -+ else if (SMALL_INT (INTVAL (x)) -+ || SMALL_INT_UNSIGNED (INTVAL (x)) -+ || UPPER16_INT (INTVAL (x))) -+ { -+ *total = COSTS_N_INSNS (2); -+ return true; -+ } -+ else -+ { -+ *total = COSTS_N_INSNS (4); -+ return true; -+ } -+ -+ case LABEL_REF: -+ case SYMBOL_REF: -+ /* ??? gp relative stuff will fit in here */ -+ /* fall through */ -+ case CONST: -+ case CONST_DOUBLE: -+ { -+ *total = COSTS_N_INSNS (4); -+ return true; -+ } -+ -+ case MULT: -+ { -+ *total = COSTS_N_INSNS (1); -+ return false; -+ } -+ case SIGN_EXTEND: -+ { -+ *total = COSTS_N_INSNS (3); -+ return false; -+ } -+ case ZERO_EXTEND: -+ { -+ *total = COSTS_N_INSNS (1); -+ return false; -+ } -+ -+ default: -+ return false; -+ } -+} -+ -+ -+/*************************************** -+ * INSTRUCTION SUPPORT -+ * -+ * These functions are used within the Machine Description to -+ * handle common or complicated output and expansions from -+ * instructions. -+ ***************************************/ -+ -+int -+nios2_emit_move_sequence (rtx *operands, enum machine_mode mode) -+{ -+ rtx to = operands[0]; -+ rtx from = operands[1]; -+ -+ if (!register_operand (to, mode) && !reg_or_0_operand (from, mode)) -+ { -+ if (no_new_pseudos) -+ internal_error ("Trying to force_reg no_new_pseudos == 1"); -+ from = copy_to_mode_reg (mode, from); -+ } -+ -+ operands[0] = to; -+ operands[1] = from; -+ return 0; -+} -+ -+/* Divide Support */ -+ -+/* -+ If -O3 is used, we want to output a table lookup for -+ divides between small numbers (both num and den >= 0 -+ and < 0x10). The overhead of this method in the worse -+ case is 40 bytes in the text section (10 insns) and -+ 256 bytes in the data section. Additional divides do -+ not incur additional penalties in the data section. -+ -+ Code speed is improved for small divides by about 5x -+ when using this method in the worse case (~9 cycles -+ vs ~45). And in the worse case divides not within the -+ table are penalized by about 10% (~5 cycles vs ~45). -+ However in the typical case the penalty is not as bad -+ because doing the long divide in only 45 cycles is -+ quite optimistic. -+ -+ ??? It would be nice to have some benchmarks other -+ than Dhrystone to back this up. -+ -+ This bit of expansion is to create this instruction -+ sequence as rtl. -+ or $8, $4, $5 -+ slli $9, $4, 4 -+ cmpgeui $3, $8, 16 -+ beq $3, $0, .L3 -+ or $10, $9, $5 -+ add $12, $11, divide_table -+ ldbu $2, 0($12) -+ br .L1 -+.L3: -+ call slow_div -+.L1: -+# continue here with result in $2 -+ -+ ??? Ideally I would like the emit libcall block to contain -+ all of this code, but I don't know how to do that. What it -+ means is that if the divide can be eliminated, it may not -+ completely disappear. -+ -+ ??? The __divsi3_table label should ideally be moved out -+ of this block and into a global. If it is placed into the -+ sdata section we can save even more cycles by doing things -+ gp relative. -+*/ -+int -+nios2_emit_expensive_div (rtx *operands, enum machine_mode mode) -+{ -+ rtx or_result, shift_left_result; -+ rtx lookup_value; -+ rtx lab1, lab3; -+ rtx insns; -+ rtx libfunc; -+ rtx final_result; -+ rtx tmp; -+ -+ /* it may look a little generic, but only SImode -+ is supported for now */ -+ if (mode != SImode) -+ abort (); -+ -+ libfunc = sdiv_optab->handlers[(int) SImode].libfunc; -+ -+ -+ -+ lab1 = gen_label_rtx (); -+ lab3 = gen_label_rtx (); -+ -+ or_result = expand_simple_binop (SImode, IOR, -+ operands[1], operands[2], -+ 0, 0, OPTAB_LIB_WIDEN); -+ -+ emit_cmp_and_jump_insns (or_result, GEN_INT (15), GTU, 0, -+ GET_MODE (or_result), 0, lab3); -+ JUMP_LABEL (get_last_insn ()) = lab3; -+ -+ shift_left_result = expand_simple_binop (SImode, ASHIFT, -+ operands[1], GEN_INT (4), -+ 0, 0, OPTAB_LIB_WIDEN); -+ -+ lookup_value = expand_simple_binop (SImode, IOR, -+ shift_left_result, operands[2], -+ 0, 0, OPTAB_LIB_WIDEN); -+ -+ convert_move (operands[0], -+ gen_rtx (MEM, QImode, -+ gen_rtx (PLUS, SImode, -+ lookup_value, -+ gen_rtx_SYMBOL_REF (SImode, "__divsi3_table"))), -+ 1); -+ -+ -+ tmp = emit_jump_insn (gen_jump (lab1)); -+ JUMP_LABEL (tmp) = lab1; -+ emit_barrier (); -+ -+ emit_label (lab3); -+ LABEL_NUSES (lab3) = 1; -+ -+ start_sequence (); -+ final_result = emit_library_call_value (libfunc, NULL_RTX, -+ LCT_CONST, SImode, 2, -+ operands[1], SImode, -+ operands[2], SImode); -+ -+ -+ insns = get_insns (); -+ end_sequence (); -+ emit_libcall_block (insns, operands[0], final_result, -+ gen_rtx (DIV, SImode, operands[1], operands[2])); -+ -+ emit_label (lab1); -+ LABEL_NUSES (lab1) = 1; -+ return 1; -+} -+ -+/* Branches/Compares */ -+ -+/* the way of handling branches/compares -+ in gcc is heavily borrowed from MIPS */ -+ -+enum internal_test -+{ -+ ITEST_EQ, -+ ITEST_NE, -+ ITEST_GT, -+ ITEST_GE, -+ ITEST_LT, -+ ITEST_LE, -+ ITEST_GTU, -+ ITEST_GEU, -+ ITEST_LTU, -+ ITEST_LEU, -+ ITEST_MAX -+}; -+ -+static enum internal_test map_test_to_internal_test (enum rtx_code); -+ -+/* Cached operands, and operator to compare for use in set/branch/trap -+ on condition codes. */ -+rtx branch_cmp[2]; -+enum cmp_type branch_type; -+ -+/* Make normal rtx_code into something we can index from an array */ -+ -+static enum internal_test -+map_test_to_internal_test (enum rtx_code test_code) -+{ -+ enum internal_test test = ITEST_MAX; -+ -+ switch (test_code) -+ { -+ case EQ: -+ test = ITEST_EQ; -+ break; -+ case NE: -+ test = ITEST_NE; -+ break; -+ case GT: -+ test = ITEST_GT; -+ break; -+ case GE: -+ test = ITEST_GE; -+ break; -+ case LT: -+ test = ITEST_LT; -+ break; -+ case LE: -+ test = ITEST_LE; -+ break; -+ case GTU: -+ test = ITEST_GTU; -+ break; -+ case GEU: -+ test = ITEST_GEU; -+ break; -+ case LTU: -+ test = ITEST_LTU; -+ break; -+ case LEU: -+ test = ITEST_LEU; -+ break; -+ default: -+ break; -+ } -+ -+ return test; -+} -+ -+/* Generate the code to compare (and possibly branch) two integer values -+ TEST_CODE is the comparison code we are trying to emulate -+ (or implement directly) -+ RESULT is where to store the result of the comparison, -+ or null to emit a branch -+ CMP0 CMP1 are the two comparison operands -+ DESTINATION is the destination of the branch, or null to only compare -+ */ -+ -+void -+gen_int_relational (enum rtx_code test_code, /* relational test (EQ, etc) */ -+ rtx result, /* result to store comp. or 0 if branch */ -+ rtx cmp0, /* first operand to compare */ -+ rtx cmp1, /* second operand to compare */ -+ rtx destination) /* destination of the branch, or 0 if compare */ -+{ -+ struct cmp_info -+ { -+ /* for register (or 0) compares */ -+ enum rtx_code test_code_reg; /* code to use in instruction (LT vs. LTU) */ -+ int reverse_regs; /* reverse registers in test */ -+ -+ /* for immediate compares */ -+ enum rtx_code test_code_const; -+ /* code to use in instruction (LT vs. LTU) */ -+ int const_low; /* low bound of constant we can accept */ -+ int const_high; /* high bound of constant we can accept */ -+ int const_add; /* constant to add */ -+ -+ /* generic info */ -+ int unsignedp; /* != 0 for unsigned comparisons. */ -+ }; -+ -+ static const struct cmp_info info[(int) ITEST_MAX] = { -+ -+ {EQ, 0, EQ, -32768, 32767, 0, 0}, /* EQ */ -+ {NE, 0, NE, -32768, 32767, 0, 0}, /* NE */ -+ -+ {LT, 1, GE, -32769, 32766, 1, 0}, /* GT */ -+ {GE, 0, GE, -32768, 32767, 0, 0}, /* GE */ -+ {LT, 0, LT, -32768, 32767, 0, 0}, /* LT */ -+ {GE, 1, LT, -32769, 32766, 1, 0}, /* LE */ -+ -+ {LTU, 1, GEU, 0, 65534, 1, 0}, /* GTU */ -+ {GEU, 0, GEU, 0, 65535, 0, 0}, /* GEU */ -+ {LTU, 0, LTU, 0, 65535, 0, 0}, /* LTU */ -+ {GEU, 1, LTU, 0, 65534, 1, 0}, /* LEU */ -+ }; -+ -+ enum internal_test test; -+ enum machine_mode mode; -+ const struct cmp_info *p_info; -+ int branch_p; -+ -+ -+ -+ -+ test = map_test_to_internal_test (test_code); -+ if (test == ITEST_MAX) -+ abort (); -+ -+ p_info = &info[(int) test]; -+ -+ mode = GET_MODE (cmp0); -+ if (mode == VOIDmode) -+ mode = GET_MODE (cmp1); -+ -+ branch_p = (destination != 0); -+ -+ /* We can't, under any circumstances, have const_ints in cmp0 -+ ??? Actually we could have const0 */ -+ if (GET_CODE (cmp0) == CONST_INT) -+ cmp0 = force_reg (mode, cmp0); -+ -+ /* if the comparison is against an int not in legal range -+ move it into a register */ -+ if (GET_CODE (cmp1) == CONST_INT) -+ { -+ HOST_WIDE_INT value = INTVAL (cmp1); -+ -+ if (value < p_info->const_low || value > p_info->const_high) -+ cmp1 = force_reg (mode, cmp1); -+ } -+ -+ /* Comparison to constants, may involve adding 1 to change a GT into GE. -+ Comparison between two registers, may involve switching operands. */ -+ if (GET_CODE (cmp1) == CONST_INT) -+ { -+ if (p_info->const_add != 0) -+ { -+ HOST_WIDE_INT new = INTVAL (cmp1) + p_info->const_add; -+ -+ /* If modification of cmp1 caused overflow, -+ we would get the wrong answer if we follow the usual path; -+ thus, x > 0xffffffffU would turn into x > 0U. */ -+ if ((p_info->unsignedp -+ ? (unsigned HOST_WIDE_INT) new > -+ (unsigned HOST_WIDE_INT) INTVAL (cmp1) -+ : new > INTVAL (cmp1)) != (p_info->const_add > 0)) -+ { -+ /* ??? This case can never happen with the current numbers, -+ but I am paranoid and would rather an abort than -+ a bug I will never find */ -+ abort (); -+ } -+ else -+ cmp1 = GEN_INT (new); -+ } -+ } -+ -+ else if (p_info->reverse_regs) -+ { -+ rtx temp = cmp0; -+ cmp0 = cmp1; -+ cmp1 = temp; -+ } -+ -+ -+ -+ if (branch_p) -+ { -+ if (register_operand (cmp0, mode) && register_operand (cmp1, mode)) -+ { -+ rtx insn; -+ rtx cond = gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1); -+ rtx label = gen_rtx_LABEL_REF (VOIDmode, destination); -+ -+ insn = gen_rtx_SET (VOIDmode, pc_rtx, -+ gen_rtx_IF_THEN_ELSE (VOIDmode, -+ cond, label, pc_rtx)); -+ emit_jump_insn (insn); -+ } -+ else -+ { -+ rtx cond, label; -+ -+ result = gen_reg_rtx (mode); -+ -+ emit_move_insn (result, -+ gen_rtx (p_info->test_code_const, mode, cmp0, -+ cmp1)); -+ -+ cond = gen_rtx (NE, mode, result, const0_rtx); -+ label = gen_rtx_LABEL_REF (VOIDmode, destination); -+ -+ emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx, -+ gen_rtx_IF_THEN_ELSE (VOIDmode, -+ cond, -+ label, pc_rtx))); -+ } -+ } -+ else -+ { -+ if (register_operand (cmp0, mode) && register_operand (cmp1, mode)) -+ { -+ emit_move_insn (result, -+ gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1)); -+ } -+ else -+ { -+ emit_move_insn (result, -+ gen_rtx (p_info->test_code_const, mode, cmp0, -+ cmp1)); -+ } -+ } -+ -+} -+ -+ -+/* ??? For now conditional moves are only supported -+ when the mode of the operands being compared are -+ the same as the ones being moved */ -+ -+void -+gen_conditional_move (rtx *operands, enum machine_mode mode) -+{ -+ rtx insn, cond; -+ rtx cmp_reg = gen_reg_rtx (mode); -+ enum rtx_code cmp_code = GET_CODE (operands[1]); -+ enum rtx_code move_code = EQ; -+ -+ /* emit a comparison if it is not "simple". -+ Simple comparisons are X eq 0 and X ne 0 */ -+ if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[1] == const0_rtx) -+ { -+ cmp_reg = branch_cmp[0]; -+ move_code = cmp_code; -+ } -+ else if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[0] == const0_rtx) -+ { -+ cmp_reg = branch_cmp[1]; -+ move_code = cmp_code == EQ ? NE : EQ; -+ } -+ else -+ gen_int_relational (cmp_code, cmp_reg, branch_cmp[0], branch_cmp[1], -+ NULL_RTX); -+ -+ cond = gen_rtx (move_code, VOIDmode, cmp_reg, CONST0_RTX (mode)); -+ insn = gen_rtx_SET (mode, operands[0], -+ gen_rtx_IF_THEN_ELSE (mode, -+ cond, operands[2], operands[3])); -+ emit_insn (insn); -+} -+ -+/******************* -+ * Addressing Modes -+ *******************/ -+ -+int -+nios2_legitimate_address (rtx operand, enum machine_mode mode ATTRIBUTE_UNUSED, -+ int strict) -+{ -+ int ret_val = 0; -+ -+ switch (GET_CODE (operand)) -+ { -+ /* direct. */ -+ case SYMBOL_REF: -+ if (SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (operand)) -+ { -+ ret_val = 1; -+ break; -+ } -+ /* else, fall through */ -+ case LABEL_REF: -+ case CONST_INT: -+ case CONST: -+ case CONST_DOUBLE: -+ /* ??? In here I need to add gp addressing */ -+ ret_val = 0; -+ -+ break; -+ -+ /* Register indirect. */ -+ case REG: -+ ret_val = REG_OK_FOR_BASE_P2 (operand, strict); -+ break; -+ -+ /* Register indirect with displacement */ -+ case PLUS: -+ { -+ rtx op0 = XEXP (operand, 0); -+ rtx op1 = XEXP (operand, 1); -+ -+ if (REG_P (op0) && REG_P (op1)) -+ ret_val = 0; -+ else if (REG_P (op0) && CONSTANT_P (op1)) -+ ret_val = REG_OK_FOR_BASE_P2 (op0, strict) -+ && SMALL_INT (INTVAL (op1)); -+ else if (REG_P (op1) && CONSTANT_P (op0)) -+ ret_val = REG_OK_FOR_BASE_P2 (op1, strict) -+ && SMALL_INT (INTVAL (op0)); -+ else -+ ret_val = 0; -+ } -+ break; -+ -+ default: -+ ret_val = 0; -+ break; -+ } -+ -+ return ret_val; -+} -+ -+/* Return true if EXP should be placed in the small data section. */ -+ -+static bool -+nios2_in_small_data_p (tree exp) -+{ -+ /* We want to merge strings, so we never consider them small data. */ -+ if (TREE_CODE (exp) == STRING_CST) -+ return false; -+ -+ if (TREE_CODE (exp) == VAR_DECL && DECL_SECTION_NAME (exp)) -+ { -+ const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp)); -+ /* ??? these string names need moving into -+ an array in some header file */ -+ if (nios2_section_threshold > 0 -+ && (strcmp (section, ".sbss") == 0 -+ || strncmp (section, ".sbss.", 6) == 0 -+ || strcmp (section, ".sdata") == 0 -+ || strncmp (section, ".sdata.", 7) == 0)) -+ return true; -+ } -+ else if (TREE_CODE (exp) == VAR_DECL) -+ { -+ HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp)); -+ -+ /* If this is an incomplete type with size 0, then we can't put it -+ in sdata because it might be too big when completed. */ -+ if (size > 0 && size <= nios2_section_threshold) -+ return true; -+ } -+ -+ return false; -+} -+ -+static void -+nios2_encode_section_info (tree decl, rtx rtl, int first) -+{ -+ -+ rtx symbol; -+ int flags; -+ -+ default_encode_section_info (decl, rtl, first); -+ -+ /* Careful not to prod global register variables. */ -+ if (GET_CODE (rtl) != MEM) -+ return; -+ symbol = XEXP (rtl, 0); -+ if (GET_CODE (symbol) != SYMBOL_REF) -+ return; -+ -+ flags = SYMBOL_REF_FLAGS (symbol); -+ -+ /* We don't want weak variables to be addressed with gp in case they end up with -+ value 0 which is not within 2^15 of $gp */ -+ if (DECL_P (decl) && DECL_WEAK (decl)) -+ flags |= SYMBOL_FLAG_WEAK_DECL; -+ -+ SYMBOL_REF_FLAGS (symbol) = flags; -+} -+ -+ -+static unsigned int -+nios2_section_type_flags (tree decl, const char *name, int reloc) -+{ -+ unsigned int flags; -+ -+ flags = default_section_type_flags (decl, name, reloc); -+ -+ /* ??? these string names need moving into an array in some header file */ -+ if (strcmp (name, ".sbss") == 0 -+ || strncmp (name, ".sbss.", 6) == 0 -+ || strcmp (name, ".sdata") == 0 -+ || strncmp (name, ".sdata.", 7) == 0) -+ flags |= SECTION_SMALL; -+ -+ return flags; -+} -+ -+ -+ -+ -+/***************************************** -+ * Defining the Output Assembler Language -+ *****************************************/ -+ -+/* -------------- * -+ * Output of Data -+ * -------------- */ -+ -+ -+/* -------------------------------- * -+ * Output of Assembler Instructions -+ * -------------------------------- */ -+ -+ -+/* print the operand OP to file stream -+ FILE modified by LETTER. LETTER -+ can be one of: -+ i: print "i" if OP is an immediate, except 0 -+ o: print "io" if OP is volatile -+ -+ z: for const0_rtx print $0 instead of 0 -+ H: for %hiadj -+ L: for %lo -+ U: for upper half of 32 bit value -+ */ -+ -+void -+nios2_print_operand (FILE *file, rtx op, int letter) -+{ -+ -+ switch (letter) -+ { -+ case 'i': -+ if (CONSTANT_P (op) && (op != const0_rtx)) -+ fprintf (file, "i"); -+ return; -+ -+ case 'o': -+ if (GET_CODE (op) == MEM -+ && ((MEM_VOLATILE_P (op) && !TARGET_CACHE_VOLATILE) -+ || TARGET_BYPASS_CACHE)) -+ fprintf (file, "io"); -+ return; -+ -+ default: -+ break; -+ } -+ -+ if (comparison_operator (op, VOIDmode)) -+ { -+ if (letter == 0) -+ { -+ fprintf (file, "%s", GET_RTX_NAME (GET_CODE (op))); -+ return; -+ } -+ } -+ -+ -+ switch (GET_CODE (op)) -+ { -+ case REG: -+ if (letter == 0 || letter == 'z') -+ { -+ fprintf (file, "%s", reg_names[REGNO (op)]); -+ return; -+ } -+ -+ case CONST_INT: -+ if (INTVAL (op) == 0 && letter == 'z') -+ { -+ fprintf (file, "zero"); -+ return; -+ } -+ else if (letter == 'U') -+ { -+ HOST_WIDE_INT val = INTVAL (op); -+ rtx new_op; -+ val = (val / 65536) & 0xFFFF; -+ new_op = GEN_INT (val); -+ output_addr_const (file, new_op); -+ return; -+ } -+ -+ /* else, fall through */ -+ case CONST: -+ case LABEL_REF: -+ case SYMBOL_REF: -+ case CONST_DOUBLE: -+ if (letter == 0 || letter == 'z') -+ { -+ output_addr_const (file, op); -+ return; -+ } -+ else if (letter == 'H') -+ { -+ fprintf (file, "%%hiadj("); -+ output_addr_const (file, op); -+ fprintf (file, ")"); -+ return; -+ } -+ else if (letter == 'L') -+ { -+ fprintf (file, "%%lo("); -+ output_addr_const (file, op); -+ fprintf (file, ")"); -+ return; -+ } -+ -+ -+ case SUBREG: -+ case MEM: -+ if (letter == 0) -+ { -+ output_address (op); -+ return; -+ } -+ -+ case CODE_LABEL: -+ if (letter == 0) -+ { -+ output_addr_const (file, op); -+ return; -+ } -+ -+ default: -+ break; -+ } -+ -+ fprintf (stderr, "Missing way to print (%c) ", letter); -+ debug_rtx (op); -+ abort (); -+} -+ -+static int gprel_constant (rtx); -+ -+static int -+gprel_constant (rtx op) -+{ -+ if (GET_CODE (op) == SYMBOL_REF -+ && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (op)) -+ { -+ return 1; -+ } -+ else if (GET_CODE (op) == CONST -+ && GET_CODE (XEXP (op, 0)) == PLUS) -+ { -+ return gprel_constant (XEXP (XEXP (op, 0), 0)); -+ } -+ else -+ { -+ return 0; -+ } -+} -+ -+void -+nios2_print_operand_address (FILE *file, rtx op) -+{ -+ switch (GET_CODE (op)) -+ { -+ case CONST: -+ case CONST_INT: -+ case LABEL_REF: -+ case CONST_DOUBLE: -+ case SYMBOL_REF: -+ if (gprel_constant (op)) -+ { -+ fprintf (file, "%%gprel("); -+ output_addr_const (file, op); -+ fprintf (file, ")(%s)", reg_names[GP_REGNO]); -+ return; -+ } -+ -+ break; -+ -+ case PLUS: -+ { -+ rtx op0 = XEXP (op, 0); -+ rtx op1 = XEXP (op, 1); -+ -+ if (REG_P (op0) && CONSTANT_P (op1)) -+ { -+ output_addr_const (file, op1); -+ fprintf (file, "(%s)", reg_names[REGNO (op0)]); -+ return; -+ } -+ else if (REG_P (op1) && CONSTANT_P (op0)) -+ { -+ output_addr_const (file, op0); -+ fprintf (file, "(%s)", reg_names[REGNO (op1)]); -+ return; -+ } -+ } -+ break; -+ -+ case REG: -+ fprintf (file, "0(%s)", reg_names[REGNO (op)]); -+ return; -+ -+ case MEM: -+ { -+ rtx base = XEXP (op, 0); -+ PRINT_OPERAND_ADDRESS (file, base); -+ return; -+ } -+ default: -+ break; -+ } -+ -+ fprintf (stderr, "Missing way to print address\n"); -+ debug_rtx (op); -+ abort (); -+} -+ -+ -+ -+ -+ -+/**************************** -+ * Predicates -+ ****************************/ -+ -+int -+arith_operand (rtx op, enum machine_mode mode) -+{ -+ if (GET_CODE (op) == CONST_INT && SMALL_INT (INTVAL (op))) -+ return 1; -+ -+ return register_operand (op, mode); -+} -+ -+int -+uns_arith_operand (rtx op, enum machine_mode mode) -+{ -+ if (GET_CODE (op) == CONST_INT && SMALL_INT_UNSIGNED (INTVAL (op))) -+ return 1; -+ -+ return register_operand (op, mode); -+} -+ -+int -+logical_operand (rtx op, enum machine_mode mode) -+{ -+ if (GET_CODE (op) == CONST_INT -+ && (SMALL_INT_UNSIGNED (INTVAL (op)) || UPPER16_INT (INTVAL (op)))) -+ return 1; -+ -+ return register_operand (op, mode); -+} -+ -+int -+shift_operand (rtx op, enum machine_mode mode) -+{ -+ if (GET_CODE (op) == CONST_INT && SHIFT_INT (INTVAL (op))) -+ return 1; -+ -+ return register_operand (op, mode); -+} -+ -+int -+rdwrctl_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) -+{ -+ return GET_CODE (op) == CONST_INT && RDWRCTL_INT (INTVAL (op)); -+} -+ -+/* Return truth value of whether OP is a register or the constant 0. */ -+ -+int -+reg_or_0_operand (rtx op, enum machine_mode mode) -+{ -+ switch (GET_CODE (op)) -+ { -+ case CONST_INT: -+ return INTVAL (op) == 0; -+ -+ case CONST_DOUBLE: -+ return op == CONST0_RTX (mode); -+ -+ default: -+ break; -+ } -+ -+ return register_operand (op, mode); -+} -+ -+ -+int -+equality_op (rtx op, enum machine_mode mode) -+{ -+ if (mode != GET_MODE (op)) -+ return 0; -+ -+ return GET_CODE (op) == EQ || GET_CODE (op) == NE; -+} -+ -+int -+custom_insn_opcode (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED) -+{ -+ return GET_CODE (op) == CONST_INT && CUSTOM_INSN_OPCODE (INTVAL (op)); -+} -+ -+ -+ -+ -+ -+ -+ -+/***************************************************************************** -+** -+** instruction scheduler -+** -+*****************************************************************************/ -+static int -+nios2_use_dfa_pipeline_interface () -+{ -+ return 1; -+} -+ -+ -+static int -+nios2_issue_rate () -+{ -+#ifdef MAX_DFA_ISSUE_RATE -+ return MAX_DFA_ISSUE_RATE; -+#else -+ return 1; -+#endif -+} -+ -+ -+const char * -+asm_output_opcode (FILE *file ATTRIBUTE_UNUSED, -+ const char *ptr ATTRIBUTE_UNUSED) -+{ -+ const char *p; -+ -+ p = ptr; -+ return ptr; -+} -+ -+ -+ -+/***************************************************************************** -+** -+** function arguments -+** -+*****************************************************************************/ -+ -+void -+init_cumulative_args (CUMULATIVE_ARGS *cum, -+ tree fntype ATTRIBUTE_UNUSED, -+ rtx libname ATTRIBUTE_UNUSED, -+ tree fndecl ATTRIBUTE_UNUSED, -+ int n_named_args ATTRIBUTE_UNUSED) -+{ -+ cum->regs_used = 0; -+} -+ -+ -+/* Update the data in CUM to advance over an argument -+ of mode MODE and data type TYPE. -+ (TYPE is null for libcalls where that information may not be available.) */ -+ -+void -+function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, -+ tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED) -+{ -+ HOST_WIDE_INT param_size; -+ -+ if (mode == BLKmode) -+ { -+ param_size = int_size_in_bytes (type); -+ if (param_size < 0) -+ internal_error -+ ("Do not know how to handle large structs or variable length types"); -+ } -+ else -+ { -+ param_size = GET_MODE_SIZE (mode); -+ } -+ -+ /* convert to words (round up) */ -+ param_size = (3 + param_size) / 4; -+ -+ if (cum->regs_used + param_size > NUM_ARG_REGS) -+ { -+ cum->regs_used = NUM_ARG_REGS; -+ } -+ else -+ { -+ cum->regs_used += param_size; -+ } -+ -+ return; -+} -+ -+/* Define where to put the arguments to a function. Value is zero to -+ push the argument on the stack, or a hard register in which to -+ store the argument. -+ -+ MODE is the argument's machine mode. -+ TYPE is the data type of the argument (as a tree). -+ This is null for libcalls where that information may -+ not be available. -+ CUM is a variable of type CUMULATIVE_ARGS which gives info about -+ the preceding args and about the function being called. -+ NAMED is nonzero if this argument is a named parameter -+ (otherwise it is an extra parameter matching an ellipsis). */ -+rtx -+function_arg (const CUMULATIVE_ARGS *cum, enum machine_mode mode, -+ tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED) -+{ -+ rtx return_rtx = NULL_RTX; -+ -+ if (cum->regs_used < NUM_ARG_REGS) -+ { -+ return_rtx = gen_rtx_REG (mode, FIRST_ARG_REGNO + cum->regs_used); -+ } -+ -+ return return_rtx; -+} -+ -+int -+function_arg_partial_nregs (const CUMULATIVE_ARGS *cum, -+ enum machine_mode mode, tree type, -+ int named ATTRIBUTE_UNUSED) -+{ -+ HOST_WIDE_INT param_size; -+ -+ if (mode == BLKmode) -+ { -+ param_size = int_size_in_bytes (type); -+ if (param_size < 0) -+ internal_error -+ ("Do not know how to handle large structs or variable length types"); -+ } -+ else -+ { -+ param_size = GET_MODE_SIZE (mode); -+ } -+ -+ /* convert to words (round up) */ -+ param_size = (3 + param_size) / 4; -+ -+ if (cum->regs_used < NUM_ARG_REGS -+ && cum->regs_used + param_size > NUM_ARG_REGS) -+ { -+ return NUM_ARG_REGS - cum->regs_used; -+ } -+ else -+ { -+ return 0; -+ } -+} -+ -+ -+int -+nios2_return_in_memory (tree type) -+{ -+ int res = ((int_size_in_bytes (type) > (2 * UNITS_PER_WORD)) -+ || (int_size_in_bytes (type) == -1)); -+ -+ return res; -+} -+ -+/* ??? It may be possible to eliminate the copyback and implement -+ my own va_arg type, but that is more work for now. */ -+int -+nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *cum, -+ enum machine_mode mode, tree type, -+ int no_rtl) -+{ -+ CUMULATIVE_ARGS local_cum; -+ int regs_to_push; -+ -+ local_cum = *cum; -+ FUNCTION_ARG_ADVANCE (local_cum, mode, type, 1); -+ -+ regs_to_push = NUM_ARG_REGS - local_cum.regs_used; -+ -+ if (!no_rtl) -+ { -+ if (regs_to_push > 0) -+ { -+ rtx ptr, mem; -+ -+ ptr = virtual_incoming_args_rtx; -+ mem = gen_rtx_MEM (BLKmode, ptr); -+ -+ /* va_arg is an array access in this case, which causes -+ it to get MEM_IN_STRUCT_P set. We must set it here -+ so that the insn scheduler won't assume that these -+ stores can't possibly overlap with the va_arg loads. */ -+ MEM_SET_IN_STRUCT_P (mem, 1); -+ -+ emit_insn (gen_blockage ()); -+ move_block_from_reg (local_cum.regs_used + FIRST_ARG_REGNO, mem, -+ regs_to_push); -+ emit_insn (gen_blockage ()); -+ } -+ } -+ -+ return regs_to_push * UNITS_PER_WORD; -+ -+} -+ -+ -+ -+/***************************************************************************** -+** -+** builtins -+** -+** This method for handling builtins is from CSP where _many_ more types of -+** expanders have already been written. Check there first before writing -+** new ones. -+** -+*****************************************************************************/ -+ -+enum nios2_builtins -+{ -+ NIOS2_BUILTIN_LDBIO, -+ NIOS2_BUILTIN_LDBUIO, -+ NIOS2_BUILTIN_LDHIO, -+ NIOS2_BUILTIN_LDHUIO, -+ NIOS2_BUILTIN_LDWIO, -+ NIOS2_BUILTIN_STBIO, -+ NIOS2_BUILTIN_STHIO, -+ NIOS2_BUILTIN_STWIO, -+ NIOS2_BUILTIN_SYNC, -+ NIOS2_BUILTIN_RDCTL, -+ NIOS2_BUILTIN_WRCTL, -+ -+ NIOS2_BUILTIN_CUSTOM_N, -+ NIOS2_BUILTIN_CUSTOM_NI, -+ NIOS2_BUILTIN_CUSTOM_NF, -+ NIOS2_BUILTIN_CUSTOM_NP, -+ NIOS2_BUILTIN_CUSTOM_NII, -+ NIOS2_BUILTIN_CUSTOM_NIF, -+ NIOS2_BUILTIN_CUSTOM_NIP, -+ NIOS2_BUILTIN_CUSTOM_NFI, -+ NIOS2_BUILTIN_CUSTOM_NFF, -+ NIOS2_BUILTIN_CUSTOM_NFP, -+ NIOS2_BUILTIN_CUSTOM_NPI, -+ NIOS2_BUILTIN_CUSTOM_NPF, -+ NIOS2_BUILTIN_CUSTOM_NPP, -+ NIOS2_BUILTIN_CUSTOM_IN, -+ NIOS2_BUILTIN_CUSTOM_INI, -+ NIOS2_BUILTIN_CUSTOM_INF, -+ NIOS2_BUILTIN_CUSTOM_INP, -+ NIOS2_BUILTIN_CUSTOM_INII, -+ NIOS2_BUILTIN_CUSTOM_INIF, -+ NIOS2_BUILTIN_CUSTOM_INIP, -+ NIOS2_BUILTIN_CUSTOM_INFI, -+ NIOS2_BUILTIN_CUSTOM_INFF, -+ NIOS2_BUILTIN_CUSTOM_INFP, -+ NIOS2_BUILTIN_CUSTOM_INPI, -+ NIOS2_BUILTIN_CUSTOM_INPF, -+ NIOS2_BUILTIN_CUSTOM_INPP, -+ NIOS2_BUILTIN_CUSTOM_FN, -+ NIOS2_BUILTIN_CUSTOM_FNI, -+ NIOS2_BUILTIN_CUSTOM_FNF, -+ NIOS2_BUILTIN_CUSTOM_FNP, -+ NIOS2_BUILTIN_CUSTOM_FNII, -+ NIOS2_BUILTIN_CUSTOM_FNIF, -+ NIOS2_BUILTIN_CUSTOM_FNIP, -+ NIOS2_BUILTIN_CUSTOM_FNFI, -+ NIOS2_BUILTIN_CUSTOM_FNFF, -+ NIOS2_BUILTIN_CUSTOM_FNFP, -+ NIOS2_BUILTIN_CUSTOM_FNPI, -+ NIOS2_BUILTIN_CUSTOM_FNPF, -+ NIOS2_BUILTIN_CUSTOM_FNPP, -+ NIOS2_BUILTIN_CUSTOM_PN, -+ NIOS2_BUILTIN_CUSTOM_PNI, -+ NIOS2_BUILTIN_CUSTOM_PNF, -+ NIOS2_BUILTIN_CUSTOM_PNP, -+ NIOS2_BUILTIN_CUSTOM_PNII, -+ NIOS2_BUILTIN_CUSTOM_PNIF, -+ NIOS2_BUILTIN_CUSTOM_PNIP, -+ NIOS2_BUILTIN_CUSTOM_PNFI, -+ NIOS2_BUILTIN_CUSTOM_PNFF, -+ NIOS2_BUILTIN_CUSTOM_PNFP, -+ NIOS2_BUILTIN_CUSTOM_PNPI, -+ NIOS2_BUILTIN_CUSTOM_PNPF, -+ NIOS2_BUILTIN_CUSTOM_PNPP, -+ -+ -+ LIM_NIOS2_BUILTINS -+}; -+ -+struct builtin_description -+{ -+ const enum insn_code icode; -+ const char *const name; -+ const enum nios2_builtins code; -+ const tree *type; -+ rtx (* expander) PARAMS ((const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int)); -+}; -+ -+static rtx nios2_expand_STXIO (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_LDXIO (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_sync (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_rdctl (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_wrctl (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+ -+static rtx nios2_expand_custom_n (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_custom_Xn (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_custom_nX (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_custom_XnX (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_custom_nXX (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+static rtx nios2_expand_custom_XnXX (const struct builtin_description *, -+ tree, rtx, rtx, enum machine_mode, int); -+ -+static tree endlink; -+ -+/* int fn (volatile const void *) -+ */ -+static tree int_ftype_volatile_const_void_p; -+ -+/* int fn (int) -+ */ -+static tree int_ftype_int; -+ -+/* void fn (int, int) -+ */ -+static tree void_ftype_int_int; -+ -+/* void fn (volatile void *, int) -+ */ -+static tree void_ftype_volatile_void_p_int; -+ -+/* void fn (void) -+ */ -+static tree void_ftype_void; -+ -+static tree custom_n; -+static tree custom_ni; -+static tree custom_nf; -+static tree custom_np; -+static tree custom_nii; -+static tree custom_nif; -+static tree custom_nip; -+static tree custom_nfi; -+static tree custom_nff; -+static tree custom_nfp; -+static tree custom_npi; -+static tree custom_npf; -+static tree custom_npp; -+static tree custom_in; -+static tree custom_ini; -+static tree custom_inf; -+static tree custom_inp; -+static tree custom_inii; -+static tree custom_inif; -+static tree custom_inip; -+static tree custom_infi; -+static tree custom_inff; -+static tree custom_infp; -+static tree custom_inpi; -+static tree custom_inpf; -+static tree custom_inpp; -+static tree custom_fn; -+static tree custom_fni; -+static tree custom_fnf; -+static tree custom_fnp; -+static tree custom_fnii; -+static tree custom_fnif; -+static tree custom_fnip; -+static tree custom_fnfi; -+static tree custom_fnff; -+static tree custom_fnfp; -+static tree custom_fnpi; -+static tree custom_fnpf; -+static tree custom_fnpp; -+static tree custom_pn; -+static tree custom_pni; -+static tree custom_pnf; -+static tree custom_pnp; -+static tree custom_pnii; -+static tree custom_pnif; -+static tree custom_pnip; -+static tree custom_pnfi; -+static tree custom_pnff; -+static tree custom_pnfp; -+static tree custom_pnpi; -+static tree custom_pnpf; -+static tree custom_pnpp; -+ -+ -+static const struct builtin_description bdesc[] = { -+ {CODE_FOR_ldbio, "__builtin_ldbio", NIOS2_BUILTIN_LDBIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO}, -+ {CODE_FOR_ldbuio, "__builtin_ldbuio", NIOS2_BUILTIN_LDBUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO}, -+ {CODE_FOR_ldhio, "__builtin_ldhio", NIOS2_BUILTIN_LDHIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO}, -+ {CODE_FOR_ldhuio, "__builtin_ldhuio", NIOS2_BUILTIN_LDHUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO}, -+ {CODE_FOR_ldwio, "__builtin_ldwio", NIOS2_BUILTIN_LDWIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO}, -+ -+ {CODE_FOR_stbio, "__builtin_stbio", NIOS2_BUILTIN_STBIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO}, -+ {CODE_FOR_sthio, "__builtin_sthio", NIOS2_BUILTIN_STHIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO}, -+ {CODE_FOR_stwio, "__builtin_stwio", NIOS2_BUILTIN_STWIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO}, -+ -+ {CODE_FOR_sync, "__builtin_sync", NIOS2_BUILTIN_SYNC, &void_ftype_void, nios2_expand_sync}, -+ {CODE_FOR_rdctl, "__builtin_rdctl", NIOS2_BUILTIN_RDCTL, &int_ftype_int, nios2_expand_rdctl}, -+ {CODE_FOR_wrctl, "__builtin_wrctl", NIOS2_BUILTIN_WRCTL, &void_ftype_int_int, nios2_expand_wrctl}, -+ -+ {CODE_FOR_custom_n, "__builtin_custom_n", NIOS2_BUILTIN_CUSTOM_N, &custom_n, nios2_expand_custom_n}, -+ {CODE_FOR_custom_ni, "__builtin_custom_ni", NIOS2_BUILTIN_CUSTOM_NI, &custom_ni, nios2_expand_custom_nX}, -+ {CODE_FOR_custom_nf, "__builtin_custom_nf", NIOS2_BUILTIN_CUSTOM_NF, &custom_nf, nios2_expand_custom_nX}, -+ {CODE_FOR_custom_np, "__builtin_custom_np", NIOS2_BUILTIN_CUSTOM_NP, &custom_np, nios2_expand_custom_nX}, -+ {CODE_FOR_custom_nii, "__builtin_custom_nii", NIOS2_BUILTIN_CUSTOM_NII, &custom_nii, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_nif, "__builtin_custom_nif", NIOS2_BUILTIN_CUSTOM_NIF, &custom_nif, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_nip, "__builtin_custom_nip", NIOS2_BUILTIN_CUSTOM_NIP, &custom_nip, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_nfi, "__builtin_custom_nfi", NIOS2_BUILTIN_CUSTOM_NFI, &custom_nfi, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_nff, "__builtin_custom_nff", NIOS2_BUILTIN_CUSTOM_NFF, &custom_nff, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_nfp, "__builtin_custom_nfp", NIOS2_BUILTIN_CUSTOM_NFP, &custom_nfp, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_npi, "__builtin_custom_npi", NIOS2_BUILTIN_CUSTOM_NPI, &custom_npi, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_npf, "__builtin_custom_npf", NIOS2_BUILTIN_CUSTOM_NPF, &custom_npf, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_npp, "__builtin_custom_npp", NIOS2_BUILTIN_CUSTOM_NPP, &custom_npp, nios2_expand_custom_nXX}, -+ {CODE_FOR_custom_in, "__builtin_custom_in", NIOS2_BUILTIN_CUSTOM_IN, &custom_in, nios2_expand_custom_Xn}, -+ {CODE_FOR_custom_ini, "__builtin_custom_ini", NIOS2_BUILTIN_CUSTOM_INI, &custom_ini, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_inf, "__builtin_custom_inf", NIOS2_BUILTIN_CUSTOM_INF, &custom_inf, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_inp, "__builtin_custom_inp", NIOS2_BUILTIN_CUSTOM_INP, &custom_inp, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_inii, "__builtin_custom_inii", NIOS2_BUILTIN_CUSTOM_INII, &custom_inii, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_inif, "__builtin_custom_inif", NIOS2_BUILTIN_CUSTOM_INIF, &custom_inif, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_inip, "__builtin_custom_inip", NIOS2_BUILTIN_CUSTOM_INIP, &custom_inip, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_infi, "__builtin_custom_infi", NIOS2_BUILTIN_CUSTOM_INFI, &custom_infi, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_inff, "__builtin_custom_inff", NIOS2_BUILTIN_CUSTOM_INFF, &custom_inff, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_infp, "__builtin_custom_infp", NIOS2_BUILTIN_CUSTOM_INFP, &custom_infp, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_inpi, "__builtin_custom_inpi", NIOS2_BUILTIN_CUSTOM_INPI, &custom_inpi, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_inpf, "__builtin_custom_inpf", NIOS2_BUILTIN_CUSTOM_INPF, &custom_inpf, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_inpp, "__builtin_custom_inpp", NIOS2_BUILTIN_CUSTOM_INPP, &custom_inpp, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fn, "__builtin_custom_fn", NIOS2_BUILTIN_CUSTOM_FN, &custom_fn, nios2_expand_custom_Xn}, -+ {CODE_FOR_custom_fni, "__builtin_custom_fni", NIOS2_BUILTIN_CUSTOM_FNI, &custom_fni, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_fnf, "__builtin_custom_fnf", NIOS2_BUILTIN_CUSTOM_FNF, &custom_fnf, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_fnp, "__builtin_custom_fnp", NIOS2_BUILTIN_CUSTOM_FNP, &custom_fnp, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_fnii, "__builtin_custom_fnii", NIOS2_BUILTIN_CUSTOM_FNII, &custom_fnii, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnif, "__builtin_custom_fnif", NIOS2_BUILTIN_CUSTOM_FNIF, &custom_fnif, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnip, "__builtin_custom_fnip", NIOS2_BUILTIN_CUSTOM_FNIP, &custom_fnip, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnfi, "__builtin_custom_fnfi", NIOS2_BUILTIN_CUSTOM_FNFI, &custom_fnfi, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnff, "__builtin_custom_fnff", NIOS2_BUILTIN_CUSTOM_FNFF, &custom_fnff, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnfp, "__builtin_custom_fnfp", NIOS2_BUILTIN_CUSTOM_FNFP, &custom_fnfp, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnpi, "__builtin_custom_fnpi", NIOS2_BUILTIN_CUSTOM_FNPI, &custom_fnpi, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnpf, "__builtin_custom_fnpf", NIOS2_BUILTIN_CUSTOM_FNPF, &custom_fnpf, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_fnpp, "__builtin_custom_fnpp", NIOS2_BUILTIN_CUSTOM_FNPP, &custom_fnpp, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pn, "__builtin_custom_pn", NIOS2_BUILTIN_CUSTOM_PN, &custom_pn, nios2_expand_custom_Xn}, -+ {CODE_FOR_custom_pni, "__builtin_custom_pni", NIOS2_BUILTIN_CUSTOM_PNI, &custom_pni, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_pnf, "__builtin_custom_pnf", NIOS2_BUILTIN_CUSTOM_PNF, &custom_pnf, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_pnp, "__builtin_custom_pnp", NIOS2_BUILTIN_CUSTOM_PNP, &custom_pnp, nios2_expand_custom_XnX}, -+ {CODE_FOR_custom_pnii, "__builtin_custom_pnii", NIOS2_BUILTIN_CUSTOM_PNII, &custom_pnii, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnif, "__builtin_custom_pnif", NIOS2_BUILTIN_CUSTOM_PNIF, &custom_pnif, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnip, "__builtin_custom_pnip", NIOS2_BUILTIN_CUSTOM_PNIP, &custom_pnip, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnfi, "__builtin_custom_pnfi", NIOS2_BUILTIN_CUSTOM_PNFI, &custom_pnfi, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnff, "__builtin_custom_pnff", NIOS2_BUILTIN_CUSTOM_PNFF, &custom_pnff, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnfp, "__builtin_custom_pnfp", NIOS2_BUILTIN_CUSTOM_PNFP, &custom_pnfp, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnpi, "__builtin_custom_pnpi", NIOS2_BUILTIN_CUSTOM_PNPI, &custom_pnpi, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnpf, "__builtin_custom_pnpf", NIOS2_BUILTIN_CUSTOM_PNPF, &custom_pnpf, nios2_expand_custom_XnXX}, -+ {CODE_FOR_custom_pnpp, "__builtin_custom_pnpp", NIOS2_BUILTIN_CUSTOM_PNPP, &custom_pnpp, nios2_expand_custom_XnXX}, -+ -+ -+ {0, 0, 0, 0, 0}, -+}; -+ -+/* This does not have a closing bracket on purpose (see use) */ -+#define def_param(TYPE) \ -+ tree_cons (NULL_TREE, TYPE, -+ -+static void -+nios2_init_builtins () -+{ -+ const struct builtin_description *d; -+ -+ -+ endlink = void_list_node; -+ -+ /* Special indenting here because one of the brackets is in def_param */ -+ /* *INDENT-OFF* */ -+ -+ /* int fn (volatile const void *) -+ */ -+ int_ftype_volatile_const_void_p -+ = build_function_type (integer_type_node, -+ def_param (build_qualified_type (ptr_type_node, -+ TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE)) -+ endlink)); -+ -+ -+ /* void fn (volatile void *, int) -+ */ -+ void_ftype_volatile_void_p_int -+ = build_function_type (void_type_node, -+ def_param (build_qualified_type (ptr_type_node, -+ TYPE_QUAL_VOLATILE)) -+ def_param (integer_type_node) -+ endlink))); -+ -+ /* void fn (void) -+ */ -+ void_ftype_void -+ = build_function_type (void_type_node, -+ endlink); -+ -+ /* int fn (int) -+ */ -+ int_ftype_int -+ = build_function_type (integer_type_node, -+ def_param (integer_type_node) -+ endlink)); -+ -+ /* void fn (int, int) -+ */ -+ void_ftype_int_int -+ = build_function_type (void_type_node, -+ def_param (integer_type_node) -+ def_param (integer_type_node) -+ endlink))); -+ -+ -+#define CUSTOM_NUM def_param (integer_type_node) -+ -+ custom_n -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ endlink)); -+ custom_ni -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ endlink))); -+ custom_nf -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ endlink))); -+ custom_np -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ endlink))); -+ custom_nii -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_nif -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_nip -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_nfi -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_nff -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_nfp -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_npi -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_npf -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_npp -+ = build_function_type (void_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ -+ custom_in -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ endlink)); -+ custom_ini -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ endlink))); -+ custom_inf -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ endlink))); -+ custom_inp -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ endlink))); -+ custom_inii -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_inif -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_inip -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_infi -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_inff -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_infp -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_inpi -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_inpf -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_inpp -+ = build_function_type (integer_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ -+ custom_fn -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ endlink)); -+ custom_fni -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ endlink))); -+ custom_fnf -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ endlink))); -+ custom_fnp -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ endlink))); -+ custom_fnii -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_fnif -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_fnip -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_fnfi -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_fnff -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_fnfp -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_fnpi -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_fnpf -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_fnpp -+ = build_function_type (float_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ -+ -+ custom_pn -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ endlink)); -+ custom_pni -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ endlink))); -+ custom_pnf -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ endlink))); -+ custom_pnp -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ endlink))); -+ custom_pnii -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_pnif -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_pnip -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (integer_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_pnfi -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_pnff -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_pnfp -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (float_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ custom_pnpi -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (integer_type_node) -+ endlink)))); -+ custom_pnpf -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (float_type_node) -+ endlink)))); -+ custom_pnpp -+ = build_function_type (ptr_type_node, -+ CUSTOM_NUM -+ def_param (ptr_type_node) -+ def_param (ptr_type_node) -+ endlink)))); -+ -+ -+ -+ /* *INDENT-ON* */ -+ -+ -+ for (d = bdesc; d->name; d++) -+ { -+ builtin_function (d->name, *d->type, d->code, -+ BUILT_IN_MD, NULL, NULL); -+ } -+} -+ -+/* Expand an expression EXP that calls a built-in function, -+ with result going to TARGET if that's convenient -+ (and in mode MODE if that's convenient). -+ SUBTARGET may be used as the target for computing one of EXP's operands. -+ IGNORE is nonzero if the value is to be ignored. */ -+ -+static rtx -+nios2_expand_builtin (tree exp, rtx target, rtx subtarget, -+ enum machine_mode mode, int ignore) -+{ -+ const struct builtin_description *d; -+ tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0); -+ unsigned int fcode = DECL_FUNCTION_CODE (fndecl); -+ -+ for (d = bdesc; d->name; d++) -+ if (d->code == fcode) -+ return (d->expander) (d, exp, target, subtarget, mode, ignore); -+ -+ /* we should have seen one of the functins we registered */ -+ abort (); -+} -+ -+static rtx nios2_create_target (const struct builtin_description *, rtx); -+ -+ -+static rtx -+nios2_create_target (const struct builtin_description *d, rtx target) -+{ -+ if (!target -+ || !(*insn_data[d->icode].operand[0].predicate) (target, -+ insn_data[d->icode].operand[0].mode)) -+ { -+ target = gen_reg_rtx (insn_data[d->icode].operand[0].mode); -+ } -+ -+ return target; -+} -+ -+ -+static rtx nios2_extract_opcode (const struct builtin_description *, int, tree); -+static rtx nios2_extract_operand (const struct builtin_description *, int, int, tree); -+ -+static rtx -+nios2_extract_opcode (const struct builtin_description *d, int op, tree arglist) -+{ -+ enum machine_mode mode = insn_data[d->icode].operand[op].mode; -+ tree arg = TREE_VALUE (arglist); -+ rtx opcode = expand_expr (arg, NULL_RTX, mode, 0); -+ opcode = protect_from_queue (opcode, 0); -+ -+ if (!(*insn_data[d->icode].operand[op].predicate) (opcode, mode)) -+ error ("Custom instruction opcode must be compile time constant in the range 0-255 for %s", d->name); -+ -+ return opcode; -+} -+ -+static rtx -+nios2_extract_operand (const struct builtin_description *d, int op, int argnum, tree arglist) -+{ -+ enum machine_mode mode = insn_data[d->icode].operand[op].mode; -+ tree arg = TREE_VALUE (arglist); -+ rtx operand = expand_expr (arg, NULL_RTX, mode, 0); -+ operand = protect_from_queue (operand, 0); -+ -+ if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode)) -+ operand = copy_to_mode_reg (mode, operand); -+ -+ /* ??? Better errors would be nice */ -+ if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode)) -+ error ("Invalid argument %d to %s", argnum, d->name); -+ -+ return operand; -+} -+ -+ -+static rtx -+nios2_expand_custom_n (const struct builtin_description *d, tree exp, -+ rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, -+ enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx opcode; -+ -+ /* custom_n should have exactly one operand */ -+ if (insn_data[d->icode].n_operands != 1) -+ abort (); -+ -+ opcode = nios2_extract_opcode (d, 0, arglist); -+ -+ pat = GEN_FCN (d->icode) (opcode); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return 0; -+} -+ -+static rtx -+nios2_expand_custom_Xn (const struct builtin_description *d, tree exp, -+ rtx target, rtx subtarget ATTRIBUTE_UNUSED, -+ enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx opcode; -+ -+ /* custom_Xn should have exactly two operands */ -+ if (insn_data[d->icode].n_operands != 2) -+ abort (); -+ -+ target = nios2_create_target (d, target); -+ opcode = nios2_extract_opcode (d, 1, arglist); -+ -+ pat = GEN_FCN (d->icode) (target, opcode); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return target; -+} -+ -+static rtx -+nios2_expand_custom_nX (const struct builtin_description *d, tree exp, -+ rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, -+ enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx opcode; -+ rtx operands[1]; -+ int i; -+ -+ -+ /* custom_nX should have exactly two operands */ -+ if (insn_data[d->icode].n_operands != 2) -+ abort (); -+ -+ opcode = nios2_extract_opcode (d, 0, arglist); -+ for (i = 0; i < 1; i++) -+ { -+ arglist = TREE_CHAIN (arglist); -+ operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist); -+ } -+ -+ pat = GEN_FCN (d->icode) (opcode, operands[0]); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return 0; -+} -+ -+static rtx -+nios2_expand_custom_XnX (const struct builtin_description *d, tree exp, rtx target, -+ rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx opcode; -+ rtx operands[1]; -+ int i; -+ -+ /* custom_Xn should have exactly three operands */ -+ if (insn_data[d->icode].n_operands != 3) -+ abort (); -+ -+ target = nios2_create_target (d, target); -+ opcode = nios2_extract_opcode (d, 1, arglist); -+ -+ for (i = 0; i < 1; i++) -+ { -+ arglist = TREE_CHAIN (arglist); -+ operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist); -+ } -+ -+ pat = GEN_FCN (d->icode) (target, opcode, operands[0]); -+ -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return target; -+} -+ -+static rtx -+nios2_expand_custom_nXX (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, -+ rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx opcode; -+ rtx operands[2]; -+ int i; -+ -+ -+ /* custom_nX should have exactly three operands */ -+ if (insn_data[d->icode].n_operands != 3) -+ abort (); -+ -+ opcode = nios2_extract_opcode (d, 0, arglist); -+ for (i = 0; i < 2; i++) -+ { -+ arglist = TREE_CHAIN (arglist); -+ operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist); -+ } -+ -+ pat = GEN_FCN (d->icode) (opcode, operands[0], operands[1]); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return 0; -+} -+ -+static rtx -+nios2_expand_custom_XnXX (const struct builtin_description *d, tree exp, rtx target, -+ rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx opcode; -+ rtx operands[2]; -+ int i; -+ -+ -+ /* custom_XnX should have exactly four operands */ -+ if (insn_data[d->icode].n_operands != 4) -+ abort (); -+ -+ target = nios2_create_target (d, target); -+ opcode = nios2_extract_opcode (d, 1, arglist); -+ for (i = 0; i < 2; i++) -+ { -+ arglist = TREE_CHAIN (arglist); -+ operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist); -+ } -+ -+ pat = GEN_FCN (d->icode) (target, opcode, operands[0], operands[1]); -+ -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return target; -+} -+ -+ -+ -+static rtx -+nios2_expand_STXIO (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, -+ rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx store_dest, store_val; -+ enum insn_code icode = d->icode; -+ -+ /* stores should have exactly two operands */ -+ if (insn_data[icode].n_operands != 2) -+ abort (); -+ -+ /* process the destination of the store */ -+ { -+ enum machine_mode mode = insn_data[icode].operand[0].mode; -+ tree arg = TREE_VALUE (arglist); -+ store_dest = expand_expr (arg, NULL_RTX, VOIDmode, 0); -+ store_dest = protect_from_queue (store_dest, 0); -+ -+ store_dest = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, store_dest)); -+ -+ /* ??? Better errors would be nice */ -+ if (!(*insn_data[icode].operand[0].predicate) (store_dest, mode)) -+ error ("Invalid argument 1 to %s", d->name); -+ } -+ -+ -+ /* process the value to store */ -+ { -+ enum machine_mode mode = insn_data[icode].operand[1].mode; -+ tree arg = TREE_VALUE (TREE_CHAIN (arglist)); -+ store_val = expand_expr (arg, NULL_RTX, mode, 0); -+ store_val = protect_from_queue (store_val, 0); -+ -+ if (!(*insn_data[icode].operand[1].predicate) (store_val, mode)) -+ store_val = copy_to_mode_reg (mode, store_val); -+ -+ /* ??? Better errors would be nice */ -+ if (!(*insn_data[icode].operand[1].predicate) (store_val, mode)) -+ error ("Invalid argument 2 to %s", d->name); -+ } -+ -+ pat = GEN_FCN (d->icode) (store_dest, store_val); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return 0; -+} -+ -+ -+static rtx -+nios2_expand_LDXIO (const struct builtin_description * d, tree exp, rtx target, -+ rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx ld_src; -+ enum insn_code icode = d->icode; -+ -+ /* loads should have exactly two operands */ -+ if (insn_data[icode].n_operands != 2) -+ abort (); -+ -+ target = nios2_create_target (d, target); -+ -+ { -+ enum machine_mode mode = insn_data[icode].operand[1].mode; -+ tree arg = TREE_VALUE (arglist); -+ ld_src = expand_expr (arg, NULL_RTX, VOIDmode, 0); -+ ld_src = protect_from_queue (ld_src, 0); -+ -+ ld_src = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, ld_src)); -+ -+ /* ??? Better errors would be nice */ -+ if (!(*insn_data[icode].operand[1].predicate) (ld_src, mode)) -+ { -+ error ("Invalid argument 1 to %s", d->name); -+ } -+ } -+ -+ pat = GEN_FCN (d->icode) (target, ld_src); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return target; -+} -+ -+ -+static rtx -+nios2_expand_sync (const struct builtin_description * d ATTRIBUTE_UNUSED, -+ tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, -+ rtx subtarget ATTRIBUTE_UNUSED, -+ enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ emit_insn (gen_sync ()); -+ return 0; -+} -+ -+static rtx -+nios2_expand_rdctl (const struct builtin_description * d ATTRIBUTE_UNUSED, -+ tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, -+ rtx subtarget ATTRIBUTE_UNUSED, -+ enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx rdctl_reg; -+ enum insn_code icode = d->icode; -+ -+ /* rdctl should have exactly two operands */ -+ if (insn_data[icode].n_operands != 2) -+ abort (); -+ -+ target = nios2_create_target (d, target); -+ -+ { -+ enum machine_mode mode = insn_data[icode].operand[1].mode; -+ tree arg = TREE_VALUE (arglist); -+ rdctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0); -+ rdctl_reg = protect_from_queue (rdctl_reg, 0); -+ -+ if (!(*insn_data[icode].operand[1].predicate) (rdctl_reg, mode)) -+ { -+ error ("Control register number must be in range 0-31 for %s", d->name); -+ } -+ } -+ -+ pat = GEN_FCN (d->icode) (target, rdctl_reg); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return target; -+} -+ -+static rtx -+nios2_expand_wrctl (const struct builtin_description * d ATTRIBUTE_UNUSED, -+ tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, -+ rtx subtarget ATTRIBUTE_UNUSED, -+ enum machine_mode mode ATTRIBUTE_UNUSED, -+ int ignore ATTRIBUTE_UNUSED) -+{ -+ tree arglist = TREE_OPERAND (exp, 1); -+ rtx pat; -+ rtx wrctl_reg, store_val; -+ enum insn_code icode = d->icode; -+ -+ /* stores should have exactly two operands */ -+ if (insn_data[icode].n_operands != 2) -+ abort (); -+ -+ /* process the destination of the store */ -+ { -+ enum machine_mode mode = insn_data[icode].operand[0].mode; -+ tree arg = TREE_VALUE (arglist); -+ wrctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0); -+ wrctl_reg = protect_from_queue (wrctl_reg, 0); -+ -+ if (!(*insn_data[icode].operand[0].predicate) (wrctl_reg, mode)) -+ error ("Control register number must be in range 0-31 for %s", d->name); -+ } -+ -+ -+ /* process the value to store */ -+ { -+ enum machine_mode mode = insn_data[icode].operand[1].mode; -+ tree arg = TREE_VALUE (TREE_CHAIN (arglist)); -+ store_val = expand_expr (arg, NULL_RTX, mode, 0); -+ store_val = protect_from_queue (store_val, 0); -+ -+ if (!(*insn_data[icode].operand[1].predicate) (store_val, mode)) -+ store_val = copy_to_mode_reg (mode, store_val); -+ -+ /* ??? Better errors would be nice */ -+ if (!(*insn_data[icode].operand[1].predicate) (store_val, mode)) -+ error ("Invalid argument 2 to %s", d->name); -+ } -+ -+ pat = GEN_FCN (d->icode) (wrctl_reg, store_val); -+ if (!pat) -+ return 0; -+ emit_insn (pat); -+ return 0; -+} -+ -+ -+#include "gt-nios2.h" -+ ---- gcc-3.4.3/gcc/config/nios2/nios2.h -+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.h -@@ -0,0 +1,824 @@ -+/* Definitions of target machine for Altera NIOS 2G NIOS2 version. -+ Copyright (C) 2003 Altera -+ Contributed by Jonah Graham (jgraham@altera.com). -+ -+This file is part of GNU CC. -+ -+GNU CC 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. -+ -+GNU CC 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 GNU CC; see the file COPYING. If not, write to -+the Free Software Foundation, 59 Temple Place - Suite 330, -+Boston, MA 02111-1307, USA. */ -+ -+ -+ -+#define TARGET_CPU_CPP_BUILTINS() \ -+ do \ -+ { \ -+ builtin_define_std ("NIOS2"); \ -+ builtin_define_std ("nios2"); \ -+ builtin_define ("_GNU_SOURCE"); \ -+ } \ -+ while (0) -+#define TARGET_VERSION fprintf (stderr, " (Altera Nios II)") -+ -+ -+ -+ -+ -+/********************************* -+ * Run-time Target Specification -+ *********************************/ -+ -+#define HAS_DIV_FLAG 0x0001 -+#define HAS_MUL_FLAG 0x0002 -+#define HAS_MULX_FLAG 0x0004 -+#define FAST_SW_DIV_FLAG 0x0008 -+#define INLINE_MEMCPY_FLAG 0x00010 -+#define CACHE_VOLATILE_FLAG 0x0020 -+#define BYPASS_CACHE_FLAG 0x0040 -+ -+extern int target_flags; -+#define TARGET_HAS_DIV (target_flags & HAS_DIV_FLAG) -+#define TARGET_HAS_MUL (target_flags & HAS_MUL_FLAG) -+#define TARGET_HAS_MULX (target_flags & HAS_MULX_FLAG) -+#define TARGET_FAST_SW_DIV (target_flags & FAST_SW_DIV_FLAG) -+#define TARGET_INLINE_MEMCPY (target_flags & INLINE_MEMCPY_FLAG) -+#define TARGET_CACHE_VOLATILE (target_flags & CACHE_VOLATILE_FLAG) -+#define TARGET_BYPASS_CACHE (target_flags & BYPASS_CACHE_FLAG) -+ -+#define TARGET_SWITCHES \ -+{ \ -+ { "hw-div", HAS_DIV_FLAG, \ -+ N_("Enable DIV, DIVU") }, \ -+ { "no-hw-div", -HAS_DIV_FLAG, \ -+ N_("Disable DIV, DIVU (default)") }, \ -+ { "hw-mul", HAS_MUL_FLAG, \ -+ N_("Enable MUL instructions (default)") }, \ -+ { "hw-mulx", HAS_MULX_FLAG, \ -+ N_("Enable MULX instructions, assume fast shifter") }, \ -+ { "no-hw-mul", -HAS_MUL_FLAG, \ -+ N_("Disable MUL instructions") }, \ -+ { "no-hw-mulx", -HAS_MULX_FLAG, \ -+ N_("Disable MULX instructions, assume slow shifter (default and implied by -mno-hw-mul)") }, \ -+ { "fast-sw-div", FAST_SW_DIV_FLAG, \ -+ N_("Use table based fast divide (default at -O3)") }, \ -+ { "no-fast-sw-div", -FAST_SW_DIV_FLAG, \ -+ N_("Don't use table based fast divide ever") }, \ -+ { "inline-memcpy", INLINE_MEMCPY_FLAG, \ -+ N_("Inline small memcpy (default when optimizing)") }, \ -+ { "no-inline-memcpy", -INLINE_MEMCPY_FLAG, \ -+ N_("Don't Inline small memcpy") }, \ -+ { "cache-volatile", CACHE_VOLATILE_FLAG, \ -+ N_("Volatile accesses use non-io variants of instructions (default)") }, \ -+ { "no-cache-volatile", -CACHE_VOLATILE_FLAG, \ -+ N_("Volatile accesses use io variants of instructions") }, \ -+ { "bypass-cache", BYPASS_CACHE_FLAG, \ -+ N_("All ld/st instructins use io variants") }, \ -+ { "no-bypass-cache", -BYPASS_CACHE_FLAG, \ -+ N_("All ld/st instructins do not use io variants (default)") }, \ -+ { "smallc", 0, \ -+ N_("Link with a limited version of the C library") }, \ -+ { "ctors-in-init", 0, \ -+ "" /* undocumented: N_("Link with static constructors and destructors in init") */ }, \ -+ { "", TARGET_DEFAULT, 0 } \ -+} -+ -+ -+extern const char *nios2_sys_nosys_string; /* for -msys=nosys */ -+extern const char *nios2_sys_lib_string; /* for -msys-lib= */ -+extern const char *nios2_sys_crt0_string; /* for -msys-crt0= */ -+ -+#define TARGET_OPTIONS \ -+{ \ -+ { "sys=nosys", &nios2_sys_nosys_string, \ -+ N_("Use stub versions of OS library calls (default)"), 0}, \ -+ { "sys-lib=", &nios2_sys_lib_string, \ -+ N_("Name of System Library to link against. (Converted to a -l option)"), 0}, \ -+ { "sys-crt0=", &nios2_sys_crt0_string, \ -+ N_("Name of the startfile. (default is a crt0 for the ISS only)"), 0}, \ -+} -+ -+ -+/* Default target_flags if no switches specified. */ -+#ifndef TARGET_DEFAULT -+# define TARGET_DEFAULT (HAS_MUL_FLAG | CACHE_VOLATILE_FLAG) -+#endif -+ -+/* Switch Recognition by gcc.c. Add -G xx support */ -+#undef SWITCH_TAKES_ARG -+#define SWITCH_TAKES_ARG(CHAR) \ -+ (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G') -+ -+#define OVERRIDE_OPTIONS override_options () -+#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) optimization_options (LEVEL, SIZE) -+#define CAN_DEBUG_WITHOUT_FP -+ -+#define CC1_SPEC "\ -+%{G*}" -+ -+#undef LIB_SPEC -+#define LIB_SPEC \ -+"--start-group %{msmallc: -lsmallc} %{!msmallc: -lc} -lgcc \ -+ %{msys-lib=*: -l%*} \ -+ %{!msys-lib=*: -lc } \ -+ --end-group \ -+ %{msys-lib=: %eYou need a library name for -msys-lib=} \ -+" -+ -+ -+#undef STARTFILE_SPEC -+#define STARTFILE_SPEC \ -+"%{msys-crt0=*: %*} %{!msys-crt0=*: crt1%O%s} \ -+ %{msys-crt0=: %eYou need a C startup file for -msys-crt0=} \ -+ %{mctors-in-init: crti%O%s crtbegin%O%s} \ -+" -+ -+#undef ENDFILE_SPEC -+#define ENDFILE_SPEC \ -+ "%{mctors-in-init: crtend%O%s crtn%O%s}" -+ -+ -+/*********************** -+ * Storage Layout -+ ***********************/ -+ -+#define DEFAULT_SIGNED_CHAR 1 -+#define BITS_BIG_ENDIAN 0 -+#define BYTES_BIG_ENDIAN 0 -+#define WORDS_BIG_ENDIAN 0 -+#define BITS_PER_UNIT 8 -+#define BITS_PER_WORD 32 -+#define UNITS_PER_WORD 4 -+#define POINTER_SIZE 32 -+#define BIGGEST_ALIGNMENT 32 -+#define STRICT_ALIGNMENT 1 -+#define FUNCTION_BOUNDARY 32 -+#define PARM_BOUNDARY 32 -+#define STACK_BOUNDARY 32 -+#define PREFERRED_STACK_BOUNDARY 32 -+#define MAX_FIXED_MODE_SIZE 64 -+ -+#define CONSTANT_ALIGNMENT(EXP, ALIGN) \ -+ ((TREE_CODE (EXP) == STRING_CST) \ -+ && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN)) -+ -+ -+/********************** -+ * Layout of Source Language Data Types -+ **********************/ -+ -+#define INT_TYPE_SIZE 32 -+#define SHORT_TYPE_SIZE 16 -+#define LONG_TYPE_SIZE 32 -+#define LONG_LONG_TYPE_SIZE 64 -+#define FLOAT_TYPE_SIZE 32 -+#define DOUBLE_TYPE_SIZE 64 -+#define LONG_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE -+ -+ -+/************************* -+ * Condition Code Status -+ ************************/ -+ -+/* comparison type */ -+/* ??? currently only CMP_SI is used */ -+enum cmp_type { -+ CMP_SI, /* compare four byte integers */ -+ CMP_DI, /* compare eight byte integers */ -+ CMP_SF, /* compare single precision floats */ -+ CMP_DF, /* compare double precision floats */ -+ CMP_MAX /* max comparison type */ -+}; -+ -+extern GTY(()) rtx branch_cmp[2]; /* operands for compare */ -+extern enum cmp_type branch_type; /* what type of branch to use */ -+ -+/********************** -+ * Register Usage -+ **********************/ -+ -+/* ---------------------------------- * -+ * Basic Characteristics of Registers -+ * ---------------------------------- */ -+ -+/* -+Register Number -+ Register Name -+ Alternate Name -+ Purpose -+0 r0 zero always zero -+1 r1 at Assembler Temporary -+2-3 r2-r3 Return Location -+4-7 r4-r7 Register Arguments -+8-15 r8-r15 Caller Saved Registers -+16-22 r16-r22 Callee Saved Registers -+23 r23 sc Static Chain (Callee Saved) -+ ??? Does $sc want to be caller or callee -+ saved. If caller, 15, else 23. -+24 r24 Exception Temporary -+25 r25 Breakpoint Temporary -+26 r26 gp Global Pointer -+27 r27 sp Stack Pointer -+28 r28 fp Frame Pointer -+29 r29 ea Exception Return Address -+30 r30 ba Breakpoint Return Address -+31 r31 ra Return Address -+ -+32 ctl0 status -+33 ctl1 estatus STATUS saved by exception ? -+34 ctl2 bstatus STATUS saved by break ? -+35 ctl3 ipri Interrupt Priority Mask ? -+36 ctl4 ecause Exception Cause ? -+ -+37 pc Not an actual register -+ -+38 rap Return address pointer, this does not -+ actually exist and will be eliminated -+ -+39 fake_fp Fake Frame Pointer which will always be eliminated. -+40 fake_ap Fake Argument Pointer which will always be eliminated. -+ -+41 First Pseudo Register -+ -+ -+The definitions for all the hard register numbers -+are located in nios2.md. -+*/ -+ -+#define FIRST_PSEUDO_REGISTER 41 -+#define NUM_ARG_REGS (LAST_ARG_REGNO - FIRST_ARG_REGNO + 1) -+ -+ -+ -+/* also see CONDITIONAL_REGISTER_USAGE */ -+#define FIXED_REGISTERS \ -+ { \ -+/* +0 1 2 3 4 5 6 7 8 9 */ \ -+/* 0 */ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \ -+/* 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ -+/* 20 */ 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, \ -+/* 30 */ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, \ -+/* 40 */ 1, \ -+ } -+ -+/* call used is the same as caller saved -+ + fixed regs + args + ret vals */ -+#define CALL_USED_REGISTERS \ -+ { \ -+/* +0 1 2 3 4 5 6 7 8 9 */ \ -+/* 0 */ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ -+/* 10 */ 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, \ -+/* 20 */ 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, \ -+/* 30 */ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, \ -+/* 40 */ 1, \ -+ } -+ -+#define HARD_REGNO_NREGS(REGNO, MODE) \ -+ ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \ -+ / UNITS_PER_WORD) -+ -+/* --------------------------- * -+ * How Values Fit in Registers -+ * --------------------------- */ -+ -+#define HARD_REGNO_MODE_OK(REGNO, MODE) 1 -+ -+#define MODES_TIEABLE_P(MODE1, MODE2) 1 -+ -+ -+/************************* -+ * Register Classes -+ *************************/ -+ -+enum reg_class -+{ -+ NO_REGS, -+ ALL_REGS, -+ LIM_REG_CLASSES -+}; -+ -+#define N_REG_CLASSES (int) LIM_REG_CLASSES -+ -+#define REG_CLASS_NAMES \ -+ {"NO_REGS", \ -+ "ALL_REGS"} -+ -+#define GENERAL_REGS ALL_REGS -+ -+#define REG_CLASS_CONTENTS \ -+/* NO_REGS */ {{ 0, 0}, \ -+/* ALL_REGS */ {~0,~0}} \ -+ -+#define REGNO_REG_CLASS(REGNO) ALL_REGS -+ -+#define BASE_REG_CLASS ALL_REGS -+#define INDEX_REG_CLASS ALL_REGS -+ -+/* only one reg class, 'r', is handled automatically */ -+#define REG_CLASS_FROM_LETTER(CHAR) NO_REGS -+ -+#define REGNO_OK_FOR_BASE_P2(REGNO, STRICT) \ -+ ((STRICT) \ -+ ? (REGNO) < FIRST_PSEUDO_REGISTER \ -+ : (REGNO) < FIRST_PSEUDO_REGISTER || (reg_renumber && reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER)) -+ -+#define REGNO_OK_FOR_INDEX_P2(REGNO, STRICT) \ -+ (REGNO_OK_FOR_BASE_P2 (REGNO, STRICT)) -+ -+#define REGNO_OK_FOR_BASE_P(REGNO) \ -+ (REGNO_OK_FOR_BASE_P2 (REGNO, 1)) -+ -+#define REGNO_OK_FOR_INDEX_P(REGNO) \ -+ (REGNO_OK_FOR_INDEX_P2 (REGNO, 1)) -+ -+#define REG_OK_FOR_BASE_P2(X, STRICT) \ -+ (STRICT \ -+ ? REGNO_OK_FOR_BASE_P2 (REGNO (X), 1) \ -+ : REGNO_OK_FOR_BASE_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER) -+ -+#define REG_OK_FOR_INDEX_P2(X, STRICT) \ -+ (STRICT \ -+ ? REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1) \ -+ : REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER) -+ -+#define CLASS_MAX_NREGS(CLASS, MODE) \ -+ ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \ -+ / UNITS_PER_WORD) -+ -+ -+#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) ((X) + 0x8000) < 0x10000) -+#define SMALL_INT_UNSIGNED(X) ((unsigned HOST_WIDE_INT) (X) < 0x10000) -+#define UPPER16_INT(X) (((X) & 0xffff) == 0) -+#define SHIFT_INT(X) ((X) >= 0 && (X) <= 31) -+#define RDWRCTL_INT(X) ((X) >= 0 && (X) <= 31) -+#define CUSTOM_INSN_OPCODE(X) ((X) >= 0 && (X) <= 255) -+ -+#define CONST_OK_FOR_LETTER_P(VALUE, C) \ -+ ( \ -+ (C) == 'I' ? SMALL_INT (VALUE) : \ -+ (C) == 'J' ? SMALL_INT_UNSIGNED (VALUE) : \ -+ (C) == 'K' ? UPPER16_INT (VALUE) : \ -+ (C) == 'L' ? SHIFT_INT (VALUE) : \ -+ (C) == 'M' ? (VALUE) == 0 : \ -+ (C) == 'N' ? CUSTOM_INSN_OPCODE (VALUE) : \ -+ (C) == 'O' ? RDWRCTL_INT (VALUE) : \ -+ 0) -+ -+#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0 -+ -+#define PREFERRED_RELOAD_CLASS(X, CLASS) \ -+ ((CLASS) == NO_REGS ? GENERAL_REGS : (CLASS)) -+ -+/* 'S' matches immediates which are in small data -+ and therefore can be added to gp to create a -+ 32-bit value. */ -+#define EXTRA_CONSTRAINT(VALUE, C) \ -+ ((C) == 'S' \ -+ && (GET_CODE (VALUE) == SYMBOL_REF) \ -+ && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (VALUE)) -+ -+ -+ -+ -+/* Say that the epilogue uses the return address register. Note that -+ in the case of sibcalls, the values "used by the epilogue" are -+ considered live at the start of the called function. */ -+#define EPILOGUE_USES(REGNO) ((REGNO) == RA_REGNO) -+ -+ -+#define DEFAULT_MAIN_RETURN c_expand_return (integer_zero_node) -+ -+/********************************** -+ * Trampolines for Nested Functions -+ ***********************************/ -+ -+#define TRAMPOLINE_TEMPLATE(FILE) \ -+ error ("trampolines not yet implemented") -+#define TRAMPOLINE_SIZE 20 -+#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \ -+ error ("trampolines not yet implemented") -+ -+/*************************** -+ * Stack Layout and Calling Conventions -+ ***************************/ -+ -+/* ------------------ * -+ * Basic Stack Layout -+ * ------------------ */ -+ -+/* The downward variants are used by the compiler, -+ the upward ones serve as documentation */ -+#define STACK_GROWS_DOWNWARD -+#define FRAME_GROWS_UPWARD -+#define ARGS_GROW_UPWARD -+ -+#define STARTING_FRAME_OFFSET current_function_outgoing_args_size -+#define FIRST_PARM_OFFSET(FUNDECL) 0 -+ -+/* Before the prologue, RA lives in r31. */ -+#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (VOIDmode, RA_REGNO) -+ -+/* -------------------------------------- * -+ * Registers That Address the Stack Frame -+ * -------------------------------------- */ -+ -+#define STACK_POINTER_REGNUM SP_REGNO -+#define STATIC_CHAIN_REGNUM SC_REGNO -+#define PC_REGNUM PC_REGNO -+#define DWARF_FRAME_RETURN_COLUMN RA_REGNO -+ -+/* Base register for access to local variables of the function. We -+ pretend that the frame pointer is a non-existent hard register, and -+ then eliminate it to HARD_FRAME_POINTER_REGNUM. */ -+#define FRAME_POINTER_REGNUM FAKE_FP_REGNO -+ -+#define HARD_FRAME_POINTER_REGNUM FP_REGNO -+#define RETURN_ADDRESS_POINTER_REGNUM RAP_REGNO -+/* the argumnet pointer needs to always be eliminated -+ so it is set to a fake hard register. */ -+#define ARG_POINTER_REGNUM FAKE_AP_REGNO -+ -+/* ----------------------------------------- * -+ * Eliminating Frame Pointer and Arg Pointer -+ * ----------------------------------------- */ -+ -+#define FRAME_POINTER_REQUIRED 0 -+ -+#define ELIMINABLE_REGS \ -+{{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ -+ { ARG_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \ -+ { RETURN_ADDRESS_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ -+ { RETURN_ADDRESS_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \ -+ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}, \ -+ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}} -+ -+#define CAN_ELIMINATE(FROM, TO) 1 -+ -+#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \ -+ (OFFSET) = nios2_initial_elimination_offset ((FROM), (TO)) -+ -+#define MUST_SAVE_REGISTER(regno) \ -+ ((regs_ever_live[regno] && !call_used_regs[regno]) \ -+ || (regno == HARD_FRAME_POINTER_REGNUM && frame_pointer_needed) \ -+ || (regno == RA_REGNO && regs_ever_live[RA_REGNO])) -+ -+/* Treat LOC as a byte offset from the stack pointer and round it up -+ to the next fully-aligned offset. */ -+#define STACK_ALIGN(LOC) \ -+ (((LOC) + ((PREFERRED_STACK_BOUNDARY / 8) - 1)) & ~((PREFERRED_STACK_BOUNDARY / 8) - 1)) -+ -+ -+/* ------------------------------ * -+ * Passing Arguments in Registers -+ * ------------------------------ */ -+ -+/* see nios2.c */ -+#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \ -+ (function_arg (&CUM, MODE, TYPE, NAMED)) -+ -+#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \ -+ (function_arg_partial_nregs (&CUM, MODE, TYPE, NAMED)) -+ -+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) 0 -+ -+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 0 -+ -+typedef struct nios2_args -+{ -+ int regs_used; -+} CUMULATIVE_ARGS; -+ -+/* This is to initialize the above unused CUM data type */ -+#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \ -+ (init_cumulative_args (&CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS)) -+ -+#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \ -+ (function_arg_advance (&CUM, MODE, TYPE, NAMED)) -+ -+#define FUNCTION_ARG_REGNO_P(REGNO) \ -+ ((REGNO) >= FIRST_ARG_REGNO && (REGNO) <= LAST_ARG_REGNO) -+ -+#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL) \ -+ { \ -+ int pret_size = nios2_setup_incoming_varargs (&(CUM), (MODE), \ -+ (TYPE), (NO_RTL)); \ -+ if (pret_size) \ -+ (PRETEND_SIZE) = pret_size; \ -+ } -+ -+/* ----------------------------- * -+ * Generating Code for Profiling -+ * ----------------------------- */ -+ -+#define PROFILE_BEFORE_PROLOGUE -+ -+#define FUNCTION_PROFILER(FILE, LABELNO) \ -+ function_profiler ((FILE), (LABELNO)) -+ -+/* --------------------------------------- * -+ * Passing Function Arguments on the Stack -+ * --------------------------------------- */ -+ -+#define PROMOTE_PROTOTYPES 1 -+ -+#define PUSH_ARGS 0 -+#define ACCUMULATE_OUTGOING_ARGS 1 -+ -+#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACKSIZE) 0 -+ -+/* --------------------------------------- * -+ * How Scalar Function Values Are Returned -+ * --------------------------------------- */ -+ -+#define FUNCTION_VALUE(VALTYPE, FUNC) \ -+ gen_rtx(REG, TYPE_MODE(VALTYPE), FIRST_RETVAL_REGNO) -+ -+#define LIBCALL_VALUE(MODE) \ -+ gen_rtx(REG, MODE, FIRST_RETVAL_REGNO) -+ -+#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == FIRST_RETVAL_REGNO) -+ -+/* ----------------------------- * -+ * How Large Values Are Returned -+ * ----------------------------- */ -+ -+ -+#define RETURN_IN_MEMORY(TYPE) \ -+ nios2_return_in_memory (TYPE) -+ -+ -+#define STRUCT_VALUE 0 -+ -+#define DEFAULT_PCC_STRUCT_RETURN 0 -+ -+/******************* -+ * Addressing Modes -+ *******************/ -+ -+ -+#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN) -+ -+#define CONSTANT_ADDRESS_P(X) (CONSTANT_P (X)) -+ -+#define MAX_REGS_PER_ADDRESS 1 -+ -+/* Go to ADDR if X is a valid address. */ -+#ifndef REG_OK_STRICT -+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ -+ { \ -+ if (nios2_legitimate_address ((X), (MODE), 0)) \ -+ goto ADDR; \ -+ } -+#else -+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR) \ -+ { \ -+ if (nios2_legitimate_address ((X), (MODE), 1)) \ -+ goto ADDR; \ -+ } -+#endif -+ -+#ifndef REG_OK_STRICT -+#define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P2 (REGNO (X), 0) -+#define REG_OK_FOR_INDEX_P(X) REGNO_OK_FOR_INDEX_P2 (REGNO (X), 0) -+#else -+#define REG_OK_FOR_BASE_P(X) REGNO_OK_FOR_BASE_P2 (REGNO (X), 1) -+#define REG_OK_FOR_INDEX_P(X) REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1) -+#endif -+ -+#define LEGITIMATE_CONSTANT_P(X) 1 -+ -+/* Nios II has no mode dependent addresses. */ -+#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL) -+ -+/* Set if this has a weak declaration */ -+#define SYMBOL_FLAG_WEAK_DECL (1 << SYMBOL_FLAG_MACH_DEP_SHIFT) -+#define SYMBOL_REF_WEAK_DECL_P(RTX) \ -+ ((SYMBOL_REF_FLAGS (RTX) & SYMBOL_FLAG_WEAK_DECL) != 0) -+ -+ -+/* true if a symbol is both small and not weak. In this case, gp -+ relative access can be used */ -+#define SYMBOL_REF_IN_NIOS2_SMALL_DATA_P(RTX) \ -+ (SYMBOL_REF_SMALL_P(RTX) && !SYMBOL_REF_WEAK_DECL_P(RTX)) -+ -+/***************** -+ * Describing Relative Costs of Operations -+ *****************/ -+ -+#define SLOW_BYTE_ACCESS 1 -+ -+/* It is as good to call a constant function address as to call an address -+ kept in a register. -+ ??? Not true anymore really. Now that call cannot address full range -+ of memory callr may need to be used */ -+ -+#define NO_FUNCTION_CSE -+#define NO_RECURSIVE_FUNCTION_CSE -+ -+ -+ -+/***************************************** -+ * Defining the Output Assembler Language -+ *****************************************/ -+ -+/* ------------------------------------------ * -+ * The Overall Framework of an Assembler File -+ * ------------------------------------------ */ -+ -+#define ASM_APP_ON "#APP\n" -+#define ASM_APP_OFF "#NO_APP\n" -+ -+#define ASM_COMMENT_START "# " -+ -+/* ------------------------------- * -+ * Output and Generation of Labels -+ * ------------------------------- */ -+ -+#define GLOBAL_ASM_OP "\t.global\t" -+ -+ -+/* -------------- * -+ * Output of Data -+ * -------------- */ -+ -+#define DWARF2_UNWIND_INFO 0 -+ -+ -+/* -------------------------------- * -+ * Assembler Commands for Alignment -+ * -------------------------------- */ -+ -+#define ASM_OUTPUT_ALIGN(FILE, LOG) \ -+ do { \ -+ fprintf ((FILE), "%s%d\n", ALIGN_ASM_OP, (LOG)); \ -+ } while (0) -+ -+ -+/* -------------------------------- * -+ * Output of Assembler Instructions -+ * -------------------------------- */ -+ -+#define REGISTER_NAMES \ -+{ \ -+ "zero", \ -+ "at", \ -+ "r2", \ -+ "r3", \ -+ "r4", \ -+ "r5", \ -+ "r6", \ -+ "r7", \ -+ "r8", \ -+ "r9", \ -+ "r10", \ -+ "r11", \ -+ "r12", \ -+ "r13", \ -+ "r14", \ -+ "r15", \ -+ "r16", \ -+ "r17", \ -+ "r18", \ -+ "r19", \ -+ "r20", \ -+ "r21", \ -+ "r22", \ -+ "r23", \ -+ "r24", \ -+ "r25", \ -+ "gp", \ -+ "sp", \ -+ "fp", \ -+ "ta", \ -+ "ba", \ -+ "ra", \ -+ "status", \ -+ "estatus", \ -+ "bstatus", \ -+ "ipri", \ -+ "ecause", \ -+ "pc", \ -+ "rap", \ -+ "fake_fp", \ -+ "fake_ap", \ -+} -+ -+#define ASM_OUTPUT_OPCODE(STREAM, PTR)\ -+ (PTR) = asm_output_opcode (STREAM, PTR) -+ -+#define PRINT_OPERAND(STREAM, X, CODE) \ -+ nios2_print_operand (STREAM, X, CODE) -+ -+#define PRINT_OPERAND_ADDRESS(STREAM, X) \ -+ nios2_print_operand_address (STREAM, X) -+ -+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE) \ -+do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \ -+ fprintf (FILE, ".L%u\n", (unsigned) (VALUE)); \ -+ } while (0) -+ -+ -+/* ------------ * -+ * Label Output -+ * ------------ */ -+ -+ -+/* ---------------------------------------------------- * -+ * Dividing the Output into Sections (Texts, Data, ...) -+ * ---------------------------------------------------- */ -+ -+/* Output before read-only data. */ -+#define TEXT_SECTION_ASM_OP ("\t.section\t.text") -+ -+/* Output before writable data. */ -+#define DATA_SECTION_ASM_OP ("\t.section\t.data") -+ -+ -+/* Default the definition of "small data" to 8 bytes. */ -+/* ??? How come I can't use HOST_WIDE_INT here? */ -+extern unsigned long nios2_section_threshold; -+#define NIOS2_DEFAULT_GVALUE 8 -+ -+ -+ -+/* This says how to output assembler code to declare an -+ uninitialized external linkage data object. Under SVR4, -+ the linker seems to want the alignment of data objects -+ to depend on their types. We do exactly that here. */ -+ -+#undef COMMON_ASM_OP -+#define COMMON_ASM_OP "\t.comm\t" -+ -+#undef ASM_OUTPUT_ALIGNED_COMMON -+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN) \ -+do \ -+{ \ -+ if ((SIZE) <= nios2_section_threshold) \ -+ { \ -+ named_section (0, ".sbss", 0); \ -+ (*targetm.asm_out.globalize_label) (FILE, NAME); \ -+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \ -+ if (!flag_inhibit_size_directive) \ -+ ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE); \ -+ ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT)); \ -+ ASM_OUTPUT_LABEL(FILE, NAME); \ -+ ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1); \ -+ } \ -+ else \ -+ { \ -+ fprintf ((FILE), "%s", COMMON_ASM_OP); \ -+ assemble_name ((FILE), (NAME)); \ -+ fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT); \ -+ } \ -+} \ -+while (0) -+ -+ -+/* This says how to output assembler code to declare an -+ uninitialized internal linkage data object. Under SVR4, -+ the linker seems to want the alignment of data objects -+ to depend on their types. We do exactly that here. */ -+ -+#undef ASM_OUTPUT_ALIGNED_LOCAL -+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN) \ -+do { \ -+ if ((SIZE) <= nios2_section_threshold) \ -+ named_section (0, ".sbss", 0); \ -+ else \ -+ named_section (0, ".bss", 0); \ -+ ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object"); \ -+ if (!flag_inhibit_size_directive) \ -+ ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE); \ -+ ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT)); \ -+ ASM_OUTPUT_LABEL(FILE, NAME); \ -+ ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1); \ -+} while (0) -+ -+ -+ -+/*************************** -+ * Miscellaneous Parameters -+ ***************************/ -+ -+#define MOVE_MAX 4 -+ -+#define Pmode SImode -+#define FUNCTION_MODE QImode -+ -+#define CASE_VECTOR_MODE Pmode -+ -+#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1 -+ -+#define LOAD_EXTEND_OP(MODE) (ZERO_EXTEND) -+ -+#define WORD_REGISTER_OPERATIONS ---- gcc-3.4.3/gcc/config/nios2/nios2.md -+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.md -@@ -0,0 +1,2078 @@ -+;; Machine Description for Altera NIOS 2G NIOS2 version. -+;; Copyright (C) 2003 Altera -+;; Contributed by Jonah Graham (jgraham@altera.com). -+;; -+;; This file is part of GNU CC. -+;; -+;; GNU CC 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. -+;; -+;; GNU CC 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 GNU CC; see the file COPYING. If not, write to -+;; the Free Software Foundation, 59 Temple Place - Suite 330, -+;; Boston, MA 02111-1307, USA. */ -+ -+ -+ -+;***************************************************************************** -+;* -+;* constants -+;* -+;***************************************************************************** -+(define_constants [ -+ (GP_REGNO 26) -+ (SP_REGNO 27) -+ (FP_REGNO 28) -+ (RA_REGNO 31) -+ (RAP_REGNO 38) -+ (FIRST_RETVAL_REGNO 2) -+ (LAST_RETVAL_REGNO 3) -+ (FIRST_ARG_REGNO 4) -+ (LAST_ARG_REGNO 7) -+ (SC_REGNO 23) -+ (PC_REGNO 37) -+ (FAKE_FP_REGNO 39) -+ (FAKE_AP_REGNO 40) -+ -+ -+ (UNSPEC_BLOCKAGE 0) -+ (UNSPEC_LDBIO 1) -+ (UNSPEC_LDBUIO 2) -+ (UNSPEC_LDHIO 3) -+ (UNSPEC_LDHUIO 4) -+ (UNSPEC_LDWIO 5) -+ (UNSPEC_STBIO 6) -+ (UNSPEC_STHIO 7) -+ (UNSPEC_STWIO 8) -+ (UNSPEC_SYNC 9) -+ (UNSPEC_WRCTL 10) -+ (UNSPEC_RDCTL 11) -+ -+]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* instruction scheduler -+;* -+;***************************************************************************** -+ -+; No schedule info is currently available, using an assumption that no -+; instruction can use the results of the previous instruction without -+; incuring a stall. -+ -+; length of an instruction (in bytes) -+(define_attr "length" "" (const_int 4)) -+(define_attr "type" "unknown,complex,control,alu,cond_alu,st,ld,shift,mul,div,custom" (const_string "complex")) -+ -+(define_asm_attributes -+ [(set_attr "length" "4") -+ (set_attr "type" "complex")]) -+ -+(define_automaton "nios2") -+(automata_option "v") -+;(automata_option "no-minimization") -+(automata_option "ndfa") -+ -+; The nios2 pipeline is fairly straightforward for the fast model. -+; Every alu operation is pipelined so that an instruction can -+; be issued every cycle. However, there are still potential -+; stalls which this description tries to deal with. -+ -+(define_cpu_unit "cpu" "nios2") -+ -+(define_insn_reservation "complex" 1 -+ (eq_attr "type" "complex") -+ "cpu") -+ -+(define_insn_reservation "control" 1 -+ (eq_attr "type" "control") -+ "cpu") -+ -+(define_insn_reservation "alu" 1 -+ (eq_attr "type" "alu") -+ "cpu") -+ -+(define_insn_reservation "cond_alu" 1 -+ (eq_attr "type" "cond_alu") -+ "cpu") -+ -+(define_insn_reservation "st" 1 -+ (eq_attr "type" "st") -+ "cpu") -+ -+(define_insn_reservation "custom" 1 -+ (eq_attr "type" "custom") -+ "cpu") -+ -+; shifts, muls and lds have three cycle latency -+(define_insn_reservation "ld" 3 -+ (eq_attr "type" "ld") -+ "cpu") -+ -+(define_insn_reservation "shift" 3 -+ (eq_attr "type" "shift") -+ "cpu") -+ -+(define_insn_reservation "mul" 3 -+ (eq_attr "type" "mul") -+ "cpu") -+ -+(define_insn_reservation "div" 1 -+ (eq_attr "type" "div") -+ "cpu") -+ -+ -+;***************************************************************************** -+;* -+;* MOV Instructions -+;* -+;***************************************************************************** -+ -+(define_expand "movqi" -+ [(set (match_operand:QI 0 "nonimmediate_operand" "") -+ (match_operand:QI 1 "general_operand" ""))] -+ "" -+{ -+ if (nios2_emit_move_sequence (operands, QImode)) -+ DONE; -+}) -+ -+(define_insn "movqi_internal" -+ [(set (match_operand:QI 0 "nonimmediate_operand" "=m, r,r, r") -+ (match_operand:QI 1 "general_operand" "rM,m,rM,I"))] -+ "(register_operand (operands[0], QImode) -+ || register_operand (operands[1], QImode) -+ || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))" -+ "@ -+ stb%o0\\t%z1, %0 -+ ldbu%o1\\t%0, %1 -+ mov\\t%0, %z1 -+ movi\\t%0, %1" -+ [(set_attr "type" "st,ld,alu,alu")]) -+ -+(define_insn "ldbio" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_LDBIO)) -+ (use (match_operand:SI 1 "memory_operand" "m"))] -+ "" -+ "ldbio\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+(define_insn "ldbuio" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_LDBUIO)) -+ (use (match_operand:SI 1 "memory_operand" "m"))] -+ "" -+ "ldbuio\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+(define_insn "stbio" -+ [(set (match_operand:SI 0 "memory_operand" "=m") -+ (match_operand:SI 1 "register_operand" "r")) -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_STBIO)] -+ "" -+ "stbio\\t%z1, %0" -+ [(set_attr "type" "st")]) -+ -+ -+(define_expand "movhi" -+ [(set (match_operand:HI 0 "nonimmediate_operand" "") -+ (match_operand:HI 1 "general_operand" ""))] -+ "" -+{ -+ if (nios2_emit_move_sequence (operands, HImode)) -+ DONE; -+}) -+ -+(define_insn "movhi_internal" -+ [(set (match_operand:HI 0 "nonimmediate_operand" "=m, r,r, r,r") -+ (match_operand:HI 1 "general_operand" "rM,m,rM,I,J"))] -+ "(register_operand (operands[0], HImode) -+ || register_operand (operands[1], HImode) -+ || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))" -+ "@ -+ sth%o0\\t%z1, %0 -+ ldhu%o1\\t%0, %1 -+ mov\\t%0, %z1 -+ movi\\t%0, %1 -+ movui\\t%0, %1" -+ [(set_attr "type" "st,ld,alu,alu,alu")]) -+ -+(define_insn "ldhio" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_LDHIO)) -+ (use (match_operand:SI 1 "memory_operand" "m"))] -+ "" -+ "ldhio\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+(define_insn "ldhuio" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_LDHUIO)) -+ (use (match_operand:SI 1 "memory_operand" "m"))] -+ "" -+ "ldhuio\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+(define_insn "sthio" -+ [(set (match_operand:SI 0 "memory_operand" "=m") -+ (match_operand:SI 1 "register_operand" "r")) -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_STHIO)] -+ "" -+ "sthio\\t%z1, %0" -+ [(set_attr "type" "st")]) -+ -+(define_expand "movsi" -+ [(set (match_operand:SI 0 "nonimmediate_operand" "") -+ (match_operand:SI 1 "general_operand" ""))] -+ "" -+{ -+ if (nios2_emit_move_sequence (operands, SImode)) -+ DONE; -+}) -+ -+(define_insn "movsi_internal" -+ [(set (match_operand:SI 0 "nonimmediate_operand" "=m, r,r, r,r,r,r") -+ (match_operand:SI 1 "general_operand" "rM,m,rM,I,J,S,i"))] -+ "(register_operand (operands[0], SImode) -+ || register_operand (operands[1], SImode) -+ || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))" -+ "@ -+ stw%o0\\t%z1, %0 -+ ldw%o1\\t%0, %1 -+ mov\\t%0, %z1 -+ movi\\t%0, %1 -+ movui\\t%0, %1 -+ addi\\t%0, gp, %%gprel(%1) -+ movhi\\t%0, %H1\;addi\\t%0, %0, %L1" -+ [(set_attr "type" "st,ld,alu,alu,alu,alu,alu")]) -+ -+(define_insn "ldwio" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_LDWIO)) -+ (use (match_operand:SI 1 "memory_operand" "m"))] -+ "" -+ "ldwio\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+(define_insn "stwio" -+ [(set (match_operand:SI 0 "memory_operand" "=m") -+ (match_operand:SI 1 "register_operand" "r")) -+ (unspec_volatile:SI [(const_int 0)] UNSPEC_STWIO)] -+ "" -+ "stwio\\t%z1, %0" -+ [(set_attr "type" "st")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* zero extension -+;* -+;***************************************************************************** -+ -+ -+(define_insn "zero_extendhisi2" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))] -+ "" -+ "@ -+ andi\\t%0, %1, 0xffff -+ ldhu%o1\\t%0, %1" -+ [(set_attr "type" "alu,ld")]) -+ -+(define_insn "zero_extendqihi2" -+ [(set (match_operand:HI 0 "register_operand" "=r,r") -+ (zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] -+ "" -+ "@ -+ andi\\t%0, %1, 0xff -+ ldbu%o1\\t%0, %1" -+ [(set_attr "type" "alu,ld")]) -+ -+(define_insn "zero_extendqisi2" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))] -+ "" -+ "@ -+ andi\\t%0, %1, 0xff -+ ldbu%o1\\t%0, %1" -+ [(set_attr "type" "alu,ld")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* sign extension -+;* -+;***************************************************************************** -+ -+(define_expand "extendhisi2" -+ [(set (match_operand:SI 0 "register_operand" "") -+ (sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))] -+ "" -+{ -+ if (optimize && GET_CODE (operands[1]) == MEM) -+ operands[1] = force_not_mem (operands[1]); -+ -+ if (GET_CODE (operands[1]) != MEM) -+ { -+ rtx op1 = gen_lowpart (SImode, operands[1]); -+ rtx temp = gen_reg_rtx (SImode); -+ rtx shift = GEN_INT (16); -+ -+ emit_insn (gen_ashlsi3 (temp, op1, shift)); -+ emit_insn (gen_ashrsi3 (operands[0], temp, shift)); -+ DONE; -+ } -+}) -+ -+(define_insn "extendhisi2_internal" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))] -+ "" -+ "ldh%o1\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+(define_expand "extendqihi2" -+ [(set (match_operand:HI 0 "register_operand" "") -+ (sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")))] -+ "" -+{ -+ if (optimize && GET_CODE (operands[1]) == MEM) -+ operands[1] = force_not_mem (operands[1]); -+ -+ if (GET_CODE (operands[1]) != MEM) -+ { -+ rtx op0 = gen_lowpart (SImode, operands[0]); -+ rtx op1 = gen_lowpart (SImode, operands[1]); -+ rtx temp = gen_reg_rtx (SImode); -+ rtx shift = GEN_INT (24); -+ -+ emit_insn (gen_ashlsi3 (temp, op1, shift)); -+ emit_insn (gen_ashrsi3 (op0, temp, shift)); -+ DONE; -+ } -+}) -+ -+(define_insn "extendqihi2_internal" -+ [(set (match_operand:HI 0 "register_operand" "=r") -+ (sign_extend:HI (match_operand:QI 1 "memory_operand" "m")))] -+ "" -+ "ldb%o1\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+ -+(define_expand "extendqisi2" -+ [(set (match_operand:SI 0 "register_operand" "") -+ (sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))] -+ "" -+{ -+ if (optimize && GET_CODE (operands[1]) == MEM) -+ operands[1] = force_not_mem (operands[1]); -+ -+ if (GET_CODE (operands[1]) != MEM) -+ { -+ rtx op1 = gen_lowpart (SImode, operands[1]); -+ rtx temp = gen_reg_rtx (SImode); -+ rtx shift = GEN_INT (24); -+ -+ emit_insn (gen_ashlsi3 (temp, op1, shift)); -+ emit_insn (gen_ashrsi3 (operands[0], temp, shift)); -+ DONE; -+ } -+}) -+ -+(define_insn "extendqisi2_insn" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (sign_extend:SI (match_operand:QI 1 "memory_operand" "m")))] -+ "" -+ "ldb%o1\\t%0, %1" -+ [(set_attr "type" "ld")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* Arithmetic Operations -+;* -+;***************************************************************************** -+ -+(define_insn "addsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (plus:SI (match_operand:SI 1 "register_operand" "%r,r") -+ (match_operand:SI 2 "arith_operand" "r,I")))] -+ "" -+ "add%i2\\t%0, %1, %z2" -+ [(set_attr "type" "alu")]) -+ -+(define_insn "subsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (minus:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "register_operand" "r")))] -+ "" -+ "sub\\t%0, %z1, %2" -+ [(set_attr "type" "alu")]) -+ -+(define_insn "mulsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (mult:SI (match_operand:SI 1 "register_operand" "r,r") -+ (match_operand:SI 2 "arith_operand" "r,I")))] -+ "TARGET_HAS_MUL" -+ "mul%i2\\t%0, %1, %z2" -+ [(set_attr "type" "mul")]) -+ -+(define_expand "divsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (div:SI (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")))] -+ "" -+{ -+ if (!TARGET_HAS_DIV) -+ { -+ if (!TARGET_FAST_SW_DIV) -+ FAIL; -+ else -+ { -+ if (nios2_emit_expensive_div (operands, SImode)) -+ DONE; -+ } -+ } -+}) -+ -+(define_insn "divsi3_insn" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (div:SI (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")))] -+ "TARGET_HAS_DIV" -+ "div\\t%0, %1, %2" -+ [(set_attr "type" "div")]) -+ -+(define_insn "udivsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (udiv:SI (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")))] -+ "TARGET_HAS_DIV" -+ "divu\\t%0, %1, %2" -+ [(set_attr "type" "div")]) -+ -+(define_insn "smulsi3_highpart" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (truncate:SI -+ (lshiftrt:DI -+ (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r")) -+ (sign_extend:DI (match_operand:SI 2 "register_operand" "r"))) -+ (const_int 32))))] -+ "TARGET_HAS_MULX" -+ "mulxss\\t%0, %1, %2" -+ [(set_attr "type" "mul")]) -+ -+(define_insn "umulsi3_highpart" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (truncate:SI -+ (lshiftrt:DI -+ (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r")) -+ (zero_extend:DI (match_operand:SI 2 "register_operand" "r"))) -+ (const_int 32))))] -+ "TARGET_HAS_MULX" -+ "mulxuu\\t%0, %1, %2" -+ [(set_attr "type" "mul")]) -+ -+ -+(define_expand "mulsidi3" -+ [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0) -+ (mult:SI (match_operand:SI 1 "register_operand" "") -+ (match_operand:SI 2 "register_operand" ""))) -+ (set (subreg:SI (match_dup 0) 4) -+ (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1)) -+ (sign_extend:DI (match_dup 2))) -+ (const_int 32))))] -+ "TARGET_HAS_MULX" -+ "") -+ -+(define_expand "umulsidi3" -+ [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0) -+ (mult:SI (match_operand:SI 1 "register_operand" "") -+ (match_operand:SI 2 "register_operand" ""))) -+ (set (subreg:SI (match_dup 0) 4) -+ (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1)) -+ (zero_extend:DI (match_dup 2))) -+ (const_int 32))))] -+ "TARGET_HAS_MULX" -+ "") -+ -+ -+ -+;***************************************************************************** -+;* -+;* Negate and ones complement -+;* -+;***************************************************************************** -+ -+(define_insn "negsi2" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (neg:SI (match_operand:SI 1 "register_operand" "r")))] -+ "" -+{ -+ operands[2] = const0_rtx; -+ return "sub\\t%0, %z2, %1"; -+} -+ [(set_attr "type" "alu")]) -+ -+(define_insn "one_cmplsi2" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (not:SI (match_operand:SI 1 "register_operand" "r")))] -+ "" -+{ -+ operands[2] = const0_rtx; -+ return "nor\\t%0, %z2, %1"; -+} -+ [(set_attr "type" "alu")]) -+ -+ -+ -+; Logical Operantions -+ -+(define_insn "andsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r, r,r") -+ (and:SI (match_operand:SI 1 "register_operand" "%r, r,r") -+ (match_operand:SI 2 "logical_operand" "rM,J,K")))] -+ "" -+ "@ -+ and\\t%0, %1, %z2 -+ and%i2\\t%0, %1, %2 -+ andh%i2\\t%0, %1, %U2" -+ [(set_attr "type" "alu")]) -+ -+(define_insn "iorsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r, r,r") -+ (ior:SI (match_operand:SI 1 "register_operand" "%r, r,r") -+ (match_operand:SI 2 "logical_operand" "rM,J,K")))] -+ "" -+ "@ -+ or\\t%0, %1, %z2 -+ or%i2\\t%0, %1, %2 -+ orh%i2\\t%0, %1, %U2" -+ [(set_attr "type" "alu")]) -+ -+(define_insn "*norsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (and:SI (not:SI (match_operand:SI 1 "register_operand" "%r")) -+ (not:SI (match_operand:SI 2 "reg_or_0_operand" "rM"))))] -+ "" -+ "nor\\t%0, %1, %z2" -+ [(set_attr "type" "alu")]) -+ -+(define_insn "xorsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r, r,r") -+ (xor:SI (match_operand:SI 1 "register_operand" "%r, r,r") -+ (match_operand:SI 2 "logical_operand" "rM,J,K")))] -+ "" -+ "@ -+ xor\\t%0, %1, %z2 -+ xor%i2\\t%0, %1, %2 -+ xorh%i2\\t%0, %1, %U2" -+ [(set_attr "type" "alu")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* Shifts -+;* -+;***************************************************************************** -+ -+(define_insn "ashlsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (ashift:SI (match_operand:SI 1 "register_operand" "r,r") -+ (match_operand:SI 2 "shift_operand" "r,L")))] -+ "" -+ "sll%i2\\t%0, %1, %z2" -+ [(set_attr "type" "shift")]) -+ -+(define_insn "ashrsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (ashiftrt:SI (match_operand:SI 1 "register_operand" "r,r") -+ (match_operand:SI 2 "shift_operand" "r,L")))] -+ "" -+ "sra%i2\\t%0, %1, %z2" -+ [(set_attr "type" "shift")]) -+ -+(define_insn "lshrsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,r") -+ (match_operand:SI 2 "shift_operand" "r,L")))] -+ "" -+ "srl%i2\\t%0, %1, %z2" -+ [(set_attr "type" "shift")]) -+ -+(define_insn "rotlsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (rotate:SI (match_operand:SI 1 "register_operand" "r,r") -+ (match_operand:SI 2 "shift_operand" "r,L")))] -+ "" -+ "rol%i2\\t%0, %1, %z2" -+ [(set_attr "type" "shift")]) -+ -+(define_insn "rotrsi3" -+ [(set (match_operand:SI 0 "register_operand" "=r,r") -+ (rotatert:SI (match_operand:SI 1 "register_operand" "r,r") -+ (match_operand:SI 2 "register_operand" "r,r")))] -+ "" -+ "ror\\t%0, %1, %2" -+ [(set_attr "type" "shift")]) -+ -+(define_insn "*shift_mul_constants" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (ashift:SI (mult:SI (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "const_int_operand" "I")) -+ (match_operand:SI 3 "const_int_operand" "I")))] -+ "TARGET_HAS_MUL && SMALL_INT (INTVAL (operands[2]) << INTVAL (operands[3]))" -+{ -+ HOST_WIDE_INT mul = INTVAL (operands[2]) << INTVAL (operands[3]); -+ rtx ops[3]; -+ -+ ops[0] = operands[0]; -+ ops[1] = operands[1]; -+ ops[2] = GEN_INT (mul); -+ -+ output_asm_insn ("muli\t%0, %1, %2", ops); -+ return ""; -+} -+ [(set_attr "type" "mul")]) -+ -+ -+ -+ -+;***************************************************************************** -+;* -+;* Prologue, Epilogue and Return -+;* -+;***************************************************************************** -+ -+(define_expand "prologue" -+ [(const_int 1)] -+ "" -+{ -+ expand_prologue (); -+ DONE; -+}) -+ -+(define_expand "epilogue" -+ [(return)] -+ "" -+{ -+ expand_epilogue (false); -+ DONE; -+}) -+ -+(define_expand "sibcall_epilogue" -+ [(return)] -+ "" -+{ -+ expand_epilogue (true); -+ DONE; -+}) -+ -+(define_insn "return" -+ [(return)] -+ "reload_completed && nios2_can_use_return_insn ()" -+ "ret\\t" -+) -+ -+(define_insn "return_from_epilogue" -+ [(use (match_operand 0 "pmode_register_operand" "")) -+ (return)] -+ "reload_completed" -+ "ret\\t" -+) -+ -+;; Block any insns from being moved before this point, since the -+;; profiling call to mcount can use various registers that aren't -+;; saved or used to pass arguments. -+ -+(define_insn "blockage" -+ [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)] -+ "" -+ "" -+ [(set_attr "type" "unknown") -+ (set_attr "length" "0")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* Jumps and Calls -+;* -+;***************************************************************************** -+ -+(define_insn "indirect_jump" -+ [(set (pc) (match_operand:SI 0 "register_operand" "r"))] -+ "" -+ "jmp\\t%0" -+ [(set_attr "type" "control")]) -+ -+(define_insn "jump" -+ [(set (pc) -+ (label_ref (match_operand 0 "" "")))] -+ "" -+ "br\\t%0" -+ [(set_attr "type" "control")]) -+ -+ -+(define_insn "indirect_call" -+ [(call (mem:QI (match_operand:SI 0 "register_operand" "r")) -+ (match_operand 1 "" "")) -+ (clobber (reg:SI RA_REGNO))] -+ "" -+ "callr\\t%0" -+ [(set_attr "type" "control")]) -+ -+(define_insn "indirect_call_value" -+ [(set (match_operand 0 "" "") -+ (call (mem:QI (match_operand:SI 1 "register_operand" "r")) -+ (match_operand 2 "" ""))) -+ (clobber (reg:SI RA_REGNO))] -+ "" -+ "callr\\t%1" -+) -+ -+(define_expand "call" -+ [(parallel [(call (match_operand 0 "" "") -+ (match_operand 1 "" "")) -+ (clobber (reg:SI RA_REGNO))])] -+ "" -+ "") -+ -+(define_expand "call_value" -+ [(parallel [(set (match_operand 0 "" "") -+ (call (match_operand 1 "" "") -+ (match_operand 2 "" ""))) -+ (clobber (reg:SI RA_REGNO))])] -+ "" -+ "") -+ -+(define_insn "*call" -+ [(call (mem:QI (match_operand:SI 0 "immediate_operand" "i")) -+ (match_operand 1 "" "")) -+ (clobber (match_operand:SI 2 "register_operand" "=r"))] -+ "" -+ "call\\t%0" -+ [(set_attr "type" "control")]) -+ -+(define_insn "*call_value" -+ [(set (match_operand 0 "" "") -+ (call (mem:QI (match_operand:SI 1 "immediate_operand" "i")) -+ (match_operand 2 "" ""))) -+ (clobber (match_operand:SI 3 "register_operand" "=r"))] -+ "" -+ "call\\t%1" -+ [(set_attr "type" "control")]) -+ -+(define_expand "sibcall" -+ [(parallel [(call (match_operand 0 "" "") -+ (match_operand 1 "" "")) -+ (return) -+ (use (match_operand 2 "" ""))])] -+ "" -+ { -+ XEXP (operands[0], 0) = copy_to_mode_reg (SImode, XEXP (operands[0], 0)); -+ -+ if (operands[2] == NULL_RTX) -+ operands[2] = const0_rtx; -+ } -+) -+ -+(define_expand "sibcall_value" -+ [(parallel [(set (match_operand 0 "" "") -+ (call (match_operand 1 "" "") -+ (match_operand 2 "" ""))) -+ (return) -+ (use (match_operand 3 "" ""))])] -+ "" -+ { -+ XEXP (operands[1], 0) = copy_to_mode_reg (SImode, XEXP (operands[1], 0)); -+ -+ if (operands[3] == NULL_RTX) -+ operands[3] = const0_rtx; -+ } -+) -+ -+(define_insn "sibcall_insn" -+ [(call (mem:QI (match_operand:SI 0 "register_operand" "r")) -+ (match_operand 1 "" "")) -+ (return) -+ (use (match_operand 2 "" ""))] -+ "" -+ "jmp\\t%0" -+) -+ -+(define_insn "sibcall_value_insn" -+ [(set (match_operand 0 "register_operand" "") -+ (call (mem:QI (match_operand:SI 1 "register_operand" "r")) -+ (match_operand 2 "" ""))) -+ (return) -+ (use (match_operand 3 "" ""))] -+ "" -+ "jmp\\t%1" -+) -+ -+ -+ -+ -+(define_expand "tablejump" -+ [(parallel [(set (pc) (match_operand 0 "register_operand" "r")) -+ (use (label_ref (match_operand 1 "" "")))])] -+ "" -+ "" -+) -+ -+(define_insn "*tablejump" -+ [(set (pc) -+ (match_operand:SI 0 "register_operand" "r")) -+ (use (label_ref (match_operand 1 "" "")))] -+ "" -+ "jmp\\t%0" -+ [(set_attr "type" "control")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* Comparisons -+;* -+;***************************************************************************** -+;; Flow here is rather complex (based on MIPS): -+;; -+;; 1) The cmp{si,di,sf,df} routine is called. It deposits the -+;; arguments into the branch_cmp array, and the type into -+;; branch_type. No RTL is generated. -+;; -+;; 2) The appropriate branch define_expand is called, which then -+;; creates the appropriate RTL for the comparison and branch. -+;; Different CC modes are used, based on what type of branch is -+;; done, so that we can constrain things appropriately. There -+;; are assumptions in the rest of GCC that break if we fold the -+;; operands into the branchs for integer operations, and use cc0 -+;; for floating point, so we use the fp status register instead. -+;; If needed, an appropriate temporary is created to hold the -+;; of the integer compare. -+ -+(define_expand "cmpsi" -+ [(set (cc0) -+ (compare:CC (match_operand:SI 0 "register_operand" "") -+ (match_operand:SI 1 "arith_operand" "")))] -+ "" -+{ -+ branch_cmp[0] = operands[0]; -+ branch_cmp[1] = operands[1]; -+ branch_type = CMP_SI; -+ DONE; -+}) -+ -+(define_expand "tstsi" -+ [(set (cc0) -+ (match_operand:SI 0 "register_operand" ""))] -+ "" -+{ -+ branch_cmp[0] = operands[0]; -+ branch_cmp[1] = const0_rtx; -+ branch_type = CMP_SI; -+ DONE; -+}) -+ -+ -+;***************************************************************************** -+;* -+;* setting a register from a comparison -+;* -+;***************************************************************************** -+ -+(define_expand "seq" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (eq:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (EQ, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*seq" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (eq:SI (match_operand:SI 1 "reg_or_0_operand" "%rM") -+ (match_operand:SI 2 "arith_operand" "rI")))] -+ "" -+ "cmpeq%i2\\t%0, %z1, %z2" -+ [(set_attr "type" "alu")]) -+ -+ -+(define_expand "sne" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (ne:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (NE, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sne" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (ne:SI (match_operand:SI 1 "reg_or_0_operand" "%rM") -+ (match_operand:SI 2 "arith_operand" "rI")))] -+ "" -+ "cmpne%i2\\t%0, %z1, %z2" -+ [(set_attr "type" "alu")]) -+ -+ -+(define_expand "sgt" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (gt:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (GT, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sgt" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (gt:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "reg_or_0_operand" "rM")))] -+ "" -+ "cmplt\\t%0, %z2, %z1" -+ [(set_attr "type" "alu")]) -+ -+ -+(define_expand "sge" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (ge:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (GE, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sge" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (ge:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "arith_operand" "rI")))] -+ "" -+ "cmpge%i2\\t%0, %z1, %z2" -+ [(set_attr "type" "alu")]) -+ -+(define_expand "sle" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (le:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (LE, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sle" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (le:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "reg_or_0_operand" "rM")))] -+ "" -+ "cmpge\\t%0, %z2, %z1" -+ [(set_attr "type" "alu")]) -+ -+ -+(define_expand "slt" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (lt:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (LT, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*slt" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (lt:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "arith_operand" "rI")))] -+ "" -+ "cmplt%i2\\t%0, %z1, %z2" -+ [(set_attr "type" "alu")]) -+ -+ -+(define_expand "sgtu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (gtu:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (GTU, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sgtu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (gtu:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "reg_or_0_operand" "rM")))] -+ "" -+ "cmpltu\\t%0, %z2, %z1" -+ [(set_attr "type" "alu")]) -+ -+ -+(define_expand "sgeu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (geu:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (GEU, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sgeu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (geu:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "uns_arith_operand" "rJ")))] -+ "" -+ "cmpgeu%i2\\t%0, %z1, %z2" -+ [(set_attr "type" "alu")]) -+ -+(define_expand "sleu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (leu:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (LEU, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sleu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (leu:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "reg_or_0_operand" "rM")))] -+ "" -+ "cmpgeu\\t%0, %z2, %z1" -+ [(set_attr "type" "alu")]) -+ -+ -+(define_expand "sltu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (ltu:SI (match_dup 1) -+ (match_dup 2)))] -+ "" -+{ -+ if (branch_type != CMP_SI) -+ FAIL; -+ -+ /* set up operands from compare. */ -+ operands[1] = branch_cmp[0]; -+ operands[2] = branch_cmp[1]; -+ -+ gen_int_relational (LTU, operands[0], operands[1], operands[2], NULL_RTX); -+ DONE; -+}) -+ -+ -+(define_insn "*sltu" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (ltu:SI (match_operand:SI 1 "reg_or_0_operand" "rM") -+ (match_operand:SI 2 "uns_arith_operand" "rJ")))] -+ "" -+ "cmpltu%i2\\t%0, %z1, %z2" -+ [(set_attr "type" "alu")]) -+ -+ -+ -+ -+;***************************************************************************** -+;* -+;* branches -+;* -+;***************************************************************************** -+ -+(define_insn "*cbranch" -+ [(set (pc) -+ (if_then_else -+ (match_operator:SI 0 "comparison_operator" -+ [(match_operand:SI 2 "reg_or_0_operand" "rM") -+ (match_operand:SI 3 "reg_or_0_operand" "rM")]) -+ (label_ref (match_operand 1 "" "")) -+ (pc)))] -+ "" -+ "b%0\\t%z2, %z3, %l1" -+ [(set_attr "type" "control")]) -+ -+ -+(define_expand "beq" -+ [(set (pc) -+ (if_then_else (eq:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (EQ, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+ -+(define_expand "bne" -+ [(set (pc) -+ (if_then_else (ne:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (NE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+ -+(define_expand "bgt" -+ [(set (pc) -+ (if_then_else (gt:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (GT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+(define_expand "bge" -+ [(set (pc) -+ (if_then_else (ge:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (GE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+(define_expand "ble" -+ [(set (pc) -+ (if_then_else (le:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (LE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+(define_expand "blt" -+ [(set (pc) -+ (if_then_else (lt:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (LT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+ -+(define_expand "bgtu" -+ [(set (pc) -+ (if_then_else (gtu:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (GTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+(define_expand "bgeu" -+ [(set (pc) -+ (if_then_else (geu:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (GEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+(define_expand "bleu" -+ [(set (pc) -+ (if_then_else (leu:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (LEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+(define_expand "bltu" -+ [(set (pc) -+ (if_then_else (ltu:CC (cc0) -+ (const_int 0)) -+ (label_ref (match_operand 0 "" "")) -+ (pc)))] -+ "" -+{ -+ gen_int_relational (LTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]); -+ DONE; -+}) -+ -+ -+;***************************************************************************** -+;* -+;* String and Block Operations -+;* -+;***************************************************************************** -+ -+; ??? This is all really a hack to get Dhrystone to work as fast as possible -+; things to be fixed: -+; * let the compiler core handle all of this, for that to work the extra -+; aliasing needs to be addressed. -+; * we use three temporary registers for loading and storing to ensure no -+; ld use stalls, this is excessive, because after the first ld/st only -+; two are needed. Only two would be needed all the way through if -+; we could schedule with other code. Consider: -+; 1 ld $1, 0($src) -+; 2 ld $2, 4($src) -+; 3 ld $3, 8($src) -+; 4 st $1, 0($dest) -+; 5 ld $1, 12($src) -+; 6 st $2, 4($src) -+; 7 etc. -+; The first store has to wait until 4. If it does not there will be one -+; cycle of stalling. However, if any other instruction could be placed -+; between 1 and 4, $3 would not be needed. -+; * In small we probably don't want to ever do this ourself because there -+; is no ld use stall. -+ -+(define_expand "movstrsi" -+ [(parallel [(set (match_operand:BLK 0 "general_operand" "") -+ (match_operand:BLK 1 "general_operand" "")) -+ (use (match_operand:SI 2 "const_int_operand" "")) -+ (use (match_operand:SI 3 "const_int_operand" "")) -+ (clobber (match_scratch:SI 4 "=&r")) -+ (clobber (match_scratch:SI 5 "=&r")) -+ (clobber (match_scratch:SI 6 "=&r"))])] -+ "TARGET_INLINE_MEMCPY" -+{ -+ rtx ld_addr_reg, st_addr_reg; -+ -+ /* If the predicate for op2 fails in expr.c:emit_block_move_via_movstr -+ it trys to copy to a register, but does not re-try the predicate. -+ ??? Intead of fixing expr.c, I fix it here. */ -+ if (!const_int_operand (operands[2], SImode)) -+ FAIL; -+ -+ /* ??? there are some magic numbers which need to be sorted out here. -+ the basis for them is not increasing code size hugely or going -+ out of range of offset addressing */ -+ if (INTVAL (operands[3]) < 4) -+ FAIL; -+ if (!optimize -+ || (optimize_size && INTVAL (operands[2]) > 12) -+ || (optimize < 3 && INTVAL (operands[2]) > 100) -+ || INTVAL (operands[2]) > 200) -+ FAIL; -+ -+ st_addr_reg -+ = replace_equiv_address (operands[0], -+ copy_to_mode_reg (Pmode, XEXP (operands[0], 0))); -+ ld_addr_reg -+ = replace_equiv_address (operands[1], -+ copy_to_mode_reg (Pmode, XEXP (operands[1], 0))); -+ emit_insn (gen_movstrsi_internal (st_addr_reg, ld_addr_reg, -+ operands[2], operands[3])); -+ -+ DONE; -+}) -+ -+ -+(define_insn "movstrsi_internal" -+ [(set (match_operand:BLK 0 "memory_operand" "=o") -+ (match_operand:BLK 1 "memory_operand" "o")) -+ (use (match_operand:SI 2 "const_int_operand" "i")) -+ (use (match_operand:SI 3 "const_int_operand" "i")) -+ (clobber (match_scratch:SI 4 "=&r")) -+ (clobber (match_scratch:SI 5 "=&r")) -+ (clobber (match_scratch:SI 6 "=&r"))] -+ "TARGET_INLINE_MEMCPY" -+{ -+ int ld_offset = INTVAL (operands[2]); -+ int ld_len = INTVAL (operands[2]); -+ int ld_reg = 0; -+ rtx ld_addr_reg = XEXP (operands[1], 0); -+ int st_offset = INTVAL (operands[2]); -+ int st_len = INTVAL (operands[2]); -+ int st_reg = 0; -+ rtx st_addr_reg = XEXP (operands[0], 0); -+ int delay_count = 0; -+ -+ /* ops[0] is the address used by the insn -+ ops[1] is the register being loaded or stored */ -+ rtx ops[2]; -+ -+ if (INTVAL (operands[3]) < 4) -+ abort (); -+ -+ while (ld_offset >= 4) -+ { -+ /* if the load use delay has been met, I can start -+ storing */ -+ if (delay_count >= 3) -+ { -+ ops[0] = gen_rtx (MEM, SImode, -+ plus_constant (st_addr_reg, st_len - st_offset)); -+ ops[1] = operands[st_reg + 4]; -+ output_asm_insn ("stw\t%1, %0", ops); -+ -+ st_reg = (st_reg + 1) % 3; -+ st_offset -= 4; -+ } -+ -+ ops[0] = gen_rtx (MEM, SImode, -+ plus_constant (ld_addr_reg, ld_len - ld_offset)); -+ ops[1] = operands[ld_reg + 4]; -+ output_asm_insn ("ldw\t%1, %0", ops); -+ -+ ld_reg = (ld_reg + 1) % 3; -+ ld_offset -= 4; -+ delay_count++; -+ } -+ -+ if (ld_offset >= 2) -+ { -+ /* if the load use delay has been met, I can start -+ storing */ -+ if (delay_count >= 3) -+ { -+ ops[0] = gen_rtx (MEM, SImode, -+ plus_constant (st_addr_reg, st_len - st_offset)); -+ ops[1] = operands[st_reg + 4]; -+ output_asm_insn ("stw\t%1, %0", ops); -+ -+ st_reg = (st_reg + 1) % 3; -+ st_offset -= 4; -+ } -+ -+ ops[0] = gen_rtx (MEM, HImode, -+ plus_constant (ld_addr_reg, ld_len - ld_offset)); -+ ops[1] = operands[ld_reg + 4]; -+ output_asm_insn ("ldh\t%1, %0", ops); -+ -+ ld_reg = (ld_reg + 1) % 3; -+ ld_offset -= 2; -+ delay_count++; -+ } -+ -+ if (ld_offset >= 1) -+ { -+ /* if the load use delay has been met, I can start -+ storing */ -+ if (delay_count >= 3) -+ { -+ ops[0] = gen_rtx (MEM, SImode, -+ plus_constant (st_addr_reg, st_len - st_offset)); -+ ops[1] = operands[st_reg + 4]; -+ output_asm_insn ("stw\t%1, %0", ops); -+ -+ st_reg = (st_reg + 1) % 3; -+ st_offset -= 4; -+ } -+ -+ ops[0] = gen_rtx (MEM, QImode, -+ plus_constant (ld_addr_reg, ld_len - ld_offset)); -+ ops[1] = operands[ld_reg + 4]; -+ output_asm_insn ("ldb\t%1, %0", ops); -+ -+ ld_reg = (ld_reg + 1) % 3; -+ ld_offset -= 1; -+ delay_count++; -+ } -+ -+ while (st_offset >= 4) -+ { -+ ops[0] = gen_rtx (MEM, SImode, -+ plus_constant (st_addr_reg, st_len - st_offset)); -+ ops[1] = operands[st_reg + 4]; -+ output_asm_insn ("stw\t%1, %0", ops); -+ -+ st_reg = (st_reg + 1) % 3; -+ st_offset -= 4; -+ } -+ -+ while (st_offset >= 2) -+ { -+ ops[0] = gen_rtx (MEM, HImode, -+ plus_constant (st_addr_reg, st_len - st_offset)); -+ ops[1] = operands[st_reg + 4]; -+ output_asm_insn ("sth\t%1, %0", ops); -+ -+ st_reg = (st_reg + 1) % 3; -+ st_offset -= 2; -+ } -+ -+ while (st_offset >= 1) -+ { -+ ops[0] = gen_rtx (MEM, QImode, -+ plus_constant (st_addr_reg, st_len - st_offset)); -+ ops[1] = operands[st_reg + 4]; -+ output_asm_insn ("stb\t%1, %0", ops); -+ -+ st_reg = (st_reg + 1) % 3; -+ st_offset -= 1; -+ } -+ -+ return ""; -+} -+; ??? lengths are not being used yet, but I will probably forget -+; to update this once I am using lengths, so set it to something -+; definetely big enough to cover it. 400 allows for 200 bytes -+; of motion. -+ [(set_attr "length" "400")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* Custom instructions -+;* -+;***************************************************************************** -+ -+(define_constants [ -+ (CUSTOM_N 100) -+ (CUSTOM_NI 101) -+ (CUSTOM_NF 102) -+ (CUSTOM_NP 103) -+ (CUSTOM_NII 104) -+ (CUSTOM_NIF 105) -+ (CUSTOM_NIP 106) -+ (CUSTOM_NFI 107) -+ (CUSTOM_NFF 108) -+ (CUSTOM_NFP 109) -+ (CUSTOM_NPI 110) -+ (CUSTOM_NPF 111) -+ (CUSTOM_NPP 112) -+ (CUSTOM_IN 113) -+ (CUSTOM_INI 114) -+ (CUSTOM_INF 115) -+ (CUSTOM_INP 116) -+ (CUSTOM_INII 117) -+ (CUSTOM_INIF 118) -+ (CUSTOM_INIP 119) -+ (CUSTOM_INFI 120) -+ (CUSTOM_INFF 121) -+ (CUSTOM_INFP 122) -+ (CUSTOM_INPI 123) -+ (CUSTOM_INPF 124) -+ (CUSTOM_INPP 125) -+ (CUSTOM_FN 126) -+ (CUSTOM_FNI 127) -+ (CUSTOM_FNF 128) -+ (CUSTOM_FNP 129) -+ (CUSTOM_FNII 130) -+ (CUSTOM_FNIF 131) -+ (CUSTOM_FNIP 132) -+ (CUSTOM_FNFI 133) -+ (CUSTOM_FNFF 134) -+ (CUSTOM_FNFP 135) -+ (CUSTOM_FNPI 136) -+ (CUSTOM_FNPF 137) -+ (CUSTOM_FNPP 138) -+ (CUSTOM_PN 139) -+ (CUSTOM_PNI 140) -+ (CUSTOM_PNF 141) -+ (CUSTOM_PNP 142) -+ (CUSTOM_PNII 143) -+ (CUSTOM_PNIF 144) -+ (CUSTOM_PNIP 145) -+ (CUSTOM_PNFI 146) -+ (CUSTOM_PNFF 147) -+ (CUSTOM_PNFP 148) -+ (CUSTOM_PNPI 149) -+ (CUSTOM_PNPF 150) -+ (CUSTOM_PNPP 151) -+]) -+ -+ -+(define_insn "custom_n" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")] CUSTOM_N)] -+ "" -+ "custom\\t%0, zero, zero, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_ni" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r")] CUSTOM_NI)] -+ "" -+ "custom\\t%0, zero, %1, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_nf" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SF 1 "register_operand" "r")] CUSTOM_NF)] -+ "" -+ "custom\\t%0, zero, %1, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_np" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r")] CUSTOM_NP)] -+ "" -+ "custom\\t%0, zero, %1, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_nii" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_NII)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_nif" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SF 2 "register_operand" "r")] CUSTOM_NIF)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_nip" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_NIP)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_nfi" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SF 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_NFI)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_nff" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SF 1 "register_operand" "r") -+ (match_operand:SF 2 "register_operand" "r")] CUSTOM_NFF)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_nfp" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SF 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_NFP)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_npi" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_NPI)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_npf" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SF 2 "register_operand" "r")] CUSTOM_NPF)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_npp" -+ [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N") -+ (match_operand:SI 1 "register_operand" "r") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_NPP)] -+ "" -+ "custom\\t%0, zero, %1, %2" -+ [(set_attr "type" "custom")]) -+ -+ -+ -+(define_insn "custom_in" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_IN))] -+ "" -+ "custom\\t%1, %0, zero, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_ini" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_INI))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inf" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r")] CUSTOM_INF))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inp" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_INP))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inii" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_INII))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inif" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_INIF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inip" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_INIP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_infi" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_INFI))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inff" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_INFF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_infp" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_INFP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inpi" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_INPI))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inpf" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_INPF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_inpp" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_INPP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+ -+ -+ -+ -+(define_insn "custom_fn" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_FN))] -+ "" -+ "custom\\t%1, %0, zero, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fni" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_FNI))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnf" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r")] CUSTOM_FNF))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnp" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_FNP))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnii" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_FNII))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnif" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_FNIF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnip" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_FNIP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnfi" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_FNFI))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnff" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_FNFF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnfp" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_FNFP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnpi" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_FNPI))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnpf" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_FNPF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_fnpp" -+ [(set (match_operand:SF 0 "register_operand" "=r") -+ (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_FNPP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+ -+ -+(define_insn "custom_pn" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_PN))] -+ "" -+ "custom\\t%1, %0, zero, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pni" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_PNI))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnf" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r")] CUSTOM_PNF))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnp" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r")] CUSTOM_PNP))] -+ "" -+ "custom\\t%1, %0, %2, zero" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnii" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_PNII))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnif" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_PNIF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnip" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_PNIP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnfi" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_PNFI))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnff" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_PNFF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnfp" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SF 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_PNFP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnpi" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_PNPI))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnpf" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SF 3 "register_operand" "r")] CUSTOM_PNPF))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+(define_insn "custom_pnpp" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N") -+ (match_operand:SI 2 "register_operand" "r") -+ (match_operand:SI 3 "register_operand" "r")] CUSTOM_PNPP))] -+ "" -+ "custom\\t%1, %0, %2, %3" -+ [(set_attr "type" "custom")]) -+ -+ -+ -+ -+ -+ -+;***************************************************************************** -+;* -+;* Misc -+;* -+;***************************************************************************** -+ -+(define_insn "nop" -+ [(const_int 0)] -+ "" -+ "nop\\t" -+ [(set_attr "type" "alu")]) -+ -+(define_insn "sync" -+ [(unspec_volatile [(const_int 0)] UNSPEC_SYNC)] -+ "" -+ "sync\\t" -+ [(set_attr "type" "control")]) -+ -+ -+(define_insn "rdctl" -+ [(set (match_operand:SI 0 "register_operand" "=r") -+ (unspec_volatile:SI [(match_operand:SI 1 "rdwrctl_operand" "O")] UNSPEC_RDCTL))] -+ "" -+ "rdctl\\t%0, ctl%1" -+ [(set_attr "type" "control")]) -+ -+(define_insn "wrctl" -+ [(unspec_volatile:SI [(match_operand:SI 0 "rdwrctl_operand" "O") -+ (match_operand:SI 1 "register_operand" "r")] UNSPEC_WRCTL)] -+ "" -+ "wrctl\\tctl%0, %1" -+ [(set_attr "type" "control")]) -+ -+ -+ -+;***************************************************************************** -+;* -+;* Peepholes -+;* -+;***************************************************************************** -+ -+ ---- gcc-3.4.3/gcc/config/nios2/t-nios2 -+++ gcc-3.4.3-nios2/gcc/config/nios2/t-nios2 -@@ -0,0 +1,123 @@ -+## -+## Compiler flags to use when compiling libgcc2.c. -+## -+## LIB2FUNCS_EXTRA -+## A list of source file names to be compiled or assembled and inserted into libgcc.a. -+ -+LIB2FUNCS_EXTRA=$(srcdir)/config/nios2/lib2-divmod.c \ -+ $(srcdir)/config/nios2/lib2-divmod-hi.c \ -+ $(srcdir)/config/nios2/lib2-divtable.c \ -+ $(srcdir)/config/nios2/lib2-mul.c -+ -+## -+## Floating Point Emulation -+## To have GCC include software floating point libraries in libgcc.a define FPBIT -+## and DPBIT along with a few rules as follows: -+## -+## # We want fine grained libraries, so use the new code -+## # to build the floating point emulation libraries. -+FPBIT=$(srcdir)/config/nios2/nios2-fp-bit.c -+DPBIT=$(srcdir)/config/nios2/nios2-dp-bit.c -+ -+TARGET_LIBGCC2_CFLAGS = -O2 -+ -+# FLOAT_ONLY - no doubles -+# SMALL_MACHINE - QI/HI is faster than SI -+# Actually SMALL_MACHINE uses chars and shorts instead of ints -+# since ints (16-bit ones as they are today) are at least as fast -+# as chars and shorts, don't define SMALL_MACHINE -+# CMPtype - type returned by FP compare, i.e. INT (hard coded in fp-bit - see code ) -+ -+$(FPBIT): $(srcdir)/config/fp-bit.c Makefile -+ echo '#define FLOAT' > ${FPBIT} -+ cat $(srcdir)/config/fp-bit.c >> ${FPBIT} -+ -+$(DPBIT): $(srcdir)/config/fp-bit.c Makefile -+ echo '' > ${DPBIT} -+ cat $(srcdir)/config/fp-bit.c >> ${DPBIT} -+ -+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o -+ -+# Assemble startup files. -+$(T)crti.o: $(srcdir)/config/nios2/crti.asm $(GCC_PASSES) -+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ -+ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/nios2/crti.asm -+ -+$(T)crtn.o: $(srcdir)/config/nios2/crtn.asm $(GCC_PASSES) -+ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ -+ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/nios2/crtn.asm -+ -+ -+## You may need to provide additional #defines at the beginning of -+## fp-bit.c and dp-bit.c to control target endianness and other options -+## -+## CRTSTUFF_T_CFLAGS -+## Special flags used when compiling crtstuff.c. See Initialization. -+## -+## CRTSTUFF_T_CFLAGS_S -+## Special flags used when compiling crtstuff.c for shared linking. Used -+## if you use crtbeginS.o and crtendS.o in EXTRA-PARTS. See Initialization. -+## -+## MULTILIB_OPTIONS -+## For some targets, invoking GCC in different ways produces objects that -+## can not be linked together. For example, for some targets GCC produces -+## both big and little endian code. For these targets, you must arrange -+## for multiple versions of libgcc.a to be compiled, one for each set of -+## incompatible options. When GCC invokes the linker, it arranges to link -+## in the right version of libgcc.a, based on the command line options -+## used. -+## The MULTILIB_OPTIONS macro lists the set of options for which special -+## versions of libgcc.a must be built. Write options that are mutually -+## incompatible side by side, separated by a slash. Write options that may -+## be used together separated by a space. The build procedure will build -+## all combinations of compatible options. -+## -+## For example, if you set MULTILIB_OPTIONS to m68000/m68020 msoft-float, -+## Makefile will build special versions of libgcc.a using the following -+## sets of options: -m68000, -m68020, -msoft-float, -m68000 -msoft-float, -+## and -m68020 -msoft-float. -+ -+MULTILIB_OPTIONS = mno-hw-mul mhw-mulx -+ -+## MULTILIB_DIRNAMES -+## If MULTILIB_OPTIONS is used, this variable specifies the directory names -+## that should be used to hold the various libraries. Write one element in -+## MULTILIB_DIRNAMES for each element in MULTILIB_OPTIONS. If -+## MULTILIB_DIRNAMES is not used, the default value will be -+## MULTILIB_OPTIONS, with all slashes treated as spaces. -+## For example, if MULTILIB_OPTIONS is set to m68000/m68020 msoft-float, -+## then the default value of MULTILIB_DIRNAMES is m68000 m68020 -+## msoft-float. You may specify a different value if you desire a -+## different set of directory names. -+ -+# MULTILIB_DIRNAMES = -+ -+## MULTILIB_MATCHES -+## Sometimes the same option may be written in two different ways. If an -+## option is listed in MULTILIB_OPTIONS, GCC needs to know about any -+## synonyms. In that case, set MULTILIB_MATCHES to a list of items of the -+## form option=option to describe all relevant synonyms. For example, -+## m68000=mc68000 m68020=mc68020. -+## -+## MULTILIB_EXCEPTIONS -+## Sometimes when there are multiple sets of MULTILIB_OPTIONS being -+## specified, there are combinations that should not be built. In that -+## case, set MULTILIB_EXCEPTIONS to be all of the switch exceptions in -+## shell case syntax that should not be built. -+## For example, in the PowerPC embedded ABI support, it is not desirable to -+## build libraries compiled with the -mcall-aix option and either of the -+## -fleading-underscore or -mlittle options at the same time. Therefore -+## MULTILIB_EXCEPTIONS is set to -+## -+## *mcall-aix/*fleading-underscore* *mlittle/*mcall-aix* -+## -+ -+MULTILIB_EXCEPTIONS = *mno-hw-mul/*mhw-mulx* -+ -+## -+## MULTILIB_EXTRA_OPTS Sometimes it is desirable that when building -+## multiple versions of libgcc.a certain options should always be passed on -+## to the compiler. In that case, set MULTILIB_EXTRA_OPTS to be the list -+## of options to be used for all builds. -+## -+ ---- gcc-3.4.3/gcc/config.gcc -+++ gcc-3.4.3-nios2/gcc/config.gcc -@@ -1321,6 +1321,10 @@ m32rle-*-linux*) - thread_file='posix' - fi - ;; -+# JBG -+nios2-*-* | nios2-*-*) -+ tm_file="elfos.h ${tm_file}" -+ ;; - # m68hc11 and m68hc12 share the same machine description. - m68hc11-*-*|m6811-*-*) - tm_file="dbxelf.h elfos.h m68hc11/m68hc11.h" ---- gcc-3.4.3/gcc/cse.c -+++ gcc-3.4.3-nios2/gcc/cse.c -@@ -3134,6 +3134,10 @@ find_comparison_args (enum rtx_code code - #ifdef FLOAT_STORE_FLAG_VALUE - REAL_VALUE_TYPE fsfv; - #endif -+#ifdef __nios2__ -+ if (p->is_const) -+ break; -+#endif - - /* If the entry isn't valid, skip it. */ - if (! exp_equiv_p (p->exp, p->exp, 1, 0)) ---- gcc-3.4.3/gcc/doc/extend.texi -+++ gcc-3.4.3-nios2/gcc/doc/extend.texi -@@ -5636,12 +5636,118 @@ to those machines. Generally these gene - instructions, but allow the compiler to schedule those calls. - - @menu -+* Altera Nios II Built-in Functions:: - * Alpha Built-in Functions:: - * ARM Built-in Functions:: - * X86 Built-in Functions:: - * PowerPC AltiVec Built-in Functions:: - @end menu - -+@node Altera Nios II Built-in Functions -+@subsection Altera Nios II Built-in Functions -+ -+These built-in functions are available for the Altera Nios II -+family of processors. -+ -+The following built-in functions are always available. They -+all generate the machine instruction that is part of the name. -+ -+@example -+int __builtin_ldbio (volatile const void *) -+int __builtin_ldbuio (volatile const void *) -+int __builtin_ldhio (volatile const void *) -+int __builtin_ldhuio (volatile const void *) -+int __builtin_ldwio (volatile const void *) -+void __builtin_stbio (volatile void *, int) -+void __builtin_sthio (volatile void *, int) -+void __builtin_stwio (volatile void *, int) -+void __builtin_sync (void) -+int __builtin_rdctl (int) -+void __builtin_wrctl (int, int) -+@end example -+ -+The following built-in functions are always available. They -+all generate a Nios II Custom Instruction. The name of the -+function represents the types that the function takes and -+returns. The letter before the @code{n} is the return type -+or void if absent. The @code{n} represnts the first parameter -+to all the custom instructions, the custom instruction number. -+The two letters after the @code{n} represent the up to two -+parameters to the function. -+ -+The letters reprsent the following data types: -+@table @code -+@item -+@code{void} for return type and no parameter for parameter types. -+ -+@item i -+@code{int} for return type and parameter type -+ -+@item f -+@code{float} for return type and parameter type -+ -+@item p -+@code{void *} for return type and parameter type -+ -+@end table -+ -+And the function names are: -+@example -+void __builtin_custom_n (void) -+void __builtin_custom_ni (int) -+void __builtin_custom_nf (float) -+void __builtin_custom_np (void *) -+void __builtin_custom_nii (int, int) -+void __builtin_custom_nif (int, float) -+void __builtin_custom_nip (int, void *) -+void __builtin_custom_nfi (float, int) -+void __builtin_custom_nff (float, float) -+void __builtin_custom_nfp (float, void *) -+void __builtin_custom_npi (void *, int) -+void __builtin_custom_npf (void *, float) -+void __builtin_custom_npp (void *, void *) -+int __builtin_custom_in (void) -+int __builtin_custom_ini (int) -+int __builtin_custom_inf (float) -+int __builtin_custom_inp (void *) -+int __builtin_custom_inii (int, int) -+int __builtin_custom_inif (int, float) -+int __builtin_custom_inip (int, void *) -+int __builtin_custom_infi (float, int) -+int __builtin_custom_inff (float, float) -+int __builtin_custom_infp (float, void *) -+int __builtin_custom_inpi (void *, int) -+int __builtin_custom_inpf (void *, float) -+int __builtin_custom_inpp (void *, void *) -+float __builtin_custom_fn (void) -+float __builtin_custom_fni (int) -+float __builtin_custom_fnf (float) -+float __builtin_custom_fnp (void *) -+float __builtin_custom_fnii (int, int) -+float __builtin_custom_fnif (int, float) -+float __builtin_custom_fnip (int, void *) -+float __builtin_custom_fnfi (float, int) -+float __builtin_custom_fnff (float, float) -+float __builtin_custom_fnfp (float, void *) -+float __builtin_custom_fnpi (void *, int) -+float __builtin_custom_fnpf (void *, float) -+float __builtin_custom_fnpp (void *, void *) -+void * __builtin_custom_pn (void) -+void * __builtin_custom_pni (int) -+void * __builtin_custom_pnf (float) -+void * __builtin_custom_pnp (void *) -+void * __builtin_custom_pnii (int, int) -+void * __builtin_custom_pnif (int, float) -+void * __builtin_custom_pnip (int, void *) -+void * __builtin_custom_pnfi (float, int) -+void * __builtin_custom_pnff (float, float) -+void * __builtin_custom_pnfp (float, void *) -+void * __builtin_custom_pnpi (void *, int) -+void * __builtin_custom_pnpf (void *, float) -+void * __builtin_custom_pnpp (void *, void *) -+@end example -+ -+ - @node Alpha Built-in Functions - @subsection Alpha Built-in Functions - ---- gcc-3.4.3/gcc/doc/invoke.texi -+++ gcc-3.4.3-nios2/gcc/doc/invoke.texi -@@ -337,6 +337,14 @@ in the following sections. - @item Machine Dependent Options - @xref{Submodel Options,,Hardware Models and Configurations}. - -+@emph{Altera Nios II Options} -+@gccoptlist{-msmallc -mno-bypass-cache -mbypass-cache @gol -+-mno-cache-volatile -mcache-volatile -mno-inline-memcpy @gol -+-minline-memcpy -mno-fast-sw-div -mfast-sw-div @gol -+-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx @gol -+-mno-hw-div -mhw-div @gol -+-msys-crt0= -msys-lib= -msys=nosys } -+ - @emph{M680x0 Options} - @gccoptlist{-m68000 -m68020 -m68020-40 -m68020-60 -m68030 -m68040 @gol - -m68060 -mcpu32 -m5200 -m68881 -mbitfield -mc68000 -mc68020 @gol -@@ -5836,6 +5844,7 @@ machine description. The default for th - that macro, which enables you to change the defaults. - - @menu -+* Altera Nios II Options:: - * M680x0 Options:: - * M68hc1x Options:: - * VAX Options:: -@@ -5871,6 +5880,103 @@ that macro, which enables you to change - * FRV Options:: - @end menu - -+ -+@node Altera Nios II Options -+@subsection Altera Nios II Options -+@cindex Altera Nios II options -+ -+These are the @samp{-m} options defined for the Altera Nios II -+processor. -+ -+@table @gcctabopt -+ -+@item -msmallc -+@opindex msmallc -+ -+Link with a limited version of the C library, -lsmallc. For more -+information see the C Library Documentation. -+ -+ -+@item -mbypass-cache -+@itemx -mno-bypass-cache -+@opindex mno-bypass-cache -+@opindex mbypass-cache -+ -+Force all load and store instructions to always bypass cache by -+using io variants of the instructions. The default is to not -+bypass the cache. -+ -+@item -mno-cache-volatile -+@itemx -mcache-volatile -+@opindex mcache-volatile -+@opindex mno-cache-volatile -+ -+Volatile memory access bypass the cache using the io variants of -+the ld and st instructions. The default is to cache volatile -+accesses. -+ -+-mno-cache-volatile is deprecated and will be deleted in a -+future GCC release. -+ -+ -+@item -mno-inline-memcpy -+@itemx -minline-memcpy -+@opindex mno-inline-memcpy -+@opindex minline-memcpy -+ -+Do not inline memcpy. The default is to inline when -O is on. -+ -+ -+@item -mno-fast-sw-div -+@itemx -mfast-sw-div -+@opindex mno-fast-sw-div -+@opindex mfast-sw-div -+ -+Do no use table based fast divide for small numbers. The default -+is to use the fast divide at -O3 and above. -+ -+ -+@item -mno-hw-mul -+@itemx -mhw-mul -+@itemx -mno-hw-mulx -+@itemx -mhw-mulx -+@itemx -mno-hw-div -+@itemx -mhw-div -+@opindex mno-hw-mul -+@opindex mhw-mul -+@opindex mno-hw-mulx -+@opindex mhw-mulx -+@opindex mno-hw-div -+@opindex mhw-div -+ -+Enable or disable emitting @code{mul}, @code{mulx} and @code{div} family of -+instructions by the compiler. The default is to emit @code{mul} -+and not emit @code{div} and @code{mulx}. -+ -+The different combinations of @code{mul} and @code{mulx} instructions -+generate a different multilib options. -+ -+ -+@item -msys-crt0=@var{startfile} -+@opindex msys-crt0 -+ -+@var{startfile} is the file name of the startfile (crt0) to use -+when linking. The default is crt0.o that comes with libgloss -+and is only suitable for use with the instruction set -+simulator. -+ -+@item -msys-lib=@var{systemlib} -+@itemx -msys-lib=nosys -+@opindex msys-lib -+ -+@var{systemlib} is the library name of the library which provides -+the system calls required by the C library, e.g. @code{read}, @code{write} -+etc. The default is to use nosys, this library provides -+stub implementations of the calls and is part of libgloss. -+ -+@end table -+ -+ - @node M680x0 Options - @subsection M680x0 Options - @cindex M680x0 options ---- gcc-3.4.3/gcc/doc/md.texi -+++ gcc-3.4.3-nios2/gcc/doc/md.texi -@@ -1335,6 +1335,49 @@ However, here is a summary of the machin - available on some particular machines. - - @table @emph -+ -+@item Altera Nios II family---@file{nios2.h} -+@table @code -+ -+@item I -+Integer that is valid as an immediate operand in an -+instruction taking a signed 16-bit number. Range -+@minus{}32768 to 32767. -+ -+@item J -+Integer that is valid as an immediate operand in an -+instruction taking an unsigned 16-bit number. Range -+0 to 65535. -+ -+@item K -+Integer that is valid as an immediate operand in an -+instruction taking only the upper 16-bits of a -+32-bit number. Range 32-bit numbers with the lower -+16-bits being 0. -+ -+@item L -+Integer that is valid as an immediate operand for a -+shift instruction. Range 0 to 31. -+ -+ -+@item M -+Integer that is valid as an immediate operand for -+only the value 0. Can be used in conjunction with -+the format modifier @code{z} to use @code{r0} -+instead of @code{0} in the assembly output. -+ -+@item N -+Integer that is valid as an immediate operand for -+a custom instruction opcode. Range 0 to 255. -+ -+@item S -+Matches immediates which are addresses in the small -+data section and therefore can be added to @code{gp} -+as a 16-bit immediate to re-create their 32-bit value. -+ -+@end table -+ -+ - @item ARM family---@file{arm.h} - @table @code - @item f diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/arm-softfloat.patch --- a/patches/gcc/3.4.4/arm-softfloat.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,270 +0,0 @@ -Note... modified my mjn3 to not conflict with the big endian arm patch. -Warning!!! Only the linux target is aware of TARGET_ENDIAN_DEFAULT. -Also changed - #define SUBTARGET_EXTRA_ASM_SPEC "\ - %{!mcpu=*:-mcpu=xscale} \ - %{mhard-float:-mfpu=fpa} \ - %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" -to - #define SUBTARGET_EXTRA_ASM_SPEC "\ - %{mhard-float:-mfpu=fpa} \ - %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" -in gcc/config/arm/linux-elf.h. -# -# 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 -urN gcc-3.4.1-old/gcc/config/arm/coff.h gcc-3.4.1/gcc/config/arm/coff.h ---- gcc-3.4.1-old/gcc/config/arm/coff.h 2004-02-24 08:25:22.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/coff.h 2004-09-02 21:51:15.000000000 -0500 -@@ -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 -urN gcc-3.4.1-old/gcc/config/arm/elf.h gcc-3.4.1/gcc/config/arm/elf.h ---- gcc-3.4.1-old/gcc/config/arm/elf.h 2004-02-24 08:25:22.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/elf.h 2004-09-02 21:51:15.000000000 -0500 -@@ -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 -urN gcc-3.4.1-old/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h ---- gcc-3.4.1-old/gcc/config/arm/linux-elf.h 2004-09-02 21:50:52.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-09-02 22:00:49.000000000 -0500 -@@ -44,12 +44,26 @@ - #define TARGET_LINKER_EMULATION "armelf_linux" - #endif - --/* 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 | \ -- TARGET_ENDIAN_DEFAULT ) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_SOFT_FLOAT \ -+ | TARGET_ENDIAN_DEFAULT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_MMU_TRAPS ) -+ -+#undef SUBTARGET_EXTRA_ASM_SPEC -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - -@@ -57,7 +71,7 @@ - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -72,7 +86,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 -urN gcc-3.4.1-old/gcc/config/arm/t-linux gcc-3.4.1/gcc/config/arm/t-linux ---- gcc-3.4.1-old/gcc/config/arm/t-linux 2003-09-20 16:09:07.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/t-linux 2004-09-02 21:51:15.000000000 -0500 -@@ -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 -urN gcc-3.4.1-old/gcc/config/arm/unknown-elf.h gcc-3.4.1/gcc/config/arm/unknown-elf.h ---- gcc-3.4.1-old/gcc/config/arm/unknown-elf.h 2004-02-24 08:25:22.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/unknown-elf.h 2004-09-02 21:51:15.000000000 -0500 -@@ -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 -urN gcc-3.4.1-old/gcc/config/arm/xscale-elf.h gcc-3.4.1/gcc/config/arm/xscale-elf.h ---- gcc-3.4.1-old/gcc/config/arm/xscale-elf.h 2003-07-01 18:26:43.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/xscale-elf.h 2004-09-02 21:51:15.000000000 -0500 -@@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.4/fix-fixincl.patch --- a/patches/gcc/3.4.4/fix-fixincl.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.0 as a cross into a clean $PREFIX -(the only two I've tried like this), the configure script happily copies -the glibc include files from include to sys-include; here's the line -from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - - ---- gcc-3.4.3/gcc/Makefile.in.foo 2005-05-20 11:41:39.000000000 -0700 -+++ gcc-3.4.3/gcc/Makefile.in 2005-05-20 12:08:46.000000000 -0700 -@@ -350,7 +350,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2532,11 +2535,13 @@ - $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(gcc_tooldir) - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: fixinc.sh gsyslimits.h - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.5/fix-fixincl.patch --- a/patches/gcc/3.4.5/fix-fixincl.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.0 as a cross into a clean $PREFIX -(the only two I've tried like this), the configure script happily copies -the glibc include files from include to sys-include; here's the line -from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - - ---- gcc-3.4.3/gcc/Makefile.in.foo 2005-05-20 11:41:39.000000000 -0700 -+++ gcc-3.4.3/gcc/Makefile.in 2005-05-20 12:08:46.000000000 -0700 -@@ -350,7 +350,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2532,11 +2535,13 @@ - $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(gcc_tooldir) - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: fixinc.sh gsyslimits.h - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.5/gcc-3.4.0-arm-bigendian.patch --- a/patches/gcc/3.4.5/gcc-3.4.0-arm-bigendian.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -Fixes build error - -/opt/crosstool/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/armeb-unknown-linux-gnu/bin/ld: unrecognised emulation mode: armelf_linux -Supported emulations: armelfb_linux armelfb -collect2: ld returned 1 exit status -make[2]: *** [/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/build-glibc/csu/crt1.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/glibc-2.3.3/csu' -make[1]: *** [csu/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc36/build/armeb-unknown-linux-gnu/gcc-3.4.2-glibc-2.3.3/glibc-2.3.3' -make: *** [all] Error 2 - - -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.5/gcc-3.4.0-arm-lib1asm.patch --- a/patches/gcc/3.4.5/gcc-3.4.0-arm-lib1asm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -# Origin: from a patch by Dimitry Andric , 2004-05-01 -# See http://gcc.gnu.org/PR14352 and http://gcc.gnu.org/PR16314 -# See also http://gcc.gnu.org/ml/gcc-patches/2004-08/msg02568.html et seq for why this isn't in mainline -# 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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.5/gcc-3.4.0-arm-nolibfloat.patch --- a/patches/gcc/3.4.5/gcc-3.4.0-arm-nolibfloat.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -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 -r 419d959441ed -r 447b203edc2e patches/gcc/3.4.5/pr15068-fix.patch --- a/patches/gcc/3.4.5/pr15068-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -See http://gcc.gnu.org/PR15068 - -Fixes error - -../sysdeps/generic/s_fmax.c: In function `__fmax': -../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257 -Please submit a full bug report, -with preprocessed source if appropriate. -See for instructions. -make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math' -make[1]: *** [math/others] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822' -make: *** [all] Error 2 - -[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ] - ---- gcc-3.4.1/gcc/flow.c.old 2004-02-27 19:39:19.000000000 -0800 -+++ gcc-3.4.1/gcc/flow.c 2004-08-26 07:29:46.000000000 -0700 -@@ -1878,6 +1878,7 @@ - rtx set_src = SET_SRC (pc_set (BB_END (bb))); - rtx cond_true = XEXP (set_src, 0); - rtx reg = XEXP (cond_true, 0); -+ enum rtx_code inv_cond; - - if (GET_CODE (reg) == SUBREG) - reg = SUBREG_REG (reg); -@@ -1886,11 +1887,13 @@ - in the form of a comparison of a register against zero. - If the condition is more complex than that, then it is safe - not to record any information. */ -- if (GET_CODE (reg) == REG -+ inv_cond = reversed_comparison_code (cond_true, BB_END (bb)); -+ if (inv_cond != UNKNOWN -+ && GET_CODE (reg) == REG - && XEXP (cond_true, 1) == const0_rtx) - { - rtx cond_false -- = gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+ = gen_rtx_fmt_ee (inv_cond, - GET_MODE (cond_true), XEXP (cond_true, 0), - XEXP (cond_true, 1)); - if (GET_CODE (XEXP (set_src, 1)) == PC) diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.2.1/100-uclibc-conf.patch --- a/patches/gdb/6.2.1/100-uclibc-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,290 +0,0 @@ -diff -urN gdb-6.2-dist/bfd/config.bfd gdb-6.2/bfd/config.bfd ---- gdb-6.2-dist/bfd/config.bfd 2004-07-09 07:32:35.000000000 -0500 -+++ gdb-6.2/bfd/config.bfd 2004-08-08 04:23:19.000000000 -0500 -@@ -129,7 +129,7 @@ - targ_defvec=ecoffalpha_little_vec - targ_selvecs=bfd_elf64_alpha_vec - ;; -- alpha*-*-linux-gnu* | alpha*-*-elf*) -+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*) - targ_defvec=bfd_elf64_alpha_vec - targ_selvecs=ecoffalpha_little_vec - ;; -@@ -139,7 +139,7 @@ - alpha*-*-*) - targ_defvec=ecoffalpha_little_vec - ;; -- ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu) -+ ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu | ia64*-*-linux-uclibc*) - targ_defvec=bfd_elf64_ia64_little_vec - targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec" - ;; -@@ -216,7 +216,7 @@ - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec - ;; -- armeb-*-elf | arm*b-*-linux-gnu*) -+ armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*) - targ_defvec=bfd_elf32_bigarm_vec - targ_selvecs=bfd_elf32_littlearm_vec - ;; -@@ -224,7 +224,7 @@ - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec - ;; -- arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \ -+ arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | arm*-*-conix* | \ - arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks) - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec -@@ -373,7 +373,7 @@ - ;; - - #ifdef BFD64 -- hppa*64*-*-linux-gnu*) -+ hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*) - targ_defvec=bfd_elf64_hppa_linux_vec - targ_selvecs=bfd_elf64_hppa_vec - ;; -@@ -384,7 +384,7 @@ - ;; - #endif - -- hppa*-*-linux-gnu* | hppa*-*-netbsd*) -+ hppa*-*-linux-gnu* | hppa*-*-netbsd* | hppa*-*-linux-uclibc*) - targ_defvec=bfd_elf32_hppa_linux_vec - targ_selvecs=bfd_elf32_hppa_vec - ;; -@@ -507,7 +507,7 @@ - targ_selvecs=bfd_elf32_i386_vec - targ_underscore=yes - ;; -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) - targ_defvec=bfd_elf32_i386_vec - targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec" - targ64_selvecs=bfd_elf64_x86_64_vec -@@ -521,7 +521,7 @@ - targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec" - ;; -- x86_64-*-linux-gnu*) -+ x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) - targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec" - ;; -@@ -691,7 +691,7 @@ - targ_defvec=hp300hpux_vec - targ_underscore=yes - ;; -- m68*-*-linux*aout*) -+ m68*-*-linux*aout* | m68*-*-linux-uclibc*) - targ_defvec=m68klinux_vec - targ_selvecs=bfd_elf32_m68k_vec - targ_underscore=yes -@@ -972,8 +972,8 @@ - ;; - #endif - powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \ -- powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \ -- powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*) -+ powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | powerpc-*-rtems* | \ -+ powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss* ) - targ_defvec=bfd_elf32_powerpc_vec - targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec" - targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec" -@@ -1009,8 +1009,8 @@ - targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" - ;; - powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \ -- powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\ -- powerpcle-*-rtems*) -+ powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* | \ -+ powerpcle-*-vxworks* | powerpcle-*-rtems*) - targ_defvec=bfd_elf32_powerpcle_vec - targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" - targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec" -@@ -1177,7 +1177,7 @@ - targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec" - targ_underscore=yes - ;; -- sparc-*-linux-gnu*) -+ sparc-*-linux-gnu* | sparc-*-linux-uclibc*) - targ_defvec=bfd_elf32_sparc_vec - targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec" - ;; -@@ -1224,7 +1224,7 @@ - targ_defvec=sunos_big_vec - targ_underscore=yes - ;; -- sparc64-*-linux-gnu*) -+ sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*) - targ_defvec=bfd_elf64_sparc_vec - targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec" - ;; -@@ -1293,7 +1293,7 @@ - targ_underscore=yes - ;; - -- vax-*-linux-gnu*) -+ vax-*-linux-gnu* | vax-*-linux-uclibc*) - targ_defvec=bfd_elf32_vax_vec - ;; - -diff -urN gdb-6.2-dist/bfd/configure gdb-6.2/bfd/configure ---- gdb-6.2-dist/bfd/configure 2004-07-07 12:28:45.000000000 -0500 -+++ gdb-6.2/bfd/configure 2004-08-08 04:27:01.000000000 -0500 -@@ -1698,6 +1698,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]+$' -@@ -5264,7 +5269,7 @@ - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) - COREFILE='' - ;; -- alpha*-*-linux-gnu*) -+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/alphalinux.h"' - ;; -@@ -5328,7 +5333,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386mach3.h"' - ;; -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386linux.h"' - ;; -@@ -5366,7 +5371,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/hp300bsd.h"' - ;; -- m68*-*-linux-gnu*) -+ m68*-*-linux-gnu* | m68*-*-linux-uclibc) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/m68klinux.h"' - ;; -@@ -5470,7 +5475,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxult2.h"' - ;; -- vax-*-linux-gnu*) -+ vax-*-linux-gnu* | vax-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxlinux.h"' - ;; -diff -urN gdb-6.2-dist/bfd/configure.in gdb-6.2/bfd/configure.in ---- gdb-6.2-dist/bfd/configure.in 2004-07-07 12:28:45.000000000 -0500 -+++ gdb-6.2/bfd/configure.in 2004-08-08 04:28:07.000000000 -0500 -@@ -164,7 +164,7 @@ - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) - COREFILE='' - ;; -- alpha*-*-linux-gnu*) -+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/alphalinux.h"' - ;; -@@ -249,7 +249,7 @@ - TRAD_HEADER='"hosts/i386mach3.h"' - ;; - changequote(,)dnl -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) - changequote([,])dnl - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386linux.h"' -@@ -290,7 +290,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/hp300bsd.h"' - ;; -- m68*-*-linux-gnu*) -+ m68*-*-linux-gnu* | m68*-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/m68klinux.h"' - ;; -@@ -378,7 +378,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxult2.h"' - ;; -- vax-*-linux-gnu*) -+ vax-*-linux-gnu* | vax-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxlinux.h"' - ;; -diff -urN gdb-6.2-dist/libtool.m4 gdb-6.2/libtool.m4 ---- gdb-6.2-dist/libtool.m4 2003-04-10 22:58:39.000000000 -0500 -+++ gdb-6.2/libtool.m4 2004-08-08 03:48:33.000000000 -0500 -@@ -645,6 +645,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 gdb-6.2-dist/ltconfig gdb-6.2/ltconfig ---- gdb-6.2-dist/ltconfig 2003-10-03 23:54:47.000000000 -0500 -+++ gdb-6.2/ltconfig 2004-08-08 03:48:33.000000000 -0500 -@@ -602,7 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in --linux-gnu*) ;; -+linux-gnu*|linux-uclibc*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac - -@@ -1259,6 +1259,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 -urN gdb-6.2-dist/opcodes/configure gdb-6.2/opcodes/configure ---- gdb-6.2-dist/opcodes/configure 2004-07-07 12:28:53.000000000 -0500 -+++ gdb-6.2/opcodes/configure 2004-08-08 04:53:55.000000000 -0500 -@@ -1701,6 +1701,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 -r 419d959441ed -r 447b203edc2e patches/gdb/6.2.1/200-uclibc-readline-conf.patch --- a/patches/gdb/6.2.1/200-uclibc-readline-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ---- gdb-6.1.1-dist/readline/configure 2003-05-27 18:29:47.000000000 -0500 -+++ gdb-6.1.1/readline/configure 2004-08-09 14:20:23.000000000 -0500 -@@ -6249,7 +6249,12 @@ - - - echo "$as_me:$LINENO: checking for mbstate_t" >&5 -+echo $ECHO_N "bash_cv_have_mbstate_t=$bash_cv_have_mbstate_t" >&6 - echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 -+if test "${bash_cv_have_mbstate_t+set}" != set; then -+ bash_cv_have_mbstate_t=yes -+ echo $ECHO_N "WARNING!! forcing to yes!!! $ECHO_C" >&6 -+fi - if test "${bash_cv_have_mbstate_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.2.1/400-mips-coredump.patch-2.4.23-29 --- a/patches/gdb/6.2.1/400-mips-coredump.patch-2.4.23-29 Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -Sometime around 2.4.22-23, the mips pt_regs.h fields were reordered, breaking -coredump handling by gdb for current kernels. Update the hardcoded constants -to reflect the change. ---- gdb-6.2.1/gdb/mips-linux-tdep.c-orig 2004-10-29 14:23:55.000000000 -0500 -+++ gdb-6.2.1/gdb/mips-linux-tdep.c 2004-10-29 14:26:44.000000000 -0500 -@@ -53,12 +53,22 @@ - - #define EF_REG0 6 - #define EF_REG31 37 -+ -+#if 0 - #define EF_LO 38 - #define EF_HI 39 - #define EF_CP0_EPC 40 - #define EF_CP0_BADVADDR 41 - #define EF_CP0_STATUS 42 - #define EF_CP0_CAUSE 43 -+#else -+#define EF_CP0_STATUS 38 -+#define EF_LO 39 -+#define EF_HI 40 -+#define EF_CP0_BADVADDR 41 -+#define EF_CP0_CAUSE 42 -+#define EF_CP0_EPC 43 -+#endif - - #define EF_SIZE 180 - diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.2.1/500-thread-timeout.patch --- a/patches/gdb/6.2.1/500-thread-timeout.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ ---- gdb-6.3.org/gdb/gdbserver/thread-db.c 2004-10-17 02:42:00.000000000 +0900 -+++ gdb-6.3/gdb/gdbserver/thread-db.c 2005-01-27 12:19:29.000000000 +0900 -@@ -21,6 +21,7 @@ - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -+#include - #include "server.h" - - #include "linux-low.h" -@@ -142,6 +143,7 @@ - td_event_msg_t msg; - td_err_e err; - struct inferior_linux_data *tdata; -+ int timeout; - - if (debug_threads) - fprintf (stderr, "Thread creation event.\n"); -@@ -152,7 +154,13 @@ - In the LinuxThreads implementation, this is safe, - because all events come from the manager thread - (except for its own creation, of course). */ -- err = td_ta_event_getmsg (thread_agent, &msg); -+ for (timeout = 0; timeout < 50000; timeout++) -+ { -+ err = td_ta_event_getmsg (thread_agent, &msg); -+ if (err != TD_NOMSG) -+ break; -+ usleep(1000); -+ } - if (err != TD_OK) - fprintf (stderr, "thread getmsg err: %s\n", - thread_db_err_str (err)); - diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/100-uclibc-conf.patch --- a/patches/gdb/6.3/100-uclibc-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,280 +0,0 @@ ---- gdb-6.3/bfd/config.bfd.orig Fri Oct 15 07:47:11 2004 -+++ gdb-6.3/bfd/config.bfd Mon Feb 28 00:04:43 2005 -@@ -129,7 +129,7 @@ - targ_defvec=ecoffalpha_little_vec - targ_selvecs=bfd_elf64_alpha_vec - ;; -- alpha*-*-linux-gnu* | alpha*-*-elf*) -+ alpha*-*-linux-* | alpha*-*-elf*) - targ_defvec=bfd_elf64_alpha_vec - targ_selvecs=ecoffalpha_little_vec - ;; -@@ -139,7 +139,7 @@ - alpha*-*-*) - targ_defvec=ecoffalpha_little_vec - ;; -- ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu) -+ ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu) - targ_defvec=bfd_elf64_ia64_little_vec - targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec" - ;; -@@ -216,7 +216,7 @@ - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec - ;; -- armeb-*-elf | arm*b-*-linux-gnu*) -+ armeb-*-elf | arm*b-*-linux-*) - targ_defvec=bfd_elf32_bigarm_vec - targ_selvecs=bfd_elf32_littlearm_vec - ;; -@@ -224,7 +224,7 @@ - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec - ;; -- arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \ -+ arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \ - arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks | \ - arm*-*-eabi* ) - targ_defvec=bfd_elf32_littlearm_vec -@@ -378,7 +378,7 @@ - ;; - - #ifdef BFD64 -- hppa*64*-*-linux-gnu*) -+ hppa*64*-*-linux-*) - targ_defvec=bfd_elf64_hppa_linux_vec - targ_selvecs=bfd_elf64_hppa_vec - ;; -@@ -389,7 +389,7 @@ - ;; - #endif - -- hppa*-*-linux-gnu*) -+ hppa*-*-linux-*) - targ_defvec=bfd_elf32_hppa_linux_vec - targ_selvecs=bfd_elf32_hppa_vec - ;; -@@ -522,7 +522,7 @@ - targ_selvecs=bfd_elf32_i386_vec - targ_underscore=yes - ;; -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-*) - targ_defvec=bfd_elf32_i386_vec - targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec" - targ64_selvecs=bfd_elf64_x86_64_vec -@@ -536,7 +536,7 @@ - targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec" - ;; -- x86_64-*-linux-gnu*) -+ x86_64-*-linux-*) - targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec" - ;; -@@ -706,7 +706,7 @@ - targ_defvec=hp300hpux_vec - targ_underscore=yes - ;; -- m68*-*-linux*aout*) -+ m68*-*-linux*aout* | m68*-*-linux-uclibc*) - targ_defvec=m68klinux_vec - targ_selvecs=bfd_elf32_m68k_vec - targ_underscore=yes -@@ -987,7 +987,7 @@ - ;; - #endif - powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \ -- powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \ -+ powerpc-*-solaris2* | powerpc-*-linux-* | powerpc-*-rtems* | \ - powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*) - targ_defvec=bfd_elf32_powerpc_vec - targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec" -@@ -1024,7 +1024,7 @@ - targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" - ;; - powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \ -- powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\ -+ powerpcle-*-solaris2* | powerpcle-*-linux-* | powerpcle-*-vxworks* |\ - powerpcle-*-rtems*) - targ_defvec=bfd_elf32_powerpcle_vec - targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" -@@ -1192,7 +1192,7 @@ - targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec" - targ_underscore=yes - ;; -- sparc-*-linux-gnu*) -+ sparc-*-linux-*) - targ_defvec=bfd_elf32_sparc_vec - targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec" - ;; -@@ -1239,7 +1239,7 @@ - targ_defvec=sunos_big_vec - targ_underscore=yes - ;; -- sparc64-*-linux-gnu*) -+ sparc64-*-linux-*) - targ_defvec=bfd_elf64_sparc_vec - targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec" - ;; -@@ -1308,7 +1308,7 @@ - targ_underscore=yes - ;; - -- vax-*-linux-gnu*) -+ vax-*-linux-*) - targ_defvec=bfd_elf32_vax_vec - ;; - ---- gdb-6.3/bfd/configure.orig Fri Oct 8 16:53:56 2004 -+++ gdb-6.3/bfd/configure Sun Feb 27 18:32:58 2005 -@@ -3583,6 +3583,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* | 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]+$' -@@ -9914,7 +9919,7 @@ - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) - COREFILE='' - ;; -- alpha*-*-linux-gnu*) -+ alpha*-*-linux-*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/alphalinux.h"' - ;; -@@ -9978,7 +9983,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386mach3.h"' - ;; -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386linux.h"' - ;; -@@ -10016,7 +10021,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/hp300bsd.h"' - ;; -- m68*-*-linux-gnu*) -+ m68*-*-linux-*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/m68klinux.h"' - ;; -@@ -10150,7 +10155,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxult2.h"' - ;; -- vax-*-linux-gnu*) -+ vax-*-linux-*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxlinux.h"' - ;; ---- gdb-6.3/bfd/configure.in.orig Fri Oct 8 16:53:59 2004 -+++ gdb-6.3/bfd/configure.in Sun Feb 27 18:14:41 2005 -@@ -163,7 +163,7 @@ - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) - COREFILE='' - ;; -- alpha*-*-linux-gnu*) -+ alpha*-*-linux-*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/alphalinux.h"' - ;; -@@ -248,7 +248,7 @@ - TRAD_HEADER='"hosts/i386mach3.h"' - ;; - changequote(,)dnl -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-*) - changequote([,])dnl - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386linux.h"' -@@ -289,7 +289,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/hp300bsd.h"' - ;; -- m68*-*-linux-gnu*) -+ m68*-*-linux-*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/m68klinux.h"' - ;; -@@ -375,7 +375,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxult2.h"' - ;; -- vax-*-linux-gnu*) -+ vax-*-linux-*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxlinux.h"' - ;; ---- gdb-6.3/libtool.m4.orig Wed Jul 21 21:21:41 2004 -+++ gdb-6.3/libtool.m4 Mon Feb 28 00:08:11 2005 -@@ -653,6 +653,11 @@ - fi - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - newsos6) - [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'] - lt_cv_file_magic_cmd=/usr/bin/file ---- gdb-6.3/ltconfig.orig Tue Oct 5 15:34:42 2004 -+++ gdb-6.3/ltconfig Sun Feb 27 18:14:41 2005 -@@ -602,7 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in --linux-gnu*) ;; -+linux-gnu*|linux-uclibc*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac - -@@ -1270,6 +1270,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 ---- gdb-6.3/opcodes/configure.orig Fri Sep 17 08:13:38 2004 -+++ gdb-6.3/opcodes/configure Mon Feb 28 00:09:42 2005 -@@ -3595,6 +3595,11 @@ - fi - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - newsos6) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/200-uclibc-readline-conf.patch --- a/patches/gdb/6.3/200-uclibc-readline-conf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ ---- gdb-6.1.1-dist/readline/configure 2003-05-27 18:29:47.000000000 -0500 -+++ gdb-6.1.1/readline/configure 2004-08-09 14:20:23.000000000 -0500 -@@ -6249,7 +6249,12 @@ - - - echo "$as_me:$LINENO: checking for mbstate_t" >&5 -+echo $ECHO_N "bash_cv_have_mbstate_t=$bash_cv_have_mbstate_t" >&6 - echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 -+if test "${bash_cv_have_mbstate_t+set}" != set; then -+ bash_cv_have_mbstate_t=yes -+ echo $ECHO_N "WARNING!! forcing to yes!!! $ECHO_C" >&6 -+fi - if test "${bash_cv_have_mbstate_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/400-mips-coredump.patch-2.4.23-29 --- a/patches/gdb/6.3/400-mips-coredump.patch-2.4.23-29 Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -Sometime around 2.4.22-23, the mips pt_regs.h fields were reordered, breaking -coredump handling by gdb for current kernels. Update the hardcoded constants -to reflect the change. ---- gdb-6.2.1/gdb/mips-linux-tdep.c-orig 2004-10-29 14:23:55.000000000 -0500 -+++ gdb-6.2.1/gdb/mips-linux-tdep.c 2004-10-29 14:26:44.000000000 -0500 -@@ -53,12 +53,22 @@ - - #define EF_REG0 6 - #define EF_REG31 37 -+ -+#if 0 - #define EF_LO 38 - #define EF_HI 39 - #define EF_CP0_EPC 40 - #define EF_CP0_BADVADDR 41 - #define EF_CP0_STATUS 42 - #define EF_CP0_CAUSE 43 -+#else -+#define EF_CP0_STATUS 38 -+#define EF_LO 39 -+#define EF_HI 40 -+#define EF_CP0_BADVADDR 41 -+#define EF_CP0_CAUSE 42 -+#define EF_CP0_EPC 43 -+#endif - - #define EF_SIZE 180 - diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/500-thread-timeout.patch --- a/patches/gdb/6.3/500-thread-timeout.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ ---- gdb-6.3.org/gdb/gdbserver/thread-db.c 2004-10-17 02:42:00.000000000 +0900 -+++ gdb-6.3/gdb/gdbserver/thread-db.c 2005-01-27 12:19:29.000000000 +0900 -@@ -21,6 +21,7 @@ - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -+#include - #include "server.h" - - #include "linux-low.h" -@@ -142,6 +143,7 @@ - td_event_msg_t msg; - td_err_e err; - struct inferior_linux_data *tdata; -+ int timeout; - - if (debug_threads) - fprintf (stderr, "Thread creation event.\n"); -@@ -152,7 +154,13 @@ - In the LinuxThreads implementation, this is safe, - because all events come from the manager thread - (except for its own creation, of course). */ -- err = td_ta_event_getmsg (thread_agent, &msg); -+ for (timeout = 0; timeout < 50000; timeout++) -+ { -+ err = td_ta_event_getmsg (thread_agent, &msg); -+ if (err != TD_NOMSG) -+ break; -+ usleep(1000); -+ } - if (err != TD_OK) - fprintf (stderr, "thread getmsg err: %s\n", - thread_db_err_str (err)); - diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/600-debian_10.selected-frame.patch --- a/patches/gdb/6.3/600-debian_10.selected-frame.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,552 +0,0 @@ -2004-10-11 - -This patch is not submitted. Many of these functions should be passing -a frame around rather than calling get_selected_frame, but at least it -is an improvement over deprecated_selected_frame. - -Index: gdb-6.3/gdb/breakpoint.c -=================================================================== ---- gdb-6.3.orig/gdb/breakpoint.c 2004-10-08 13:30:46.000000000 -0400 -+++ gdb-6.3/gdb/breakpoint.c 2004-11-09 22:55:11.231620957 -0500 -@@ -922,7 +922,7 @@ insert_bp_location (struct bp_location * - /* FIXME drow/2003-09-09: It would be nice if evaluate_expression - took a frame parameter, so that we didn't have to change the - selected frame. */ -- saved_frame_id = get_frame_id (deprecated_selected_frame); -+ saved_frame_id = get_frame_id (get_selected_frame ()); - - /* Determine if the watchpoint is within scope. */ - if (bpt->owner->exp_valid_block == NULL) -@@ -5464,14 +5464,9 @@ break_at_finish_at_depth_command_1 (char - - if (default_breakpoint_valid) - { -- if (deprecated_selected_frame) -- { -- selected_pc = get_frame_pc (deprecated_selected_frame); -- if (arg) -- if_arg = 1; -- } -- else -- error ("No selected frame."); -+ selected_pc = get_frame_pc (get_selected_frame ()); -+ if (arg) -+ if_arg = 1; - } - else - error ("No default breakpoint address now."); -@@ -5542,15 +5537,10 @@ break_at_finish_command_1 (char *arg, in - { - if (default_breakpoint_valid) - { -- if (deprecated_selected_frame) -- { -- addr_string = xstrprintf ("*0x%s", -- paddr_nz (get_frame_pc (deprecated_selected_frame))); -- if (arg) -- if_arg = 1; -- } -- else -- error ("No selected frame."); -+ addr_string = xstrprintf ("*0x%s", -+ paddr_nz (get_frame_pc (get_selected_frame ()))); -+ if (arg) -+ if_arg = 1; - } - else - error ("No default breakpoint address now."); -@@ -6082,7 +6072,7 @@ until_break_command (char *arg, int from - { - struct symtabs_and_lines sals; - struct symtab_and_line sal; -- struct frame_info *prev_frame = get_prev_frame (deprecated_selected_frame); -+ struct frame_info *prev_frame = get_prev_frame (get_selected_frame ()); - struct breakpoint *breakpoint; - struct cleanup *old_chain; - struct continuation_arg *arg1; -@@ -6119,7 +6109,7 @@ until_break_command (char *arg, int from - /* Otherwise, specify the current frame, because we want to stop only - at the very same frame. */ - breakpoint = set_momentary_breakpoint (sal, -- get_frame_id (deprecated_selected_frame), -+ get_frame_id (get_selected_frame ()), - bp_until); - - if (!target_can_async_p ()) -Index: gdb-6.3/gdb/cli/cli-cmds.c -=================================================================== ---- gdb-6.3.orig/gdb/cli/cli-cmds.c 2004-09-11 06:24:53.000000000 -0400 -+++ gdb-6.3/gdb/cli/cli-cmds.c 2004-11-09 22:51:07.323246218 -0500 -@@ -845,10 +845,7 @@ disassemble_command (char *arg, int from - name = NULL; - if (!arg) - { -- if (!deprecated_selected_frame) -- error ("No frame selected.\n"); -- -- pc = get_frame_pc (deprecated_selected_frame); -+ pc = get_frame_pc (get_selected_frame ()); - if (find_pc_partial_function (pc, &name, &low, &high) == 0) - error ("No function contains program counter for selected frame.\n"); - #if defined(TUI) -Index: gdb-6.3/gdb/f-valprint.c -=================================================================== ---- gdb-6.3.orig/gdb/f-valprint.c 2003-10-14 02:51:14.000000000 -0400 -+++ gdb-6.3/gdb/f-valprint.c 2004-11-09 22:51:07.326245632 -0500 -@@ -76,7 +76,7 @@ f77_get_dynamic_lowerbound (struct type - switch (TYPE_ARRAY_LOWER_BOUND_TYPE (type)) - { - case BOUND_BY_VALUE_ON_STACK: -- current_frame_addr = get_frame_base (deprecated_selected_frame); -+ current_frame_addr = get_frame_base (get_selected_frame ()); - if (current_frame_addr > 0) - { - *lower_bound = -@@ -100,7 +100,7 @@ f77_get_dynamic_lowerbound (struct type - break; - - case BOUND_BY_REF_ON_STACK: -- current_frame_addr = get_frame_base (deprecated_selected_frame); -+ current_frame_addr = get_frame_base (get_selected_frame ()); - if (current_frame_addr > 0) - { - ptr_to_lower_bound = -@@ -134,7 +134,7 @@ f77_get_dynamic_upperbound (struct type - switch (TYPE_ARRAY_UPPER_BOUND_TYPE (type)) - { - case BOUND_BY_VALUE_ON_STACK: -- current_frame_addr = get_frame_base (deprecated_selected_frame); -+ current_frame_addr = get_frame_base (get_selected_frame ()); - if (current_frame_addr > 0) - { - *upper_bound = -@@ -163,7 +163,7 @@ f77_get_dynamic_upperbound (struct type - break; - - case BOUND_BY_REF_ON_STACK: -- current_frame_addr = get_frame_base (deprecated_selected_frame); -+ current_frame_addr = get_frame_base (get_selected_frame ()); - if (current_frame_addr > 0) - { - ptr_to_upper_bound = -@@ -630,10 +630,7 @@ info_common_command (char *comname, int - first make sure that it is visible and if so, let - us display its contents */ - -- fi = deprecated_selected_frame; -- -- if (fi == NULL) -- error ("No frame selected"); -+ fi = get_selected_frame (); - - /* The following is generally ripped off from stack.c's routine - print_frame_info() */ -@@ -722,10 +719,7 @@ there_is_a_visible_common_named (char *c - if (comname == NULL) - error ("Cannot deal with NULL common name!"); - -- fi = deprecated_selected_frame; -- -- if (fi == NULL) -- error ("No frame selected"); -+ fi = get_selected_frame (); - - /* The following is generally ripped off from stack.c's routine - print_frame_info() */ -Index: gdb-6.3/gdb/infcmd.c -=================================================================== ---- gdb-6.3.orig/gdb/infcmd.c 2004-09-13 14:26:28.000000000 -0400 -+++ gdb-6.3/gdb/infcmd.c 2004-11-09 22:57:37.274099559 -0500 -@@ -1214,10 +1214,8 @@ finish_command (char *arg, int from_tty) - error ("The \"finish\" command does not take any arguments."); - if (!target_has_execution) - error ("The program is not running."); -- if (deprecated_selected_frame == NULL) -- error ("No selected frame."); - -- frame = get_prev_frame (deprecated_selected_frame); -+ frame = get_prev_frame (get_selected_frame ()); - if (frame == 0) - error ("\"finish\" not meaningful in the outermost frame."); - -@@ -1235,7 +1233,7 @@ finish_command (char *arg, int from_tty) - - /* Find the function we will return from. */ - -- function = find_pc_function (get_frame_pc (deprecated_selected_frame)); -+ function = find_pc_function (get_frame_pc (get_selected_frame ())); - - /* Print info on the selected frame, including level number but not - source. */ -@@ -1600,13 +1598,11 @@ registers_info (char *addr_exp, int fpre - - if (!target_has_registers) - error ("The program has no registers now."); -- if (deprecated_selected_frame == NULL) -- error ("No selected frame."); - - if (!addr_exp) - { - gdbarch_print_registers_info (current_gdbarch, gdb_stdout, -- deprecated_selected_frame, -1, fpregs); -+ get_selected_frame (), -1, fpregs); - return; - } - -@@ -1644,7 +1640,7 @@ registers_info (char *addr_exp, int fpre - if (regnum >= 0) - { - gdbarch_print_registers_info (current_gdbarch, gdb_stdout, -- deprecated_selected_frame, regnum, fpregs); -+ get_selected_frame (), regnum, fpregs); - continue; - } - } -@@ -1658,7 +1654,7 @@ registers_info (char *addr_exp, int fpre - && regnum < NUM_REGS + NUM_PSEUDO_REGS) - { - gdbarch_print_registers_info (current_gdbarch, gdb_stdout, -- deprecated_selected_frame, regnum, fpregs); -+ get_selected_frame (), regnum, fpregs); - continue; - } - } -@@ -1684,7 +1680,7 @@ registers_info (char *addr_exp, int fpre - if (gdbarch_register_reggroup_p (current_gdbarch, regnum, - group)) - gdbarch_print_registers_info (current_gdbarch, -- gdb_stdout, deprecated_selected_frame, -+ gdb_stdout, get_selected_frame (), - regnum, fpregs); - } - continue; -@@ -1714,8 +1710,6 @@ print_vector_info (struct gdbarch *gdbar - { - if (!target_has_registers) - error ("The program has no registers now."); -- if (deprecated_selected_frame == NULL) -- error ("No selected frame."); - - if (gdbarch_print_vector_info_p (gdbarch)) - gdbarch_print_vector_info (gdbarch, file, frame, args); -@@ -1740,7 +1734,7 @@ print_vector_info (struct gdbarch *gdbar - static void - vector_info (char *args, int from_tty) - { -- print_vector_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args); -+ print_vector_info (current_gdbarch, gdb_stdout, get_selected_frame (), args); - } - - -@@ -1910,8 +1904,6 @@ print_float_info (struct gdbarch *gdbarc - { - if (!target_has_registers) - error ("The program has no registers now."); -- if (deprecated_selected_frame == NULL) -- error ("No selected frame."); - - if (gdbarch_print_float_info_p (gdbarch)) - gdbarch_print_float_info (gdbarch, file, frame, args); -@@ -1937,7 +1929,7 @@ No floating-point info available for thi - static void - float_info (char *args, int from_tty) - { -- print_float_info (current_gdbarch, gdb_stdout, deprecated_selected_frame, args); -+ print_float_info (current_gdbarch, gdb_stdout, get_selected_frame (), args); - } - - static void -Index: gdb-6.3/gdb/inflow.c -=================================================================== ---- gdb-6.3.orig/gdb/inflow.c 2004-08-11 05:00:57.000000000 -0400 -+++ gdb-6.3/gdb/inflow.c 2004-11-09 22:58:37.488338883 -0500 -@@ -591,10 +591,7 @@ kill_command (char *arg, int from_tty) - if (target_has_stack) - { - printf_filtered ("In %s,\n", target_longname); -- if (deprecated_selected_frame == NULL) -- fputs_filtered ("No selected stack frame.\n", gdb_stdout); -- else -- print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); -+ print_stack_frame (get_selected_frame (), 1, SRC_AND_LOC); - } - bfd_cache_close_all (); - } -Index: gdb-6.3/gdb/infrun.c -=================================================================== ---- gdb-6.3.orig/gdb/infrun.c 2004-09-27 13:58:08.000000000 -0400 -+++ gdb-6.3/gdb/infrun.c 2004-11-09 22:51:07.351240752 -0500 -@@ -3485,7 +3485,7 @@ save_inferior_status (int restore_stack_ - - inf_status->registers = regcache_dup (current_regcache); - -- inf_status->selected_frame_id = get_frame_id (deprecated_selected_frame); -+ inf_status->selected_frame_id = get_frame_id (get_selected_frame ()); - return inf_status; - } - -Index: gdb-6.3/gdb/mi/mi-main.c -=================================================================== ---- gdb-6.3.orig/gdb/mi/mi-main.c 2004-09-12 11:00:42.000000000 -0400 -+++ gdb-6.3/gdb/mi/mi-main.c 2004-11-09 22:53:29.998389013 -0500 -@@ -388,7 +388,7 @@ register_changed_p (int regnum) - { - char raw_buffer[MAX_REGISTER_SIZE]; - -- if (! frame_register_read (deprecated_selected_frame, regnum, raw_buffer)) -+ if (! frame_register_read (get_selected_frame (), regnum, raw_buffer)) - return -1; - - if (memcmp (&old_regs[DEPRECATED_REGISTER_BYTE (regnum)], raw_buffer, -@@ -509,7 +509,7 @@ get_register (int regnum, int format) - if (format == 'N') - format = 0; - -- frame_register (deprecated_selected_frame, regnum, &optim, &lval, &addr, -+ frame_register (get_selected_frame (), regnum, &optim, &lval, &addr, - &realnum, buffer); - - if (optim) -Index: gdb-6.3/gdb/mn10300-tdep.c -=================================================================== ---- gdb-6.3.orig/gdb/mn10300-tdep.c 2004-08-02 22:02:22.000000000 -0400 -+++ gdb-6.3/gdb/mn10300-tdep.c 2004-11-09 22:51:07.356239776 -0500 -@@ -1154,7 +1154,7 @@ mn10300_print_register (const char *name - printf_filtered ("%s: ", name); - - /* Get the data */ -- if (!frame_register_read (deprecated_selected_frame, regnum, raw_buffer)) -+ if (!frame_register_read (get_selected_frame (), regnum, raw_buffer)) - { - printf_filtered ("[invalid]"); - return; -Index: gdb-6.3/gdb/stack.c -=================================================================== ---- gdb-6.3.orig/gdb/stack.c 2004-08-02 20:57:26.000000000 -0400 -+++ gdb-6.3/gdb/stack.c 2004-11-09 22:51:07.361238800 -0500 -@@ -758,9 +758,7 @@ parse_frame_specification (char *frame_e - switch (numargs) - { - case 0: -- if (deprecated_selected_frame == NULL) -- error ("No selected frame."); -- return deprecated_selected_frame; -+ return get_selected_frame (); - /* NOTREACHED */ - case 1: - { -@@ -902,10 +900,10 @@ frame_info (char *addr_exp, int from_tty - } - calling_frame_info = get_prev_frame (fi); - -- if (!addr_exp && frame_relative_level (deprecated_selected_frame) >= 0) -+ if (!addr_exp && frame_relative_level (get_selected_frame ()) >= 0) - { - printf_filtered ("Stack level %d, frame at ", -- frame_relative_level (deprecated_selected_frame)); -+ frame_relative_level (get_selected_frame ())); - print_address_numeric (get_frame_base (fi), 1, gdb_stdout); - printf_filtered (":\n"); - } -@@ -1445,9 +1443,7 @@ print_frame_label_vars (struct frame_inf - void - locals_info (char *args, int from_tty) - { -- if (!deprecated_selected_frame) -- error ("No frame selected."); -- print_frame_local_vars (deprecated_selected_frame, 0, gdb_stdout); -+ print_frame_local_vars (get_selected_frame (), 0, gdb_stdout); - } - - static void -@@ -1470,7 +1466,7 @@ catch_info (char *ignore, int from_tty) - if (!deprecated_selected_frame) - error ("No frame selected."); - -- print_frame_label_vars (deprecated_selected_frame, 0, gdb_stdout); -+ print_frame_label_vars (get_selected_frame (), 0, gdb_stdout); - } - } - -@@ -1537,9 +1533,7 @@ print_frame_arg_vars (struct frame_info - void - args_info (char *ignore, int from_tty) - { -- if (!deprecated_selected_frame) -- error ("No frame selected."); -- print_frame_arg_vars (deprecated_selected_frame, gdb_stdout); -+ print_frame_arg_vars (get_selected_frame (), gdb_stdout); - } - - -@@ -1724,7 +1718,7 @@ down_silently_base (char *count_exp) - if (target_has_stack == 0 || deprecated_selected_frame == 0) - error ("No stack."); - -- frame = find_relative_frame (deprecated_selected_frame, &count1); -+ frame = find_relative_frame (get_selected_frame (), &count1); - if (count1 != 0 && count_exp == 0) - { - -@@ -1944,7 +1938,7 @@ func_command (char *arg, int from_tty) - - if (!found) - printf_filtered ("'%s' not within current stack frame.\n", arg); -- else if (fp != deprecated_selected_frame) -+ else if (fp != get_selected_frame ()) - select_and_print_frame (fp); - } - -@@ -1965,7 +1959,7 @@ get_frame_language (void) - instruction of another function. So we rely on - get_frame_address_in_block(), it provides us with a PC which is - guaranteed to be inside the frame's code block. */ -- s = find_pc_symtab (get_frame_address_in_block (deprecated_selected_frame)); -+ s = find_pc_symtab (get_frame_address_in_block (get_selected_frame ())); - if (s) - flang = s->language; - else -Index: gdb-6.3/gdb/tui/tui-disasm.c -=================================================================== ---- gdb-6.3.orig/gdb/tui/tui-disasm.c 2004-02-24 20:10:01.000000000 -0500 -+++ gdb-6.3/gdb/tui/tui-disasm.c 2004-11-09 22:51:07.370237044 -0500 -@@ -382,7 +382,7 @@ tui_vertical_disassem_scroll (enum tui_s - - content = (tui_win_content) TUI_DISASM_WIN->generic.content; - if (cursal.symtab == (struct symtab *) NULL) -- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); -+ s = find_pc_symtab (get_frame_pc (get_selected_frame ())); - else - s = cursal.symtab; - -Index: gdb-6.3/gdb/tui/tui-source.c -=================================================================== ---- gdb-6.3.orig/gdb/tui/tui-source.c 2004-02-16 16:05:09.000000000 -0500 -+++ gdb-6.3/gdb/tui/tui-source.c 2004-11-09 22:51:07.370237044 -0500 -@@ -326,7 +326,7 @@ tui_vertical_source_scroll (enum tui_scr - struct symtab_and_line cursal = get_current_source_symtab_and_line (); - - if (cursal.symtab == (struct symtab *) NULL) -- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); -+ s = find_pc_symtab (get_frame_pc (get_selected_frame ())); - else - s = cursal.symtab; - -Index: gdb-6.3/gdb/tui/tui-winsource.c -=================================================================== ---- gdb-6.3.orig/gdb/tui/tui-winsource.c 2004-02-16 16:05:09.000000000 -0500 -+++ gdb-6.3/gdb/tui/tui-winsource.c 2004-11-09 22:51:07.371236848 -0500 -@@ -311,7 +311,7 @@ tui_horizontal_source_scroll (struct tui - struct symtab_and_line cursal = get_current_source_symtab_and_line (); - - if (cursal.symtab == (struct symtab *) NULL) -- s = find_pc_symtab (get_frame_pc (deprecated_selected_frame)); -+ s = find_pc_symtab (get_frame_pc (get_selected_frame ())); - else - s = cursal.symtab; - -Index: gdb-6.3/gdb/valops.c -=================================================================== ---- gdb-6.3.orig/gdb/valops.c 2004-09-13 23:01:48.000000000 -0400 -+++ gdb-6.3/gdb/valops.c 2004-11-09 22:51:07.374236263 -0500 -@@ -2663,15 +2663,10 @@ value_of_local (const char *name, int co - struct block *b; - struct value * ret; - -- if (deprecated_selected_frame == 0) -- { -- if (complain) -- error ("no frame selected"); -- else -- return 0; -- } -+ if (!complain && deprecated_selected_frame == 0) -+ return 0; - -- func = get_frame_function (deprecated_selected_frame); -+ func = get_frame_function (get_selected_frame ()); - if (!func) - { - if (complain) -@@ -2700,7 +2695,7 @@ value_of_local (const char *name, int co - return NULL; - } - -- ret = read_var_value (sym, deprecated_selected_frame); -+ ret = read_var_value (sym, get_selected_frame ()); - if (ret == 0 && complain) - error ("`%s' argument unreadable", name); - return ret; -Index: gdb-6.3/gdb/varobj.c -=================================================================== ---- gdb-6.3.orig/gdb/varobj.c 2004-07-26 10:53:06.000000000 -0400 -+++ gdb-6.3/gdb/varobj.c 2004-11-09 22:51:07.377235677 -0500 -@@ -488,7 +488,7 @@ varobj_create (char *objname, - if (fi != NULL) - { - var->root->frame = get_frame_id (fi); -- old_fi = deprecated_selected_frame; -+ old_fi = get_selected_frame (); - select_frame (fi); - } - -Index: gdb-6.3/gdb/testsuite/gdb.base/default.exp -=================================================================== ---- gdb-6.3.orig/gdb/testsuite/gdb.base/default.exp 2003-03-20 09:45:50.000000000 -0500 -+++ gdb-6.3/gdb/testsuite/gdb.base/default.exp 2004-11-09 22:51:07.379235287 -0500 -@@ -167,7 +167,7 @@ gdb_test "disable breakpoints" "" "disab - #test disable display - gdb_test "disable display" "" "disable display" - #test disassemble --gdb_test "disassemble" "No frame selected." "disassemble" -+gdb_test "disassemble" "No (frame selected|registers)." "disassemble" - #test display - gdb_test "display" "" "display" - #test do -@@ -229,9 +229,9 @@ gdb_expect { - } - - #test frame "f" abbreviation --gdb_test "f" "No stack." "frame \"f\" abbreviation" -+gdb_test "f" "No (stack|registers)." "frame \"f\" abbreviation" - #test frame --gdb_test "frame" "No stack." "frame" -+gdb_test "frame" "No (stack|registers)." "frame" - #test fg - gdb_test "fg" "The program is not being run." "fg" - # FIXME: fg kills the udi connection -@@ -294,9 +294,9 @@ gdb_test "ignore" "Argument required .a - #test info address - gdb_test "info address" "Argument required." "info address" - #test info all-registers --gdb_test "info all-registers" "The program has no registers now." "info all-registers" -+gdb_test "info all-registers" "(The program has no registers now|No registers)." "info all-registers" - #test info args --gdb_test "info args" "No frame selected." "info args" -+gdb_test "info args" "No (frame selected|registers)." "info args" - #test info bogus-gdb-command - gdb_test "info bogus-gdb-command" "Undefined info command: \"bogus-gdb-command\". Try \"help info\".*" "info bogus-gdb-command" - #test info breakpoints -@@ -320,11 +320,11 @@ gdb_test "info frame" "No stack.|No sele - #test info files - gdb_test "info files" "" "info files" - #test info float --gdb_test "info float" "The program has no registers now." "info float" -+gdb_test "info float" "(The program has no registers now|No registers)." "info float" - #test info functions - gdb_test "info functions" "All defined functions:" "info functions" - #test info locals --gdb_test "info locals" "No frame selected." "info locals" -+gdb_test "info locals" "(No frame selected|No registers)." "info locals" - #test info program - gdb_test "info program" "The program being debugged is not being run." "info program" - #test info registers -@@ -352,7 +352,7 @@ gdb_test "info types" "All defined types - #test info variables - gdb_test "info variables" "All defined variables:" "info variables" - #test info vector --gdb_test "info vector" "The program has no registers now." "info vector" -+gdb_test "info vector" "(The program has no registers now|No registers)." "info vector" - #test info warranty - gdb_test "info warranty" "NO WARRANTY(\[^\r\n\]*\[\r\n\])+ *11. *BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY(\[^\r\n\]*\[\r\n\])+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN(\[^\r\n\]*\[\r\n\])+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES(\[^\r\n\]*\[\r\n\])+PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED(\[^\r\n\]*\[\r\n\])+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF(\[^\r\n\]*\[\r\n\])+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS(\[^\r\n\]*\[\r\n\])+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE(\[^\r\n\]*\[\r\n\])+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,(\[^\r\n\]*\[\r\n\])+REPAIR OR CORRECTION.(\[^\r\n\]*\[\r\n\])+ *12. *IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING(\[^\r\n\]*\[\r\n\])+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR(\[^\r\n\]*\[\r\n\])+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,(\[^\r\n\]*\[\r\n\])+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING(\[^\r\n\]*\[\r\n\])+OUT OF THE USE OR INABILITY TO USE THE PROGRAM .INCLUDING BUT NOT LIMITED(\[^\r\n\]*\[\r\n\])+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY(\[^\r\n\]*\[\r\n\])+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER(\[^\r\n\]*\[\r\n\])+PROGRAMS., EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE(\[^\r\n\]*\[\r\n\])+POSSIBILITY OF SUCH DAMAGES.*" "info warranty" - #test info watchpoints diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/620-debian_static-thread-db.patch --- a/patches/gdb/6.3/620-debian_static-thread-db.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,156 +0,0 @@ -Status: submitted similar patch 2004-12-08 - -This patch cleans up the initialization of thread_db. It works for static -binaries now. The vsyscall patches hide this problem, since new static -binaries will load the vsyscall DSO and then trigger thread_db; but -this is still a good cleanup. - -Index: gdb-6.3/gdb/thread-db.c -=================================================================== ---- gdb-6.3.orig/gdb/thread-db.c 2004-10-08 16:29:56.000000000 -0400 -+++ gdb-6.3/gdb/thread-db.c 2004-11-10 00:19:30.626530413 -0500 -@@ -34,6 +34,7 @@ - #include "target.h" - #include "regcache.h" - #include "solib-svr4.h" -+#include "observer.h" - - #ifdef HAVE_GNU_LIBC_VERSION_H - #include -@@ -627,59 +628,49 @@ check_thread_signals (void) - #endif - } - -+/* Check whether thread_db is usable. This function is called when -+ an inferior is created (or otherwise acquired, e.g. attached to) -+ and when new shared libraries are loaded into a running process. */ -+ - static void --thread_db_new_objfile (struct objfile *objfile) -+check_for_thread_db (void) - { - td_err_e err; -+ static int already_loaded; - - /* First time through, report that libthread_db was successfuly - loaded. Can't print this in in thread_db_load as, at that stage, -- the interpreter and it's console haven't started. The real -- problem here is that libthread_db is loaded too early - it should -- only be loaded when there is a program to debug. */ -- { -- static int dejavu; -- if (!dejavu) -- { -- Dl_info info; -- const char *library = NULL; -- /* Try dladdr. */ -- if (dladdr ((*td_ta_new_p), &info) != 0) -- library = info.dli_fname; -- /* Try dlinfo? */ -- if (library == NULL) -- /* Paranoid - don't let a NULL path slip through. */ -- library = LIBTHREAD_DB_SO; -- printf_unfiltered ("Using host libthread_db library \"%s\".\n", -- library); -- dejavu = 1; -- } -- } -+ the interpreter and it's console haven't started. */ - -- /* Don't attempt to use thread_db on targets which can not run -- (core files). */ -- if (objfile == NULL || !target_has_execution) -+ if (!already_loaded) - { -- /* All symbols have been discarded. If the thread_db target is -- active, deactivate it now. */ -- if (using_thread_db) -- { -- gdb_assert (proc_handle.pid == 0); -- unpush_target (&thread_db_ops); -- using_thread_db = 0; -- } -+ Dl_info info; -+ const char *library = NULL; -+ if (dladdr ((*td_ta_new_p), &info) != 0) -+ library = info.dli_fname; -+ -+ /* Try dlinfo? */ - -- goto quit; -+ if (library == NULL) -+ /* Paranoid - don't let a NULL path slip through. */ -+ library = LIBTHREAD_DB_SO; -+ -+ printf_unfiltered ("Using host libthread_db library \"%s\".\n", -+ library); -+ already_loaded = 1; - } - - if (using_thread_db) - /* Nothing to do. The thread library was already detected and the - target vector was already activated. */ -- goto quit; -+ return; -+ -+ /* Don't attempt to use thread_db on targets which can not run -+ (executables not running yet, core files) for now. */ -+ if (!target_has_execution) -+ return; - -- /* Initialize the structure that identifies the child process. Note -- that at this point there is no guarantee that we actually have a -- child process. */ -+ /* Initialize the structure that identifies the child process. */ - proc_handle.pid = GET_PID (inferior_ptid); - - /* Now attempt to open a connection to the thread library. */ -@@ -706,12 +697,24 @@ thread_db_new_objfile (struct objfile *o - thread_db_err_str (err)); - break; - } -+} -+ -+static void -+thread_db_new_objfile (struct objfile *objfile) -+{ -+ if (objfile != NULL) -+ check_for_thread_db (); - --quit: - if (target_new_objfile_chain) - target_new_objfile_chain (objfile); - } - -+static void -+check_for_thread_db_observer (struct target_ops *target, int from_tty) -+{ -+ check_for_thread_db (); -+} -+ - /* Attach to a new thread. This function is called when we receive a - TD_CREATE event or when we iterate over all threads and find one - that wasn't already in our list. */ -@@ -1366,5 +1369,8 @@ _initialize_thread_db (void) - /* Add ourselves to objfile event chain. */ - target_new_objfile_chain = deprecated_target_new_objfile_hook; - deprecated_target_new_objfile_hook = thread_db_new_objfile; -+ -+ /* Register ourselves for the new inferior observer. */ -+ observer_attach_inferior_created (check_for_thread_db_observer); - } - } -Index: gdb-6.3/gdb/Makefile.in -=================================================================== ---- gdb-6.3.orig/gdb/Makefile.in 2004-11-09 23:04:57.000000000 -0500 -+++ gdb-6.3/gdb/Makefile.in 2004-11-10 00:19:26.440347022 -0500 -@@ -2626,7 +2626,8 @@ thread.o: thread.c $(defs_h) $(symtab_h) - $(gdbcmd_h) $(regcache_h) $(gdb_h) $(gdb_string_h) $(ui_out_h) - thread-db.o: thread-db.c $(defs_h) $(gdb_assert_h) $(gdb_proc_service_h) \ - $(gdb_thread_db_h) $(bfd_h) $(gdbthread_h) $(inferior_h) \ -- $(symfile_h) $(objfiles_h) $(target_h) $(regcache_h) $(solib_svr4_h) -+ $(symfile_h) $(objfiles_h) $(target_h) $(regcache_h) $(solib_svr4_h) \ -+ $(observer_h) - top.o: top.c $(defs_h) $(gdbcmd_h) $(call_cmds_h) $(cli_cmds_h) \ - $(cli_script_h) $(cli_setshow_h) $(cli_decode_h) $(symtab_h) \ - $(inferior_h) $(target_h) $(breakpoint_h) $(gdbtypes_h) \ diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/630-debian_24.tracepoint-segv.patch --- a/patches/gdb/6.3/630-debian_24.tracepoint-segv.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -Trivial. Still need to submit this. - -Index: gdb-6.1/gdb/tracepoint.c -=================================================================== ---- gdb-6.1.orig/gdb/tracepoint.c 2004-04-05 13:26:43.000000000 -0400 -+++ gdb-6.1/gdb/tracepoint.c 2004-04-05 13:26:45.000000000 -0400 -@@ -853,6 +853,8 @@ read_actions (struct tracepoint *t) - else - line = gdb_readline (0); - -+ if (line == NULL || *line == EOF) -+ break; - linetype = validate_actionline (&line, t); - if (linetype == BADLINE) - continue; /* already warned -- collect another line */ diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/640-debian_dwarf2-frame-signal-unwinder.patch --- a/patches/gdb/6.3/640-debian_dwarf2-frame-signal-unwinder.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,120 +0,0 @@ -Status: Checked in to HEAD after 6.3. - -2004-11-07 Daniel Jacobowitz - - * dwarf2-frame.c (struct dwarf2_frame_ops): Add signal_frame_p. - (dwarf2_frame_set_signal_frame_p, dwarf2_frame_signal_frame_p) - (dwarf2_signal_frame_unwind): New. - (dwarf2_frame_sniffer): Use dwarf2_frame_signal_frame_p. - * dwarf2-frame.h (dwarf2_frame_set_signal_frame_p): New prototype. - -Index: src/gdb/dwarf2-frame.c -=================================================================== -RCS file: /big/fsf/rsync/src-cvs/src/gdb/dwarf2-frame.c,v -retrieving revision 1.41 -diff -u -p -r1.41 dwarf2-frame.c ---- src/gdb/dwarf2-frame.c 4 Nov 2004 21:15:15 -0000 1.41 -+++ src/gdb/dwarf2-frame.c 7 Nov 2004 17:41:58 -0000 -@@ -471,6 +471,10 @@ struct dwarf2_frame_ops - { - /* Pre-initialize the register state REG for register REGNUM. */ - void (*init_reg) (struct gdbarch *, int, struct dwarf2_frame_state_reg *); -+ -+ /* Check whether the frame preceding NEXT_FRAME will be a signal -+ trampoline. */ -+ int (*signal_frame_p) (struct gdbarch *, struct frame_info *); - }; - - /* Default architecture-specific register state initialization -@@ -547,6 +551,33 @@ dwarf2_frame_init_reg (struct gdbarch *g - - ops->init_reg (gdbarch, regnum, reg); - } -+ -+/* Set the architecture-specific signal trampoline recognition -+ function for GDBARCH to SIGNAL_FRAME_P. */ -+ -+void -+dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch, -+ int (*signal_frame_p) (struct gdbarch *, -+ struct frame_info *)) -+{ -+ struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data); -+ -+ ops->signal_frame_p = signal_frame_p; -+} -+ -+/* Query the architecture-specific signal frame recognizer for -+ NEXT_FRAME. */ -+ -+static int -+dwarf2_frame_signal_frame_p (struct gdbarch *gdbarch, -+ struct frame_info *next_frame) -+{ -+ struct dwarf2_frame_ops *ops = gdbarch_data (gdbarch, dwarf2_frame_data); -+ -+ if (ops->signal_frame_p == NULL) -+ return 0; -+ return ops->signal_frame_p (gdbarch, next_frame); -+} - - - struct dwarf2_frame_cache -@@ -841,6 +872,13 @@ static const struct frame_unwind dwarf2_ - dwarf2_frame_prev_register - }; - -+static const struct frame_unwind dwarf2_signal_frame_unwind = -+{ -+ SIGTRAMP_FRAME, -+ dwarf2_frame_this_id, -+ dwarf2_frame_prev_register -+}; -+ - const struct frame_unwind * - dwarf2_frame_sniffer (struct frame_info *next_frame) - { -@@ -848,10 +886,18 @@ dwarf2_frame_sniffer (struct frame_info - function. frame_pc_unwind(), for a no-return next function, can - end up returning something past the end of this function's body. */ - CORE_ADDR block_addr = frame_unwind_address_in_block (next_frame); -- if (dwarf2_frame_find_fde (&block_addr)) -- return &dwarf2_frame_unwind; -+ if (!dwarf2_frame_find_fde (&block_addr)) -+ return NULL; - -- return NULL; -+ /* On some targets, signal trampolines may have unwind information. -+ We need to recognize them so that we set the frame type -+ correctly. */ -+ -+ if (dwarf2_frame_signal_frame_p (get_frame_arch (next_frame), -+ next_frame)) -+ return &dwarf2_signal_frame_unwind; -+ -+ return &dwarf2_frame_unwind; - } - - -Index: src/gdb/dwarf2-frame.h -=================================================================== -RCS file: /big/fsf/rsync/src-cvs/src/gdb/dwarf2-frame.h,v -retrieving revision 1.6 -diff -u -p -r1.6 dwarf2-frame.h ---- src/gdb/dwarf2-frame.h 28 Feb 2004 16:59:32 -0000 1.6 -+++ src/gdb/dwarf2-frame.h 7 Nov 2004 17:40:41 -0000 -@@ -79,6 +79,14 @@ extern void dwarf2_frame_set_init_reg (s - void (*init_reg) (struct gdbarch *, int, - struct dwarf2_frame_state_reg *)); - -+/* Set the architecture-specific signal trampoline recognition -+ function for GDBARCH to SIGNAL_FRAME_P. */ -+ -+extern void -+ dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch, -+ int (*signal_frame_p) (struct gdbarch *, -+ struct frame_info *)); -+ - /* Return the frame unwind methods for the function that contains PC, - or NULL if it can't be handled by DWARF CFI frame unwinder. */ - diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/650-debian_vsyscall-gdb-support.patch --- a/patches/gdb/6.3/650-debian_vsyscall-gdb-support.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,245 +0,0 @@ -Status: Checked in to HEAD after 6.3. - -2004-11-07 Andrew Cagney - Daniel Jacobowitz - Roland McGrath - - * Makefile.in (symfile-mem.o): Update dependencies. - * i386-linux-tdep.c (i386_linux_dwarf_signal_frame_p): New. - (i386_linux_init_abi): Call dwarf2_frame_set_signal_frame_p. - * inf-ptrace.c (inf_ptrace_attach): Call - observer_notify_inferior_created. - * inftarg.c (child_attach): Likewise. - * symfile-mem.c: Include "observer.h", "auxv.h", and "elf/common.h". - (symbol_file_add_from_memory): Take NAME argument. Use it for - the new BFD's filename. - (add_symbol_file_from_memory_command): Update call to - symbol_file_add_from_memory. - (struct symbol_file_add_from_memory_args, add_vsyscall_page) - (symbol_file_add_from_memory_wrapper): New. - (_initialize_symfile_mem): Register add_vsyscall_page as an - inferior_created observer. - -Index: gdb-6.3/gdb/i386-linux-tdep.c -=================================================================== ---- gdb-6.3.orig/gdb/i386-linux-tdep.c 2004-08-06 16:58:28.000000000 -0400 -+++ gdb-6.3/gdb/i386-linux-tdep.c 2004-11-10 00:55:06.669398770 -0500 -@@ -27,6 +27,7 @@ - #include "inferior.h" - #include "osabi.h" - #include "reggroups.h" -+#include "dwarf2-frame.h" - - #include "gdb_string.h" - -@@ -244,6 +245,27 @@ i386_linux_sigtramp_p (struct frame_info - || strcmp ("__restore_rt", name) == 0); - } - -+/* Return one if the unwound PC from NEXT_FRAME is in a signal trampoline -+ which may have DWARF-2 CFI. */ -+ -+static int -+i386_linux_dwarf_signal_frame_p (struct gdbarch *gdbarch, -+ struct frame_info *next_frame) -+{ -+ CORE_ADDR pc = frame_pc_unwind (next_frame); -+ char *name; -+ -+ find_pc_partial_function (pc, &name, NULL, NULL); -+ -+ /* If a vsyscall DSO is in use, the signal trampolines may have these -+ names. */ -+ if (name && (strcmp (name, "__kernel_sigreturn") == 0 -+ || strcmp (name, "__kernel_rt_sigreturn") == 0)) -+ return 1; -+ -+ return 0; -+} -+ - /* Offset to struct sigcontext in ucontext, from . */ - #define I386_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 20 - -@@ -414,6 +436,8 @@ i386_linux_init_abi (struct gdbarch_info - - /* GNU/Linux uses the dynamic linker included in the GNU C Library. */ - set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver); -+ -+ dwarf2_frame_set_signal_frame_p (gdbarch, i386_linux_dwarf_signal_frame_p); - } - - /* Provide a prototype to silence -Wmissing-prototypes. */ -Index: gdb-6.3/gdb/inf-ptrace.c -=================================================================== ---- gdb-6.3.orig/gdb/inf-ptrace.c 2004-10-15 09:29:33.000000000 -0400 -+++ gdb-6.3/gdb/inf-ptrace.c 2004-11-10 00:53:43.697615843 -0500 -@@ -220,6 +220,10 @@ inf_ptrace_attach (char *args, int from_ - - inferior_ptid = pid_to_ptid (pid); - push_target (ptrace_ops_hack); -+ -+ /* Do this first, before anything has had a chance to query the -+ inferior's symbol table or similar. */ -+ observer_notify_inferior_created (¤t_target, from_tty); - } - - static void -Index: gdb-6.3/gdb/inftarg.c -=================================================================== ---- gdb-6.3.orig/gdb/inftarg.c 2004-10-08 16:29:47.000000000 -0400 -+++ gdb-6.3/gdb/inftarg.c 2004-11-10 00:53:43.711613107 -0500 -@@ -211,6 +211,10 @@ child_attach (char *args, int from_tty) - - inferior_ptid = pid_to_ptid (pid); - push_target (&deprecated_child_ops); -+ -+ /* Do this first, before anything has had a chance to query the -+ inferior's symbol table or similar. */ -+ observer_notify_inferior_created (¤t_target, from_tty); - } - - #if !defined(CHILD_POST_ATTACH) -Index: gdb-6.3/gdb/symfile-mem.c -=================================================================== ---- gdb-6.3.orig/gdb/symfile-mem.c 2004-07-17 10:24:07.000000000 -0400 -+++ gdb-6.3/gdb/symfile-mem.c 2004-11-10 00:53:43.722610958 -0500 -@@ -52,13 +52,19 @@ - #include "target.h" - #include "value.h" - #include "symfile.h" -+#include "observer.h" -+#include "auxv.h" -+#include "elf/common.h" - - - /* Read inferior memory at ADDR to find the header of a loaded object file - and read its in-core symbols out of inferior memory. TEMPL is a bfd -- representing the target's format. */ -+ representing the target's format. NAME is the name to use for this -+ symbol file in messages; it can be NULL or a malloc-allocated string -+ which will be attached to the BFD. */ - static struct objfile * --symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr, int from_tty) -+symbol_file_add_from_memory (struct bfd *templ, CORE_ADDR addr, char *name, -+ int from_tty) - { - struct objfile *objf; - struct bfd *nbfd; -@@ -75,7 +81,10 @@ symbol_file_add_from_memory (struct bfd - if (nbfd == NULL) - error ("Failed to read a valid object file image from memory."); - -- nbfd->filename = xstrdup ("shared object read from target memory"); -+ if (name == NULL) -+ nbfd->filename = xstrdup ("shared object read from target memory"); -+ else -+ nbfd->filename = name; - - if (!bfd_check_format (nbfd, bfd_object)) - { -@@ -129,7 +138,73 @@ add_symbol_file_from_memory_command (cha - error ("\ - Must use symbol-file or exec-file before add-symbol-file-from-memory."); - -- symbol_file_add_from_memory (templ, addr, from_tty); -+ symbol_file_add_from_memory (templ, addr, NULL, from_tty); -+} -+ -+/* Arguments for symbol_file_add_from_memory_wrapper. */ -+ -+struct symbol_file_add_from_memory_args -+{ -+ struct bfd *bfd; -+ CORE_ADDR sysinfo_ehdr; -+ char *name; -+ int from_tty; -+}; -+ -+/* Wrapper function for symbol_file_add_from_memory, for -+ catch_exceptions. */ -+ -+static int -+symbol_file_add_from_memory_wrapper (struct ui_out *uiout, void *data) -+{ -+ struct symbol_file_add_from_memory_args *args = data; -+ -+ symbol_file_add_from_memory (args->bfd, args->sysinfo_ehdr, args->name, -+ args->from_tty); -+ return 0; -+} -+ -+/* Try to add the symbols for the vsyscall page, if there is one. This function -+ is called via the inferior_created observer. */ -+ -+static void -+add_vsyscall_page (struct target_ops *target, int from_tty) -+{ -+ CORE_ADDR sysinfo_ehdr; -+ -+ if (target_auxv_search (target, AT_SYSINFO_EHDR, &sysinfo_ehdr) > 0 -+ && sysinfo_ehdr != (CORE_ADDR) 0) -+ { -+ struct bfd *bfd; -+ struct symbol_file_add_from_memory_args args; -+ -+ if (core_bfd != NULL) -+ bfd = core_bfd; -+ else if (exec_bfd != NULL) -+ bfd = exec_bfd; -+ else -+ /* FIXME: cagney/2004-05-06: Should not require an existing -+ BFD when trying to create a run-time BFD of the VSYSCALL -+ page in the inferior. Unfortunately that's the current -+ interface so for the moment bail. Introducing a -+ ``bfd_runtime'' (a BFD created using the loaded image) file -+ format should fix this. */ -+ { -+ warning ("could not load vsyscall page because no executable was specified"); -+ warning ("try using the \"file\" command first"); -+ return; -+ } -+ args.bfd = bfd; -+ args.sysinfo_ehdr = sysinfo_ehdr; -+ xasprintf (&args.name, "system-supplied DSO at 0x%s", -+ paddr_nz (sysinfo_ehdr)); -+ /* Pass zero for FROM_TTY, because the action of loading the -+ vsyscall DSO was not triggered by the user, even if the user -+ typed "run" at the TTY. */ -+ args.from_tty = 0; -+ catch_exceptions (uiout, symbol_file_add_from_memory_wrapper, -+ &args, NULL, RETURN_MASK_ALL); -+ } - } - - -@@ -143,4 +218,7 @@ Load the symbols out of memory from a dy - Give an expression for the address of the file's shared object file header.", - &cmdlist); - -+ /* Want to know of each new inferior so that its vsyscall info can -+ be extracted. */ -+ observer_attach_inferior_created (add_vsyscall_page); - } -Index: gdb-6.3/gdb/Makefile.in -=================================================================== ---- gdb-6.3.orig/gdb/Makefile.in 2004-11-10 00:29:00.000000000 -0500 -+++ gdb-6.3/gdb/Makefile.in 2004-11-10 00:54:47.728100986 -0500 -@@ -2020,7 +2020,7 @@ i386-linux-nat.o: i386-linux-nat.c $(def - i386-linux-tdep.o: i386-linux-tdep.c $(defs_h) $(gdbcore_h) $(frame_h) \ - $(value_h) $(regcache_h) $(inferior_h) $(osabi_h) $(reggroups_h) \ - $(gdb_string_h) $(i386_tdep_h) $(i386_linux_tdep_h) $(glibc_tdep_h) \ -- $(solib_svr4_h) -+ $(solib_svr4_h) $(dwarf2_frame_h) - i386ly-tdep.o: i386ly-tdep.c $(defs_h) $(gdbcore_h) $(inferior_h) \ - $(regcache_h) $(target_h) $(osabi_h) $(i386_tdep_h) - i386-nat.o: i386-nat.c $(defs_h) $(breakpoint_h) $(command_h) $(gdbcmd_h) -@@ -2606,7 +2606,8 @@ symfile.o: symfile.c $(defs_h) $(bfdlink - $(hashtab_h) $(readline_h) $(gdb_assert_h) $(block_h) \ - $(gdb_string_h) $(gdb_stat_h) - symfile-mem.o: symfile-mem.c $(defs_h) $(symtab_h) $(gdbcore_h) \ -- $(objfiles_h) $(gdbcmd_h) $(target_h) $(value_h) $(symfile_h) -+ $(objfiles_h) $(gdbcmd_h) $(target_h) $(value_h) $(symfile_h) \ -+ $(observer_h) $(auxv_h) $(elf_common_h) - symmisc.o: symmisc.c $(defs_h) $(symtab_h) $(gdbtypes_h) $(bfd_h) \ - $(symfile_h) $(objfiles_h) $(breakpoint_h) $(command_h) \ - $(gdb_obstack_h) $(language_h) $(bcache_h) $(block_h) $(gdb_regex_h) \ diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/660-debian_dwarf-cfa-restore.patch --- a/patches/gdb/6.3/660-debian_dwarf-cfa-restore.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -Status: Checked in to HEAD after 6.3. - -2004-11-09 Daniel Jacobowitz - - * dwarf2-frame.c (dwarf2_frame_state_alloc_regs): Correct allocated - size. - -Index: src/gdb/dwarf2-frame.c -=================================================================== -RCS file: /cvs/src/src/gdb/dwarf2-frame.c,v -retrieving revision 1.45 -diff -u -p -r1.45 dwarf2-frame.c ---- src/gdb/dwarf2-frame.c 7 Nov 2004 21:16:11 -0000 1.45 -+++ src/gdb/dwarf2-frame.c 9 Nov 2004 14:42:52 -0000 -@@ -162,7 +162,7 @@ dwarf2_frame_state_alloc_regs (struct dw - static struct dwarf2_frame_state_reg * - dwarf2_frame_state_copy_regs (struct dwarf2_frame_state_reg_info *rs) - { -- size_t size = rs->num_regs * sizeof (struct dwarf2_frame_state_reg_info); -+ size_t size = rs->num_regs * sizeof (struct dwarf2_frame_state_reg); - struct dwarf2_frame_state_reg *reg; - - reg = (struct dwarf2_frame_state_reg *) xmalloc (size); diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/680-debian_sim-destdir.patch --- a/patches/gdb/6.3/680-debian_sim-destdir.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -Fix some missing uses of DESTDIR in the sim/ directories. The Debian -packages use DESTDIR to build. - -%patch -Index: gdb-6.3/sim/Makefile.in -=================================================================== ---- gdb-6.3.orig/sim/Makefile.in 2003-09-03 14:46:52.000000000 -0400 -+++ gdb-6.3/sim/Makefile.in 2004-11-10 00:39:25.381315738 -0500 -@@ -93,6 +93,7 @@ FLAGS_TO_PASS = \ - "CC=$(CC)" \ - "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ - "CFLAGS=$(CFLAGS)" \ -+ "DESTDIR=$(DESTDIR)" \ - "RANLIB=$(RANLIB)" \ - "MAKEINFO=$(MAKEINFO)" \ - "INSTALL=$(INSTALL)" \ -Index: gdb-6.3/sim/common/Make-common.in -=================================================================== ---- gdb-6.3.orig/sim/common/Make-common.in 2003-09-08 13:24:59.000000000 -0400 -+++ gdb-6.3/sim/common/Make-common.in 2004-11-10 00:39:25.383315347 -0500 -@@ -581,14 +581,14 @@ install: install-common $(SIM_EXTRA_INST - - install-common: installdirs - n=`echo run | sed '$(program_transform_name)'`; \ -- $(INSTALL_PROGRAM) run$(EXEEXT) $(bindir)/$$n$(EXEEXT) -+ $(INSTALL_PROGRAM) run$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT) - n=`echo libsim.a | sed s/libsim.a/lib$(target_alias)-sim.a/`; \ -- $(INSTALL_DATA) libsim.a $(libdir)/$$n ; \ -- ( cd $(libdir) ; $(RANLIB) $$n ) -+ $(INSTALL_DATA) libsim.a $(DESTDIR)$(libdir)/$$n ; \ -+ ( cd $(DESTDIR)$(libdir) ; $(RANLIB) $$n ) - - installdirs: -- $(SHELL) $(srcdir)/../../mkinstalldirs $(bindir) -- $(SHELL) $(srcdir)/../../mkinstalldirs $(libdir) -+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(bindir) -+ $(SHELL) $(srcdir)/../../mkinstalldirs $(DESTDIR)$(libdir) - - check: - cd ../testsuite && $(MAKE) check RUNTESTFLAGS="$(RUNTESTFLAGS)" -Index: gdb-6.3/sim/erc32/Makefile.in -=================================================================== ---- gdb-6.3.orig/sim/erc32/Makefile.in 2000-03-07 10:32:49.000000000 -0500 -+++ gdb-6.3/sim/erc32/Makefile.in 2004-11-10 00:39:25.385314957 -0500 -@@ -53,7 +53,7 @@ end.h: end - # Copy the files into directories where they will be run. - install-sis: installdirs - n=`echo sis | sed '$(program_transform_name)'`; \ -- $(INSTALL_PROGRAM) sis$(EXEEXT) $(bindir)/$$n$(EXEEXT) -+ $(INSTALL_PROGRAM) sis$(EXEEXT) $(DESTDIR)$(bindir)/$$n$(EXEEXT) - - clean-sis: - rm -f sis end end.h diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/690-debian_member-field-symtab.patch --- a/patches/gdb/6.3/690-debian_member-field-symtab.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -Status: unsubmitted - -This patch was for Debian bug #239535. It needs to be tested, and -submitted. - -Index: gdb-6.3/gdb/valops.c -=================================================================== ---- gdb-6.3.orig/gdb/valops.c 2004-11-09 22:51:07.000000000 -0500 -+++ gdb-6.3/gdb/valops.c 2004-11-10 00:43:54.036837699 -0500 -@@ -2314,8 +2314,10 @@ check_field_in (struct type *type, const - return 1; - } - -+ /* Check each baseclass. Call check_typedef, which will follow typedefs -+ and do opaque/stub type resolution. */ - for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--) -- if (check_field_in (TYPE_BASECLASS (type, i), name)) -+ if (check_field_in (check_typedef (TYPE_BASECLASS (type, i)), name)) - return 1; - - return 0; -Index: gdb-6.3/gdb/dwarf2read.c -=================================================================== ---- gdb-6.3.orig/gdb/dwarf2read.c 2004-10-15 20:41:00.000000000 -0400 -+++ gdb-6.3/gdb/dwarf2read.c 2004-11-10 00:46:21.970935829 -0500 -@@ -2099,8 +2099,8 @@ guess_structure_name (struct partial_die - strlen (actual_class_name), - &cu->comp_unit_obstack); - xfree (actual_class_name); -+ break; - } -- break; - } - - child_pdi = child_pdi->die_sibling; diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/700-debian_cp-pass-by-reference.patch --- a/patches/gdb/6.3/700-debian_cp-pass-by-reference.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,464 +0,0 @@ -This patch needs to be submitted for the FSF. Also, there may be testcases -already in the GDB testsuite (currently disabled) that it would probably fix. - -Index: gdb-6.3/gdb/infcall.c -=================================================================== ---- gdb-6.3.orig/gdb/infcall.c 2004-10-08 04:15:56.000000000 -0400 -+++ gdb-6.3/gdb/infcall.c 2004-11-10 12:30:07.000000000 -0500 -@@ -36,6 +36,7 @@ - #include "gdb_string.h" - #include "infcall.h" - #include "dummy-frame.h" -+#include "cp-abi.h" - - /* NOTE: cagney/2003-04-16: What's the future of this code? - -@@ -297,8 +298,8 @@ call_function_by_hand (struct value *fun - { - CORE_ADDR sp; - CORE_ADDR dummy_addr; -- struct type *value_type; -- unsigned char struct_return; -+ struct type *value_type, *target_value_type; -+ unsigned char struct_return = 0, cp_struct_return = 0; - CORE_ADDR struct_addr = 0; - struct regcache *retbuf; - struct cleanup *retbuf_cleanup; -@@ -312,6 +313,7 @@ call_function_by_hand (struct value *fun - struct regcache *caller_regcache; - struct cleanup *caller_regcache_cleanup; - struct frame_id dummy_id; -+ struct cleanup *args_cleanup; - - if (!target_has_execution) - noprocess (); -@@ -410,10 +412,31 @@ call_function_by_hand (struct value *fun - using_gcc = (b == NULL ? 2 : BLOCK_GCC_COMPILED (b)); - } - -- /* Are we returning a value using a structure return or a normal -- value return? */ -+ /* Are we returning a value using a structure return (passing a -+ hidden argument pointing to storage) or a normal value return? -+ There are two cases: C++ ABI mandated structure return and -+ target ABI structure return. The variable STRUCT_RETURN only -+ describes the latter. The C++ version is handled by passing -+ the return location as the first parameter to the function, -+ even preceding "this". This is different from the target -+ ABI version, which is target-specific; for instance, on ia64 -+ the first argument is passed in out0 but the hidden structure -+ return pointer would normally be passed in r8. */ - -- struct_return = using_struct_return (value_type, using_gcc); -+ if (current_language->la_language == language_cplus -+ && cp_pass_by_reference (value_type)) -+ { -+ cp_struct_return = 1; -+ -+ /* Tell the target specific argument pushing routine not to -+ expect a value. */ -+ target_value_type = builtin_type_void; -+ } -+ else -+ { -+ struct_return = using_struct_return (value_type, using_gcc); -+ target_value_type = value_type; -+ } - - /* Determine the location of the breakpoint (and possibly other - stuff) that the called function will return to. The SPARC, for a -@@ -432,7 +455,7 @@ call_function_by_hand (struct value *fun - if (INNER_THAN (1, 2)) - { - sp = push_dummy_code (current_gdbarch, sp, funaddr, -- using_gcc, args, nargs, value_type, -+ using_gcc, args, nargs, target_value_type, - &real_pc, &bp_addr); - dummy_addr = sp; - } -@@ -440,7 +463,7 @@ call_function_by_hand (struct value *fun - { - dummy_addr = sp; - sp = push_dummy_code (current_gdbarch, sp, funaddr, -- using_gcc, args, nargs, value_type, -+ using_gcc, args, nargs, target_value_type, - &real_pc, &bp_addr); - } - break; -@@ -507,9 +530,15 @@ call_function_by_hand (struct value *fun - param_type = TYPE_FIELD_TYPE (ftype, i); - else - param_type = NULL; -- -+ - args[i] = value_arg_coerce (args[i], param_type, prototyped); - -+ /* FIXME: Is current_language the right language? */ -+ if (current_language->la_language == language_cplus -+ && param_type != NULL -+ && cp_pass_by_reference (param_type)) -+ args[i] = value_addr (args[i]); -+ - /* elz: this code is to handle the case in which the function - to be called has a pointer to function as parameter and the - corresponding actual argument is the address of a function -@@ -607,7 +636,7 @@ You must use a pointer to function type - stack, if necessary. Make certain that the value is correctly - aligned. */ - -- if (struct_return) -+ if (struct_return || cp_struct_return) - { - int len = TYPE_LENGTH (value_type); - if (INNER_THAN (1, 2)) -@@ -632,6 +661,22 @@ You must use a pointer to function type - } - } - -+ if (cp_struct_return) -+ { -+ struct value **new_args; -+ -+ /* Add the new argument to the front of the argument list. */ -+ new_args = xmalloc (sizeof (struct value *) * (nargs + 1)); -+ new_args[0] = value_from_pointer (lookup_pointer_type (value_type), -+ struct_addr); -+ memcpy (&new_args[1], &args[0], sizeof (struct value *) * nargs); -+ args = new_args; -+ nargs++; -+ args_cleanup = make_cleanup (xfree, args); -+ } -+ else -+ args_cleanup = make_cleanup (null_cleanup, NULL); -+ - /* Create the dummy stack frame. Pass in the call dummy address as, - presumably, the ABI code knows where, in the call dummy, the - return address should be pointed. */ -@@ -649,6 +694,8 @@ You must use a pointer to function type - else - error ("This target does not support function calls"); - -+ do_cleanups (args_cleanup); -+ - /* Set up a frame ID for the dummy frame so we can pass it to - set_momentary_breakpoint. We need to give the breakpoint a frame - ID so that the breakpoint code can correctly re-identify the -@@ -839,11 +886,7 @@ the function call).", name); - /* Figure out the value returned by the function, return that. */ - { - struct value *retval; -- if (TYPE_CODE (value_type) == TYPE_CODE_VOID) -- /* If the function returns void, don't bother fetching the -- return value. */ -- retval = allocate_value (value_type); -- else if (struct_return) -+ if (struct_return || cp_struct_return) - /* NOTE: cagney/2003-09-27: This assumes that PUSH_DUMMY_CALL - has correctly stored STRUCT_ADDR in the target. In the past - that hasn't been the case, the old MIPS PUSH_ARGUMENTS -@@ -853,6 +896,10 @@ the function call).", name); - "struct return convention", check that PUSH_DUMMY_CALL isn't - playing tricks. */ - retval = value_at (value_type, struct_addr, NULL); -+ else if (TYPE_CODE (value_type) == TYPE_CODE_VOID) -+ /* If the function returns void, don't bother fetching the -+ return value. */ -+ retval = allocate_value (value_type); - else - { - /* This code only handles "register convention". */ -Index: gdb-6.3/gdb/cp-abi.h -=================================================================== ---- gdb-6.3.orig/gdb/cp-abi.h 2003-04-12 13:41:25.000000000 -0400 -+++ gdb-6.3/gdb/cp-abi.h 2004-11-10 12:30:07.000000000 -0500 -@@ -1,7 +1,7 @@ - /* Abstraction of various C++ ABI's we support, and the info we need - to get from them. - Contributed by Daniel Berlin -- Copyright 2001 Free Software Foundation, Inc. -+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GDB. - -@@ -145,6 +145,10 @@ extern struct type *value_rtti_type (str - extern int baseclass_offset (struct type *type, int index, char *valaddr, - CORE_ADDR address); - -+/* Return non-zero if an argument of type TYPE should be passed by reference -+ instead of value. */ -+extern int cp_pass_by_reference (struct type *type); -+ - struct cp_abi_ops - { - const char *shortname; -@@ -162,6 +166,7 @@ struct cp_abi_ops - int *using_enc); - int (*baseclass_offset) (struct type *type, int index, char *valaddr, - CORE_ADDR address); -+ int (*pass_by_reference) (struct type *type); - }; - - -Index: gdb-6.3/gdb/cp-abi.c -=================================================================== ---- gdb-6.3.orig/gdb/cp-abi.c 2003-11-26 17:04:00.000000000 -0500 -+++ gdb-6.3/gdb/cp-abi.c 2004-11-10 12:30:07.000000000 -0500 -@@ -1,5 +1,5 @@ - /* Generic code for supporting multiple C++ ABI's -- Copyright 2001, 2002, 2003 Free Software Foundation, Inc. -+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GDB. - -@@ -94,6 +94,14 @@ value_rtti_type (struct value *v, int *f - return (*current_cp_abi.rtti_type) (v, full, top, using_enc); - } - -+int -+cp_pass_by_reference (struct type *type) -+{ -+ if ((current_cp_abi.pass_by_reference) == NULL) -+ return 0; -+ return (*current_cp_abi.pass_by_reference) (type); -+} -+ - /* Set the current C++ ABI to SHORT_NAME. */ - - static int -Index: gdb-6.3/gdb/gnu-v3-abi.c -=================================================================== ---- gdb-6.3.orig/gdb/gnu-v3-abi.c 2004-03-15 15:38:08.000000000 -0500 -+++ gdb-6.3/gdb/gnu-v3-abi.c 2004-11-10 12:30:07.000000000 -0500 -@@ -1,7 +1,7 @@ - /* Abstraction of GNU v3 abi. - Contributed by Jim Blandy - -- Copyright 2001, 2002, 2003 Free Software Foundation, Inc. -+ Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GDB. - -@@ -419,6 +419,84 @@ gnuv3_baseclass_offset (struct type *typ - return base_offset; - } - -+/* Return nonzero if a type should be passed by reference. -+ -+ The rule in the v3 ABI document comes from section 3.1.1. If the -+ type has a non-trivial copy constructor or destructor, then the -+ caller must make a copy (by calling the copy constructor if there -+ is one or perform the copy itself otherwise), pass the address of -+ the copy, and then destroy the temporary (if necessary). -+ -+ For return values with non-trivial copy constructors or -+ destructors, space will be allocated in the caller, and a pointer -+ will be passed as the first argument (preceding "this"). -+ -+ We don't have a bulletproof mechanism for determining whether a -+ constructor or destructor is trivial. For GCC and DWARF2 debug -+ information, we can check the artificial flag. -+ -+ We don't do anything with the constructors or destructors yet, -+ but we have to get the argument passing right anyway. */ -+static int -+gnuv3_pass_by_reference (struct type *type) -+{ -+ int fieldnum, fieldelem, basenum; -+ -+ CHECK_TYPEDEF (type); -+ -+ /* We're only interested in things that can have methods. */ -+ if (TYPE_CODE (type) != TYPE_CODE_STRUCT -+ && TYPE_CODE (type) != TYPE_CODE_CLASS -+ && TYPE_CODE (type) != TYPE_CODE_UNION) -+ return 0; -+ -+ for (fieldnum = 0; fieldnum < TYPE_NFN_FIELDS (type); fieldnum++) -+ for (fieldelem = 0; fieldelem < TYPE_FN_FIELDLIST_LENGTH (type, fieldnum); -+ fieldelem++) -+ { -+ struct fn_field *fn = TYPE_FN_FIELDLIST1 (type, fieldnum); -+ char *name = TYPE_FN_FIELDLIST_NAME (type, fieldnum); -+ struct type *fieldtype = TYPE_FN_FIELD_TYPE (fn, fieldelem); -+ -+ /* If this function is marked as artificial, it is compiler-generated, -+ and we assume it is trivial. */ -+ if (TYPE_FN_FIELD_ARTIFICIAL (fn, fieldelem)) -+ continue; -+ -+ /* If we've found a destructor, we must pass this by reference. */ -+ if (name[0] == '~') -+ return 1; -+ -+ /* If the mangled name of this method doesn't indicate that it -+ is a constructor, we're not interested. -+ -+ FIXME drow/2004-05-27: We could do this using the name of -+ the method and the name of the class instead of dealing -+ with the mangled name. We don't have a convenient function -+ to strip off both leading scope qualifiers and trailing -+ template arguments yet. */ -+ if (!is_constructor_name (TYPE_FN_FIELD_PHYSNAME (fn, fieldelem))) -+ continue; -+ -+ /* If this method takes two arguments, and the second argument is -+ a reference to this class, then it is a copy constructor. */ -+ if (TYPE_NFIELDS (fieldtype) == 2 -+ && TYPE_CODE (TYPE_FIELD_TYPE (fieldtype, 1)) == TYPE_CODE_REF -+ && check_typedef (TYPE_TARGET_TYPE (TYPE_FIELD_TYPE (fieldtype, 1))) == type) -+ return 1; -+ } -+ -+ /* Even if all the constructors and destructors were artificial, one -+ of them may have invoked a non-artificial constructor or -+ destructor in a base class. If any base class needs to be passed -+ by reference, so does this class. */ -+ for (basenum = 0; basenum < TYPE_N_BASECLASSES (type); basenum++) -+ if (gnuv3_pass_by_reference (TYPE_BASECLASS (type, basenum))) -+ return 1; -+ -+ return 0; -+} -+ - static void - init_gnuv3_ops (void) - { -@@ -434,6 +512,7 @@ init_gnuv3_ops (void) - gnu_v3_abi_ops.rtti_type = gnuv3_rtti_type; - gnu_v3_abi_ops.virtual_fn_field = gnuv3_virtual_fn_field; - gnu_v3_abi_ops.baseclass_offset = gnuv3_baseclass_offset; -+ gnu_v3_abi_ops.pass_by_reference = gnuv3_pass_by_reference; - } - - extern initialize_file_ftype _initialize_gnu_v3_abi; /* -Wmissing-prototypes */ -Index: gdb-6.3/gdb/hpacc-abi.c -=================================================================== ---- gdb-6.3.orig/gdb/hpacc-abi.c 2003-06-08 14:27:13.000000000 -0400 -+++ gdb-6.3/gdb/hpacc-abi.c 2004-11-10 12:30:07.000000000 -0500 -@@ -3,7 +3,7 @@ - Most of the real code is from HP, i've just fiddled it to fit in - the C++ ABI abstraction framework. - -- Copyright 2001 Free Software Foundation, Inc. -+ Copyright 2001, 2002, 2003 Free Software Foundation, Inc. - - This file is part of GDB. - -Index: gdb-6.3/gdb/Makefile.in -=================================================================== ---- gdb-6.3.orig/gdb/Makefile.in 2004-11-10 12:30:06.000000000 -0500 -+++ gdb-6.3/gdb/Makefile.in 2004-11-10 12:30:07.000000000 -0500 -@@ -2073,7 +2073,7 @@ ia64-tdep.o: ia64-tdep.c $(defs_h) $(inf - infcall.o: infcall.c $(defs_h) $(breakpoint_h) $(target_h) $(regcache_h) \ - $(inferior_h) $(gdb_assert_h) $(block_h) $(gdbcore_h) $(language_h) \ - $(objfiles_h) $(gdbcmd_h) $(command_h) $(gdb_string_h) $(infcall_h) \ -- $(dummy_frame_h) -+ $(dummy_frame_h) $(cp_abi_h) - inf-child.o: inf-child.c $(defs_h) $(regcache_h) $(memattr_h) $(symtab_h) \ - $(target_h) $(inferior_h) $(gdb_string_h) - infcmd.o: infcmd.c $(defs_h) $(gdb_string_h) $(symtab_h) $(gdbtypes_h) \ -Index: gdb-6.3/gdb/testsuite/gdb.cp/pass-by-ref.exp -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.3/gdb/testsuite/gdb.cp/pass-by-ref.exp 2004-11-11 09:48:00.498518899 -0500 -@@ -0,0 +1,38 @@ -+# This testcase is part of GDB, the GNU debugger. -+ -+# Copyright 2004 Free Software Foundation, Inc. -+ -+# This program 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 of the License, or -+# (at your option) any later version. -+# -+# This program 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 program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -+ -+# Check that GDB can call C++ functions whose parameters have -+# object type, but are passed by reference. -+ -+set testfile "pass-by-ref" -+set srcfile ${testfile}.cc -+set binfile ${objdir}/${subdir}/${testfile} -+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { -+ return -1 -+} -+ -+gdb_exit -+gdb_start -+gdb_reinitialize_dir $srcdir/$subdir -+gdb_load ${binfile} -+ -+if ![runto_main] then { -+ return -1 -+} -+ -+gdb_test "print foo (global_obj)" " = 3" "call function" -Index: gdb-6.3/gdb/testsuite/gdb.cp/pass-by-ref.cc -=================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ gdb-6.3/gdb/testsuite/gdb.cp/pass-by-ref.cc 2004-11-11 09:44:17.815014667 -0500 -@@ -0,0 +1,57 @@ -+/* This testcase is part of GDB, the GNU debugger. -+ -+ Copyright 2004 Free Software Foundation, Inc. -+ -+ This program 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 of the License, or -+ (at your option) any later version. -+ -+ This program 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 program; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+ USA. */ -+ -+class Obj { -+public: -+ Obj (); -+ Obj (const Obj &); -+ ~Obj (); -+ int var[2]; -+}; -+ -+int foo (Obj arg) -+{ -+ return arg.var[0] + arg.var[1]; -+} -+ -+Obj::Obj () -+{ -+ var[0] = 1; -+ var[1] = 2; -+} -+ -+Obj::Obj (const Obj &obj) -+{ -+ var[0] = obj.var[0]; -+ var[1] = obj.var[1]; -+} -+ -+Obj::~Obj () -+{ -+ -+} -+ -+Obj global_obj; -+ -+int -+main () -+{ -+ int bar = foo (global_obj); -+ return bar; -+} diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/710-debian_thread-db-multiple-libraries.patch --- a/patches/gdb/6.3/710-debian_thread-db-multiple-libraries.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,593 +0,0 @@ -Support loading two libthread_db DSOs. In this case, the LinuxThreads -and NPTL ones. - -Index: gdb-6.3/gdb/thread-db.c -=================================================================== ---- gdb-6.3.orig/gdb/thread-db.c 2004-11-10 10:46:24.000000000 -0500 -+++ gdb-6.3/gdb/thread-db.c 2004-11-10 11:22:34.858812426 -0500 -@@ -79,53 +79,63 @@ static td_thragent_t *thread_agent; - - /* Pointers to the libthread_db functions. */ - --static td_err_e (*td_init_p) (void); -+struct thread_db_pointers -+{ -+ const char *filename; -+ -+ td_err_e (*td_init_p) (void); - --static td_err_e (*td_ta_new_p) (struct ps_prochandle * ps, -- td_thragent_t **ta); --static td_err_e (*td_ta_map_id2thr_p) (const td_thragent_t *ta, thread_t pt, -- td_thrhandle_t *__th); --static td_err_e (*td_ta_map_lwp2thr_p) (const td_thragent_t *ta, -- lwpid_t lwpid, td_thrhandle_t *th); --static td_err_e (*td_ta_thr_iter_p) (const td_thragent_t *ta, -- td_thr_iter_f *callback, void *cbdata_p, -- td_thr_state_e state, int ti_pri, -- sigset_t *ti_sigmask_p, -- unsigned int ti_user_flags); --static td_err_e (*td_ta_event_addr_p) (const td_thragent_t *ta, -- td_event_e event, td_notify_t *ptr); --static td_err_e (*td_ta_set_event_p) (const td_thragent_t *ta, -- td_thr_events_t *event); --static td_err_e (*td_ta_event_getmsg_p) (const td_thragent_t *ta, -- td_event_msg_t *msg); -- --static td_err_e (*td_thr_validate_p) (const td_thrhandle_t *th); --static td_err_e (*td_thr_get_info_p) (const td_thrhandle_t *th, -- td_thrinfo_t *infop); --static td_err_e (*td_thr_getfpregs_p) (const td_thrhandle_t *th, -- gdb_prfpregset_t *regset); --static td_err_e (*td_thr_getgregs_p) (const td_thrhandle_t *th, -- prgregset_t gregs); --static td_err_e (*td_thr_setfpregs_p) (const td_thrhandle_t *th, -- const gdb_prfpregset_t *fpregs); --static td_err_e (*td_thr_setgregs_p) (const td_thrhandle_t *th, -- prgregset_t gregs); --static td_err_e (*td_thr_event_enable_p) (const td_thrhandle_t *th, -- int event); -- --static td_err_e (*td_thr_tls_get_addr_p) (const td_thrhandle_t *th, -- void *map_address, -- size_t offset, void **address); -+ td_err_e (*td_ta_new_p) (struct ps_prochandle * ps, -+ td_thragent_t **ta); -+ td_err_e (*td_ta_map_id2thr_p) (const td_thragent_t *ta, thread_t pt, -+ td_thrhandle_t *__th); -+ td_err_e (*td_ta_map_lwp2thr_p) (const td_thragent_t *ta, -+ lwpid_t lwpid, td_thrhandle_t *th); -+ -+ td_err_e (*td_ta_thr_iter_p) (const td_thragent_t *ta, -+ td_thr_iter_f *callback, void *cbdata_p, -+ td_thr_state_e state, int ti_pri, -+ sigset_t *ti_sigmask_p, -+ unsigned int ti_user_flags); -+ td_err_e (*td_ta_event_addr_p) (const td_thragent_t *ta, -+ td_event_e event, td_notify_t *ptr); -+ td_err_e (*td_ta_set_event_p) (const td_thragent_t *ta, -+ td_thr_events_t *event); -+ td_err_e (*td_ta_event_getmsg_p) (const td_thragent_t *ta, -+ td_event_msg_t *msg); -+ -+ td_err_e (*td_thr_validate_p) (const td_thrhandle_t *th); -+ td_err_e (*td_thr_get_info_p) (const td_thrhandle_t *th, -+ td_thrinfo_t *infop); -+ td_err_e (*td_thr_getfpregs_p) (const td_thrhandle_t *th, -+ gdb_prfpregset_t *regset); -+ td_err_e (*td_thr_getgregs_p) (const td_thrhandle_t *th, -+ prgregset_t gregs); -+ td_err_e (*td_thr_setfpregs_p) (const td_thrhandle_t *th, -+ const gdb_prfpregset_t *fpregs); -+ td_err_e (*td_thr_setgregs_p) (const td_thrhandle_t *th, -+ prgregset_t gregs); -+ td_err_e (*td_thr_event_enable_p) (const td_thrhandle_t *th, -+ int event); -+ -+ td_err_e (*td_thr_tls_get_addr_p) (const td_thrhandle_t *th, -+ void *map_address, -+ size_t offset, void **address); -+ -+ struct thread_db_pointers *next; -+}; - - /* Location of the thread creation event breakpoint. The code at this - location in the child process will be called by the pthread library - whenever a new thread is created. By setting a special breakpoint - at this location, GDB can detect when a new thread is created. We - obtain this location via the td_ta_event_addr call. */ --static CORE_ADDR td_create_bp_addr; -+CORE_ADDR td_create_bp_addr; - - /* Location of the thread death event breakpoint. */ --static CORE_ADDR td_death_bp_addr; -+CORE_ADDR td_death_bp_addr; -+ -+static struct thread_db_pointers *current_pointers, *all_pointers; - - /* Prototypes for local functions. */ - static void thread_db_find_new_threads (void); -@@ -262,7 +272,7 @@ thread_get_info_callback (const td_thrha - struct thread_info *thread_info; - ptid_t thread_ptid; - -- err = td_thr_get_info_p (thp, &ti); -+ err = current_pointers->td_thr_get_info_p (thp, &ti); - if (err != TD_OK) - error ("thread_get_info_callback: cannot get thread info: %s", - thread_db_err_str (err)); -@@ -316,8 +326,9 @@ thread_db_map_id2thr (struct thread_info - if (thread_info->private->th_valid) - return; - -- err = td_ta_map_id2thr_p (thread_agent, GET_THREAD (thread_info->ptid), -- &thread_info->private->th); -+ err = current_pointers->td_ta_map_id2thr_p (thread_agent, -+ GET_THREAD (thread_info->ptid), -+ &thread_info->private->th); - if (err != TD_OK) - { - if (fatal) -@@ -340,8 +351,8 @@ thread_db_get_info (struct thread_info * - if (!thread_info->private->th_valid) - thread_db_map_id2thr (thread_info, 1); - -- err = -- td_thr_get_info_p (&thread_info->private->th, &thread_info->private->ti); -+ err = current_pointers->td_thr_get_info_p (&thread_info->private->th, -+ &thread_info->private->ti); - if (err != TD_OK) - error ("thread_db_get_info: cannot get thread info: %s", - thread_db_err_str (err)); -@@ -365,7 +376,8 @@ thread_from_lwp (ptid_t ptid) - - gdb_assert (is_lwp (ptid)); - -- err = td_ta_map_lwp2thr_p (thread_agent, GET_LWP (ptid), &th); -+ err = current_pointers->td_ta_map_lwp2thr_p (thread_agent, GET_LWP (ptid), -+ &th); - if (err != TD_OK) - error ("Cannot find user-level thread for LWP %ld: %s", - GET_LWP (ptid), thread_db_err_str (err)); -@@ -420,85 +432,102 @@ verbose_dlsym (void *handle, const char - return sym; - } - --static int --thread_db_load (void) -+static struct thread_db_pointers * -+thread_db_load (const char *name) - { -+ struct thread_db_pointers *ptrs; -+ Dl_info info; - void *handle; - td_err_e err; - -- handle = dlopen (LIBTHREAD_DB_SO, RTLD_NOW); -+ ptrs = xcalloc (1, sizeof (struct thread_db_pointers)); -+ -+ handle = dlopen (name, RTLD_NOW); - if (handle == NULL) - { -- fprintf_filtered (gdb_stderr, "\n\ndlopen failed on '%s' - %s\n", -- LIBTHREAD_DB_SO, dlerror ()); -- fprintf_filtered (gdb_stderr, -- "GDB will not be able to debug pthreads.\n\n"); -+ if (all_pointers == NULL) -+ { -+ fprintf_filtered (gdb_stderr, "\n\ndlopen failed on '%s' - %s\n", -+ name, dlerror ()); -+ fprintf_filtered (gdb_stderr, -+ "GDB will not be able to debug pthreads.\n\n"); -+ } - return 0; - } - - /* Initialize pointers to the dynamic library functions we will use. - Essential functions first. */ - -- td_init_p = verbose_dlsym (handle, "td_init"); -- if (td_init_p == NULL) -+ ptrs->td_init_p = verbose_dlsym (handle, "td_init"); -+ if (ptrs->td_init_p == NULL) - return 0; - -- td_ta_new_p = verbose_dlsym (handle, "td_ta_new"); -- if (td_ta_new_p == NULL) -+ ptrs->td_ta_new_p = verbose_dlsym (handle, "td_ta_new"); -+ if (ptrs->td_ta_new_p == NULL) - return 0; - -- td_ta_map_id2thr_p = verbose_dlsym (handle, "td_ta_map_id2thr"); -- if (td_ta_map_id2thr_p == NULL) -+ ptrs->td_ta_map_id2thr_p = verbose_dlsym (handle, "td_ta_map_id2thr"); -+ if (ptrs->td_ta_map_id2thr_p == NULL) - return 0; - -- td_ta_map_lwp2thr_p = verbose_dlsym (handle, "td_ta_map_lwp2thr"); -- if (td_ta_map_lwp2thr_p == NULL) -+ ptrs->td_ta_map_lwp2thr_p = verbose_dlsym (handle, "td_ta_map_lwp2thr"); -+ if (ptrs->td_ta_map_lwp2thr_p == NULL) - return 0; - -- td_ta_thr_iter_p = verbose_dlsym (handle, "td_ta_thr_iter"); -- if (td_ta_thr_iter_p == NULL) -+ ptrs->td_ta_thr_iter_p = verbose_dlsym (handle, "td_ta_thr_iter"); -+ if (ptrs->td_ta_thr_iter_p == NULL) - return 0; - -- td_thr_validate_p = verbose_dlsym (handle, "td_thr_validate"); -- if (td_thr_validate_p == NULL) -+ ptrs->td_thr_validate_p = verbose_dlsym (handle, "td_thr_validate"); -+ if (ptrs->td_thr_validate_p == NULL) - return 0; - -- td_thr_get_info_p = verbose_dlsym (handle, "td_thr_get_info"); -- if (td_thr_get_info_p == NULL) -+ ptrs->td_thr_get_info_p = verbose_dlsym (handle, "td_thr_get_info"); -+ if (ptrs->td_thr_get_info_p == NULL) - return 0; - -- td_thr_getfpregs_p = verbose_dlsym (handle, "td_thr_getfpregs"); -- if (td_thr_getfpregs_p == NULL) -+ ptrs->td_thr_getfpregs_p = verbose_dlsym (handle, "td_thr_getfpregs"); -+ if (ptrs->td_thr_getfpregs_p == NULL) - return 0; - -- td_thr_getgregs_p = verbose_dlsym (handle, "td_thr_getgregs"); -- if (td_thr_getgregs_p == NULL) -+ ptrs->td_thr_getgregs_p = verbose_dlsym (handle, "td_thr_getgregs"); -+ if (ptrs->td_thr_getgregs_p == NULL) - return 0; - -- td_thr_setfpregs_p = verbose_dlsym (handle, "td_thr_setfpregs"); -- if (td_thr_setfpregs_p == NULL) -+ ptrs->td_thr_setfpregs_p = verbose_dlsym (handle, "td_thr_setfpregs"); -+ if (ptrs->td_thr_setfpregs_p == NULL) - return 0; - -- td_thr_setgregs_p = verbose_dlsym (handle, "td_thr_setgregs"); -- if (td_thr_setgregs_p == NULL) -+ ptrs->td_thr_setgregs_p = verbose_dlsym (handle, "td_thr_setgregs"); -+ if (ptrs->td_thr_setgregs_p == NULL) - return 0; - - /* Initialize the library. */ -- err = td_init_p (); -+ err = ptrs->td_init_p (); - if (err != TD_OK) - { - warning ("Cannot initialize libthread_db: %s", thread_db_err_str (err)); -+ xfree (ptrs); - return 0; - } - - /* These are not essential. */ -- td_ta_event_addr_p = dlsym (handle, "td_ta_event_addr"); -- td_ta_set_event_p = dlsym (handle, "td_ta_set_event"); -- td_ta_event_getmsg_p = dlsym (handle, "td_ta_event_getmsg"); -- td_thr_event_enable_p = dlsym (handle, "td_thr_event_enable"); -- td_thr_tls_get_addr_p = dlsym (handle, "td_thr_tls_get_addr"); -+ ptrs->td_ta_event_addr_p = dlsym (handle, "td_ta_event_addr"); -+ ptrs->td_ta_set_event_p = dlsym (handle, "td_ta_set_event"); -+ ptrs->td_ta_event_getmsg_p = dlsym (handle, "td_ta_event_getmsg"); -+ ptrs->td_thr_event_enable_p = dlsym (handle, "td_thr_event_enable"); -+ ptrs->td_thr_tls_get_addr_p = dlsym (handle, "td_thr_tls_get_addr"); -+ -+ if (dladdr (ptrs->td_ta_new_p, &info) != 0) -+ ptrs->filename = info.dli_fname; -+ -+ /* Try dlinfo? */ -+ -+ if (ptrs->filename == NULL) -+ /* Paranoid - don't let a NULL path slip through. */ -+ ptrs->filename = name; - -- return 1; -+ return ptrs; - } - - static td_err_e -@@ -508,7 +537,7 @@ enable_thread_event (td_thragent_t *thre - td_err_e err; - - /* Get the breakpoint address for thread EVENT. */ -- err = td_ta_event_addr_p (thread_agent, event, ¬ify); -+ err = current_pointers->td_ta_event_addr_p (thread_agent, event, ¬ify); - if (err != TD_OK) - return err; - -@@ -534,8 +563,10 @@ enable_thread_event_reporting (void) - - /* We cannot use the thread event reporting facility if these - functions aren't available. */ -- if (td_ta_event_addr_p == NULL || td_ta_set_event_p == NULL -- || td_ta_event_getmsg_p == NULL || td_thr_event_enable_p == NULL) -+ if (current_pointers->td_ta_event_addr_p == NULL -+ || current_pointers->td_ta_set_event_p == NULL -+ || current_pointers->td_ta_event_getmsg_p == NULL -+ || current_pointers->td_thr_event_enable_p == NULL) - return; - - /* Set the process wide mask saying which events we're interested in. */ -@@ -552,7 +583,7 @@ enable_thread_event_reporting (void) - #endif - td_event_addset (&events, TD_DEATH); - -- err = td_ta_set_event_p (thread_agent, &events); -+ err = current_pointers->td_ta_set_event_p (thread_agent, &events); - if (err != TD_OK) - { - warning ("Unable to set global thread event mask: %s", -@@ -592,7 +623,7 @@ disable_thread_event_reporting (void) - /* Set the process wide mask saying we aren't interested in any - events anymore. */ - td_event_emptyset (&events); -- td_ta_set_event_p (thread_agent, &events); -+ current_pointers->td_ta_set_event_p (thread_agent, &events); - - /* Delete thread event breakpoints, if any. */ - remove_thread_event_breakpoints (); -@@ -635,7 +666,6 @@ check_thread_signals (void) - static void - check_for_thread_db (void) - { -- td_err_e err; - static int already_loaded; - - /* First time through, report that libthread_db was successfuly -@@ -644,19 +674,8 @@ check_for_thread_db (void) - - if (!already_loaded) - { -- Dl_info info; -- const char *library = NULL; -- if (dladdr ((*td_ta_new_p), &info) != 0) -- library = info.dli_fname; -- -- /* Try dlinfo? */ -- -- if (library == NULL) -- /* Paranoid - don't let a NULL path slip through. */ -- library = LIBTHREAD_DB_SO; -- - printf_unfiltered ("Using host libthread_db library \"%s\".\n", -- library); -+ all_pointers->filename); - already_loaded = 1; - } - -@@ -674,28 +693,34 @@ check_for_thread_db (void) - proc_handle.pid = GET_PID (inferior_ptid); - - /* Now attempt to open a connection to the thread library. */ -- err = td_ta_new_p (&proc_handle, &thread_agent); -- switch (err) -+ for (current_pointers = all_pointers; -+ current_pointers != NULL; -+ current_pointers = current_pointers->next) - { -- case TD_NOLIBTHREAD: -- /* No thread library was detected. */ -- break; -- -- case TD_OK: -- printf_unfiltered ("[Thread debugging using libthread_db enabled]\n"); -+ td_err_e err; -+ err = current_pointers->td_ta_new_p (&proc_handle, &thread_agent); -+ switch (err) -+ { -+ case TD_NOLIBTHREAD: -+ /* No thread library was detected. */ -+ break; - -- /* The thread library was detected. Activate the thread_db target. */ -- push_target (&thread_db_ops); -- using_thread_db = 1; -+ case TD_OK: -+ printf_unfiltered ("[Thread debugging using libthread_db enabled]\n"); - -- enable_thread_event_reporting (); -- thread_db_find_new_threads (); -- break; -+ /* The thread library was detected. Activate the thread_db target. */ -+ push_target (&thread_db_ops); -+ using_thread_db = 1; -+ -+ enable_thread_event_reporting (); -+ thread_db_find_new_threads (); -+ return; - -- default: -- warning ("Cannot initialize thread debugging library: %s", -- thread_db_err_str (err)); -- break; -+ default: -+ warning ("Cannot initialize thread debugging library: %s", -+ thread_db_err_str (err)); -+ break; -+ } - } - } - -@@ -766,7 +791,7 @@ attach_thread (ptid_t ptid, const td_thr - #endif - - /* Enable thread event reporting for this thread. */ -- err = td_thr_event_enable_p (th_p, 1); -+ err = current_pointers->td_thr_event_enable_p (th_p, 1); - if (err != TD_OK) - error ("Cannot enable thread event reporting for %s: %s", - target_pid_to_str (ptid), thread_db_err_str (err)); -@@ -892,7 +917,7 @@ check_event (ptid_t ptid) - - do - { -- err = td_ta_event_getmsg_p (thread_agent, &msg); -+ err = current_pointers->td_ta_event_getmsg_p (thread_agent, &msg); - if (err != TD_OK) - { - if (err == TD_NOMSG) -@@ -902,7 +927,7 @@ check_event (ptid_t ptid) - thread_db_err_str (err)); - } - -- err = td_thr_get_info_p (msg.th_p, &ti); -+ err = current_pointers->td_thr_get_info_p (msg.th_p, &ti); - if (err != TD_OK) - error ("Cannot get thread info: %s", thread_db_err_str (err)); - -@@ -1015,12 +1040,14 @@ thread_db_fetch_registers (int regno) - thread_info = find_thread_pid (inferior_ptid); - thread_db_map_id2thr (thread_info, 1); - -- err = td_thr_getgregs_p (&thread_info->private->th, gregset); -+ err = current_pointers->td_thr_getgregs_p (&thread_info->private->th, -+ gregset); - if (err != TD_OK) - error ("Cannot fetch general-purpose registers for thread %ld: %s", - (long) GET_THREAD (inferior_ptid), thread_db_err_str (err)); - -- err = td_thr_getfpregs_p (&thread_info->private->th, &fpregset); -+ err = current_pointers->td_thr_getfpregs_p (&thread_info->private->th, -+ &fpregset); - if (err != TD_OK) - error ("Cannot get floating-point registers for thread %ld: %s", - (long) GET_THREAD (inferior_ptid), thread_db_err_str (err)); -@@ -1062,11 +1089,13 @@ thread_db_store_registers (int regno) - fill_gregset ((gdb_gregset_t *) gregset, -1); - fill_fpregset (&fpregset, -1); - -- err = td_thr_setgregs_p (&thread_info->private->th, gregset); -+ err = current_pointers->td_thr_setgregs_p (&thread_info->private->th, -+ gregset); - if (err != TD_OK) - error ("Cannot store general-purpose registers for thread %ld: %s", - (long) GET_THREAD (inferior_ptid), thread_db_err_str (err)); -- err = td_thr_setfpregs_p (&thread_info->private->th, &fpregset); -+ err = current_pointers->td_thr_setfpregs_p (&thread_info->private->th, -+ &fpregset); - if (err != TD_OK) - error ("Cannot store floating-point registers for thread %ld: %s", - (long) GET_THREAD (inferior_ptid), thread_db_err_str (err)); -@@ -1136,15 +1165,14 @@ thread_db_thread_alive (ptid_t ptid) - if (!thread_info->private->th_valid) - return 0; - -- err = td_thr_validate_p (&thread_info->private->th); -+ err = current_pointers->td_thr_validate_p (&thread_info->private->th); - if (err != TD_OK) - return 0; - - if (!thread_info->private->ti_valid) - { -- err = -- td_thr_get_info_p (&thread_info->private->th, -- &thread_info->private->ti); -+ err = current_pointers->td_thr_get_info_p -+ (&thread_info->private->th, &thread_info->private->ti); - if (err != TD_OK) - return 0; - thread_info->private->ti_valid = 1; -@@ -1170,7 +1198,7 @@ find_new_threads_callback (const td_thrh - td_err_e err; - ptid_t ptid; - -- err = td_thr_get_info_p (th_p, &ti); -+ err = current_pointers->td_thr_get_info_p (th_p, &ti); - if (err != TD_OK) - error ("find_new_threads_callback: cannot get thread info: %s", - thread_db_err_str (err)); -@@ -1192,9 +1220,10 @@ thread_db_find_new_threads (void) - td_err_e err; - - /* Iterate over all user-space threads to discover new threads. */ -- err = td_ta_thr_iter_p (thread_agent, find_new_threads_callback, NULL, -- TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY, -- TD_SIGNO_MASK, TD_THR_ANY_USER_FLAGS); -+ err = current_pointers->td_ta_thr_iter_p -+ (thread_agent, find_new_threads_callback, NULL, -+ TD_THR_ANY_STATE, TD_THR_LOWEST_PRIORITY, -+ TD_SIGNO_MASK, TD_THR_ANY_USER_FLAGS); - if (err != TD_OK) - error ("Cannot find new threads: %s", thread_db_err_str (err)); - } -@@ -1257,7 +1286,7 @@ thread_db_get_thread_local_address (ptid - struct thread_info *thread_info; - - /* glibc doesn't provide the needed interface. */ -- if (!td_thr_tls_get_addr_p) -+ if (!current_pointers->td_thr_tls_get_addr_p) - error ("Cannot find thread-local variables in this thread library."); - - /* Get the address of the link map for this objfile. */ -@@ -1279,8 +1308,8 @@ thread_db_get_thread_local_address (ptid - thread_db_map_id2thr (thread_info, 1); - - /* Finally, get the address of the variable. */ -- err = td_thr_tls_get_addr_p (&thread_info->private->th, (void *) lm, -- offset, &address); -+ err = current_pointers->td_thr_tls_get_addr_p -+ (&thread_info->private->th, (void *) lm, offset, &address); - - #ifdef THREAD_DB_HAS_TD_NOTALLOC - /* The memory hasn't been allocated, yet. */ -@@ -1360,17 +1389,49 @@ init_thread_db_ops (void) - void - _initialize_thread_db (void) - { -+ struct thread_db_pointers *ptrs; -+ const char *p; -+ - /* Only initialize the module if we can load libthread_db. */ -- if (thread_db_load ()) -- { -- init_thread_db_ops (); -- add_target (&thread_db_ops); -+ ptrs = thread_db_load (LIBTHREAD_DB_SO); -+ if (ptrs == NULL) -+ return; -+ -+ all_pointers = ptrs; - -- /* Add ourselves to objfile event chain. */ -- target_new_objfile_chain = deprecated_target_new_objfile_hook; -- deprecated_target_new_objfile_hook = thread_db_new_objfile; -+ /* Some GNU/Linux systems have more than one binary-compatible copy -+ of libthread_db. If we can find a second one, load that too. -+ The inferior may force the use of a different threading package -+ than we expect. Our guess for the location is somewhat hokey: -+ strip out anything between /lib (or /lib64) and LIBTHREAD_DB_SO. -+ If we loaded the NPTL libthread_db by default, this may find us -+ the LinuxThreads copy. */ -+ p = strrchr (ptrs->filename, '/'); -+ while (p != NULL && p > ptrs->filename) -+ { -+ const char *component; - -- /* Register ourselves for the new inferior observer. */ -- observer_attach_inferior_created (check_for_thread_db_observer); -+ component = memrchr (ptrs->filename, '/', p - ptrs->filename); -+ if (component != NULL && strncmp (component, "/lib", 4) == 0) -+ { -+ char *new_name = xmalloc (p - ptrs->filename + 2 -+ + strlen (LIBTHREAD_DB_SO)); -+ memcpy (new_name, ptrs->filename, p - ptrs->filename + 1); -+ strcpy (new_name + (p - ptrs->filename) + 1, LIBTHREAD_DB_SO); -+ ptrs->next = thread_db_load (new_name); -+ xfree (new_name); -+ break; -+ } -+ p = component; - } -+ -+ init_thread_db_ops (); -+ add_target (&thread_db_ops); -+ -+ /* Add ourselves to objfile event chain. */ -+ target_new_objfile_chain = deprecated_target_new_objfile_hook; -+ deprecated_target_new_objfile_hook = thread_db_new_objfile; -+ -+ /* Register ourselves for the new inferior observer. */ -+ observer_attach_inferior_created (check_for_thread_db_observer); - } diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/720-debian_static-threads-test.patch --- a/patches/gdb/6.3/720-debian_static-threads-test.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -Update staticthreads.exp to handle debugging info in libpthread.a. - -Index: gdb-6.3/gdb/testsuite/gdb.threads/staticthreads.exp -=================================================================== ---- gdb-6.3.orig/gdb/testsuite/gdb.threads/staticthreads.exp 2004-11-10 10:35:15.000000000 -0500 -+++ gdb-6.3/gdb/testsuite/gdb.threads/staticthreads.exp 2004-11-10 11:22:48.671121466 -0500 -@@ -53,6 +53,10 @@ gdb_test_multiple "continue" "$test" { - -re " sem_post .*$gdb_prompt " { - pass "$test" - } -+ -re " (.*_)sem_post .*$gdb_prompt " { -+ # Glibc uses aliases for internal symbols; match __new_sem_post. -+ pass "$test" -+ } - -re "Program received signal .*$gdb_prompt " { - kfail gdb/1328 "$test" - } -@@ -64,8 +68,16 @@ gdb_test_multiple "continue" "$test" { - - rerun_to_main - gdb_test "handle SIG32 nostop noprint pass" --set test "Handle SIG32 helps" --gdb_test "continue" " sem_post .*" "handle SIG32 helps" -+set test "handle SIG32 helps" -+gdb_test_multiple "continue" "$test" { -+ -re " sem_post .*$gdb_prompt $" { -+ pass "$test" -+ } -+ -re " (.*_)sem_post .*$gdb_prompt $" { -+ # Glibc uses aliases for internal symbols; match __new_sem_post. -+ pass "$test" -+ } -+} - - - # See if info threads produces anything approaching a thread list. diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/730-debian_gdb-fix-tracefork-check.patch --- a/patches/gdb/6.3/730-debian_gdb-fix-tracefork-check.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,225 +0,0 @@ -Status: submitted for comments - -2004-11-12 Daniel Jacobowitz - - * linux-nat.c (my_waitpid): New function. - (linux_test_for_tracefork): Make more robust and verbose. Take - an ORIGINAL_PID argument and test for PTRACE_SETOPTIONS first. - (linux_supports_tracefork, linux_supports_tracevforkdone): Take a PID - argument. Update calls to linux_test_for_tracefork. - (linux_enable_event_reporting, child_follow_fork) - (child_insert_fork_catchpoint, child_insert_vfork_catchpoint) - (child_insert_exec_catchpoint): Update calls to - linux_supports_tracefork and linux_supports_tracevforkdone. - -Index: gdb-6.3/gdb/linux-nat.c -=================================================================== ---- gdb-6.3.orig/gdb/linux-nat.c 2004-10-08 16:29:47.000000000 -0400 -+++ gdb-6.3/gdb/linux-nat.c 2004-11-13 16:41:51.368720845 -0500 -@@ -150,18 +150,47 @@ linux_tracefork_child (void) - exit (0); - } - --/* Determine if PTRACE_O_TRACEFORK can be used to follow fork events. We -+/* Wrapper function for waitpid which handles EINTR. */ -+ -+static int -+my_waitpid (int pid, int *status, int flags) -+{ -+ int ret; -+ do -+ { -+ ret = waitpid (pid, status, flags); -+ } -+ while (ret == -1 && errno == EINTR); -+ -+ return ret; -+} -+ -+/* Determine if PTRACE_O_TRACEFORK can be used to follow fork events. -+ -+ First, we try to enable fork tracing on ORIGINAL_PID. If this fails, -+ we know that the feature is not available. This may change the tracing -+ options for ORIGINAL_PID, but we'll be setting them shortly anyway. -+ -+ However, if it succeeds, we don't know for sure that the feature is -+ available; old versions of PTRACE_SETOPTIONS ignored unknown options. We - create a child process, attach to it, use PTRACE_SETOPTIONS to enable -- fork tracing, and let it fork. If the process exits, we assume that -- we can't use TRACEFORK; if we get the fork notification, and we can -- extract the new child's PID, then we assume that we can. */ -+ fork tracing, and let it fork. If the process exits, we assume that we -+ can't use TRACEFORK; if we get the fork notification, and we can extract -+ the new child's PID, then we assume that we can. */ - - static void --linux_test_for_tracefork (void) -+linux_test_for_tracefork (int original_pid) - { - int child_pid, ret, status; - long second_pid; - -+ linux_supports_tracefork_flag = 0; -+ linux_supports_tracevforkdone_flag = 0; -+ -+ ret = ptrace (PTRACE_SETOPTIONS, original_pid, 0, PTRACE_O_TRACEFORK); -+ if (ret != 0) -+ return; -+ - child_pid = fork (); - if (child_pid == -1) - perror_with_name ("linux_test_for_tracefork: fork"); -@@ -169,7 +198,7 @@ linux_test_for_tracefork (void) - if (child_pid == 0) - linux_tracefork_child (); - -- ret = waitpid (child_pid, &status, 0); -+ ret = my_waitpid (child_pid, &status, 0); - if (ret == -1) - perror_with_name ("linux_test_for_tracefork: waitpid"); - else if (ret != child_pid) -@@ -177,13 +206,23 @@ linux_test_for_tracefork (void) - if (! WIFSTOPPED (status)) - error ("linux_test_for_tracefork: waitpid: unexpected status %d.", status); - -- linux_supports_tracefork_flag = 0; -- - ret = ptrace (PTRACE_SETOPTIONS, child_pid, 0, PTRACE_O_TRACEFORK); - if (ret != 0) - { -- ptrace (PTRACE_KILL, child_pid, 0, 0); -- waitpid (child_pid, &status, 0); -+ ret = ptrace (PTRACE_KILL, child_pid, 0, 0); -+ if (ret != 0) -+ { -+ warning ("linux_test_for_tracefork: failed to kill child"); -+ return; -+ } -+ -+ ret = my_waitpid (child_pid, &status, 0); -+ if (ret != child_pid) -+ warning ("linux_test_for_tracefork: failed to wait for killed child"); -+ else if (!WIFSIGNALED (status)) -+ warning ("linux_test_for_tracefork: unexpected wait status 0x%x from " -+ "killed child", status); -+ - return; - } - -@@ -192,8 +231,12 @@ linux_test_for_tracefork (void) - PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORKDONE); - linux_supports_tracevforkdone_flag = (ret == 0); - -- ptrace (PTRACE_CONT, child_pid, 0, 0); -- ret = waitpid (child_pid, &status, 0); -+ ret = ptrace (PTRACE_CONT, child_pid, 0, 0); -+ if (ret != 0) -+ warning ("linux_test_for_tracefork: failed to resume child"); -+ -+ ret = my_waitpid (child_pid, &status, 0); -+ - if (ret == child_pid && WIFSTOPPED (status) - && status >> 16 == PTRACE_EVENT_FORK) - { -@@ -204,34 +247,38 @@ linux_test_for_tracefork (void) - int second_status; - - linux_supports_tracefork_flag = 1; -- waitpid (second_pid, &second_status, 0); -- ptrace (PTRACE_DETACH, second_pid, 0, 0); -+ my_waitpid (second_pid, &second_status, 0); -+ ret = ptrace (PTRACE_KILL, second_pid, 0, 0); -+ if (ret != 0) -+ warning ("linux_test_for_tracefork: failed to kill second child"); - } - } -+ else -+ warning ("linux_test_for_tracefork: unexpected result from waitpid " -+ "(%d, status 0x%x)", ret, status); - -- if (WIFSTOPPED (status)) -- { -- ptrace (PTRACE_DETACH, child_pid, 0, 0); -- waitpid (child_pid, &status, 0); -- } -+ ret = ptrace (PTRACE_KILL, child_pid, 0, 0); -+ if (ret != 0) -+ warning ("linux_test_for_tracefork: failed to kill child"); -+ my_waitpid (child_pid, &status, 0); - } - - /* Return non-zero iff we have tracefork functionality available. - This function also sets linux_supports_tracefork_flag. */ - - static int --linux_supports_tracefork (void) -+linux_supports_tracefork (int pid) - { - if (linux_supports_tracefork_flag == -1) -- linux_test_for_tracefork (); -+ linux_test_for_tracefork (pid); - return linux_supports_tracefork_flag; - } - - static int --linux_supports_tracevforkdone (void) -+linux_supports_tracevforkdone (int pid) - { - if (linux_supports_tracefork_flag == -1) -- linux_test_for_tracefork (); -+ linux_test_for_tracefork (pid); - return linux_supports_tracevforkdone_flag; - } - -@@ -242,12 +289,12 @@ linux_enable_event_reporting (ptid_t pti - int pid = ptid_get_pid (ptid); - int options; - -- if (! linux_supports_tracefork ()) -+ if (! linux_supports_tracefork (pid)) - return; - - options = PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK | PTRACE_O_TRACEEXEC - | PTRACE_O_TRACECLONE; -- if (linux_supports_tracevforkdone ()) -+ if (linux_supports_tracevforkdone (pid)) - options |= PTRACE_O_TRACEVFORKDONE; - - /* Do not enable PTRACE_O_TRACEEXIT until GDB is more prepared to support -@@ -308,7 +355,8 @@ child_follow_fork (int follow_child) - - if (has_vforked) - { -- if (linux_supports_tracevforkdone ()) -+ gdb_assert (linux_supports_tracefork_flag >= 0); -+ if (linux_supports_tracevforkdone (0)) - { - int status; - -@@ -476,7 +524,7 @@ linux_handle_extended_wait (int pid, int - int - child_insert_fork_catchpoint (int pid) - { -- if (! linux_supports_tracefork ()) -+ if (! linux_supports_tracefork (pid)) - error ("Your system does not support fork catchpoints."); - - return 0; -@@ -485,7 +533,7 @@ child_insert_fork_catchpoint (int pid) - int - child_insert_vfork_catchpoint (int pid) - { -- if (!linux_supports_tracefork ()) -+ if (!linux_supports_tracefork (pid)) - error ("Your system does not support vfork catchpoints."); - - return 0; -@@ -494,7 +542,7 @@ child_insert_vfork_catchpoint (int pid) - int - child_insert_exec_catchpoint (int pid) - { -- if (!linux_supports_tracefork ()) -+ if (!linux_supports_tracefork (pid)) - error ("Your system does not support exec catchpoints."); - - return 0; diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/740-debian_make-cv-type-crash.patch --- a/patches/gdb/6.3/740-debian_make-cv-type-crash.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,132 +0,0 @@ -2004-11-04 Jim Blandy - - * gdbtypes.c (make_qualified_type): Doc fix. Add assertion to - prevent cross-objfile references. - (make_cv_type): Doc fix. Don't create cross-objfile references, - even for stub types. - (replace_type): Add assertion to prevent cross-objfile references. - (check_typedef): Never resolve a stub type by copying over a type - from another file. - -Index: src/gdb/gdbtypes.c -=================================================================== -RCS file: /big/fsf/rsync/src-cvs/src/gdb/gdbtypes.c,v -retrieving revision 1.92 -retrieving revision 1.93 -diff -u -p -r1.92 -r1.93 ---- src/gdb/gdbtypes.c 8 Aug 2004 17:18:16 -0000 1.92 -+++ src/gdb/gdbtypes.c 4 Nov 2004 17:50:16 -0000 1.93 -@@ -433,7 +433,9 @@ address_space_int_to_name (int space_fla - } - - /* Create a new type with instance flags NEW_FLAGS, based on TYPE. -- If STORAGE is non-NULL, create the new type instance there. */ -+ -+ If STORAGE is non-NULL, create the new type instance there. -+ STORAGE must be in the same obstack as TYPE. */ - - static struct type * - make_qualified_type (struct type *type, int new_flags, -@@ -453,6 +455,12 @@ make_qualified_type (struct type *type, - ntype = alloc_type_instance (type); - else - { -+ /* If STORAGE was provided, it had better be in the same objfile as -+ TYPE. Otherwise, we can't link it into TYPE's cv chain: if one -+ objfile is freed and the other kept, we'd have dangling -+ pointers. */ -+ gdb_assert (TYPE_OBJFILE (type) == TYPE_OBJFILE (storage)); -+ - ntype = storage; - TYPE_MAIN_TYPE (ntype) = TYPE_MAIN_TYPE (type); - TYPE_CHAIN (ntype) = ntype; -@@ -501,11 +509,12 @@ make_type_with_address_space (struct typ - CNST is a flag for setting the const attribute - VOLTL is a flag for setting the volatile attribute - TYPE is the base type whose variant we are creating. -- TYPEPTR, if nonzero, points -- to a pointer to memory where the reference type should be stored. -- If *TYPEPTR is zero, update it to point to the reference type we return. -- We allocate new memory if needed. */ - -+ If TYPEPTR and *TYPEPTR are non-zero, then *TYPEPTR points to -+ storage to hold the new qualified type; *TYPEPTR and TYPE must be -+ in the same objfile. Otherwise, allocate fresh memory for the new -+ type whereever TYPE lives. If TYPEPTR is non-zero, set it to the -+ new type we construct. */ - struct type * - make_cv_type (int cnst, int voltl, struct type *type, struct type **typeptr) - { -@@ -524,20 +533,19 @@ make_cv_type (int cnst, int voltl, struc - - if (typeptr && *typeptr != NULL) - { -- /* Objfile is per-core-type. This const-qualified type had best -- belong to the same objfile as the type it is qualifying, unless -- we are overwriting a stub type, in which case the safest thing -- to do is to copy the core type into the new objfile. */ -- -- gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type) -- || TYPE_STUB (*typeptr)); -- if (TYPE_OBJFILE (*typeptr) != TYPE_OBJFILE (type)) -- { -- TYPE_MAIN_TYPE (*typeptr) -- = TYPE_ALLOC (*typeptr, sizeof (struct main_type)); -- *TYPE_MAIN_TYPE (*typeptr) -- = *TYPE_MAIN_TYPE (type); -- } -+ /* TYPE and *TYPEPTR must be in the same objfile. We can't have -+ a C-V variant chain that threads across objfiles: if one -+ objfile gets freed, then the other has a broken C-V chain. -+ -+ This code used to try to copy over the main type from TYPE to -+ *TYPEPTR if they were in different objfiles, but that's -+ wrong, too: TYPE may have a field list or member function -+ lists, which refer to types of their own, etc. etc. The -+ whole shebang would need to be copied over recursively; you -+ can't have inter-objfile pointers. The only thing to do is -+ to leave stub types as stub types, and look them up afresh by -+ name each time you encounter them. */ -+ gdb_assert (TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type)); - } - - ntype = make_qualified_type (type, new_flags, typeptr ? *typeptr : NULL); -@@ -562,6 +570,12 @@ replace_type (struct type *ntype, struct - { - struct type *chain; - -+ /* These two types had better be in the same objfile. Otherwise, -+ the assignment of one type's main type structure to the other -+ will produce a type with references to objects (names; field -+ lists; etc.) allocated on an objfile other than its own. */ -+ gdb_assert (TYPE_OBJFILE (ntype) == TYPE_OBJFILE (ntype)); -+ - *TYPE_MAIN_TYPE (ntype) = *TYPE_MAIN_TYPE (type); - - /* The type length is not a part of the main type. Update it for each -@@ -1416,8 +1430,24 @@ check_typedef (struct type *type) - return type; - } - newtype = lookup_transparent_type (name); -+ - if (newtype) -- make_cv_type (is_const, is_volatile, newtype, &type); -+ { -+ /* If the resolved type and the stub are in the same objfile, -+ then replace the stub type with the real deal. But if -+ they're in separate objfiles, leave the stub alone; we'll -+ just look up the transparent type every time we call -+ check_typedef. We can't create pointers between types -+ allocated to different objfiles, since they may have -+ different lifetimes. Trying to copy NEWTYPE over to TYPE's -+ objfile is pointless, too, since you'll have to move over any -+ other types NEWTYPE refers to, which could be an unbounded -+ amount of stuff. */ -+ if (TYPE_OBJFILE (newtype) == TYPE_OBJFILE (type)) -+ make_cv_type (is_const, is_volatile, newtype, &type); -+ else -+ type = newtype; -+ } - } - /* Otherwise, rely on the stub flag being set for opaque/stubbed types */ - else if (TYPE_STUB (type) && !currently_reading_symtab) diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/750-debian_sparc-singlestep.patch --- a/patches/gdb/6.3/750-debian_sparc-singlestep.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -Status: submitted for comments - -2004-11-13 Daniel Jacobowitz - - * sparc-tdep.c (sparc_software_single_step): Handle stepping to NULL. - -Index: gdb-6.3/gdb/sparc-tdep.c -=================================================================== ---- gdb-6.3.orig/gdb/sparc-tdep.c 2004-06-06 22:02:55.000000000 -0400 -+++ gdb-6.3/gdb/sparc-tdep.c 2004-11-13 17:06:05.000000000 -0500 -@@ -1026,10 +1026,10 @@ - - if (insert_breakpoints_p) - { -- CORE_ADDR pc; -+ CORE_ADDR pc, orig_npc; - - pc = sparc_address_from_register (tdep->pc_regnum); -- npc = sparc_address_from_register (tdep->npc_regnum); -+ orig_npc = npc = sparc_address_from_register (tdep->npc_regnum); - - /* Analyze the instruction at PC. */ - nnpc = sparc_analyze_control_transfer (pc, &npc); -@@ -1039,9 +1039,10 @@ - target_insert_breakpoint (nnpc, nnpc_save); - - /* Assert that we have set at least one breakpoint, and that -- they're not set at the same spot. */ -- gdb_assert (npc != 0 || nnpc != 0); -- gdb_assert (nnpc != npc); -+ they're not set at the same spot - unless we're going -+ from here straight to NULL, i.e. a call or jump to 0. */ -+ gdb_assert (npc != 0 || nnpc != 0 || orig_npc == 0); -+ gdb_assert (nnpc != npc || orig_npc == 0); - } - else - { diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/760-debian_vsyscall-bfd-close-result.patch --- a/patches/gdb/6.3/760-debian_vsyscall-bfd-close-result.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -2004-10-24 Daniel Jacobowitz - - * opncls.c (bfd_close): Return TRUE for BFD_IN_MEMORY. - -Index: src/bfd/opncls.c -=================================================================== -RCS file: /big/fsf/rsync/src-cvs/src/bfd/opncls.c,v -retrieving revision 1.25 -diff -u -p -r1.25 opncls.c ---- src/bfd/opncls.c 10 Oct 2004 13:58:05 -0000 1.25 -+++ src/bfd/opncls.c 24 Oct 2004 17:52:53 -0000 -@@ -598,7 +598,7 @@ bfd_close (bfd *abfd) - if (!(abfd->flags & BFD_IN_MEMORY)) - ret = abfd->iovec->bclose (abfd); - else -- ret = 0; -+ ret = TRUE; - - /* If the file was open for writing and is now executable, - make it so. */ diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/770-debian_vfork-done-spelling.patch --- a/patches/gdb/6.3/770-debian_vfork-done-spelling.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -Index: gdb-6.3/gdb/linux-nat.c -=================================================================== ---- gdb-6.3.orig/gdb/linux-nat.c 2004-11-14 00:36:41.000000000 -0500 -+++ gdb-6.3/gdb/linux-nat.c 2004-11-15 11:51:43.954161476 -0500 -@@ -69,7 +69,7 @@ - #define PTRACE_EVENT_VFORK 2 - #define PTRACE_EVENT_CLONE 3 - #define PTRACE_EVENT_EXEC 4 --#define PTRACE_EVENT_VFORKDONE 5 -+#define PTRACE_EVENT_VFORK_DONE 5 - #define PTRACE_EVENT_EXIT 6 - - #endif /* PTRACE_EVENT_FORK */ -@@ -362,7 +362,7 @@ child_follow_fork (int follow_child) - - ptrace (PTRACE_CONT, parent_pid, 0, 0); - waitpid (parent_pid, &status, __WALL); -- if ((status >> 16) != PTRACE_EVENT_VFORKDONE) -+ if ((status >> 16) != PTRACE_EVENT_VFORK_DONE) - warning ("Unexpected waitpid result %06x when waiting for " - "vfork-done", status); - } -@@ -434,7 +434,7 @@ child_follow_fork (int follow_child) - generally not encounter vfork (vfork is defined to fork - in libpthread.so). - -- The holding part is very easy if we have VFORKDONE events; -+ The holding part is very easy if we have VFORK_DONE events; - but keeping track of both processes is beyond GDB at the - moment. So we don't expose the parent to the rest of GDB. - Instead we quietly hold onto it until such time as we can diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/780-debian_gdbserver-rdynamic.patch --- a/patches/gdb/6.3/780-debian_gdbserver-rdynamic.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,675 +0,0 @@ -Status: Commited to GDB after 6.3. - -Index: gdb-6.3/gdb/gdbserver/acinclude.m4 -=================================================================== ---- gdb-6.3.orig/gdb/gdbserver/acinclude.m4 2002-06-11 13:32:39.000000000 -0400 -+++ gdb-6.3/gdb/gdbserver/acinclude.m4 2004-12-07 17:19:31.115089905 -0500 -@@ -13,6 +13,7 @@ AC_DEFUN([SRV_CHECK_THREAD_DB], - void ps_lsetregs() {} - void ps_lgetfpregs() {} - void ps_lsetfpregs() {} -+ void ps_get_thread_area() {} - void ps_getpid() {}], - [td_ta_new();], - [srv_cv_thread_db="-lthread_db"], -@@ -32,10 +33,11 @@ AC_DEFUN([SRV_CHECK_THREAD_DB], - void ps_lsetregs() {} - void ps_lgetfpregs() {} - void ps_lsetfpregs() {} -+ void ps_get_thread_area() {} - void ps_getpid() {}], - [td_ta_new();], - [srv_cv_thread_db="$thread_db"], - [srv_cv_thread_db=no]) -+ ]]) - LIBS="$old_LIBS" -- ]]) - )]) -Index: gdb-6.3/gdb/gdbserver/configure -=================================================================== ---- gdb-6.3.orig/gdb/gdbserver/configure 2004-10-16 12:18:54.000000000 -0400 -+++ gdb-6.3/gdb/gdbserver/configure 2004-12-07 17:22:17.343129771 -0500 -@@ -28,6 +28,7 @@ program_suffix=NONE - program_transform_name=s,x,x, - silent= - site= -+sitefile= - srcdir= - target=NONE - verbose= -@@ -142,6 +143,7 @@ Configuration: - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages -+ --site-file=FILE use FILE as the site file - --version print the version of autoconf that created configure - Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX -@@ -312,6 +314,11 @@ EOF - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - -+ -site-file | --site-file | --site-fil | --site-fi | --site-f) -+ ac_prev=sitefile ;; -+ -site-file=* | --site-file=* | --site-fil=* | --site-fi=* | --site-f=*) -+ sitefile="$ac_optarg" ;; -+ - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) -@@ -477,12 +484,16 @@ fi - srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - - # Prefer explicitly selected file to automatically selected ones. --if test -z "$CONFIG_SITE"; then -- if test "x$prefix" != xNONE; then -- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" -- else -- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -+if test -z "$sitefile"; then -+ if test -z "$CONFIG_SITE"; then -+ if test "x$prefix" != xNONE; then -+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" -+ else -+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -+ fi - fi -+else -+ CONFIG_SITE="$sitefile" - fi - for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then -@@ -526,7 +537,7 @@ fi - # Extract the first word of "gcc", so it can be a program name with args. - set dummy gcc; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:530: checking for $ac_word" >&5 -+echo "configure:541: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -556,7 +567,7 @@ if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. - set dummy cc; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:560: checking for $ac_word" >&5 -+echo "configure:571: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -607,7 +618,7 @@ fi - # Extract the first word of "cl", so it can be a program name with args. - set dummy cl; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:611: checking for $ac_word" >&5 -+echo "configure:622: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -639,7 +650,7 @@ fi - fi - - echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 --echo "configure:643: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 -+echo "configure:654: 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. -@@ -650,12 +661,12 @@ cross_compiling=$ac_cv_prog_cc_cross - - cat > conftest.$ac_ext << EOF - --#line 654 "configure" -+#line 665 "configure" - #include "confdefs.h" - - main(){return(0);} - EOF --if { (eval echo configure:659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:670: \"$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 -@@ -681,12 +692,12 @@ 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:685: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -+echo "configure:696: 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 - - echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 --echo "configure:690: checking whether we are using GNU C" >&5 -+echo "configure:701: checking whether we are using GNU C" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -695,7 +706,7 @@ else - yes; - #endif - EOF --if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:699: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then -+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:710: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes - else - ac_cv_prog_gcc=no -@@ -714,7 +725,7 @@ ac_test_CFLAGS="${CFLAGS+set}" - ac_save_CFLAGS="$CFLAGS" - CFLAGS= - echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 --echo "configure:718: checking whether ${CC-cc} accepts -g" >&5 -+echo "configure:729: checking whether ${CC-cc} accepts -g" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -793,7 +804,7 @@ else { echo "configure: error: can not r - fi - - echo $ac_n "checking host system type""... $ac_c" 1>&6 --echo "configure:797: checking host system type" >&5 -+echo "configure:808: checking host system type" >&5 - - host_alias=$host - case "$host_alias" in -@@ -814,7 +825,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- - echo "$ac_t""$host" 1>&6 - - echo $ac_n "checking target system type""... $ac_c" 1>&6 --echo "configure:818: checking target system type" >&5 -+echo "configure:829: checking target system type" >&5 - - target_alias=$target - case "$target_alias" in -@@ -832,7 +843,7 @@ target_os=`echo $target | sed 's/^\([^-] - echo "$ac_t""$target" 1>&6 - - echo $ac_n "checking build system type""... $ac_c" 1>&6 --echo "configure:836: checking build system type" >&5 -+echo "configure:847: checking build system type" >&5 - - build_alias=$build - case "$build_alias" in -@@ -867,7 +878,7 @@ test "$host_alias" != "$target_alias" && - # 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:871: checking for a BSD compatible install" >&5 -+echo "configure:882: 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 -@@ -921,7 +932,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA= - - - echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 --echo "configure:925: checking how to run the C preprocessor" >&5 -+echo "configure:936: checking how to run the C preprocessor" >&5 - # On Suns, sometimes $CPP names a directory. - if test -n "$CPP" && test -d "$CPP"; then - CPP= -@@ -936,13 +947,13 @@ else - # 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:946: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:957: \"$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 - : -@@ -953,13 +964,13 @@ else - 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:963: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:974: \"$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 - : -@@ -970,13 +981,13 @@ else - 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:980: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:991: \"$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 - : -@@ -1001,12 +1012,12 @@ fi - echo "$ac_t""$CPP" 1>&6 - - echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 --echo "configure:1005: checking for ANSI C header files" >&5 -+echo "configure:1016: 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 -@@ -1014,7 +1025,7 @@ else - #include - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:1018: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:1029: \"$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* -@@ -1031,7 +1042,7 @@ rm -f conftest* - 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 -@@ -1049,7 +1060,7 @@ fi - 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 -@@ -1070,7 +1081,7 @@ if test "$cross_compiling" = yes; then - : - else - cat > conftest.$ac_ext < - #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -@@ -1081,7 +1092,7 @@ if (XOR (islower (i), ISLOWER (i)) || to - exit (0); } - - EOF --if { (eval echo configure:1085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+if { (eval echo configure:1096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null - then - : - else -@@ -1109,17 +1120,17 @@ for ac_hdr in sgtty.h termio.h termios.h - do - ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` - echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 --echo "configure:1113: checking for $ac_hdr" >&5 -+echo "configure:1124: 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:1123: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:1134: \"$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* -@@ -1147,12 +1158,12 @@ done - - - echo $ac_n "checking whether strerror must be declared""... $ac_c" 1>&6 --echo "configure:1151: checking whether strerror must be declared" >&5 -+echo "configure:1162: checking whether strerror must be declared" >&5 - if eval "test \"`echo '$''{'bfd_cv_decl_needed_strerror'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < -@@ -1173,7 +1184,7 @@ int main() { - char *(*pfn) = (char *(*)) strerror - ; return 0; } - EOF --if { (eval echo configure:1177: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1188: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_decl_needed_strerror=no - else -@@ -1205,19 +1216,19 @@ fi - - if test "${srv_linux_regsets}" = "yes"; then - echo $ac_n "checking for PTRACE_GETREGS""... $ac_c" 1>&6 --echo "configure:1209: checking for PTRACE_GETREGS" >&5 -+echo "configure:1220: checking for PTRACE_GETREGS" >&5 - if eval "test \"`echo '$''{'gdbsrv_cv_have_ptrace_getregs'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - int main() { - PTRACE_GETREGS; - ; return 0; } - EOF --if { (eval echo configure:1221: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - gdbsrv_cv_have_ptrace_getregs=yes - else -@@ -1238,19 +1249,19 @@ EOF - fi - - echo $ac_n "checking for PTRACE_GETFPXREGS""... $ac_c" 1>&6 --echo "configure:1242: checking for PTRACE_GETFPXREGS" >&5 -+echo "configure:1253: checking for PTRACE_GETFPXREGS" >&5 - if eval "test \"`echo '$''{'gdbsrv_cv_have_ptrace_getfpxregs'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - int main() { - PTRACE_GETFPXREGS; - ; return 0; } - EOF --if { (eval echo configure:1254: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1265: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - gdbsrv_cv_have_ptrace_getfpxregs=yes - else -@@ -1273,12 +1284,12 @@ fi - - if test "$ac_cv_header_sys_procfs_h" = yes; then - echo $ac_n "checking for lwpid_t in sys/procfs.h""... $ac_c" 1>&6 --echo "configure:1277: checking for lwpid_t in sys/procfs.h" >&5 -+echo "configure:1288: checking for lwpid_t in sys/procfs.h" >&5 - if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_lwpid_t'+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:1302: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_have_sys_procfs_type_lwpid_t=yes - else -@@ -1309,12 +1320,12 @@ EOF - echo "$ac_t""$bfd_cv_have_sys_procfs_type_lwpid_t" 1>&6 - - echo $ac_n "checking for psaddr_t in sys/procfs.h""... $ac_c" 1>&6 --echo "configure:1313: checking for psaddr_t in sys/procfs.h" >&5 -+echo "configure:1324: checking for psaddr_t in sys/procfs.h" >&5 - if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_psaddr_t'+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:1338: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_have_sys_procfs_type_psaddr_t=yes - else -@@ -1345,12 +1356,12 @@ EOF - echo "$ac_t""$bfd_cv_have_sys_procfs_type_psaddr_t" 1>&6 - - echo $ac_n "checking for prgregset_t in sys/procfs.h""... $ac_c" 1>&6 --echo "configure:1349: checking for prgregset_t in sys/procfs.h" >&5 -+echo "configure:1360: checking for prgregset_t in sys/procfs.h" >&5 - if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prgregset_t'+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:1374: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_have_sys_procfs_type_prgregset_t=yes - else -@@ -1381,12 +1392,12 @@ EOF - echo "$ac_t""$bfd_cv_have_sys_procfs_type_prgregset_t" 1>&6 - - echo $ac_n "checking for prfpregset_t in sys/procfs.h""... $ac_c" 1>&6 --echo "configure:1385: checking for prfpregset_t in sys/procfs.h" >&5 -+echo "configure:1396: checking for prfpregset_t in sys/procfs.h" >&5 - if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_prfpregset_t'+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:1410: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_have_sys_procfs_type_prfpregset_t=yes - else -@@ -1421,7 +1432,7 @@ EOF - - if test $bfd_cv_have_sys_procfs_type_prfpregset_t = yes; then - echo $ac_n "checking whether prfpregset_t type is broken""... $ac_c" 1>&6 --echo "configure:1425: checking whether prfpregset_t type is broken" >&5 -+echo "configure:1436: checking whether prfpregset_t type is broken" >&5 - if eval "test \"`echo '$''{'gdb_cv_prfpregset_t_broken'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1429,7 +1440,7 @@ else - gdb_cv_prfpregset_t_broken=yes - else - cat > conftest.$ac_ext < - int main () -@@ -1439,7 +1450,7 @@ else - return 0; - } - EOF --if { (eval echo configure:1443: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+if { (eval echo configure:1454: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null - then - gdb_cv_prfpregset_t_broken=no - else -@@ -1463,12 +1474,12 @@ EOF - fi - - echo $ac_n "checking for elf_fpregset_t in sys/procfs.h""... $ac_c" 1>&6 --echo "configure:1467: checking for elf_fpregset_t in sys/procfs.h" >&5 -+echo "configure:1478: checking for elf_fpregset_t in sys/procfs.h" >&5 - if eval "test \"`echo '$''{'bfd_cv_have_sys_procfs_type_elf_fpregset_t'+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:1492: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - bfd_cv_have_sys_procfs_type_elf_fpregset_t=yes - else -@@ -1506,14 +1517,14 @@ USE_THREAD_DB= - - if test "$srv_linux_thread_db" = "yes"; then - echo $ac_n "checking for libthread_db""... $ac_c" 1>&6 --echo "configure:1510: checking for libthread_db" >&5 -+echo "configure:1521: checking for libthread_db" >&5 - if eval "test \"`echo '$''{'srv_cv_thread_db'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - old_LIBS="$LIBS" - LIBS="$LIBS -lthread_db" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1543: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - srv_cv_thread_db="-lthread_db" - else -@@ -1543,7 +1555,7 @@ else - fi - LIBS="$old_LIBS `eval echo "$thread_db"`" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - srv_cv_thread_db="$thread_db" - else -@@ -1567,11 +1580,11 @@ else - srv_cv_thread_db=no - fi - rm -f conftest* -- LIBS="$old_LIBS" -- -+ - fi - - echo "$ac_t""$srv_cv_thread_db" 1>&6 -+ LIBS="$old_LIBS" - - fi - rm -f conftest* -@@ -1585,14 +1598,14 @@ rm -f conftest* - old_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -rdynamic" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - RDYNAMIC=-rdynamic - else -Index: gdb-6.3/gdb/gdbserver/aclocal.m4 -=================================================================== ---- gdb-6.3.orig/gdb/gdbserver/aclocal.m4 2002-06-11 13:32:39.000000000 -0400 -+++ gdb-6.3/gdb/gdbserver/aclocal.m4 2004-12-07 17:22:00.382495519 -0500 -@@ -1,4 +1,4 @@ --dnl aclocal.m4 generated automatically by aclocal 1.4-p4 -+dnl aclocal.m4 generated automatically by aclocal 1.4 - - dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. - dnl This file is free software; the Free Software Foundation -@@ -25,6 +25,7 @@ AC_DEFUN([SRV_CHECK_THREAD_DB], - void ps_lsetregs() {} - void ps_lgetfpregs() {} - void ps_lsetfpregs() {} -+ void ps_get_thread_area() {} - void ps_getpid() {}], - [td_ta_new();], - [srv_cv_thread_db="-lthread_db"], -@@ -44,11 +45,12 @@ AC_DEFUN([SRV_CHECK_THREAD_DB], - void ps_lsetregs() {} - void ps_lgetfpregs() {} - void ps_lsetfpregs() {} -+ void ps_get_thread_area() {} - void ps_getpid() {}], - [td_ta_new();], - [srv_cv_thread_db="$thread_db"], - [srv_cv_thread_db=no]) -+ ]]) - LIBS="$old_LIBS" -- ]]) - )]) - diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/790-debian_dwarf2-cfi-warning.patch --- a/patches/gdb/6.3/790-debian_dwarf2-cfi-warning.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -Status: Unsuitable for upstream (at least, without a lot of arguing). - -GCC does not specify the state of every last register in the CIE. Since -GCC's focus is on correctness of runtime unwinding, any registers which -have to be unwound will be specified; but unmodified registers will not -be explicitly marked. (How about modified, call-clobbered registers? -I'm not sure if they are marked as unavailable.) - -GDB issues a noisy warning about this. The warning is generally not useful, -and we can get it extremely frequently (any time we load a new CIE). - -This patch disables the warning. Alternately we could set the complaints -threshold to zero, or implement a default frame init-register method for -every architecture. But someday the compiler will support using different -calling conventions for internal functions, so that's not much of a stopgap. -ARM has a complex algorithm for handling this, involving scanning all CIEs - -benefit not completely clear outside of the ARM context of flexible register -sets. - -Index: gdb-6.3/gdb/dwarf2-frame.c -=================================================================== ---- gdb-6.3.orig/gdb/dwarf2-frame.c 2004-11-15 11:54:57.000000000 -0500 -+++ gdb-6.3/gdb/dwarf2-frame.c 2004-12-08 18:02:23.896409471 -0500 -@@ -705,9 +705,12 @@ dwarf2_frame_cache (struct frame_info *n - table. We need a way of iterating through all the valid - DWARF2 register numbers. */ - if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED) -- complaint (&symfile_complaints, -- "Incomplete CFI data; unspecified registers at 0x%s", -- paddr (fs->pc)); -+ { -+ if (0) -+ complaint (&symfile_complaints, -+ "Incomplete CFI data; unspecified registers at 0x%s", -+ paddr (fs->pc)); -+ } - else - cache->reg[regnum] = fs->regs.reg[column]; - } diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/800-debian_linux-use-underscore-exit.patch --- a/patches/gdb/6.3/800-debian_linux-use-underscore-exit.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -Status: committed upstream after 6.3. Fixes some terminal mangling in -gdbtui. - -2004-12-04 Daniel Jacobowitz - - PR tui/1703 - * linux-nat.c (linux_tracefork_child): Use _exit instead of exit. - Suggested by Joshua Neuheisel. - -Index: gdb-6.3/gdb/linux-nat.c -=================================================================== ---- gdb-6.3.orig/gdb/linux-nat.c 2004-12-08 18:22:04.996973094 -0500 -+++ gdb-6.3/gdb/linux-nat.c 2004-12-08 18:22:20.386956067 -0500 -@@ -147,7 +147,7 @@ linux_tracefork_child (void) - ptrace (PTRACE_TRACEME, 0, 0, 0); - kill (getpid (), SIGSTOP); - fork (); -- exit (0); -+ _exit (0); - } - - /* Wrapper function for waitpid which handles EINTR. */ diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/810-debian_bfd-no-kylix-crash.patch --- a/patches/gdb/6.3/810-debian_bfd-no-kylix-crash.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -Status: committed upstream after 6.3. - -Fix a crash triggered by Kylix libraries. - -2004-12-06 Daniel Jacobowitz - - Suggested by Fergal Daly : - * simple.c (simple_dummy_multiple_definition): New function. - (bfd_simple_get_relocated_section_contents): Use it. - -Index: src/bfd/simple.c -=================================================================== -RCS file: /cvs/src/src/bfd/simple.c,v -retrieving revision 1.19 -retrieving revision 1.20 -Index: gdb-6.3/bfd/simple.c -=================================================================== ---- gdb-6.3.orig/bfd/simple.c 2004-09-24 03:07:19.000000000 -0400 -+++ gdb-6.3/bfd/simple.c 2004-12-08 18:25:58.415216808 -0500 -@@ -78,6 +78,19 @@ simple_dummy_unattached_reloc (struct bf - return TRUE; - } - -+static bfd_boolean -+simple_dummy_multiple_definition (struct bfd_link_info *link_info ATTRIBUTE_UNUSED, -+ const char *name ATTRIBUTE_UNUSED, -+ bfd *obfd ATTRIBUTE_UNUSED, -+ asection *osec ATTRIBUTE_UNUSED, -+ bfd_vma oval ATTRIBUTE_UNUSED, -+ bfd *nbfd ATTRIBUTE_UNUSED, -+ asection *nsec ATTRIBUTE_UNUSED, -+ bfd_vma nval ATTRIBUTE_UNUSED) -+{ -+ return TRUE; -+} -+ - struct saved_output_info - { - bfd_vma offset; -@@ -172,6 +185,7 @@ bfd_simple_get_relocated_section_content - callbacks.reloc_overflow = simple_dummy_reloc_overflow; - callbacks.reloc_dangerous = simple_dummy_reloc_dangerous; - callbacks.unattached_reloc = simple_dummy_unattached_reloc; -+ callbacks.multiple_definition = simple_dummy_multiple_definition; - - memset (&link_order, 0, sizeof (link_order)); - link_order.next = NULL; diff -r 419d959441ed -r 447b203edc2e patches/gdb/6.3/820-debian_disable-linux-fork-messages.patch --- a/patches/gdb/6.3/820-debian_disable-linux-fork-messages.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -Status: Proposed upstream after 6.3, not yet committed. - -2004-12-06 Daniel Jacobowitz - - * linux-nat.c (child_follow_fork): Call target_terminal_ours before - printing output. Use fprintf_unfiltered. Only print output when - debugging. - -Index: gdb-6.3/gdb/linux-nat.c -=================================================================== ---- gdb-6.3.orig/gdb/linux-nat.c 2004-12-08 18:22:20.386956067 -0500 -+++ gdb-6.3/gdb/linux-nat.c 2004-12-08 18:28:49.995585970 -0500 -@@ -347,9 +347,13 @@ child_follow_fork (int follow_child) - also, but they'll be reinserted below. */ - detach_breakpoints (child_pid); - -- fprintf_filtered (gdb_stdout, -- "Detaching after fork from child process %d.\n", -- child_pid); -+ if (debug_linux_nat) -+ { -+ target_terminal_ours (); -+ fprintf_unfiltered (gdb_stdlog, -+ "Detaching after fork from child process %d.\n", -+ child_pid); -+ } - - ptrace (PTRACE_DETACH, child_pid, 0, 0); - -@@ -418,9 +422,13 @@ child_follow_fork (int follow_child) - /* Before detaching from the parent, remove all breakpoints from it. */ - remove_breakpoints (); - -- fprintf_filtered (gdb_stdout, -- "Attaching after fork to child process %d.\n", -- child_pid); -+ if (debug_linux_nat) -+ { -+ target_terminal_ours (); -+ fprintf_unfiltered (gdb_stdlog, -+ "Attaching after fork to child process %d.\n", -+ child_pid); -+ } - - /* If we're vforking, we may want to hold on to the parent until - the child exits or execs. At exec time we can remove the old diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/README --- a/patches/glibc/2.1.3/README Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4 +0,0 @@ -The files rh62*.patch are from the Red Hat 6.2 file glibc-2.1.3-28.src.rpm -I am trusting here that Red Hat's patches are appropriate for all CPU -types. If I'm wrong, just remove the offending patch... -- Dan Kegel diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/arm-ctl_bus_isa.patch --- a/patches/glibc/2.1.3/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/backport-config.sub.patch --- a/patches/glibc/2.1.3/backport-config.sub.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,834 +0,0 @@ -# Backport glibc-2.3.2's config.sub to glibc-2.1.3 -# Should fix nonfatal but annoying like -# checking build system type... Invalid configuration `x86_64-unknown-linux-gnu': machine `x86_64-unknown' not recognized -# ../glibc-2.1.3/configure: line 1227: test: i686-unknown-linux-gnu: unary operator expected -# checking build system type... Configuration name missing. - - ---- glibc-2.1.3/scripts/config.sub 2004-03-24 13:27:06.000000000 -0800 -+++ glibc-2.3.2/scripts/config.sub 2002-07-10 00:24:32.000000000 -0700 -@@ -1,6 +1,10 @@ - #! /bin/sh --# Configuration validation subroutine script, version 1.1. --# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc. -+# Configuration validation subroutine script. -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002 Free Software Foundation, Inc. -+ -+timestamp='2002-07-03' -+ - # This file is (in principle) common to ALL GNU software. - # The presence of a machine in this file suggests that SOME GNU software - # can handle that machine. It does not imply ALL GNU software can. -@@ -25,6 +29,9 @@ - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - -+# Please send patches to . Submit a context -+# diff and a properly formatted ChangeLog entry. -+# - # Configuration subroutine to validate and canonicalize a configuration type. - # Supply the specified configuration type as an argument. - # If it is invalid, we print an error message on stderr and exit with code 1. -@@ -45,30 +52,73 @@ - # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM - # It is wrong to echo any other type of specification. - --if [ x$1 = x ] --then -- echo Configuration name missing. 1>&2 -- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 -- echo "or $0 ALIAS" 1>&2 -- echo where ALIAS is a recognized configuration type. 1>&2 -- exit 1 --fi -+me=`echo "$0" | sed -e 's,.*/,,'` - --# First pass through any local machine types. --case $1 in -- *local*) -- echo $1 -- exit 0 -- ;; -- *) -- ;; -+usage="\ -+Usage: $0 [OPTION] CPU-MFR-OPSYS -+ $0 [OPTION] ALIAS -+ -+Canonicalize a configuration name. -+ -+Operation modes: -+ -h, --help print this help, then exit -+ -t, --time-stamp print date of last modification, then exit -+ -v, --version print version number, then exit -+ -+Report bugs and patches to ." -+ -+version="\ -+GNU config.sub ($timestamp) -+ -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -+Free Software Foundation, Inc. -+ -+This is free software; see the source for copying conditions. There is NO -+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -+ -+help=" -+Try \`$me --help' for more information." -+ -+# Parse command line -+while test $# -gt 0 ; do -+ case $1 in -+ --time-stamp | --time* | -t ) -+ echo "$timestamp" ; exit 0 ;; -+ --version | -v ) -+ echo "$version" ; exit 0 ;; -+ --help | --h* | -h ) -+ echo "$usage"; exit 0 ;; -+ -- ) # Stop option processing -+ shift; break ;; -+ - ) # Use stdin as input. -+ break ;; -+ -* ) -+ echo "$me: invalid option $1$help" -+ exit 1 ;; -+ -+ *local*) -+ # First pass through any local machine types. -+ echo $1 -+ exit 0;; -+ -+ * ) -+ break ;; -+ esac -+done -+ -+case $# in -+ 0) echo "$me: missing argument$help" >&2 -+ exit 1;; -+ 1) ;; -+ *) echo "$me: too many arguments$help" >&2 -+ exit 1;; - esac - - # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- linux-gnu*) -+ nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -@@ -94,7 +144,7 @@ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -- -apple) -+ -apple | -axis) - os= - basic_machine=$1 - ;; -@@ -108,6 +158,14 @@ - os=-vxworks - basic_machine=$1 - ;; -+ -chorusos*) -+ os=-chorusos -+ basic_machine=$1 -+ ;; -+ -chorusrdb) -+ os=-chorusrdb -+ basic_machine=$1 -+ ;; - -hiux*) - os=-hiuxwe2 - ;; -@@ -166,27 +224,58 @@ - case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. -- tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ -- | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ -- | 580 | i960 | h8300 \ -- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ -- | alpha | alphaev[4-7] | alphaev56 | alphapca5[67] \ -- | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ -- | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \ -- | mips64orion | mips64orionel | mipstx39 | mipstx39el \ -- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \ -- | mips64vr5000 | miprs64vr5000el | mcore \ -- | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \ -- | thumb | d10v | fr30) -+ 1750a | 580 \ -+ | a29k \ -+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ -+ | c4x | clipper \ -+ | d10v | d30v | dlx | dsp16xx \ -+ | fr30 | frv \ -+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | i370 | i860 | i960 | ia64 \ -+ | ip2k \ -+ | m32r | m68000 | m68k | m88k | mcore \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64el \ -+ | mips64orion | mips64orionel \ -+ | mips64vr4100 | mips64vr4100el \ -+ | mips64vr4300 | mips64vr4300el \ -+ | mips64vr5000 | mips64vr5000el \ -+ | mipsisa32 | mipsisa32el \ -+ | mipsisa64 | mipsisa64el \ -+ | mipsisa64sb1 | mipsisa64sb1el \ -+ | mipstx39 | mipstx39el \ -+ | mn10200 | mn10300 \ -+ | ns16k | ns32k \ -+ | openrisc | or32 \ -+ | pdp10 | pdp11 | pj | pjl \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -+ | pyramid \ -+ | sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ -+ | sh64 | sh64le \ -+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ -+ | strongarm \ -+ | tahoe | thumb | tic80 | tron \ -+ | v850 | v850e \ -+ | we32k \ -+ | x86 | xscale | xstormy16 | xtensa \ -+ | z8k) -+ basic_machine=$basic_machine-unknown -+ ;; -+ m6811 | m68hc11 | m6812 | m68hc12) -+ # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown -+ os=-none - ;; -- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl) -+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. -- i[34567]86) -+ i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. -@@ -195,24 +284,54 @@ - exit 1 - ;; - # Recognize the basic CPU types with company name. -- # FIXME: clean up the formatting here. -- vax-* | tahoe-* | i[34567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \ -- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ -- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ -- | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \ -- | xmp-* | ymp-* \ -- | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \ -- | alpha-* | alphaev[4-7]-* | alphaev56-* | alphapca5[67]-* \ -- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \ -- | clipper-* | orion-* \ -- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ -- | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \ -- | mips64el-* | mips64orion-* | mips64orionel-* \ -- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \ -- | mipstx39-* | mipstx39el-* | mcore-* \ -- | f301-* | armv*-* | t3e-* \ -- | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \ -- | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* ) -+ 580-* \ -+ | a29k-* \ -+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ -+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -+ | avr-* \ -+ | bs2000-* \ -+ | c[123]* | c30-* | [cjt]90-* | c54x-* \ -+ | clipper-* | cydra-* \ -+ | d10v-* | d30v-* | dlx-* \ -+ | elxsi-* \ -+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ -+ | h8300-* | h8500-* \ -+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -+ | i*86-* | i860-* | i960-* | ia64-* \ -+ | ip2k-* \ -+ | m32r-* \ -+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -+ | m88110-* | m88k-* | mcore-* \ -+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -+ | mips16-* \ -+ | mips64-* | mips64el-* \ -+ | mips64orion-* | mips64orionel-* \ -+ | mips64vr4100-* | mips64vr4100el-* \ -+ | mips64vr4300-* | mips64vr4300el-* \ -+ | mips64vr5000-* | mips64vr5000el-* \ -+ | mipsisa32-* | mipsisa32el-* \ -+ | mipsisa64-* | mipsisa64el-* \ -+ | mipsisa64sb1-* | mipsisa64sb1el-* \ -+ | mipstx39 | mipstx39el \ -+ | none-* | np1-* | ns16k-* | ns32k-* \ -+ | orion-* \ -+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -+ | pyramid-* \ -+ | romp-* | rs6000-* \ -+ | sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \ -+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ -+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ -+ | tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \ -+ | v850-* | v850e-* | vax-* \ -+ | we32k-* \ -+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ -+ | xtensa-* \ -+ | ymp-* \ -+ | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. -@@ -249,14 +368,14 @@ - os=-sysv - ;; - amiga | amiga-*) -- basic_machine=m68k-cbm -+ basic_machine=m68k-unknown - ;; - amigaos | amigados) -- basic_machine=m68k-cbm -+ basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) -- basic_machine=m68k-cbm -+ basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) -@@ -275,6 +394,10 @@ - basic_machine=ns32k-sequent - os=-dynix - ;; -+ c90) -+ basic_machine=c90-cray -+ os=-unicos -+ ;; - convex-c1) - basic_machine=c1-convex - os=-bsd -@@ -295,27 +418,30 @@ - basic_machine=c38-convex - os=-bsd - ;; -- cray | ymp) -- basic_machine=ymp-cray -- os=-unicos -- ;; -- cray2) -- basic_machine=cray2-cray -- os=-unicos -- ;; -- [ctj]90-cray) -- basic_machine=c90-cray -+ cray | j90) -+ basic_machine=j90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; -+ cris | cris-* | etrax*) -+ basic_machine=cris-axis -+ ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; -+ decsystem10* | dec10*) -+ basic_machine=pdp10-dec -+ os=-tops10 -+ ;; -+ decsystem20* | dec20*) -+ basic_machine=pdp10-dec -+ os=-tops20 -+ ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola -@@ -357,6 +483,10 @@ - basic_machine=tron-gmicro - os=-sysv - ;; -+ go32) -+ basic_machine=i386-pc -+ os=-go32 -+ ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 -@@ -432,19 +562,19 @@ - basic_machine=i370-ibm - ;; - # I'm not sure what "Sysv32" means. Should this be sysv3.2? -- i[34567]86v32) -+ i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; -- i[34567]86v4*) -+ i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; -- i[34567]86v) -+ i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; -- i[34567]86sol2) -+ i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; -@@ -456,17 +586,6 @@ - basic_machine=i386-unknown - os=-vsta - ;; -- i386-go32 | go32) -- basic_machine=i386-unknown -- os=-go32 -- ;; -- i386-mingw32 | mingw32) -- basic_machine=i386-unknown -- os=-mingw32 -- ;; -- i386-qnx | qnx) -- basic_machine=i386-qnx -- ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in -@@ -492,6 +611,10 @@ - basic_machine=ns32k-utek - os=-sysv - ;; -+ mingw32) -+ basic_machine=i386-pc -+ os=-mingw32 -+ ;; - miniframe) - basic_machine=m68000-convergent - ;; -@@ -499,26 +622,26 @@ - basic_machine=m68k-atari - os=-mint - ;; -- mipsel*-linux*) -- basic_machine=mipsel-unknown -- os=-linux-gnu -- ;; -- mips*-linux*) -- basic_machine=mips-unknown -- os=-linux-gnu -- ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; -+ mmix*) -+ basic_machine=mmix-knuth -+ os=-mmixware -+ ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; -+ morphos) -+ basic_machine=powerpc-unknown -+ os=-morphos -+ ;; - msdos) -- basic_machine=i386-unknown -+ basic_machine=i386-pc - os=-msdos - ;; - mvs) -@@ -582,13 +705,24 @@ - basic_machine=i960-intel - os=-mon960 - ;; -+ nonstopux) -+ basic_machine=mips-compaq -+ os=-nonstopux -+ ;; - np1) - basic_machine=np1-gould - ;; -+ nsr-tandem) -+ basic_machine=nsr-tandem -+ ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; -+ or32 | or32-*) -+ basic_machine=or32-unknown -+ os=-coff -+ ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose -@@ -614,28 +748,28 @@ - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; -- pentium | p5 | k5 | k6 | nexen) -+ pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; -- pentiumpro | p6 | 6x86) -+ pentiumpro | p6 | 6x86 | athlon) - basic_machine=i686-pc - ;; - pentiumii | pentium2) -- basic_machine=i786-pc -+ basic_machine=i686-pc - ;; -- pentium-* | p5-* | k5-* | k6-* | nexen-*) -+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; -- pentiumpro-* | p6-* | 6x86-*) -+ pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) -- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; -- power) basic_machine=rs6000-ibm -+ power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; -@@ -647,9 +781,23 @@ - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; -+ ppc64) basic_machine=powerpc64-unknown -+ ;; -+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppc64le | powerpc64little | ppc64-le | powerpc64-little) -+ basic_machine=powerpc64le-unknown -+ ;; -+ ppc64le-* | powerpc64little-*) -+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - ps2) - basic_machine=i386-ibm - ;; -+ pw32) -+ basic_machine=i586-unknown -+ os=-pw32 -+ ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff -@@ -660,6 +808,12 @@ - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; -+ s390 | s390-*) -+ basic_machine=s390-ibm -+ ;; -+ s390x | s390x-*) -+ basic_machine=s390x-ibm -+ ;; - sa29200) - basic_machine=a29k-amd - os=-udi -@@ -671,7 +825,7 @@ - basic_machine=sh-hitachi - os=-hms - ;; -- sparclite-wrs) -+ sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; -@@ -729,20 +883,40 @@ - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; -+ sv1) -+ basic_machine=sv1-cray -+ os=-unicos -+ ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; -+ t3d) -+ basic_machine=alpha-cray -+ os=-unicos -+ ;; - t3e) -- basic_machine=t3e-cray -+ basic_machine=alphaev5-cray -+ os=-unicos -+ ;; -+ t90) -+ basic_machine=t90-cray - os=-unicos - ;; -+ tic54x | c54x*) -+ basic_machine=tic54x-unknown -+ os=-coff -+ ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; -+ toad1) -+ basic_machine=pdp10-xkl -+ os=-tops20 -+ ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; -@@ -789,13 +963,17 @@ - basic_machine=hppa1.1-winbond - os=-proelf - ;; -- xmp) -- basic_machine=xmp-cray -- os=-unicos -+ windows32) -+ basic_machine=i386-pc -+ os=-windows32-msvcrt - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; -+ ymp) -+ basic_machine=ymp-cray -+ os=-unicos -+ ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim -@@ -816,13 +994,6 @@ - op60c) - basic_machine=hppa1.1-oki - ;; -- mips) -- if [ x$os = x-linux-gnu ]; then -- basic_machine=mips-unknown -- else -- basic_machine=mips-mips -- fi -- ;; - romp) - basic_machine=romp-ibm - ;; -@@ -832,13 +1003,23 @@ - vax) - basic_machine=vax-dec - ;; -+ pdp10) -+ # there are many clones, so DEC is not a safe bet -+ basic_machine=pdp10-unknown -+ ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; -- sparc | sparcv9) -+ sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele) -+ basic_machine=sh-unknown -+ ;; -+ sh64) -+ basic_machine=sh64-unknown -+ ;; -+ sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) -@@ -860,6 +1041,9 @@ - basic_machine=c4x-none - os=-coff - ;; -+ *-unknown) -+ # Make sure to match an already-canonicalized machine name. -+ ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 -@@ -916,14 +1100,31 @@ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -+ | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* | -rhapsody* | -opened* | -openstep* | -oskit*) -+ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ -+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; -+ -qnx*) -+ case $basic_machine in -+ x86-* | i*86-*) -+ ;; -+ *) -+ os=-nto$os -+ ;; -+ esac -+ ;; -+ -nto*) -+ os=-nto-qnx -+ ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ -- | -macos* | -mpw* | -magic* | -mon960* | -lnews*) -+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` -@@ -940,6 +1141,9 @@ - -opened*) - os=-openedition - ;; -+ -wince*) -+ os=-wince -+ ;; - -osfrose*) - os=-osfrose - ;; -@@ -955,15 +1159,24 @@ - -acis*) - os=-aos - ;; -+ -atheos*) -+ os=-atheos -+ ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; -+ -nova*) -+ os=-rtmk-nova -+ ;; - -ns2 ) - os=-nextstep2 - ;; -+ -nsk*) -+ os=-nsk -+ ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` -@@ -977,9 +1190,6 @@ - -oss*) - os=-sysv3 - ;; -- -qnx) -- os=-qnx4 -- ;; - -svr4) - os=-sysv4 - ;; -@@ -1001,7 +1211,7 @@ - -xenix) - os=-xenix - ;; -- -*mint | -*MiNT) -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -none) -@@ -1035,6 +1245,10 @@ - arm*-semi) - os=-aout - ;; -+ # This must come before the *-dec entry. -+ pdp10-*) -+ os=-tops20 -+ ;; - pdp11-*) - os=-none - ;; -@@ -1062,6 +1276,9 @@ - mips*-*) - os=-elf - ;; -+ or32-*) -+ os=-coff -+ ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; -@@ -1143,7 +1360,7 @@ - *-masscomp) - os=-rtu - ;; -- f301-fujitsu) -+ f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) -@@ -1209,7 +1426,7 @@ - -ptx*) - vendor=sequent - ;; -- -vxsim* | -vxworks*) -+ -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) -@@ -1221,12 +1438,23 @@ - -mpw* | -macos*) - vendor=apple - ;; -- -*mint | -*MiNT) -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; -+ -vos*) -+ vendor=stratus -+ ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; - esac - - echo $basic_machine$os -+exit 0 -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "timestamp='" -+# time-stamp-format: "%:y-%02m-%02d" -+# time-stamp-end: "'" -+# End: diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/el.po.patch --- a/patches/glibc/2.1.3/el.po.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -From -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/po/Makefile.diff?r1=1.17&r2=1.18&cvsroot=glibc - -Fixes error - msgfmt -o el.mo el.po - el.po:538:31: invalid multibyte sequence - el.po:539:21: invalid multibyte sequence - el.po:1537:38: invalid multibyte sequence - msgfmt: found 3 fatal errors - make[2]: *** [el.mo] Error 1 - make[2]: Leaving directory - `/home/dkegel/wk/crosstool-0.25/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/glibc-2.1.3/po' - -=================================================================== -RCS file: /cvs/glibc/libc/po/Makefile,v -retrieving revision 1.17 -retrieving revision 1.18 -diff -u -r1.17 -r1.18 ---- libc/po/Makefile 1999/09/13 08:48:40 1.17 -+++ libc/po/Makefile 2001/04/20 04:45:54 1.18 -@@ -1,4 +1,4 @@ --# Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. -+# Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. - # This file is part of the GNU C Library. - - # The GNU C Library is free software; you can redistribute it and/or -@@ -20,8 +20,12 @@ - - subdir := po - -+# List of languages that are currently broken (just run msgfmt from -+# GNU gettext 0.10.36 on them to see why) -+BROKEN_LINGUAS = el -+ - # List of languages for which we have message catalogs of translations. --ALL_LINGUAS := $(basename $(wildcard *.po)) -+ALL_LINGUAS := $(filter-out $(BROKEN_LINGUAS),$(basename $(wildcard *.po))) - - # You can override this in configparms or the make command line to limit - # the languages which get installed. diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-ac_cv_prog_cc_cross.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-ac_cv_prog_cc_cross.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -Lets you work around the canadian cross build error - -.../gcc-3.4.0-glibc-2.1.3/build-glibc/elf/sln .../gcc-3.4.0-glibc-2.1.3/build-glibc/elf/symlink.list -make[1]: *** [install-symbolic-link] Segmentation fault -make[1]: Leaving directory `.../gcc-3.4.0-glibc-2.1.3/glibc-2.1.3' -make: *** [install] Error 2 - -by setting --host != --build when running glibc-2.1.3/configure -instead of hoping that host and build aren't aliases for each other -and that running a host program on the build machine doesn't -put up a dialog box or accidentally work. - -(cf. http://sources.redhat.com/ml/crossgcc/2002-08/msg00099.html, in which -the run of conftest caused a dialog box to pop up and block the build on cygwin) - ---- glibc-2.1.3/configure.old 2004-05-26 19:30:45.000000000 -0700 -+++ glibc-2.1.3/configure 2004-05-26 19:42:29.000000000 -0700 -@@ -1224,7 +1224,7 @@ - build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - echo "$ac_t""$build" 1>&6 - --if test $host != $build; then -+if test x$host_alias != x$build_alias; then - ac_tool_prefix=${host_alias}- - else - ac_tool_prefix= -@@ -1487,7 +1487,7 @@ - if { (eval echo configure:1488: \"$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 -+ if test x$host_alias == x$build_alias && (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes -@@ -1566,7 +1566,7 @@ - build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - echo "$ac_t""$build" 1>&6 - --if test $host != $build; then -+if test x$host_alias != x$build_alias; then - for ac_prog in gcc cc - do - # Extract the first word of "$ac_prog", so it can be a program name with args. diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-db2.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-db2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -Fixes error compiling with gcc-3.4.0: - -os/os_oflags.c: In function `__db_oflags': -os/os_oflags.c:48: error: label at end of compound statement -make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/build-glibc/db2/os_oflags.os] Error 1 - ---- glibc-2.1.3/db2/os/os_oflags.c.old Sun Apr 11 19:56:44 2004 -+++ glibc-2.1.3/db2/os/os_oflags.c Sun Apr 11 19:57:06 2004 -@@ -44,7 +44,7 @@ - case O_RDWR: - break; - default: /* Bogus flags value from user. */ -- /* XXX no way to return error from here */ -+ ; /* XXX no way to return error from here */ - } - if (oflags & O_CREAT) - dbflags |= DB_CREATE; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-dns.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-dns.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -Fixes - -nss_dns/dns-host.c: In function `_nss_dns_gethostbyaddr_r': -nss_dns/dns-host.c:268: error: label at end of compound statement -make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/build-glibc/resolv/dns-host.os] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/glibc-2.1.3/resolv' -make[1]: *** [resolv/others] Error 2 - -when building with gcc-3.4.0 - ---- glibc-2.1.3/resolv/nss_dns/dns-host.c.old Sun Apr 11 20:32:47 2004 -+++ glibc-2.1.3/resolv/nss_dns/dns-host.c Sun Apr 11 20:33:07 2004 -@@ -264,7 +264,7 @@ - strcpy (qp, "ip6.int"); - break; - default: -- /* Cannot happen. */ -+ ; /* Cannot happen. */ - } - - host_buffer = (querybuf *) malloc (sizeof (*host_buffer)); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-fixup.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-fixup.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -Fixes -dl-runtime.c:56: error: conflicting types for 'fixup' -../sysdeps/i386/dl-machine.h:158: error: previous declaration of 'fixup' was here -when building with gcc-3.4.0 - -First hunk: -Define ARCH_FIXUP_ATTRIBUTE and use it in the fixup function declarations. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/dl-machine.h.diff?r1=1.124&r2=1.125&cvsroot=glibc -[rediffed against glibc-2.1.3] - -Second hunk: -If ARCH_FIXUP_ATTRIBUTE is not defined, provide dummy definition. -Use macro in fixup function definitions. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/elf/dl-runtime.c.diff?r1=1.64&r2=1.65&cvsroot=glibc -[rediffed against glibc-2.3.2] - -=================================================================== ---- glibc-2.1.3/sysdeps/i386/dl-machine.h.old Sun Apr 11 18:58:45 2004 -+++ glibc-2.1.3/sysdeps/i386/dl-machine.h Sun Apr 11 18:59:51 2004 -@@ -70,11 +70,14 @@ - - We cannot use this scheme for profiling because the _mcount call - destroys the passed register information. */ -+ -+#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused)) -+ - static ElfW(Addr) fixup (struct link_map *l, ElfW(Word) reloc_offset) -- __attribute__ ((regparm (2), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset, - ElfW(Addr) retaddr) -- __attribute__ ((regparm (3), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - #endif - - /* Set up the loaded object described by L so its unrelocated PLT -=================================================================== ---- glibc-2.1.3/elf/dl-runtime.c~ Thu Jul 15 11:32:41 1999 -+++ glibc-2.1.3/elf/dl-runtime.c Sun Apr 11 19:02:01 2004 -@@ -31,6 +31,12 @@ - # define VERSYMIDX(sym) (DT_NUM + DT_PROCNUM + DT_VERSIONTAGIDX (sym)) - #endif - -+/* The fixup functions might have need special attributes. If none -+ are provided define the macro as empty. */ -+#ifndef ARCH_FIXUP_ATTRIBUTE -+# define ARCH_FIXUP_ATTRIBUTE -+#endif -+ - - /* This function is called through a special trampoline from the PLT the - first time each PLT entry is called. We must perform the relocation -@@ -40,7 +46,7 @@ - function. */ - - #ifndef ELF_MACHINE_NO_PLT --static ElfW(Addr) __attribute__ ((unused)) -+static ElfW(Addr) __attribute__ ((unused)) ARCH_FIXUP_ATTRIBUTE - fixup ( - # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, -@@ -105,7 +111,7 @@ - - #if !defined PROF && !defined ELF_MACHINE_NO_PLT - --static ElfW(Addr) __attribute__ ((unused)) -+static ElfW(Addr) __attribute__ ((unused)) ARCH_FIXUP_ATTRIBUTE - profile_fixup ( - #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-generic.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-generic.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ -Fixes following error when building with gcc-3.4.0: -../sysdeps/generic/strstr.c: In function `strstr': -../sysdeps/generic/strstr.c:85: error: label at end of compound statement -make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/build-glibc/string/strstr.o] Error 1 - - --------- -CVSROOT: /cvs/glibc -Module name: libc -Changes by: drepper@sources.redhat.com 2000-11-25 23:30:03 - -Modified files: - sysdeps/generic: _strerror.c memrchr.c strcasestr.c strstr.c - -Log message: - Add casts to avoid warnings. --------- - -Retrieved with - cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc diff -u -D"2000-11-24 23:30:03" -D"2000-11-26 23:30:03" -then fixed paths and threw out first two hunks - - -#Index: _strerror.c -#=================================================================== -#RCS file: /cvs/libc/sysdeps/generic/_strerror.c,v -#retrieving revision 1.16 -#retrieving revision 1.17 -#diff -u -r1.16 -r1.17 -#--- libc/sysdeps/generic/_strerror.c 29 Aug 2000 01:09:56 -0000 1.16 -#+++ libc/sysdeps/generic/_strerror.c 26 Nov 2000 07:30:03 -0000 1.17 -#@@ -56,7 +56,7 @@ -# buffer size. */ -# q = __mempcpy (buf, unk, MIN (unklen, buflen)); -# if (unklen < buflen) -#- memcpy (q, p, MIN (&numbuf[21] - p, buflen - unklen)); -#+ memcpy (q, p, MIN ((size_t) (&numbuf[21] - p), buflen - unklen)); -# -# /* Terminate the string in any case. */ -# if (buflen > 0) -#Index: memrchr.c -#=================================================================== -#RCS file: /cvs/libc/sysdeps/generic/memrchr.c,v -#retrieving revision 1.5 -#retrieving revision 1.6 -#diff -u -r1.5 -r1.6 -#--- libc/sysdeps/generic/memrchr.c 23 Oct 2000 23:07:32 -0000 1.5 -#+++ libc/sysdeps/generic/memrchr.c 26 Nov 2000 07:30:03 -0000 1.6 -#@@ -86,7 +86,7 @@ -# /* All these elucidatory comments refer to 4-byte longwords, -# but the theory applies equally well to 8-byte longwords. */ -# -#- longword_ptr = (unsigned long int *) char_ptr; -#+ longword_ptr = (const unsigned long int *) char_ptr; -# -# /* Bits 31, 24, 16, and 8 of this number are zero. Call these bits -# the "holes." Note that there is a hole just to the left of -Index: strcasestr.c -=================================================================== -RCS file: /cvs/libc/sysdeps/generic/strcasestr.c,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/sysdeps/generic/strcasestr.c 23 Jan 1999 22:16:03 -0000 1.3 -+++ libc/sysdeps/generic/strcasestr.c 26 Nov 2000 07:30:03 -0000 1.4 -@@ -1,5 +1,5 @@ - /* Return the offset of one string within another. -- Copyright (C) 1994, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. -+ Copyright (C) 1994,1996,1997,1998,1999,2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -62,7 +62,7 @@ - if (c == '\0') - goto ret0; - } -- while (_tolower (c) != b); -+ while (_tolower (c) != (int) b); - - c = _tolower (*++needle); - if (c == '\0') -@@ -80,40 +80,42 @@ - a = *++haystack; - if (a == '\0') - goto ret0; -- if (_tolower (a) == b) -+ if (_tolower (a) == (int) b) - break; - a = *++haystack; - if (a == '\0') - goto ret0; --shloop: } -- while (_tolower (a) != b); -+shloop: -+ ; -+ } -+ while (_tolower (a) != (int) b); - - jin: a = *++haystack; - if (a == '\0') - goto ret0; - -- if (_tolower (a) != c) -+ if (_tolower (a) != (int) c) - goto shloop; - - rhaystack = haystack-- + 1; - rneedle = needle; - a = _tolower (*rneedle); - -- if (_tolower (*rhaystack) == a) -+ if (_tolower (*rhaystack) == (int) a) - do - { - if (a == '\0') - goto foundneedle; - ++rhaystack; - a = _tolower (*++needle); -- if (_tolower (*rhaystack) != a) -+ if (_tolower (*rhaystack) != (int) a) - break; - if (a == '\0') - goto foundneedle; - ++rhaystack; - a = _tolower (*++needle); - } -- while (_tolower (*rhaystack) == a); -+ while (_tolower (*rhaystack) == (int) a); - - needle = rneedle; /* took the register-poor approach */ - -Index: strstr.c -=================================================================== -RCS file: /cvs/libc/sysdeps/generic/strstr.c,v -retrieving revision 1.10 -retrieving revision 1.11 -diff -u -r1.10 -r1.11 ---- libc/sysdeps/generic/strstr.c 11 Sep 1997 03:18:20 -0000 1.10 -+++ libc/sysdeps/generic/strstr.c 26 Nov 2000 07:30:03 -0000 1.11 -@@ -1,5 +1,5 @@ - /* Return the offset of one string within another. -- Copyright (C) 1994, 1996, 1997 Free Software Foundation, Inc. -+ Copyright (C) 1994, 1996, 1997, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -82,7 +82,9 @@ - a = *++haystack; - if (a == '\0') - goto ret0; --shloop: } -+shloop: -+ ; -+ } - while (a != b); - - jin: a = *++haystack; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-grp.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-grp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -Fixes -initgroups.c: In function `internal_getgrouplist': -initgroups.c:179: error: parse error before "__FUNCTION__" - -CVSROOT: /cvs/glibc -Module name: libc -Changes by: roland@sources.redhat.com 2001-12-16 21:52:12 - -Modified files: - nss : nsswitch.c - grp : initgroups.c - -Log message: - 2001-12-16 Roland McGrath - - * nss/nsswitch.c (__nss_next): Don't use __FUNCTION__ as literal. - * grp/initgroups.c (internal_getgrouplist): Likewise. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/grp/initgroups.c.diff?r1=1.26&r2=1.27&cvsroot=glibc -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nss/nsswitch.c.diff?r1=1.52&r2=1.53&cvsroot=glibc - -Removed 2nd hunk for glibc-2.1.3 (it was just whitespace) - -=================================================================== -RCS file: /cvs/glibc/libc/grp/initgroups.c,v -retrieving revision 1.26 -retrieving revision 1.27 -diff -u -r1.26 -r1.27 ---- libc/grp/initgroups.c 2001/07/06 04:54:46 1.26 -+++ libc/grp/initgroups.c 2001/12/17 05:52:11 1.27 -@@ -176,7 +176,7 @@ - - /* This is really only for debugging. */ - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) -- __libc_fatal ("illegal status in " __FUNCTION__); -+ __libc_fatal ("illegal status in internal_getgrouplist"); - - if (status != NSS_STATUS_SUCCESS - && nss_next_action (nip, status) == NSS_ACTION_RETURN) - -=================================================================== -RCS file: /cvs/glibc/libc/nss/nsswitch.c,v -retrieving revision 1.52 -retrieving revision 1.53 -diff -u -r1.52 -r1.53 ---- libc/nss/nsswitch.c 2001/07/17 08:21:36 1.52 -+++ libc/nss/nsswitch.c 2001/12/17 05:52:11 1.53 -@@ -178,7 +178,7 @@ - { - /* This is really only for debugging. */ - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) -- __libc_fatal ("illegal status in " __FUNCTION__); -+ __libc_fatal ("illegal status in __nss_next"); - - if (nss_next_action (*ni, status) == NSS_ACTION_RETURN) - return 1; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-locale.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-locale.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -programs/locfile.c: In function `locfile_read': -programs/locfile.c:863: error: label at end of compound statement -make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/build-glibc/locale/locfile.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/glibc-2.1.3/locale' - -programs/locale.c: In function `print_item': -programs/locale.c:666: error: label at end of compound statement -make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/build-glibc/locale/locale.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/glibc-2.1.3/locale' - - -Mechanical changes to quiet the errors. - ---- glibc-2.1.3/locale/programs/locfile.c.old Sun Apr 11 20:03:52 2004 -+++ glibc-2.1.3/locale/programs/locfile.c Sun Apr 11 20:04:47 2004 -@@ -860,6 +860,7 @@ - - collate_end_weight (ldfile, result); - illegal_weight: -+ ; /* gcc-3.4 requires a statement here */ - } - continue; - ---- glibc-2.1.3/locale/programs/locale.c.old Sun Apr 11 20:08:48 2004 -+++ glibc-2.1.3/locale/programs/locale.c Sun Apr 11 20:09:04 2004 -@@ -663,6 +663,7 @@ - } - break; - default: -+ ; /* gcc-3.4 requires a statement here */ - } - putchar ('\n'); - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-mntent.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-mntent.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -Fixes compilation with gcc-3.4.0: - -mntent_r.c: In function `__getmntent_r': -mntent_r.c:146: error: label at end of compound statement -mntent_r.c: In function `__addmntent': -mntent_r.c:214: warning: implicit declaration of function `alloca' - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/misc/mntent_r.c.diff?r1=1.9&r2=1.11&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/misc/mntent_r.c,v -retrieving revision 1.9 -retrieving revision 1.11 -diff -u -r1.9 -r1.11 ---- libc/misc/mntent_r.c 1999/07/26 01:45:32 1.9 -+++ libc/misc/mntent_r.c 2000/11/28 07:27:14 1.11 -@@ -1,5 +1,5 @@ - /* Utilities for reading/writing fstab, mtab, etc. -- Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. -+ Copyright (C) 1995,1996,1997,1998,1999,2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -17,6 +17,7 @@ - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -+#include - #include - #include - #include -@@ -143,6 +144,7 @@ - case 1: - mp->mnt_passno = 0; - case 2: -+ break; - } - funlockfile (stream); - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-sunrpc.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc-3.4-sunrpc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -Fixes gcc-3.4.0 compilation errors - -rpc_hout.c: In function `print_funcdef': -rpc_hout.c:140: error: label at end of compound statement -make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/build-glibc/sunrpc/rpc_hout.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/glibc-2.1.3/sunrpc' - -rpc_cout.c: In function `emit_inline': -rpc_cout.c:743: error: label at end of compound statement -... - ---- glibc-2.1.3/sunrpc/rpc_hout.c.old Sun Apr 11 22:06:26 2004 -+++ glibc-2.1.3/sunrpc/rpc_hout.c Sun Apr 11 22:06:42 2004 -@@ -136,7 +136,7 @@ - pprogramdef (def); - break; - default: -- /* ?... shouldn't happen I guess */ -+ ; /* ?... shouldn't happen I guess */ - } - } - ---- glibc-2.1.3/sunrpc/rpc_cout.c.old Sun Apr 11 22:10:39 2004 -+++ glibc-2.1.3/sunrpc/rpc_cout.c Sun Apr 11 22:10:53 2004 -@@ -739,7 +739,7 @@ - f_print (fout, "}\n"); - break; - default: -- /* ?... do nothing I guess */ -+ ; /* ?... do nothing I guess */ - } - } - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-configure.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-configure.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- glibc-2.1.3/configure.old 2004-03-04 11:05:49.000000000 -0800 -+++ glibc-2.1.3/configure 2004-03-04 11:07:58.000000000 -0800 -@@ -1273,7 +1273,7 @@ - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustp-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- egcs-2.9[1-9].*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|*gcc-2.9[1-9].*|pgcc-2.90.2[789]|pgcc-2.90.[3-9][0-9]|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9].*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]) -+ egcs-2.9[1-9].*|egcs-2.90.2[789]|egcs-2.90.[3-9][0-9]|*gcc-2.9[1-9].*|pgcc-2.90.2[789]|pgcc-2.90.[3-9][0-9]|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[2-9]*|cygnus-2.9[1-9].*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-dl-machine-i386.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-dl-machine-i386.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,171 +0,0 @@ - * sysdeps/i386/dl-machine.h (RTLD_START): Don't use multi-line - strings. - (ELF_MACHINE_RUNTIME_TRAMPOLINE): Likewise. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/dl-machine.h.diff?r1=1.82&r2=1.83&cvsroot=glibc&hideattic=0 -backported a bit - ---- glibc-2.1.3/sysdeps/i386/dl-machine.h.old 1999-02-20 10:19:47.000000000 -0800 -+++ glibc-2.1.3/sysdeps/i386/dl-machine.h 2004-03-05 15:56:25.000000000 -0800 -@@ -124,68 +124,68 @@ - and then redirect to the address it returns. */ - #ifndef PROF - # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ -- .text -- .globl _dl_runtime_resolve -- .type _dl_runtime_resolve, @function -- .align 16 --_dl_runtime_resolve: -- pushl %eax # Preserve registers otherwise clobbered. -- pushl %ecx -- pushl %edx -- movl 16(%esp), %edx # Copy args pushed by PLT in register. Note -- movl 12(%esp), %eax # that `fixup' takes its parameters in regs. -- call fixup # Call resolver. -- popl %edx # Get register content back. -- popl %ecx -- xchgl %eax, (%esp) # Get %eax contents end store function address. -- ret $8 # Jump to function address. -- .size _dl_runtime_resolve, .-_dl_runtime_resolve -- -- .globl _dl_runtime_profile -- .type _dl_runtime_profile, @function -- .align 16 --_dl_runtime_profile: -- pushl %eax # Preserve registers otherwise clobbered. -- pushl %ecx -- pushl %edx -- movl 20(%esp), %ecx # Load return address -- movl 16(%esp), %edx # Copy args pushed by PLT in register. Note -- movl 12(%esp), %eax # that `fixup' takes its parameters in regs. -- call profile_fixup # Call resolver. -- popl %edx # Get register content back. -- popl %ecx -- xchgl %eax, (%esp) # Get %eax contents end store function address. -- ret $8 # Jump to function address. -- .size _dl_runtime_profile, .-_dl_runtime_profile -- .previous -+ .text\n\ -+ .globl _dl_runtime_resolve\n\ -+ .type _dl_runtime_resolve, @function\n\ -+ .align 16\n\ -+_dl_runtime_resolve:\n\ -+ pushl %eax # Preserve registers otherwise clobbered.\n\ -+ pushl %ecx\n\ -+ pushl %edx\n\ -+ movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\ -+ movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\ -+ call fixup # Call resolver.\n\ -+ popl %edx # Get register content back.\n\ -+ popl %ecx\n\ -+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\ -+ ret $8 # Jump to function address.\n\ -+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ -+\n\ -+ .globl _dl_runtime_profile\n\ -+ .type _dl_runtime_profile, @function\n\ -+ .align 16\n\ -+_dl_runtime_profile:\n\ -+ pushl %eax # Preserve registers otherwise clobbered.\n\ -+ pushl %ecx\n\ -+ pushl %edx\n\ -+ movl 20(%esp), %ecx # Load return address\n\ -+ movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\ -+ movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\ -+ call profile_fixup # Call resolver.\n\ -+ popl %edx # Get register content back.\n\ -+ popl %ecx\n\ -+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\ -+ ret $8 # Jump to function address.\n\ -+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\ -+ .previous\n\ - "); - #else --# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ -- .text -- .globl _dl_runtime_resolve -- .globl _dl_runtime_profile -- .type _dl_runtime_resolve, @function -- .type _dl_runtime_profile, @function -- .align 16 --_dl_runtime_resolve: --_dl_runtime_profile: -- pushl %eax # Preserve registers otherwise clobbered. -- pushl %ecx -- pushl %edx -- movl 16(%esp), %edx # Push the arguments for `fixup' -- movl 12(%esp), %eax -- pushl %edx -- pushl %eax -- call fixup # Call resolver. -- popl %edx # Pop the parameters -- popl %ecx -- popl %edx # Get register content back. -- popl %ecx -- xchgl %eax, (%esp) # Get %eax contents end store function address. -- ret $8 # Jump to function address. -- .size _dl_runtime_resolve, .-_dl_runtime_resolve -- .size _dl_runtime_profile, .-_dl_runtime_profile -- .previous -+# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\n\ -+ .text\n\ -+ .globl _dl_runtime_resolve\n\ -+ .globl _dl_runtime_profile\n\ -+ .type _dl_runtime_resolve, @function\n\ -+ .type _dl_runtime_profile, @function\n\ -+ .align 16\n\ -+_dl_runtime_resolve:\n\ -+_dl_runtime_profile:\n\ -+ pushl %eax # Preserve registers otherwise clobbered.\n\ -+ pushl %ecx\n\ -+ pushl %edx\n\ -+ movl 16(%esp), %edx # Push the arguments for `fixup'\n\ -+ movl 12(%esp), %eax\n\ -+ pushl %edx\n\ -+ pushl %eax\n\ -+ call fixup # Call resolver.\n\ -+ popl %edx # Pop the parameters\n\ -+ popl %ecx\n\ -+ popl %edx # Get register content back.\n\ -+ popl %ecx\n\ -+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\ -+ ret $8 # Jump to function address.\n\ -+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ -+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\ -+ .previous\n\ - "); - #endif - -@@ -197,10 +197,10 @@ - The C function `_dl_start' is the real entry point; - its return value is the user program's entry point. */ - --#define RTLD_START asm ("\ --.text\n\ --.globl _start\n\ --.globl _dl_start_user\n\ -+#define RTLD_START asm ("\n\ -+ .text\n\ -+ .globl _start\n\ -+ .globl _dl_start_user\n\ - _start:\n\ - pushl %esp\n\ - call _dl_start\n\ -@@ -208,7 +208,7 @@ - _dl_start_user:\n\ - # Save the user entry point address in %edi.\n\ - movl %eax, %edi\n\ -- # Point %ebx at the GOT. -+ # Point %ebx at the GOT.\n\ - call 0f\n\ - 0: popl %ebx\n\ - addl $_GLOBAL_OFFSET_TABLE_+[.-0b], %ebx\n\ -@@ -255,7 +255,7 @@ - movl _dl_fini@GOT(%ebx), %edx\n\ - # Jump to the user's entry point.\n\ - jmp *%edi\n\ --.previous\n\ -+ .previous\n\ - "); - - /* Nonzero iff TYPE should not be allowed to resolve to one of diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-errlist.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-errlist.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -Backport from cvs - -Fixes: - -../sysdeps/unix/sysv/linux/errlist.c:41: weak declaration of `_old_sys_nerr' must precede definition -make[2]: *** [/home/dank/downloads/crosstool-0.24/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/build-glibc/stdio-common/errlist.os] Error 1 - -as well as breakage on arches where ; is a comment char in asm - ---- glibc-2.1.3/sysdeps/unix/sysv/linux/errlist.c.old 2004-03-05 15:32:21.000000000 -0800 -+++ glibc-2.1.3/sysdeps/unix/sysv/linux/errlist.c 2004-03-05 15:39:39.000000000 -0800 -@@ -24,13 +24,13 @@ - # define SYS_ERRLIST __new_sys_errlist - # define SYS_NERR __new_sys_nerr - --asm (".data; .globl __old_sys_errlist; __old_sys_errlist:"); -+asm (".data\n\t.globl __old_sys_errlist\n\t __old_sys_errlist:"); - #endif - - #include - - #if defined HAVE_ELF && defined PIC && defined DO_VERSIONING --asm (".type __old_sys_errlist,@object;.size __old_sys_errlist," -+asm (".type __old_sys_errlist,@object\n\t.size __old_sys_errlist," - OLD_ERRLIST_SIZE_STR "*" PTR_SIZE_STR); - - extern const char *const *__old_sys_errlist; -@@ -38,17 +38,16 @@ - const int __old_sys_nerr = OLD_ERRLIST_SIZE; - - strong_alias (__old_sys_nerr, _old_sys_nerr); --weak_alias (__old_sys_nerr, _old_sys_nerr) - symbol_version (__old_sys_nerr, _sys_nerr, GLIBC_2.0); - symbol_version (_old_sys_nerr, sys_nerr, GLIBC_2.0); --weak_alias (__old_sys_errlist, _old_sys_errlist); -+strong_alias (__old_sys_errlist, _old_sys_errlist); - symbol_version (__old_sys_errlist, _sys_errlist, GLIBC_2.0); - symbol_version (_old_sys_errlist, sys_errlist, GLIBC_2.0); - --weak_alias (__new_sys_nerr, _new_sys_nerr) -+strong_alias (__new_sys_nerr, _new_sys_nerr) - default_symbol_version (__new_sys_nerr, _sys_nerr, GLIBC_2.1); - default_symbol_version (_new_sys_nerr, sys_nerr, GLIBC_2.1); --weak_alias (__new_sys_errlist, _new_sys_errlist) -+strong_alias (__new_sys_errlist, _new_sys_errlist) - default_symbol_version (__new_sys_errlist, _sys_errlist, GLIBC_2.1); - default_symbol_version (_new_sys_errlist, sys_errlist, GLIBC_2.1); - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-longlong.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-longlong.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,774 +0,0 @@ ---- glibc-2.1.3/stdlib/longlong.h.old 2004-03-05 14:49:14.000000000 -0800 -+++ glibc-2.1.3/stdlib/longlong.h 2004-03-05 15:19:26.000000000 -0800 -@@ -106,8 +106,8 @@ - - #if (defined (__a29k__) || defined (_AM29K)) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add %1,%4,%5 -- addc %0,%2,%3" \ -+ __asm__ ("add %1,%4,%5\n" \ -+ "addc %0,%2,%3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%r" ((USItype)(ah)), \ -@@ -115,8 +115,8 @@ - "%r" ((USItype)(al)), \ - "rI" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub %1,%4,%5 -- subc %0,%2,%3" \ -+ __asm__ ("sub %1,%4,%5\n" \ -+ "subc %0,%2,%3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "r" ((USItype)(ah)), \ -@@ -173,8 +173,8 @@ - - #if defined (__arm__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("adds %1, %4, %5 -- adc %0, %2, %3" \ -+ __asm__ ("adds %1, %4, %5\n" \ -+ "adc %0, %2, %3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%r" ((USItype)(ah)), \ -@@ -182,8 +182,8 @@ - "%r" ((USItype)(al)), \ - "rI" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subs %1, %4, %5 -- sbc %0, %2, %3" \ -+ __asm__ ("subs %1, %4, %5\n" \ -+ "sbc %0, %2, %3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "r" ((USItype)(ah)), \ -@@ -192,19 +192,19 @@ - "rI" ((USItype)(bl))) - #if 0 - #define umul_ppmm(xh, xl, a, b) \ -- __asm__ ("%@ Inlined umul_ppmm -- mov %|r0, %2, lsr #16 -- mov %|r2, %3, lsr #16 -- bic %|r1, %2, %|r0, lsl #16 -- bic %|r2, %3, %|r2, lsl #16 -- mul %1, %|r1, %|r2 -- mul %|r2, %|r0, %|r2 -- mul %|r1, %0, %|r1 -- mul %0, %|r0, %0 -- adds %|r1, %|r2, %|r1 -- addcs %0, %0, #65536 -- adds %1, %1, %|r1, lsl #16 -- adc %0, %0, %|r1, lsr #16" \ -+ __asm__ ("%@ Inlined umul_ppmm\n" \ -+ "mov %|r0, %2, lsr #16\n" \ -+ "mov %|r2, %3, lsr #16\n" \ -+ "bic %|r1, %2, %|r0, lsl #16\n" \ -+ "bic %|r2, %3, %|r2, lsl #16\n" \ -+ "mul %1, %|r1, %|r2\n" \ -+ "mul %|r2, %|r0, %|r2\n" \ -+ "mul %|r1, %0, %|r1\n" \ -+ "mul %0, %|r0, %0\n" \ -+ "adds %|r1, %|r2, %|r1\n" \ -+ "addcs %0, %0, #65536\n" \ -+ "adds %1, %1, %|r1, lsl #16\n" \ -+ "adc %0, %0, %|r1, lsr #16" \ - : "=&r" ((USItype)(xh)), \ - "=r" ((USItype)(xl)) \ - : "r" ((USItype)(a)), \ -@@ -245,8 +245,8 @@ - - #if defined (__gmicro__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add.w %5,%1 -- addx %3,%0" \ -+ __asm__ ("add.w %5,%1\n" \ -+ "addx %3,%0" \ - : "=g" ((USItype)(sh)), \ - "=&g" ((USItype)(sl)) \ - : "%0" ((USItype)(ah)), \ -@@ -254,8 +254,8 @@ - "%1" ((USItype)(al)), \ - "g" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub.w %5,%1 -- subx %3,%0" \ -+ __asm__ ("sub.w %5,%1\n" \ -+ "subx %3,%0" \ - : "=g" ((USItype)(sh)), \ - "=&g" ((USItype)(sl)) \ - : "0" ((USItype)(ah)), \ -@@ -284,8 +284,8 @@ - - #if defined (__hppa) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add %4,%5,%1 -- addc %2,%3,%0" \ -+ __asm__ ("add %4,%5,%1\n" \ -+ "addc %2,%3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%rM" ((USItype)(ah)), \ -@@ -293,8 +293,8 @@ - "%rM" ((USItype)(al)), \ - "rM" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub %4,%5,%1 -- subb %2,%3,%0" \ -+ __asm__ ("sub %4,%5,%1\n" \ -+ "subb %2,%3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "rM" ((USItype)(ah)), \ -@@ -332,22 +332,22 @@ - do { \ - USItype __tmp; \ - __asm__ ( \ -- "ldi 1,%0 -- extru,= %1,15,16,%%r0 ; Bits 31..16 zero? -- extru,tr %1,15,16,%1 ; No. Shift down, skip add. -- ldo 16(%0),%0 ; Yes. Perform add. -- extru,= %1,23,8,%%r0 ; Bits 15..8 zero? -- extru,tr %1,23,8,%1 ; No. Shift down, skip add. -- ldo 8(%0),%0 ; Yes. Perform add. -- extru,= %1,27,4,%%r0 ; Bits 7..4 zero? -- extru,tr %1,27,4,%1 ; No. Shift down, skip add. -- ldo 4(%0),%0 ; Yes. Perform add. -- extru,= %1,29,2,%%r0 ; Bits 3..2 zero? -- extru,tr %1,29,2,%1 ; No. Shift down, skip add. -- ldo 2(%0),%0 ; Yes. Perform add. -- extru %1,30,1,%1 ; Extract bit 1. -- sub %0,%1,%0 ; Subtract it. -- " : "=r" (count), "=r" (__tmp) : "1" (x)); \ -+ "ldi 1,%0\n" \ -+ "extru,= %1,15,16,%%r0 ; Bits 31..16 zero?\n" \ -+ "extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 16(%0),%0 ; Yes. Perform add.\n" \ -+ "extru,= %1,23,8,%%r0 ; Bits 15..8 zero?\n" \ -+ "extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 8(%0),%0 ; Yes. Perform add.\n" \ -+ "extru,= %1,27,4,%%r0 ; Bits 7..4 zero?\n" \ -+ "extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 4(%0),%0 ; Yes. Perform add.\n" \ -+ "extru,= %1,29,2,%%r0 ; Bits 3..2 zero?\n" \ -+ "extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 2(%0),%0 ; Yes. Perform add.\n" \ -+ "extru %1,30,1,%1 ; Extract bit 1.\n" \ -+ "sub %0,%1,%0 ; Subtract it.\n" \ -+ : "=r" (count), "=r" (__tmp) : "1" (x)); \ - } while (0) - #endif /* hppa */ - -@@ -394,8 +394,8 @@ - - #if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addl %5,%1 -- adcl %3,%0" \ -+ __asm__ ("addl %5,%1\n" \ -+ "adcl %3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%0" ((USItype)(ah)), \ -@@ -403,8 +403,8 @@ - "%1" ((USItype)(al)), \ - "g" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subl %5,%1 -- sbbl %3,%0" \ -+ __asm__ ("subl %5,%1\n" \ -+ "sbbl %3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "0" ((USItype)(ah)), \ -@@ -516,8 +516,8 @@ - - #if (defined (__mc68000__) || defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add%.l %5,%1 -- addx%.l %3,%0" \ -+ __asm__ ("add%.l %5,%1\n" \ -+ "addx%.l %3,%0" \ - : "=d" ((USItype)(sh)), \ - "=&d" ((USItype)(sl)) \ - : "%0" ((USItype)(ah)), \ -@@ -525,8 +525,8 @@ - "%1" ((USItype)(al)), \ - "g" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub%.l %5,%1 -- subx%.l %3,%0" \ -+ __asm__ ("sub%.l %5,%1\n" \ -+ "subx%.l %3,%0" \ - : "=d" ((USItype)(sh)), \ - "=&d" ((USItype)(sl)) \ - : "0" ((USItype)(ah)), \ -@@ -564,28 +564,28 @@ - #else /* not mc68020 */ - #define umul_ppmm(xh, xl, a, b) \ - do { USItype __umul_tmp1, __umul_tmp2; \ -- __asm__ ("| Inlined umul_ppmm -- move%.l %5,%3 -- move%.l %2,%0 -- move%.w %3,%1 -- swap %3 -- swap %0 -- mulu %2,%1 -- mulu %3,%0 -- mulu %2,%3 -- swap %2 -- mulu %5,%2 -- add%.l %3,%2 -- jcc 1f -- add%.l %#0x10000,%0 --1: move%.l %2,%3 -- clr%.w %2 -- swap %2 -- swap %3 -- clr%.w %3 -- add%.l %3,%1 -- addx%.l %2,%0 -- | End inlined umul_ppmm" \ -+ __asm__ ("| Inlined umul_ppmm\n" \ -+ "move%.l %5,%3\n" \ -+ "move%.l %2,%0\n" \ -+ "move%.w %3,%1\n" \ -+ "swap %3\n" \ -+ "swap %0\n" \ -+ "mulu %2,%1\n" \ -+ "mulu %3,%0\n" \ -+ "mulu %2,%3\n" \ -+ "swap %2\n" \ -+ "mulu %5,%2\n" \ -+ "add%.l %3,%2\n" \ -+ "jcc 1f\n" \ -+ "add%.l %#0x10000,%0\n" \ -+"1: move%.l %2,%3\n" \ -+ "clr%.w %2\n" \ -+ "swap %2\n" \ -+ "swap %3\n" \ -+ "clr%.w %3\n" \ -+ "add%.l %3,%1\n" \ -+ "addx%.l %2,%0\n" \ -+ "| End inlined umul_ppmm" \ - : "=&d" ((USItype)(xh)), "=&d" ((USItype)(xl)), \ - "=d" (__umul_tmp1), "=&d" (__umul_tmp2) \ - : "%2" ((USItype)(a)), "d" ((USItype)(b))); \ -@@ -597,8 +597,8 @@ - - #if defined (__m88000__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addu.co %1,%r4,%r5 -- addu.ci %0,%r2,%r3" \ -+ __asm__ ("addu.co %1,%r4,%r5\n" \ -+ "addu.ci %0,%r2,%r3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%rJ" ((USItype)(ah)), \ -@@ -606,8 +606,8 @@ - "%rJ" ((USItype)(al)), \ - "rJ" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subu.co %1,%r4,%r5 -- subu.ci %0,%r2,%r3" \ -+ __asm__ ("subu.co %1,%r4,%r5\n" \ -+ "subu.ci %0,%r2,%r3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "rJ" ((USItype)(ah)), \ -@@ -665,9 +665,9 @@ - "d" ((USItype)(v))) - #else - #define umul_ppmm(w1, w0, u, v) \ -- __asm__ ("multu %2,%3 -- mflo %0 -- mfhi %1" \ -+ __asm__ ("multu %2,%3\n" \ -+ "mflo %0\n" \ -+ "mfhi %1" \ - : "=d" ((USItype)(w0)), \ - "=d" ((USItype)(w1)) \ - : "d" ((USItype)(u)), \ -@@ -687,9 +687,9 @@ - "d" ((UDItype)(v))) - #else - #define umul_ppmm(w1, w0, u, v) \ -- __asm__ ("dmultu %2,%3 -- mflo %0 -- mfhi %1" \ -+ __asm__ ("dmultu %2,%3\n" \ -+ "mflo %0\n" \ -+ "mfhi %1" \ - : "=d" ((UDItype)(w0)), \ - "=d" ((UDItype)(w1)) \ - : "d" ((UDItype)(u)), \ -@@ -857,8 +857,8 @@ - - #if defined (__pyr__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addw %5,%1 -- addwc %3,%0" \ -+ __asm__ ("addw %5,%1\n" \ -+ "addwc %3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%0" ((USItype)(ah)), \ -@@ -866,8 +866,8 @@ - "%1" ((USItype)(al)), \ - "g" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subw %5,%1 -- subwb %3,%0" \ -+ __asm__ ("subw %5,%1\n" \ -+ "subwb %3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "0" ((USItype)(ah)), \ -@@ -879,8 +879,8 @@ - ({union {UDItype __ll; \ - struct {USItype __h, __l;} __i; \ - } __xx; \ -- __asm__ ("movw %1,%R0 -- uemul %2,%0" \ -+ __asm__ ("movw %1,%R0\n" \ -+ "uemul %2,%0" \ - : "=&r" (__xx.__ll) \ - : "g" ((USItype) (u)), \ - "g" ((USItype)(v))); \ -@@ -889,8 +889,8 @@ - - #if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("a %1,%5 -- ae %0,%3" \ -+ __asm__ ("a %1,%5\n" \ -+ "ae %0,%3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%0" ((USItype)(ah)), \ -@@ -898,8 +898,8 @@ - "%1" ((USItype)(al)), \ - "r" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("s %1,%5 -- se %0,%3" \ -+ __asm__ ("s %1,%5\n" \ -+ "se %0,%3" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "0" ((USItype)(ah)), \ -@@ -910,26 +910,26 @@ - do { \ - USItype __m0 = (m0), __m1 = (m1); \ - __asm__ ( \ -- "s r2,r2 -- mts r10,%2 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- cas %0,r2,r0 -- mfs r10,%1" \ -+ "s r2,r2\n" \ -+ "mts r10,%2\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "cas %0,r2,r0\n" \ -+ "mfs r10,%1" \ - : "=r" ((USItype)(ph)), \ - "=r" ((USItype)(pl)) \ - : "%r" (__m0), \ -@@ -959,9 +959,9 @@ - #if defined (__sh2__) && W_TYPE_SIZE == 32 - #define umul_ppmm(w1, w0, u, v) \ - __asm__ ( \ -- "dmulu.l %2,%3 -- sts macl,%1 -- sts mach,%0" \ -+ "dmulu.l %2,%3\n" \ -+ "sts macl,%1\n" \ -+ "sts mach,%0" \ - : "=r" ((USItype)(w1)), \ - "=r" ((USItype)(w0)) \ - : "r" ((USItype)(u)), \ -@@ -972,8 +972,8 @@ - - #if defined (__sparc__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addcc %r4,%5,%1 -- addx %r2,%3,%0" \ -+ __asm__ ("addcc %r4,%5,%1\n" \ -+ "addx %r2,%3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "%rJ" ((USItype)(ah)), \ -@@ -982,8 +982,8 @@ - "rI" ((USItype)(bl)) \ - __CLOBBER_CC) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subcc %r4,%5,%1 -- subx %r2,%3,%0" \ -+ __asm__ ("subcc %r4,%5,%1\n" \ -+ "subx %r2,%3,%0" \ - : "=r" ((USItype)(sh)), \ - "=&r" ((USItype)(sl)) \ - : "rJ" ((USItype)(ah)), \ -@@ -1029,45 +1029,45 @@ - "r" ((USItype)(v))) - #define UMUL_TIME 5 - #define udiv_qrnnd(q, r, n1, n0, d) \ -- __asm__ ("! Inlined udiv_qrnnd -- wr %%g0,%2,%%y ! Not a delayed write for sparclite -- tst %%g0 -- divscc %3,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%0 -- rd %%y,%1 -- bl,a 1f -- add %1,%4,%1 --1: ! End of inline udiv_qrnnd" \ -+ __asm__ ("! Inlined udiv_qrnnd\n" \ -+ "wr %%g0,%2,%%y ! Not a delayed write for sparclite\n" \ -+ "tst %%g0\n" \ -+ "divscc %3,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%0\n" \ -+ "rd %%y,%1\n" \ -+ "bl,a 1f\n" \ -+ "add %1,%4,%1\n" \ -+"1: ! End of inline udiv_qrnnd" \ - : "=r" ((USItype)(q)), \ - "=r" ((USItype)(r)) \ - : "r" ((USItype)(n1)), \ -@@ -1087,46 +1087,46 @@ - /* Default to sparc v7 versions of umul_ppmm and udiv_qrnnd. */ - #ifndef umul_ppmm - #define umul_ppmm(w1, w0, u, v) \ -- __asm__ ("! Inlined umul_ppmm -- wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr -- sra %3,31,%%g2 ! Don't move this insn -- and %2,%%g2,%%g2 ! Don't move this insn -- andcc %%g0,0,%%g1 ! Don't move this insn -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,0,%%g1 -- add %%g1,%%g2,%0 -- rd %%y,%1" \ -+ __asm__ ("! Inlined umul_ppmm\n" \ -+ "wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n" \ -+ "sra %3,31,%%g2 ! Don't move this insn\n" \ -+ "and %2,%%g2,%%g2 ! Don't move this insn\n" \ -+ "andcc %%g0,0,%%g1 ! Don't move this insn\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,0,%%g1\n" \ -+ "add %%g1,%%g2,%0\n" \ -+ "rd %%y,%1" \ - : "=r" ((USItype)(w1)), \ - "=r" ((USItype)(w0)) \ - : "%rI" ((USItype)(u)), \ -@@ -1138,30 +1138,30 @@ - /* It's quite necessary to add this much assembler for the sparc. - The default udiv_qrnnd (in C) is more than 10 times slower! */ - #define udiv_qrnnd(q, r, n1, n0, d) \ -- __asm__ ("! Inlined udiv_qrnnd -- mov 32,%%g1 -- subcc %1,%2,%%g0 --1: bcs 5f -- addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb -- sub %1,%2,%1 ! this kills msb of n -- addx %1,%1,%1 ! so this can't give carry -- subcc %%g1,1,%%g1 --2: bne 1b -- subcc %1,%2,%%g0 -- bcs 3f -- addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb -- b 3f -- sub %1,%2,%1 ! this kills msb of n --4: sub %1,%2,%1 --5: addxcc %1,%1,%1 -- bcc 2b -- subcc %%g1,1,%%g1 --! Got carry from n. Subtract next step to cancel this carry. -- bne 4b -- addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb -- sub %1,%2,%1 --3: xnor %0,0,%0 -- ! End of inline udiv_qrnnd" \ -+ __asm__ ("! Inlined udiv_qrnnd\n" \ -+ "mov 32,%%g1\n" \ -+ "subcc %1,%2,%%g0\n" \ -+"1: bcs 5f\n" \ -+ "addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \ -+ "sub %1,%2,%1 ! this kills msb of n\n" \ -+ "addx %1,%1,%1 ! so this can't give carry\n" \ -+ "subcc %%g1,1,%%g1\n" \ -+"2: bne 1b\n" \ -+ "subcc %1,%2,%%g0\n" \ -+ "bcs 3f\n" \ -+ "addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \ -+ "b 3f\n" \ -+ "sub %1,%2,%1 ! this kills msb of n\n" \ -+"4: sub %1,%2,%1\n" \ -+"5: addxcc %1,%1,%1\n" \ -+ "bcc 2b\n" \ -+ "subcc %%g1,1,%%g1\n" \ -+"! Got carry from n. Subtract next step to cancel this carry.\n" \ -+ "bne 4b\n" \ -+ "addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb\n" \ -+ "sub %1,%2,%1\n" \ -+"3: xnor %0,0,%0\n" \ -+ "! End of inline udiv_qrnnd" \ - : "=&r" ((USItype)(q)), \ - "=&r" ((USItype)(r)) \ - : "r" ((USItype)(d)), \ -@@ -1179,11 +1179,11 @@ - #if (defined (__sparc_v9__) || (defined (__sparc__) && defined (__arch64__)) \ - || defined (__sparcv9)) && W_TYPE_SIZE == 64 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addcc %r4,%5,%1 -- add %r2,%3,%0 -- bcs,a,pn %%xcc, 1f -- add %0, 1, %0 -- 1:" \ -+ __asm__ ("addcc %r4,%5,%1\n" \ -+ "add %r2,%3,%0\n" \ -+ "bcs,a,pn %%xcc, 1f\n" \ -+ "add %0, 1, %0\n" \ -+ "1:" \ - : "=r" ((UDItype)(sh)), \ - "=&r" ((UDItype)(sl)) \ - : "r" ((UDItype)(ah)), \ -@@ -1193,11 +1193,11 @@ - : "cc") - - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subcc %r4,%5,%1 -- sub %r2,%3,%0 -- bcs,a,pn %%xcc, 1f -- sub %0, 1, %0 -- 1:" \ -+ __asm__ ("subcc %r4,%5,%1\n" \ -+ "sub %r2,%3,%0\n" \ -+ "bcs,a,pn %%xcc, 1f\n" \ -+ "sub %0, 1, %0\n" \ -+ "1:" \ - : "=r" ((UDItype)(sh)), \ - "=&r" ((UDItype)(sl)) \ - : "r" ((UDItype)(ah)), \ -@@ -1210,27 +1210,27 @@ - do { \ - UDItype tmp1, tmp2, tmp3, tmp4; \ - __asm__ __volatile__ ( \ -- "srl %7,0,%3 -- mulx %3,%6,%1 -- srlx %6,32,%2 -- mulx %2,%3,%4 -- sllx %4,32,%5 -- srl %6,0,%3 -- sub %1,%5,%5 -- srlx %5,32,%5 -- addcc %4,%5,%4 -- srlx %7,32,%5 -- mulx %3,%5,%3 -- mulx %2,%5,%5 -- sethi %%hi(0x80000000),%2 -- addcc %4,%3,%4 -- srlx %4,32,%4 -- add %2,%2,%2 -- movcc %%xcc,%%g0,%2 -- addcc %5,%4,%5 -- sllx %3,32,%3 -- add %1,%3,%1 -- add %5,%2,%0" \ -+ "srl %7,0,%3\n" \ -+ "mulx %3,%6,%1\n" \ -+ "srlx %6,32,%2\n" \ -+ "mulx %2,%3,%4\n" \ -+ "sllx %4,32,%5\n" \ -+ "srl %6,0,%3\n" \ -+ "sub %1,%5,%5\n" \ -+ "srlx %5,32,%5\n" \ -+ "addcc %4,%5,%4\n" \ -+ "srlx %7,32,%5\n" \ -+ "mulx %3,%5,%3\n" \ -+ "mulx %2,%5,%5\n" \ -+ "sethi %%hi(0x80000000),%2\n" \ -+ "addcc %4,%3,%4\n" \ -+ "srlx %4,32,%4\n" \ -+ "add %2,%2,%2\n" \ -+ "movcc %%xcc,%%g0,%2\n" \ -+ "addcc %5,%4,%5\n" \ -+ "sllx %3,32,%3\n" \ -+ "add %1,%3,%1\n" \ -+ "add %5,%2,%0" \ - : "=r" ((UDItype)(wh)), \ - "=&r" ((UDItype)(wl)), \ - "=&r" (tmp1), "=&r" (tmp2), "=&r" (tmp3), "=&r" (tmp4) \ -@@ -1244,8 +1244,8 @@ - - #if defined (__vax__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addl2 %5,%1 -- adwc %3,%0" \ -+ __asm__ ("addl2 %5,%1\n" \ -+ "adwc %3,%0" \ - : "=g" ((USItype)(sh)), \ - "=&g" ((USItype)(sl)) \ - : "%0" ((USItype)(ah)), \ -@@ -1253,8 +1253,8 @@ - "%1" ((USItype)(al)), \ - "g" ((USItype)(bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subl2 %5,%1 -- sbwc %3,%0" \ -+ __asm__ ("subl2 %5,%1\n" \ -+ "sbwc %3,%0" \ - : "=g" ((USItype)(sh)), \ - "=&g" ((USItype)(sl)) \ - : "0" ((USItype)(ah)), \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-sscanf.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-sscanf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -http://sources.redhat.com/ml/bug-glibc/2003-08/msg00087.html - -From: Gernot Hillier -Organization: Siemens AG -To: Jeffrey Bedard , bug-glibc at gnu dot org -Date: Mon, 18 Aug 2003 08:50:03 +0200 -References: <3F3D0899.6020004@e-list.net> -Message-Id: <200308180850.03431.gernot.hillier@siemens.com> -Subject: Re: Build Fails with gcc 3.3.1 -X-BeenThere: bug-glibc@gnu.org - -Hi! - -Am Freitag, 15. August 2003 18:21 schrieb Jeffrey Bedard: -> gcc sscanf.c -c -std=gnu99 -O2 -Wall -Winline -Wstrict-prototypes -[...] -> sscanf.c:31: warning: conflicting types for built-in function `sscanf' -> sscanf.c: In function `sscanf': -> sscanf.c:37: error: `va_start' used in function with fixed args -> .../stdio-common/_itoa.h: At top level: -> .../stdio-common/_itoa.h:40: warning: inlining failed in call to -> `_itoa_word' .../stdio-common/_itoa.h:76: warning: called from here -> make[2]: *** -> [/home/jefbed/src/packages/glibc-build/stdio-common/sscanf.o] Error 1 - -You can find the fitting patch in the glibc CVS. You have to replace some -function headers. - -I created a patch for glibc-2.2.5 for the same reason. I don't know if it -applies cleanly, but if not it should at least show you what to do... - --- -Bye, - -Gernot Hillier -Siemens AG - - - - -Content-Disposition: attachment; filename="glibc-2.2.5-gcc-3.3.diff" - -diff -ur glibc-2.2.5.orig/stdio-common/sprintf.c glibc-2.2.5/stdio-common/sprintf.c ---- glibc-2.2.5.orig/stdio-common/sprintf.c 2001-07-06 06:55:41.000000000 +0200 -+++ glibc-2.2.5/stdio-common/sprintf.c 2003-08-11 13:25:48.000000000 +0200 -@@ -27,9 +27,7 @@ - /* Write formatted output into S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --sprintf (s, format) -- char *s; -- const char *format; -+sprintf (char *s, const char *format,...) - { - va_list arg; - int done; -Only in glibc-2.2.5/stdio-common: sprintf.c.orig -Only in glibc-2.2.5/stdio-common: sprintf.c.rej -diff -ur glibc-2.2.5.orig/stdio-common/sscanf.c glibc-2.2.5/stdio-common/sscanf.c ---- glibc-2.2.5.orig/stdio-common/sscanf.c 2001-07-06 06:55:41.000000000 +0200 -+++ glibc-2.2.5/stdio-common/sscanf.c 2003-08-11 13:27:58.000000000 +0200 -@@ -27,9 +27,7 @@ - /* Read formatted input from S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --sscanf (s, format) -- const char *s; -- const char *format; -+sscanf (const char *s, const char *format,...) - { - va_list arg; - int done; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-syscall.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-syscall.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/i386/sysdep.h.diff?r1=1.40&r2=1.41&cvsroot=glibc -See also http://gcc.gnu.org/PR12928, comment 6 (which says this is a glibc bug, not a gcc bug) - -Fixes -/tmp/ccdGVIRa.s: Assembler messages: -/tmp/ccdGVIRa.s:82: Error: non-constant expression in ".if" statement -/tmp/ccdGVIRa.s:83: Error: non-constant expression in ".if" statement -/tmp/ccdGVIRa.s:86: Error: non-constant expression in ".if" statement -make[2]: *** [/crosstool-0.28-pre4/build/i686-unknown-linux-gnu/gcc-3.3.3-glibc-2.1.3/build-glibc/signal/sigsuspend.o] Error 1 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/i386/sysdep.h,v -retrieving revision 1.40 -retrieving revision 1.41 -diff -u -r1.40 -r1.41 ---- libc/sysdeps/unix/sysv/linux/i386/sysdep.h 2002/10/16 08:57:25 1.40 -+++ libc/sysdeps/unix/sysv/linux/i386/sysdep.h 2002/11/28 05:21:48 1.41 -@@ -347,9 +347,9 @@ - #define ASMFMT_1(arg1) \ - , "acdSD" (arg1) - #define ASMFMT_2(arg1, arg2) \ -- , "adCD" (arg1), "c" (arg2) -+ , "adSD" (arg1), "c" (arg2) - #define ASMFMT_3(arg1, arg2, arg3) \ -- , "aCD" (arg1), "c" (arg2), "d" (arg3) -+ , "aSD" (arg1), "c" (arg2), "d" (arg3) - #define ASMFMT_4(arg1, arg2, arg3, arg4) \ - , "aD" (arg1), "c" (arg2), "d" (arg3), "S" (arg4) - #define ASMFMT_5(arg1, arg2, arg3, arg4, arg5) \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-versioninfo.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-allow-gcc3-versioninfo.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# gcc-3.x doesn't like run-on strings -# See also http://sources.redhat.com/ml/libc-alpha/2004-01/msg00032.html - ---- glibc-2.1.3/csu/Makefile.old 2004-03-04 12:18:52.000000000 -0800 -+++ glibc-2.1.3/csu/Makefile 2004-03-04 12:19:35.000000000 -0800 -@@ -188,8 +188,8 @@ - esac; \ - files="$(all-Banner-files)"; \ - if test -n "$$files"; then \ -- echo "\"Available extensions:"; \ -- sed -e '/^#/d' -e 's/^[[:space:]]*/ /' $$files; \ -- echo "\""; \ -+ echo -e "\"Available extensions:\\\\n\""; \ -+ sed -e '/^#/d' -e 's/^[[:space:]]*/ /' \ -+ -e 's/^\(.*\)$$/\"\1\\n\"/' $$files; \ - fi) > $@T - mv -f $@T $@ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-cygwin.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.1.3 on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -backported to glibc-2.1.3. -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - - ---- glibc-2.1.3/Makeconfig.old 1999-11-29 11:19:20.000000000 -0800 -+++ glibc-2.1.3/Makeconfig 2004-03-14 16:38:43.218750000 -0800 -@@ -406,7 +406,7 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # Choose the default search path for the dynamic linker based on - # where we will install libraries. - ifneq ($(libdir),$(slibdir)) -@@ -586,7 +586,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -636,14 +636,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -+libtype.oST = lib%_nonshared.a - endif - - ---- glibc-2.1.3/Makerules.old 1999-08-01 15:12:23.000000000 -0700 -+++ glibc-2.1.3/Makerules 2004-03-14 16:39:07.906250000 -0800 -@@ -386,7 +386,7 @@ - static-only-routines = - endif - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) - elide-routines.os += $(static-only-routines) - -@@ -694,14 +694,14 @@ - # of the files are taken by the linker. - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ - echo ' Use the shared library, but some functions are only in';\ - echo ' the static library, so try that secondarily. */';\ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.1.3-override.patch --- a/patches/glibc/2.1.3/glibc-2.1.3-override.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -The error - -make[2]: *** [.../gcc-3.3.3-glibc-2.1.3/i686-unknown-linux-gnu/share/zoneinfo/Africa/Algiers] Segmentation fault -make[2]: Leaving directory `.../gcc-3.3.3-glibc-2.1.3/glibc-2.1.3/timezone' -make[1]: *** [timezone/subdir_install] Error 2 - -is caused by glibc trying to run something it just compiled. -A crude workaround for this was posted at -http://lists.scratchbox.org/pipermail/scratchbox-users/2004-February/000018.html -but the following patch lets you optionally override these programs at -make time by setting environment variables - localedef_FOR_BUILD rpcgen_FOR_BUILD zic_FOR_BUILD -and maybe a few others to point to versions of those programs -that can run on the build machine. -Thanks to http://groups.google.com/groups?selm=9012160052.AA23106%40kaos.ksr.com -for pointing out the idiom for inline $(ifdef ...) in GNU Make. - -Dan Kegel 2004-05-17 - ---- glibc-2.1.3/Makeconfig.old 1999-11-29 11:19:20.000000000 -0800 -+++ glibc-2.1.3/Makeconfig 2004-05-17 15:57:53.000000000 -0700 -@@ -470,20 +470,24 @@ - # The program binary is assumed to be $(word 2,$^). - built-program-file = $(dir $(word 2,$^))$(notdir $(word 2,$^)) - ifneq (yes,$(build-shared)) --built-program-cmd = $(built-program-file) -+built-program-real = $(built-program-file) - else - comma = , - sysdep-library-path = \ - $(subst $(empty) ,:,$(strip $(patsubst -Wl$(comma)-rpath-link=%, %,\ - $(filter -Wl$(comma)-rpath-link=%,\ - $(sysdep-LDFLAGS))))) --define built-program-cmd -+define built-program-real - $(elf-objpfx)$(rtld-installed-name) \ - --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \ - $(built-program-file) - endef - endif - -+# If user set foo_FOR_BUILD, use that instead of actually running the program we just linked. -+built-program-override-name = $(notdir $(word 2,$^))_FOR_BUILD -+built-program-cmd = $(if $(findstring undefined,$(origin $(built-program-override-name))),$(built-program-real),$($(built-program-override-name))) -+ - ifndef LD - LD := ld -X - endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-2.2.2-export_fp_hw.patch --- a/patches/glibc/2.1.3/glibc-2.2.2-export_fp_hw.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Fixes undefined symbol _fp_hw required by the ABI: -readelf -s /opt/crosstool/i686-pc-linux-gnu/i686-unknown-linux-gnu/gcc-3.4.3-glibc-2.2.2/i686-unknown-linux-gnu/lib/crt1.o | grep fp_hw - 29: 00000000 4 NOTYPE GLOBAL DEFAULT UND _fp_hw -Rumored to fix problems with icc, which gets upset at any symbol -which is undefined, even if nobody cares about it. - -Revision 1.16, Thu Feb 22 19:57:34 2001 UTC (4 years, 2 months ago) by drepper -Branch: MAIN -CVS Tags: glibc-2_2_3 -Changes since 1.15: +1 -1 lines -Diff to previous 1.15 (colored) - -(_fp_hw): Actually define label. - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/i386/elf/start.S,v -retrieving revision 1.15 -retrieving revision 1.16 -diff -u -r1.15 -r1.16 ---- libc/sysdeps/i386/elf/start.S 2001/02/03 21:34:54 1.15 -+++ libc/sysdeps/i386/elf/start.S 2001/02/22 19:57:34 1.16 -@@ -85,7 +85,7 @@ - meaningless since we don't support machines < 80386. */ - .section .rodata - .globl _fp_hw -- .long 3 -+_fp_hw: .long 3 - .size _fp_hw, 4 - - /* Define a symbol for the first piece of initialized data. */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-manual-stdin.texi-1.127.patch --- a/patches/glibc/2.1.3/glibc-manual-stdin.texi-1.127.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -Fixes -./stdio.texi:2491: First argument to cross-reference may not be empty. -./stdio.texi:2492: First argument to cross-reference may not be empty. -makeinfo: Removing output file `/home/dank/crosstool-0.25/build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/glibc-2.1.3/manual/libc.info' due to errors; use --force to preserve. -make[2]: *** [libc.info] Error 2 - -Patch from glib-2.2; Line numbers adjusted. - -=================================================================== -RCS file: /cvs/glibc/libc/manual/stdio.texi,v -retrieving revision 1.126 -retrieving revision 1.127 -diff -u -r1.126 -r1.127 ---- libc/manual/stdio.texi 2001/06/06 07:11:00 -+++ libc/manual/stdio.texi 2001/07/31 18:57:00 -@@ -2487,8 +2487,8 @@ - If you are trying to read input that doesn't match a single, fixed - pattern, you may be better off using a tool such as Flex to generate a - lexical scanner, or Bison to generate a parser, rather than using --@code{scanf}. For more information about these tools, see @ref{, , , --flex.info, Flex: The Lexical Scanner Generator}, and @ref{, , , -+@code{scanf}. For more information about these tools, see @ref{Top, , , -+flex.info, Flex: The Lexical Scanner Generator}, and @ref{Top, , , - bison.info, The Bison Reference Manual}. - - @node Input Conversion Syntax diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/glibc-rpcgen-cpp.patch --- a/patches/glibc/2.1.3/glibc-rpcgen-cpp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ ---- glibc-2.1.3/sunrpc/Makefile.orig 2004-05-12 12:26:58.000000000 -0700 -+++ glibc-2.1.3/sunrpc/Makefile 2004-05-12 12:29:05.000000000 -0700 -@@ -123,9 +123,8 @@ - $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) - $(+link) - --# Tell rpcgen where to find the C preprocessor. --rpcgen-cmd = $(built-program-cmd) -Y `$(CC) -print-file-name=cpp | \ -- sed "s|/cpp$$||"` -+# Don't tell rpcgen where to find the C preprocessor -- let it find it itself. -+rpcgen-cmd = $(built-program-cmd) - - # Install the rpc data base file. - $(inst_sysconfdir)/rpc: etc.rpc $(+force) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-00-glibc-2.1.3.patch Binary file patches/glibc/2.1.3/rh62-00-glibc-2.1.3.patch has changed diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-01-glibc-2.1.3-security.patch --- a/patches/glibc/2.1.3/rh62-01-glibc-2.1.3-security.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -2000-05-03 Ulrich Drepper - - * sysdeps/generic/dl-environ.c (unsetenv): Follow change to the - real unsetenv implementation from 1999-07-29 [PR libc/1714]. - ---- glibc-2.1.3/sysdeps/generic/dl-environ.c.jj Thu Jul 23 16:56:52 1998 -+++ glibc-2.1.3/sysdeps/generic/dl-environ.c Tue May 9 13:48:11 2000 -@@ -1,5 +1,5 @@ --/*Environment handling for dynamic loader. -- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc. -+/* Environment handling for dynamic loader. -+ Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -55,7 +55,8 @@ unsetenv (const char *name) - const size_t len = strlen (name); - char **ep; - -- for (ep = _environ; *ep != NULL; ++ep) -+ ep = _environ; -+ while (*ep != NULL) - if (!strncmp (*ep, name, len) && (*ep)[len] == '=') - { - /* Found it. Remove this pointer by moving later ones back. */ -@@ -66,4 +67,6 @@ unsetenv (const char *name) - while (*dp++); - /* Continue the loop in case NAME appears again. */ - } -+ else -+ ++ep; - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-02-glibc-2.1.3-locale.patch --- a/patches/glibc/2.1.3/rh62-02-glibc-2.1.3-locale.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -2000-08-27 Ulrich Drepper - - * intl/dcgettext.c (DCGETTEXT): Remove _nl_find_language in code - to determine invalid locale name. - * locale/findlocale.c (_nl_find_locale): Likewise. - -2000-08-21 Ulrich Drepper - - * catgets/catgets.c (catopen): Filter out env_var values with / if - necessary. - - * locale/findlocale.c (_nl_find_locale): Move test for unusable - locale name after all getenvs. - ---- glibc-2.1.3/catgets/catgets.c 2000/01/29 11:56:33 1.15 -+++ glibc-2.1.3/catgets/catgets.c 2000/08/21 20:55:30 1.16 -@@ -50,7 +50,8 @@ - /* Use the LANG environment variable. */ - env_var = getenv ("LANG"); - -- if (env_var == NULL) -+ if (env_var == NULL || *env_var == '\0' -+ || (__libc_enable_secure && strchr (env_var, '/') != NULL)) - env_var = "C"; - - env_var_len = strlen (env_var) + 1; ---- glibc-2.1.3/locale/findlocale.c 1999/11/08 23:45:13 1.10.2.1 -+++ glibc-2.1.3/locale/findlocale.c 2000/08/21 21:02:42 1.10.2.2 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. -+/* Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - -@@ -54,11 +54,7 @@ - const char *revision; - struct loaded_l10nfile *locale_file; - -- if ((*name)[0] == '\0' -- /* In SUID binaries we must not allow people to access files -- outside the dedicated locale directories. */ -- || (__libc_enable_secure -- && memchr (*name, '/', _nl_find_language (*name) - *name) != NULL)) -+ if ((*name)[0] == '\0') - { - /* The user decides which locale to use by setting environment - variables. */ -@@ -67,9 +63,12 @@ - *name = getenv (_nl_category_names[category]); - if (*name == NULL || (*name)[0] == '\0') - *name = getenv ("LANG"); -- if (*name == NULL || (*name)[0] == '\0') -- *name = (char *) _nl_C_name; - } -+ -+ if (*name == NULL || (*name)[0] == '\0' -+ || (__builtin_expect (__libc_enable_secure, 0) -+ && strchr (*name, '/') != NULL)) -+ *name = (char *) _nl_C_name; - - if (strcmp (*name, _nl_C_name) == 0 || strcmp (*name, _nl_POSIX_name) == 0) - { ---- glibc-2.1.3/intl/dcgettext.c Sun Aug 27 23:15:33 2000 -+++ glibc-2.1.3/intl/dcgettext.c Sun Aug 27 23:16:34 2000 -@@ -371,10 +371,7 @@ - - /* When this is a SUID binary we must not allow accessing files - outside the dedicated directories. */ -- if (ENABLE_SECURE -- && (memchr (single_locale, '/', -- _nl_find_language (single_locale) - single_locale) -- != NULL)) -+ if (ENABLE_SECURE && strchr (single_locale, '/') != NULL) - /* Ingore this entry. */ - continue; - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-03-glibc-2.1.3-crypt.patch --- a/patches/glibc/2.1.3/rh62-03-glibc-2.1.3-crypt.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,207 +0,0 @@ ---- glibc-2.1.3/md5-crypt/md5-crypt.c 2000/03/04 00:47:30 1.1 -+++ glibc-2.1.3/md5-crypt/md5-crypt.c 2000/08/24 06:10:02 1.8 -@@ -1,5 +1,5 @@ - /* One way encryption based on MD5 sum. -- Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. -+ Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1996. - -@@ -18,6 +18,7 @@ - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -+#include - #include - #include - #include -@@ -37,9 +38,9 @@ - - - /* Prototypes for local functions. */ --extern char *__md5_crypt_r __P ((const char *key, const char *salt, -- char *buffer, int buflen)); --extern char *__md5_crypt __P ((const char *key, const char *salt)); -+extern char *__md5_crypt_r (const char *key, const char *salt, -+ char *buffer, int buflen); -+extern char *__md5_crypt (const char *key, const char *salt); - - - /* This entry point is equivalent to the `crypt' function in Unix -@@ -51,13 +52,16 @@ - char *buffer; - int buflen; - { -- unsigned char alt_result[16]; -+ unsigned char alt_result[16] -+ __attribute__ ((__aligned__ (__alignof__ (md5_uint32)))); - struct md5_ctx ctx; - struct md5_ctx alt_ctx; - size_t salt_len; - size_t key_len; - size_t cnt; - char *cp; -+ char *copied_key = NULL; -+ char *copied_salt = NULL; - - /* Find beginning of salt string. The prefix should normally always - be present. Just in case it is not. */ -@@ -68,6 +72,26 @@ - salt_len = MIN (strcspn (salt, "$"), 8); - key_len = strlen (key); - -+ if ((key - (char *) 0) % __alignof__ (md5_uint32) != 0) -+ { -+ char *tmp = (char *) alloca (key_len + __alignof__ (md5_uint32)); -+ key = copied_key = -+ memcpy (tmp + __alignof__ (md5_uint32) -+ - (tmp - (char *) 0) % __alignof__ (md5_uint32), -+ key, key_len); -+ assert ((key - (char *) 0) % __alignof__ (md5_uint32) == 0); -+ } -+ -+ if ((salt - (char *) 0) % __alignof__ (md5_uint32) != 0) -+ { -+ char *tmp = (char *) alloca (salt_len + __alignof__ (md5_uint32)); -+ salt = copied_salt = -+ memcpy (tmp + __alignof__ (md5_uint32) -+ - (tmp - (char *) 0) % __alignof__ (md5_uint32), -+ salt, salt_len); -+ assert ((salt - (char *) 0) % __alignof__ (md5_uint32) == 0); -+ } -+ - /* Prepare for the real work. */ - __md5_init_ctx (&ctx); - -@@ -195,21 +219,30 @@ - - /* Clear the buffer for the intermediate result so that people - attaching to processes or reading core dumps cannot get any -- information. */ -- memset (alt_result, '\0', sizeof (alt_result)); -+ information. We do it in this way to clear correct_words[] -+ inside the MD5 implementation as well. */ -+ __md5_init_ctx (&ctx); -+ __md5_finish_ctx (&ctx, alt_result); -+ memset (&ctx, '\0', sizeof (ctx)); -+ memset (&alt_ctx, '\0', sizeof (alt_ctx)); -+ if (copied_key != NULL) -+ memset (copied_key, '\0', key_len); -+ if (copied_salt != NULL) -+ memset (copied_salt, '\0', salt_len); - - return buffer; - } - - -+static char *buffer; -+ - char * - __md5_crypt (const char *key, const char *salt) - { - /* We don't want to have an arbitrary limit in the size of the - password. We can compute the size of the result in advance and - so we can prepare the buffer we pass to `md5_crypt_r'. */ -- static char *buffer = NULL; -- static int buflen = 0; -+ static int buflen; - int needed = 3 + strlen (salt) + 1 + 26 + 1; - - if (buflen < needed) -@@ -220,4 +253,12 @@ - } - - return __md5_crypt_r (key, salt, buffer, buflen); -+} -+ -+ -+static void -+__attribute__ ((__destructor__)) -+free_mem (void) -+{ -+ free (buffer); - } ---- glibc-2.1.3/md5-crypt/md5.c 2000/03/04 00:47:30 1.1 -+++ glibc-2.1.3/md5-crypt/md5.c 2000/07/04 18:22:44 1.2 -@@ -1,6 +1,6 @@ --/* md5.c - Functions to compute MD5 message digest of files or memory blocks -+/* Functions to compute MD5 message digest of files or memory blocks. - according to the definition of MD5 in RFC 1321 from April 1992. -- Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc. -+ Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -217,6 +217,8 @@ - size_t len; - struct md5_ctx *ctx; - { -+ //const void aligned_buffer = buffer; -+ - /* When we already have some bits in our internal buffer concatenate - both inputs first. */ - if (ctx->buflen != 0) -@@ -224,16 +226,20 @@ - size_t left_over = ctx->buflen; - size_t add = 128 - left_over > len ? len : 128 - left_over; - -+ /* Only put full words in the buffer. */ -+ add -= add % __alignof__ (md5_uint32); -+ - memcpy (&ctx->buffer[left_over], buffer, add); - ctx->buflen += add; - -- if (left_over + add > 64) -+ if (ctx->buflen > 64) - { -- md5_process_block (ctx->buffer, (left_over + add) & ~63, ctx); -+ md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx); -+ -+ ctx->buflen &= 63; - /* The regions in the following copy operation cannot overlap. */ - memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], -- (left_over + add) & 63); -- ctx->buflen = (left_over + add) & 63; -+ ctx->buflen); - } - - buffer = (const char *) buffer + add; -@@ -251,8 +257,17 @@ - /* Move remaining bytes in internal buffer. */ - if (len > 0) - { -- memcpy (ctx->buffer, buffer, len); -- ctx->buflen = len; -+ size_t left_over = ctx->buflen; -+ -+ memcpy (&ctx->buffer[left_over], buffer, len); -+ left_over += len; -+ if (left_over >= 64) -+ { -+ md5_process_block (ctx->buffer, 64, ctx); -+ left_over -= 64; -+ memcpy (ctx->buffer, &ctx->buffer[64], left_over); -+ } -+ ctx->buflen = left_over; - } - } - ---- glibc-2.1.3/md5-crypt/md5.h 2000/03/04 00:47:30 1.1 -+++ glibc-2.1.3/md5-crypt/md5.h 2000/07/04 18:22:44 1.2 -@@ -1,6 +1,6 @@ - /* Declaration of functions and data types used for MD5 sum computing - library functions. -- Copyright (C) 1995, 1996, 1997, 1999 Free Software Foundation, Inc. -+ Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -87,7 +87,7 @@ - - md5_uint32 total[2]; - md5_uint32 buflen; -- char buffer[128]; -+ char buffer[128] __attribute__ ((__aligned__ (__alignof__ (md5_uint32)))); - }; - - /* diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-04-glibc-2.1.3-tzfile.patch --- a/patches/glibc/2.1.3/rh62-04-glibc-2.1.3-tzfile.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -2000-08-09 Jakub Jelinek - - * time/tzfile.c (__tzfile_compute): __tzstring zones - from zone_names. - ---- glibc-2.1.3/time/tzfile.c.jj Fri May 7 16:41:44 1999 -+++ glibc-2.1.3/time/tzfile.c Fri Aug 25 09:55:20 2000 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991,92,93,95,96,97,98,99 Free Software Foundation, Inc. -+/* Copyright (C) 1991,92,93,95,96,97,98,99,2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -498,7 +498,7 @@ __tzfile_compute (time_t timer, int use_ - /* There is no daylight saving time. */ - __tzname[1] = __tzname[0]; - tp->tm_isdst = info->isdst; -- tp->tm_zone = &zone_names[info->idx]; -+ tp->tm_zone = __tzstring (&zone_names[info->idx]); - tp->tm_gmtoff = info->offset; - } - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-06-glibc-2.1.3-preload.patch --- a/patches/glibc/2.1.3/rh62-06-glibc-2.1.3-preload.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -2001-01-08 Ulrich Drepper - - * elf/rtld.c (process_envvars): Place output files for profiling - in SUID binaries in /var/profile. - - * elf/dl-load.c (_dl_map_object): Don't look in cache for - preloading in SUID binaries. - - * elf/dl-profile.c (_dl_start_profile): Open the output file with - O_NOFOLLOW if possible. - - * sysdeps/generic/segfault.c (install_handler): Check output file - name with access(). - ---- libc/elf/rtld.c 2000/03/15 05:42:01 1.148.2.7 -+++ libc/elf/rtld.c 2001/01/10 07:45:19 -@@ -1273,7 +1273,7 @@ - char *debug_output = NULL; - - /* This is the default place for profiling data file. */ -- _dl_profile_output = "/var/tmp"; -+ _dl_profile_output = __libc_enable_secure ? "/var/profile" : "/var/tmp"; - - while ((envline = _dl_next_ld_env_entry (&runp)) != NULL) - { ---- libc/elf/dl-load.c 1999/11/20 02:26:38 1.103.2.5 -+++ libc/elf/dl-load.c 2001/01/10 07:45:20 -@@ -1338,7 +1338,7 @@ - if (fd == -1 && env_path_list != NULL) - fd = open_path (name, namelen, preloaded, env_path_list, &realname); - -- if (fd == -1) -+ if (fd == -1 && (! preloaded || ! __libc_enable_secure)) - { - /* Check the list of libraries in the file /etc/ld.so.cache, - for compatibility with Linux's ldconfig program. */ ---- libc/elf/dl-profile.c 1998/06/07 13:35:48 1.14 -+++ libc/elf/dl-profile.c 2001/01/10 07:45:21 -@@ -263,7 +263,12 @@ - *cp++ = '/'; - __stpcpy (__stpcpy (cp, _dl_profile), ".profile"); - -- fd = __open (filename, O_RDWR | O_CREAT, 0666); -+#ifdef O_NOFOLLOW -+# define EXTRA_FLAGS | O_NOFOLLOW -+#else -+# define EXTRA_FLAGS -+#endif -+ fd = __open (filename, O_RDWR | O_CREAT EXTRA_FLAGS, 0666); - if (fd == -1) - { - /* We cannot write the profiling data so don't do anything. */ ---- libc/sysdeps/generic/segfault.c 2000/03/21 04:53:40 1.10.2.2 -+++ libc/sysdeps/generic/segfault.c 2001/01/10 07:45:22 -@@ -236,6 +236,7 @@ - - /* Preserve the output file name if there is any given. */ - name = getenv ("SEGFAULT_OUTPUT_NAME"); -- if (name != NULL && name[0] != '\0') -+ if (name != NULL && name[0] != '\0' -+ && (!__libc_enable_secure || access (name, R_OK | W_OK) == 0)) - fname = __strdup (name); - } - ---- libc/sysdeps/unix/sysv/linux/i386/dl-librecon.h.jj Wed Feb 24 23:01:58 1999 -+++ libc/sysdeps/unix/sysv/linux/i386/dl-librecon.h Mon Jan 15 04:30:57 2001 -@@ -49,13 +49,17 @@ - /* Recognizing extra environment variables. */ - #define EXTRA_LD_ENVVARS \ - case 15: \ -- if (memcmp (&envline[3], "LIBRARY_VERSION", 15) == 0) \ -+ if (!__libc_enable_secure \ -+ && memcmp (&envline[3], "LIBRARY_VERSION", 15) == 0) \ - { \ - _dl_correct_cache_id = envline[19] == '5' ? 2 : 3; \ - break; \ - } - - /* Extra unsecure variables. */ --#define EXTRA_UNSECURE_ENVVARS "LD_AOUT_LIBRARY_PATH", "LD_AOUT_PRELOAD" -+#define EXTRA_UNSECURE_ENVVARS \ -+ "LD_AOUT_LIBRARY_PATH", \ -+ "LD_AOUT_PRELOAD", \ -+ "LD_LIBRARY_VERSION" - - #endif /* dl-librecon.h */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-07-glibc-2.1.3-alpha.patch --- a/patches/glibc/2.1.3/rh62-07-glibc-2.1.3-alpha.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -2000-03-15 Cristian Gafton - - * db2/mutex/alpha.gcc (TSL_SET): Backport from db3. - * sysdeps/alpha/Makefile (CPPFLAGS): Define for db2 directory. - * db2/mutex/mutex.c: Include alpha.gcc ifdef HAVE_ASSEM_ALPHA_GCC. - -2000-03-14 Ulrich Drepper - - * sysdeps/unix/sysv/linux/alpha/ioperm.c (platform): Add entry for - Nautilus. Patch by Soohoon Lee . - ---- glibc-2.1.3-15/db2/mutex/alpha.gcc Wed Aug 27 15:32:54 1997 -+++ glibc-2.1.3-16/db2/mutex/alpha.gcc Wed Mar 15 16:50:45 2000 -@@ -1,52 +1,24 @@ - /* -- * @(#)alpha.gcc 10.1 (Sleepycat) 4/12/97 -- * -- * The code appearing below is taken from Richard L. Sites, ed. "Alpha -- * Architecture Reference Manual", Digital Press, 1992, page 5-7 and 5-8. -- * There are 2 modifications: -- * -- * 1. The jump from blbs __r1,30f to !__r1, which is dictated by the way the -- * TSL_SET macro is used. The code suggested in Sites includes the main loop -- * of the spin lock, whereas in this code the rest the loop is specified in C. -- * The generated code might be suboptimal if the compiler generates a forward -- * branch for the usual case in which the mutex is uncontested. -- * -- * 2. At label 20, Sites suggests including code for testing for an excessive -- * number of _processor_ lock conflicts. (The seq_c instruction stores its -- * first argument provided that no other processor has written to a byte range -- * including its memory-location argument.) Absent such checking the code -- * below could conceivably stall silently on a multiprocessor alpha, depending -- * on how often processor/processor conflicts occur in a particular byte range. -- * -- * Note that the mb ("memory-barrier") instruction in TSL_UNSET is critical to -- * correct operation in a multiprocessor alpha (as is, of course, the mb in -- * the TSL_SET macro). Without the mb, changes to shared memory that occurred -- * inside the critical section (before the TSL_UNSET) might reach shared memory -- * _after_ the change of tsl to 0, thereby permitting another processor to see -- * an inconsistent view of the data protected by the mutex. -+ * @(#)alpha.gcc 11.1 (Sleepycat) 8/30/99 - * - * For gcc/alpha, 0 is clear, 1 is set. - */ --#define TSL_SET(tsl) ({ \ -+#ifdef __GNUC__ -+#define TSL_SET(tsl) ({ \ - register tsl_t *__l = (tsl); \ -- register tsl_t __r1, __r2; \ -- __asm__ volatile(" \n\ -- 10: ldq_l %0,(%2) \n\ -- blbs %0,30f \n\ -- or %0,1,%1 \n\ -- stq_c %1,(%2) \n\ -- beq %1,20f \n\ -- mb \n\ -- br 30f \n\ -- 20: br 10b \n\ -- 30: " \ -- : "=&r" (__r1), "=&r" (__r2) \ -- : "r" (__l)); \ -- !__r1; \ -+ int __r; \ -+ asm volatile( \ -+ "1: ldl_l %0,%1\n" \ -+ " blbs %0,2f\n" \ -+ " mov 1,%0\n" \ -+ " stl_c %0,%1\n" \ -+ " bne %0,1b\n" \ -+ " mb\n" \ -+ "2:" \ -+ : "=&r"(__r), "=m"(*__l) : "m"(*__l) : "memory"); \ -+ __r; \ - }) -+#endif - --#define TSL_UNSET(tsl) ({ \ -- register tsl_t *__l = (tsl); \ -- __asm__ volatile("mb; stq $31,(%0);" : : "r" (__l)); \ --}) -+#define TSL_UNSET(tsl) (*(tsl) = 0) - #define TSL_INIT(tsl) TSL_UNSET(tsl) ---- glibc-2.1.3-15/db2/mutex/mutex.c Wed Jun 30 11:51:07 1999 -+++ glibc-2.1.3-16/db2/mutex/mutex.c Wed Mar 15 16:50:45 2000 -@@ -86,6 +86,10 @@ static const char sccsid[] = "@(#)mutex. - #include "sparc.gcc" - #endif - -+#ifdef HAVE_ASSEM_ALPHA_GCC -+#include "alpha.gcc" -+#endif -+ - #ifdef HAVE_ASSEM_UTS4_CC - #define TSL_INIT(x) - #define TSL_SET(x) (!uts_lock(x, 1)) ---- glibc-2.1.3-15/sysdeps/alpha/Makefile Thu Jul 9 14:52:03 1998 -+++ glibc-2.1.3-16/sysdeps/alpha/Makefile Wed Mar 15 16:50:45 2000 -@@ -17,6 +17,10 @@ - # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - # Boston, MA 02111-1307, USA. - -+ifeq ($(subdir),db2) -+CPPFLAGS += -DHAVE_SPINLOCKS=1 -DHAVE_ASSEM_ALPHA_GCC=1 -+endif -+ - ifeq ($(subdir),gmon) - sysdep_routines += _mcount - endif ---- glibc-2.1.3-15/sysdeps/unix/sysv/linux/alpha/ioperm.c Mon Oct 11 10:25:24 1999 -+++ glibc-2.1.3-16/sysdeps/unix/sysv/linux/alpha/ioperm.c Wed Mar 15 11:57:14 2000 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. -+/* Copyright (C) 1992, 1996-1999, 2000 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by David Mosberger. - -@@ -139,6 +139,7 @@ static struct platform { - {"Sable", IOSYS_CPUDEP}, - {"Miata", IOSYS_CIA}, - {"Tsunami", IOSYS_TSUNAMI}, -+ {"Nautilus", IOSYS_TSUNAMI}, - {"Rawhide", IOSYS_MCPCIA}, - {"Ruffian", IOSYS_CIA}, - {"Takara", IOSYS_CIA}, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch --- a/patches/glibc/2.1.3/rh62-08-glibc-2.1.3-glob.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -2001-11-29 Jakub Jelinek - - * sysdeps/generic/glob.c (next_brace_sub): Return NULL if braces - don't match, fix {{a,b},c} globbing, clean up. - Patch by Flavio Veloso . - ---- libc/sysdeps/generic/glob.c.jj Thu Aug 23 18:49:29 2001 -+++ libc/sysdeps/generic/glob.c Thu Nov 29 13:17:21 2001 -@@ -355,42 +355,14 @@ static - inline - #endif - const char * --next_brace_sub (begin) -- const char *begin; -+next_brace_sub (cp) -+ const char *cp; - { - unsigned int depth = 0; -- const char *cp = begin; -- -- while (1) -- { -- if (depth == 0) -- { -- if (*cp != ',' && *cp != '}' && *cp != '\0') -- { -- if (*cp == '{') -- ++depth; -- ++cp; -- continue; -- } -- } -- else -- { -- while (*cp != '\0' && (*cp != '}' || depth > 0)) -- { -- if (*cp == '}') -- --depth; -- ++cp; -- } -- if (*cp == '\0') -- /* An incorrectly terminated brace expression. */ -- return NULL; -- -- continue; -- } -- break; -- } -- -- return cp; -+ while (*cp != '\0' && (*cp != '}' || depth--) && (*cp != ',' || depth)) -+ if (*cp++ == '{') -+ depth++; -+ return *cp != '\0' ? cp : NULL; - } - - #endif /* !GLOB_ONLY_P */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-09-glibc-2.1.3-security2.patch --- a/patches/glibc/2.1.3/rh62-09-glibc-2.1.3-security2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -2002-07-05 Tomohiro Kato - - * glibc-compat/nss_dns/dns-network.c (getanswer_r): Reduce - linebuflen in parallel to bumping up the buffer pointer. - * glibc-compat/nss_dns/dns-host.c (getanswer_r): Likewise. - Compare n with linebuflen instead of buflen. - -2002-07-02 Andreas Schwab - - * resolv/nss_dns/dns-network.c (getanswer_r): Reduce linebuflen - in parallel to bumping up the buffer pointer. - ---- libc/glibc-compat/nss_dns/dns-network.c.jj Wed Jan 10 11:58:20 2001 -+++ libc/glibc-compat/nss_dns/dns-network.c Tue Jul 9 10:31:15 2002 -@@ -283,7 +283,9 @@ getanswer_r (const querybuf *answer, int - } - cp += n; - *alias_pointer++ = bp; -- bp += strlen (bp) + 1; -+ n = strlen (bp) + 1; -+ bp += n; -+ linebuflen -= n; - result->n_addrtype = class == C_IN ? AF_INET : AF_UNSPEC; - ++have_answer; - } ---- libc/glibc-compat/nss_dns/dns-host.c.jj Wed Jan 10 11:58:20 2001 -+++ libc/glibc-compat/nss_dns/dns-host.c Tue Jul 9 10:36:41 2002 -@@ -424,7 +424,7 @@ getanswer_r (const querybuf *answer, int - linebuflen -= n; - /* Get canonical name. */ - n = strlen (tbuf) + 1; /* For the \0. */ -- if ((size_t) n > buflen || n >= MAXHOSTNAMELEN) -+ if ((size_t) n > linebuflen || n >= MAXHOSTNAMELEN) - { - ++had_error; - continue; -@@ -447,7 +447,7 @@ getanswer_r (const querybuf *answer, int - cp += n; - /* Get canonical name. */ - n = strlen (tbuf) + 1; /* For the \0. */ -- if ((size_t) n > buflen || n >= MAXHOSTNAMELEN) -+ if ((size_t) n > linebuflen || n >= MAXHOSTNAMELEN) - { - ++had_error; - continue; -@@ -542,6 +542,7 @@ getanswer_r (const querybuf *answer, int - linebuflen -= nn; - } - -+ linebuflen -= sizeof (align) - ((u_long) bp % sizeof (align)); - bp += sizeof (align) - ((u_long) bp % sizeof (align)); - - if (n >= linebuflen) ---- libc/resolv/nss_dns/dns-network.c.jj Mon Jul 9 14:59:24 2001 -+++ libc/resolv/nss_dns/dns-network.c Tue Jul 9 10:30:31 2002 -@@ -328,7 +328,9 @@ getanswer_r (const querybuf *answer, int - } - cp += n; - *alias_pointer++ = bp; -- bp += strlen (bp) + 1; -+ n = strlen (bp) + 1; -+ bp += n; -+ linebuflen -= n; - result->n_addrtype = class == C_IN ? AF_INET : AF_UNSPEC; - ++have_answer; - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-10-glibc-2.1.3-xdr_array.patch --- a/patches/glibc/2.1.3/rh62-10-glibc-2.1.3-xdr_array.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ ---- glibc-2.1.3/sunrpc/rpc/types.h Fri Oct 16 13:43:49 1998 -+++ glibc-2.1.3/sunrpc/rpc/types.h Thu Aug 1 09:06:38 2002 -@@ -55,6 +55,10 @@ - - #include /* For malloc decl. */ - #define mem_alloc(bsize) malloc(bsize) -+/* -+ * XXX: This must not use the second argument, or code in xdr_array.c needs -+ * to be modified. -+ */ - #define mem_free(ptr, bsize) free(ptr) - - #ifndef makedev /* ie, we haven't already included it */ ---- glibc-2.1.3/sunrpc/xdr_array.c Thu Jul 16 15:23:51 1998 -+++ glibc-2.1.3/sunrpc/xdr_array.c Thu Aug 1 09:07:45 2002 -@@ -44,6 +44,7 @@ - #include - #include - #include -+#include - - #define LASTUNSIGNED ((u_int)0-1) - -@@ -76,7 +77,11 @@ - return FALSE; - } - c = *sizep; -- if ((c > maxsize) && (xdrs->x_op != XDR_FREE)) -+ /* -+ * XXX: Let the overflow possibly happen with XDR_FREE because mem_free() -+ * doesn't actually use its second argument anyway. -+ */ -+ if ((c > maxsize || c > UINT_MAX / elsize) && (xdrs->x_op != XDR_FREE)) - { - return FALSE; - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-11-glibc-2.1.3-calloc.patch --- a/patches/glibc/2.1.3/rh62-11-glibc-2.1.3-calloc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -diff -ur glibc-2.1.3.orig/malloc/malloc.c glibc-2.1.3/malloc/malloc.c ---- glibc-2.1.3.orig/malloc/malloc.c Wed Feb 23 10:02:55 2000 -+++ glibc-2.1.3/malloc/malloc.c Thu Aug 1 09:24:10 2002 -@@ -3656,12 +3656,20 @@ - { - arena *ar_ptr; - mchunkptr p, oldtop; -- INTERNAL_SIZE_T sz, csz, oldtopsize; -+ INTERNAL_SIZE_T bytes, sz, csz, oldtopsize; - Void_t* mem; - -+ /* size_t is unsigned so the behavior on overflow is defined; -+ * request2size() uses similar post-checks anyway. */ -+ bytes = n * elem_size; -+ if ((n | elem_size) >= 65536 && elem_size && bytes / elem_size != n) { -+ __set_errno (ENOMEM); -+ return 0; -+ } -+ - #if defined _LIBC || defined MALLOC_HOOKS - if (__malloc_hook != NULL) { -- sz = n * elem_size; -+ sz = bytes; - #if defined __GNUC__ && __GNUC__ >= 2 - mem = (*__malloc_hook)(sz, __builtin_return_address (0)); - #else -@@ -3678,7 +3686,7 @@ - } - #endif - -- if(request2size(n * elem_size, sz)) -+ if(request2size(bytes, sz)) - return 0; - arena_get(ar_ptr, sz); - if(!ar_ptr) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-12-glibc-2.1.3-maxpacket.patch --- a/patches/glibc/2.1.3/rh62-12-glibc-2.1.3-maxpacket.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,512 +0,0 @@ ---- libc/resolv/nss_dns/dns-host.c.jj Tue Sep 14 03:05:08 1999 -+++ libc/resolv/nss_dns/dns-host.c Thu Oct 10 13:07:33 2002 -@@ -129,9 +129,10 @@ _nss_dns_gethostbyname2_r (const char *n - char *buffer, size_t buflen, int *errnop, - int *h_errnop) - { -- querybuf host_buffer; -+ querybuf *host_buffer; - int size, type, n; - const char *cp; -+ enum nss_status status; - - switch (af) { - case AF_INET: -@@ -159,16 +160,25 @@ _nss_dns_gethostbyname2_r (const char *n - if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL) - name = cp; - -- n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf)); -+ host_buffer = (querybuf *) malloc (sizeof (*host_buffer)); -+ if (host_buffer == NULL) { -+ *errnop = ENOMEM; -+ return NSS_STATUS_UNAVAIL; -+ } -+ -+ n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf)); - if (n < 0) - { - *h_errnop = h_errno; - *errnop = *h_errnop == TRY_AGAIN ? EAGAIN : ENOENT; -+ free (host_buffer); - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen, -- errnop, h_errnop); -+ status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen, -+ errnop, h_errnop); -+ free (host_buffer); -+ return status; - } - - -@@ -205,7 +215,7 @@ _nss_dns_gethostbyaddr_r (const char *ad - char *h_addr_ptrs[MAX_NR_ADDRS + 1]; - char linebuffer[0]; - } *host_data = (struct host_data *) buffer; -- querybuf host_buffer; -+ querybuf *host_buffer; - char qbuf[MAXDNAME+1], *qp; - size_t size; - int n, status; -@@ -257,17 +267,25 @@ _nss_dns_gethostbyaddr_r (const char *ad - /* Cannot happen. */ - } - -- n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf, -- sizeof host_buffer); -+ host_buffer = (querybuf *) malloc (sizeof (*host_buffer)); -+ if (host_buffer == NULL) { -+ *errnop = ENOMEM; -+ return NSS_STATUS_UNAVAIL; -+ } -+ -+ n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf, -+ sizeof (host_buffer->buf)); - if (n < 0) - { - *h_errnop = h_errno; - *errnop = errno; -+ free (host_buffer); - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen, -+ status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen, - errnop, h_errnop); -+ free (host_buffer); - if (status != NSS_STATUS_SUCCESS) - { - *h_errnop = h_errno; ---- libc/resolv/nss_dns/dns-network.c.jj Wed Jun 30 12:01:14 1999 -+++ libc/resolv/nss_dns/dns-network.c Thu Oct 10 13:09:49 2002 -@@ -113,24 +113,36 @@ _nss_dns_getnetbyname_r (const char *nam - char *buffer, size_t buflen, int *errnop) - { - /* Return entry for network with NAME. */ -- querybuf net_buffer; -+ querybuf *net_buffer; - int anslen; - char *qbuf; -+ enum nss_status status; - - qbuf = strdupa (name); -- anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -- sizeof (querybuf)); -+ -+ net_buffer = (querybuf *) malloc (sizeof (*net_buffer)); -+ if (net_buffer == NULL) -+ { -+ *errnop = ENOMEM; -+ return NSS_STATUS_UNAVAIL; -+ } -+ -+ anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf, -+ sizeof (net_buffer->buf)); - if (anslen < 0) - { - /* Nothing found. */ - *errnop = errno; -+ free (net_buffer); - return (errno == ECONNREFUSED - || errno == EPFNOSUPPORT - || errno == EAFNOSUPPORT) - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME); -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME); -+ free (net_buffer); -+ return status; - } - - -@@ -140,7 +152,7 @@ _nss_dns_getnetbyaddr_r (long net, int t - { - /* Return entry for network with NAME. */ - enum nss_status status; -- querybuf net_buffer; -+ querybuf *net_buffer; - unsigned int net_bytes[4]; - char qbuf[MAXDNAME]; - int cnt, anslen; -@@ -176,19 +188,28 @@ _nss_dns_getnetbyaddr_r (long net, int t - break; - } - -- anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -- sizeof (querybuf)); -+ net_buffer = (querybuf *) malloc (sizeof (*net_buffer)); -+ if (net_buffer == NULL) -+ { -+ *errnop = ENOMEM; -+ return NSS_STATUS_UNAVAIL; -+ } -+ -+ anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf, -+ sizeof (net_buffer->buf)); - if (anslen < 0) - { - /* Nothing found. */ - *errnop = errno; -+ free (net_buffer); - return (errno == ECONNREFUSED - || errno == EPFNOSUPPORT - || errno == EAFNOSUPPORT) - ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR); -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR); -+ free (net_buffer); - if (status == NSS_STATUS_SUCCESS) - { - /* Strip trailing zeros. */ ---- libc/resolv/res_query.c.jj Wed Jun 30 12:01:06 1999 -+++ libc/resolv/res_query.c Thu Oct 10 13:01:12 2002 -@@ -106,7 +106,7 @@ res_query(name, class, type, answer, ans - u_char *answer; /* buffer to put answer */ - int anslen; /* size of answer buffer */ - { -- u_char buf[MAXPACKET]; -+ u_char *buf; - register HEADER *hp = (HEADER *) answer; - int n; - -@@ -121,17 +121,25 @@ res_query(name, class, type, answer, ans - printf(";; res_query(%s, %d, %d)\n", name, class, type); - #endif - -+ buf = malloc (MAXPACKET); -+ if (buf == NULL) { -+ __set_h_errno (NETDB_INTERNAL); -+ return -1; -+ } -+ - n = res_mkquery(QUERY, name, class, type, NULL, 0, NULL, -- buf, sizeof(buf)); -+ buf, MAXPACKET); - if (n <= 0) { - #ifdef DEBUG - if (_res.options & RES_DEBUG) - printf(";; res_query: mkquery failed\n"); - #endif - __set_h_errno (NO_RECOVERY); -+ free (buf); - return (n); - } - n = res_send(buf, n, answer, anslen); -+ free (buf); - if (n < 0) { - #ifdef DEBUG - if (_res.options & RES_DEBUG) ---- libc/resolv/gethnamaddr.c.jj Tue Dec 7 11:50:36 1999 -+++ libc/resolv/gethnamaddr.c Thu Oct 10 15:05:50 2002 -@@ -512,10 +512,11 @@ gethostbyname2(name, af) - const char *name; - int af; - { -- querybuf buf; -+ querybuf *buf; - register const char *cp; - char *bp; - int n, size, type, len; -+ struct hostent *ret; - extern struct hostent *_gethtbyname2(); - - if ((_res.options & RES_INIT) == 0 && res_init() == -1) { -@@ -617,13 +618,22 @@ gethostbyname2(name, af) - break; - } - -- if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf.buf))) < 0) { -+ buf = (querybuf *) malloc (sizeof (*buf)); -+ if (buf == NULL) { -+ __set_h_errno (NETDB_INTERNAL); -+ return NULL; -+ } -+ -+ if ((n = res_search(name, C_IN, type, buf->buf, sizeof(buf->buf))) < 0) { -+ free (buf); - dprintf("res_search failed (%d)\n", n); - if (errno == ECONNREFUSED) - return (_gethtbyname2(name, af)); - return (NULL); - } -- return (getanswer(&buf, n, name, type)); -+ ret = getanswer(buf, n, name, type); -+ free (buf); -+ return ret; - } - - struct hostent * -@@ -636,7 +646,7 @@ gethostbyaddr(addr, len, af) - static const u_char mapped[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0xff,0xff }; - static const u_char tunnelled[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 }; - int n, size; -- querybuf buf; -+ querybuf *buf; - register struct hostent *hp; - char qbuf[MAXDNAME+1], *qp; - #ifdef SUNSECURITY -@@ -697,14 +707,24 @@ gethostbyaddr(addr, len, af) - default: - abort(); - } -- n = res_query(qbuf, C_IN, T_PTR, (u_char *)buf.buf, sizeof buf.buf); -+ -+ buf = (querybuf *) malloc (sizeof (*buf)); -+ if (buf == NULL) { -+ __set_h_errno (NETDB_INTERNAL); -+ return NULL; -+ } -+ -+ n = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof buf->buf); - if (n < 0) { -+ free (buf); - dprintf("res_query failed (%d)\n", n); - if (errno == ECONNREFUSED) - return (_gethtbyaddr(addr, len, af)); - return (NULL); - } -- if (!(hp = getanswer(&buf, n, qbuf, T_PTR))) -+ hp = getanswer(buf, n, qbuf, T_PTR); -+ free (buf); -+ if (!hp) - return (NULL); /* h_errno was set by getanswer() */ - #ifdef SUNSECURITY - if (af == AF_INET) { ---- libc/resolv/getnetnamadr.c.jj Wed Jun 30 12:00:50 1999 -+++ libc/resolv/getnetnamadr.c Thu Oct 10 13:14:01 2002 -@@ -210,7 +210,7 @@ getnetbyaddr(net, net_type) - { - unsigned int netbr[4]; - int nn, anslen; -- querybuf buf; -+ querybuf *buf; - char qbuf[MAXDNAME]; - u_int32_t net2; /* Changed from unsigned long --roland */ - struct netent *net_entry; -@@ -236,8 +236,15 @@ getnetbyaddr(net, net_type) - netbr[1], netbr[0]); - break; - } -- anslen = res_query(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf)); -+ -+ buf = (querybuf *) malloc (sizeof (*buf)); -+ if (buf == NULL) { -+ return NULL; -+ } -+ -+ anslen = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf)); - if (anslen < 0) { -+ free (buf); - #ifdef DEBUG - if (_res.options & RES_DEBUG) - printf("res_query failed\n"); -@@ -246,7 +253,8 @@ getnetbyaddr(net, net_type) - return (_getnetbyaddr(net, net_type)); - return (NULL); - } -- net_entry = getnetanswer(&buf, anslen, BYADDR); -+ net_entry = getnetanswer(buf, anslen, BYADDR); -+ free (buf); - if (net_entry) { - unsigned u_net = net; /* maybe net should be unsigned ? */ - -@@ -264,7 +272,7 @@ getnetbyname(net) - register const char *net; - { - int anslen; -- querybuf buf; -+ querybuf *buf; - char qbuf[MAXDNAME]; - struct netent *net_entry; - -@@ -273,8 +281,13 @@ getnetbyname(net) - return (NULL); - } - strcpy(&qbuf[0], net); -- anslen = res_search(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf)); -+ buf = (querybuf *) malloc (sizeof (*buf)); -+ if (buf == NULL) { -+ return NULL; -+ } -+ anslen = res_search(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf)); - if (anslen < 0) { -+ free (buf); - #ifdef DEBUG - if (_res.options & RES_DEBUG) - printf("res_query failed\n"); -@@ -283,7 +296,8 @@ getnetbyname(net) - return (_getnetbyname(net)); - return (_getnetbyname(net)); - } -- net_entry = getnetanswer(&buf, anslen, BYNAME); -+ net_entry = getnetanswer(buf, anslen, BYNAME); -+ free (buf); - if (net_entry) - return (net_entry); - return (_getnetbyname(net)); ---- libc/glibc-compat/nss_dns/dns-host.c.jj Mon Jan 3 20:07:08 2000 -+++ libc/glibc-compat/nss_dns/dns-host.c Thu Oct 10 12:46:24 2002 -@@ -126,9 +126,10 @@ enum nss_status - _nss_dns_gethostbyname2_r (const char *name, int af, struct hostent *result, - char *buffer, size_t buflen, int *h_errnop) - { -- querybuf host_buffer; -+ querybuf *host_buffer; - int size, type, n; - const char *cp; -+ enum nss_status status; - - switch (af) { - case AF_INET: -@@ -156,15 +157,22 @@ _nss_dns_gethostbyname2_r (const char *n - if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL) - name = cp; - -- n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf)); -+ host_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (host_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf)); - if (n < 0) - { - *h_errnop = h_errno; -+ free (host_buffer); - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen, -- h_errnop); -+ status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen, -+ h_errnop); -+ free (host_buffer); -+ return status; - } - - -@@ -200,7 +208,7 @@ _nss_dns_gethostbyaddr_r (const char *ad - char *h_addr_ptrs[MAX_NR_ADDRS + 1]; - char linebuffer[0]; - } *host_data = (struct host_data *) buffer; -- querybuf host_buffer; -+ querybuf *host_buffer; - char qbuf[MAXDNAME+1], *qp; - int size, n, status; - -@@ -251,16 +259,22 @@ _nss_dns_gethostbyaddr_r (const char *ad - /* Cannot happen. */ - } - -- n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf, -- sizeof host_buffer); -+ host_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (host_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf, -+ sizeof (host_buffer->buf)); - if (n < 0) - { - *h_errnop = h_errno; -+ free (host_buffer); - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen, -+ status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen, - h_errnop); -+ free (host_buffer); - if (status != NSS_STATUS_SUCCESS) - { - *h_errnop = h_errno; ---- libc/glibc-compat/nss_dns/dns-network.c.jj Mon Jan 3 20:07:08 2000 -+++ libc/glibc-compat/nss_dns/dns-network.c Thu Oct 10 12:46:24 2002 -@@ -107,21 +107,32 @@ _nss_dns_getnetbyname_r (const char *nam - char *buffer, size_t buflen) - { - /* Return entry for network with NAME. */ -- querybuf net_buffer; -+ querybuf *net_buffer; - int anslen; - char *qbuf; -+ enum nss_status status; - - qbuf = strdupa (name); -- anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -- sizeof (querybuf)); -+ -+ net_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (net_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf, -+ sizeof (net_buffer->buf)); - if (anslen < 0) -- /* Nothing found. */ -- return (errno == ECONNREFUSED -- || errno == EPFNOSUPPORT -- || errno == EAFNOSUPPORT) -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ { -+ free (net_buffer); -+ /* Nothing found. */ -+ return (errno == ECONNREFUSED -+ || errno == EPFNOSUPPORT -+ || errno == EAFNOSUPPORT) -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ } - -- return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME); -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME); -+ free (net_buffer); -+ return status; - } - - -@@ -131,7 +142,7 @@ _nss_dns_getnetbyaddr_r (long net, int t - { - /* Return entry for network with NAME. */ - enum nss_status status; -- querybuf net_buffer; -+ querybuf *net_buffer; - unsigned int net_bytes[4]; - char qbuf[MAXDNAME]; - int cnt, anslen; -@@ -167,16 +178,24 @@ _nss_dns_getnetbyaddr_r (long net, int t - break; - } - -- anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -- sizeof (querybuf)); -+ net_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (net_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf, -+ sizeof (net_buffer->buf)); - if (anslen < 0) -- /* Nothing found. */ -- return (errno == ECONNREFUSED -- || errno == EPFNOSUPPORT -- || errno == EAFNOSUPPORT) -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ { -+ free (net_buffer); -+ /* Nothing found. */ -+ return (errno == ECONNREFUSED -+ || errno == EPFNOSUPPORT -+ || errno == EAFNOSUPPORT) -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ } - -- status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR); -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR); -+ free (net_buffer); - if (status == NSS_STATUS_SUCCESS) - { - /* Strip trailing zeros. */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-99-glibc-2.1.3-allow-gcc-3.4-dns.patch --- a/patches/glibc/2.1.3/rh62-99-glibc-2.1.3-allow-gcc-3.4-dns.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- glibc-2.1.3/glibc-compat/nss_dns/dns-host.c.old Sun Apr 11 21:46:14 2004 -+++ glibc-2.1.3/glibc-compat/nss_dns/dns-host.c Sun Apr 11 21:46:26 2004 -@@ -256,7 +256,7 @@ - strcpy(qp, "ip6.int"); - break; - default: -- /* Cannot happen. */ -+ ; /* Cannot happen. */ - } - - host_buffer = (querybuf *) malloc (sizeof (querybuf)); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/rh62-99-glibc-2.1.3-allow-gcc-3.4-gconv_stubs.patch --- a/patches/glibc/2.1.3/rh62-99-glibc-2.1.3-allow-gcc-3.4-gconv_stubs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -"Fixes" gcc-3.4.0 errors: -gconv_stubs.c:49: error: conflicting types for '__gconv_close_transform' -../iconv/gconv_int.h:131: error: previous declaration of '__gconv_close_transform' was here -gconv_stubs.c:49: error: conflicting types for '__gconv_close_transform' -../iconv/gconv_int.h:131: error: previous declaration of '__gconv_close_transform' was here -gconv_stubs.c:52: error: conflicting types for '__gconv' -../iconv/gconv_int.h:112: error: previous declaration of '__gconv' was here -gconv_stubs.c:52: error: conflicting types for '__gconv' -../iconv/gconv_int.h:112: error: previous declaration of '__gconv' was here -gconv_stubs.c:54: error: conflicting types for '__gconv_find_transform' -../iconv/gconv_int.h:119: error: previous declaration of '__gconv_find_transform' was here -gconv_stubs.c:54: error: conflicting types for '__gconv_find_transform' -../iconv/gconv_int.h:119: error: previous declaration of '__gconv_find_transform' was here -gconv_stubs.c:56: error: conflicting types for '__gconv_open' -../iconv/gconv_int.h:99: error: previous declaration of '__gconv_open' was here -gconv_stubs.c:56: error: conflicting types for '__gconv_open' -../iconv/gconv_int.h:99: error: previous declaration of '__gconv_open' was here -make[2]: *** [/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/build-glibc/c_stubs/gconv_stubs.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc4h/build/i686-unknown-linux-gnu/gcc-3.4.0-20040406-glibc-2.1.3/glibc-2.1.3/c_stubs' - -although the right thing would probably be to declare the -stubs to have the right attributes. - ---- glibc-2.1.3/c_stubs/gconv_stubs.c.old Sun Apr 11 20:25:09 2004 -+++ glibc-2.1.3/c_stubs/gconv_stubs.c Sun Apr 11 20:29:35 2004 -@@ -18,7 +18,18 @@ - Boston, MA 02111-1307, USA. */ - - #include -+ -+/* strange hack workaround for gcc-3.4.0. Might be a better way. */ -+#define __gconv_close_transform foo__gconv_close_transform -+#define __gconv foo__gconv -+#define __gconv_find_transform foo__gconv_find_transform -+#define __gconv_open foo__gconv_open -+ - #include -+#undef __gconv_close_transform -+#undef __gconv -+#undef __gconv_find_transform -+#undef __gconv_open - - /* hack for self identification */ - int __c_stubs_is_compiled_in; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.1.3/sk.po.patch --- a/patches/glibc/2.1.3/sk.po.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6678 +0,0 @@ -From -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/po/sk.po.diff?r1=1.2&r2=1.3&cvsroot=glibc - -Fixes build error - msgfmt -o sk.mo sk.po - sk.po:2913: duplicate message definition - sk.po:2909: ...this is the location of the first definition - sk.po:3894: duplicate message definition - sk.po:3070: ...this is the location of the first definition - msgfmt: found 2 fatal errors - make[2]: *** [sk.mo] Error 1 - -=================================================================== -RCS file: /cvs/glibc/libc/po/sk.po,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -r1.2 -r1.3 ---- libc/po/sk.po 1998/12/04 21:08:17 1.2 -+++ libc/po/sk.po 2001/06/05 22:43:33 1.3 -@@ -4,82 +4,82 @@ - # - msgid "" - msgstr "" --"Project-Id-Version: libc 2.1\n" --"POT-Creation-Date: 1998-11-28 09:29-0800\n" --"PO-Revision-Date: 1998-12-02 22:02+01:00\n" -+"Project-Id-Version: libc 2.2.3\n" -+"POT-Creation-Date: 2001-01-21 08:03-0800\n" -+"PO-Revision-Date: 2001-06-05 17:57+02:00\n" - "Last-Translator: Stanislav Meduna \n" - "Language-Team: Slovak \n" - "MIME-Version: 1.0\n" - "Content-Type: text/plain; charset=ISO-8859-2\n" - "Content-Transfer-Encoding: 8bit\n" - --#: nis/nis_print.c:273 -+#: nis/nis_print.c:274 - msgid "\t\tAccess Rights : " - msgstr "\t\tPrístupové práva : " - --#: nis/nis_print.c:271 -+#: nis/nis_print.c:272 - msgid "\t\tAttributes : " - msgstr "\t\tAtribúty : " - --#: sunrpc/rpc_main.c:1416 -+#: sunrpc/rpc_main.c:1425 - #, c-format - msgid "\t%s [-abkCLNTM][-Dname[=value]] [-i size] [-I [-K seconds]] [-Y path] infile\n" - msgstr "\t%s [-abkCLNTM][-Dnázov[=hodnota]] [-i veµkos»] [-I [-K sekundy]] [-Y cesta] vst_súbor\n" - --#: sunrpc/rpc_main.c:1418 -+#: sunrpc/rpc_main.c:1427 - #, c-format - msgid "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o outfile] [infile]\n" - msgstr "\t%s [-c | -h | -l | -m | -t | -Sc | -Ss | -Sm] [-o výst_súbor] [vst_súbor]\n" - --#: sunrpc/rpc_main.c:1421 -+#: sunrpc/rpc_main.c:1430 - #, c-format - msgid "\t%s [-n netid]* [-o outfile] [infile]\n" - msgstr "\t%s [-n netid]* [-o výst_súbor] [vst_súbor]\n" - --#: sunrpc/rpc_main.c:1420 -+#: sunrpc/rpc_main.c:1429 - #, c-format - msgid "\t%s [-s nettype]* [-o outfile] [infile]\n" - msgstr "\t%s [-s nettype]* [-o výst_súbor] [vst_súbor]\n" - --#: nis/nis_print.c:235 -+#: nis/nis_print.c:236 - msgid "\tAccess rights: " - msgstr "\tPrístupové práva: " - --#: nis/nis_print.c:293 -+#: nis/nis_print.c:294 - #, c-format - msgid "\tEntry data of type %s\n" - msgstr "\tVstupné údaje typu %s\n" - --#: nis/nis_print.c:171 -+#: nis/nis_print.c:172 - #, c-format - msgid "\tName : %s\n" - msgstr "\tNázov : %s\n" - --#: nis/nis_print.c:172 -+#: nis/nis_print.c:173 - msgid "\tPublic Key : " - msgstr "\tVerejný kµúè : " - --#: nis/nis_print.c:234 -+#: nis/nis_print.c:235 - #, c-format - msgid "\tType : %s\n" - msgstr "\tTyp : %s\n" - --#: nis/nis_print.c:201 -+#: nis/nis_print.c:202 - #, c-format - msgid "\tUniversal addresses (%u)\n" - msgstr "\tUniverzálne adresy (%u)\n" - --#: nis/nis_print.c:269 -+#: nis/nis_print.c:270 - #, c-format - msgid "\t[%d]\tName : %s\n" - msgstr "\t[%d]\tNázov : %s\n" - --#: nis/nis_print.c:296 -+#: nis/nis_print.c:297 - #, c-format - msgid "\t[%u] - [%u bytes] " - msgstr "\t[%u] - [%u bajtov] " - --#: nscd/nscd_stat.c:153 -+#: nscd/nscd_stat.c:154 - msgid "" - "\n" - "%s cache:\n" -@@ -109,11 +109,11 @@ - "%15ld%% úspe¹nos» cache\n" - "%15s skontrolujte /etc/%s na zmeny\n" - --#: nis/nis_print.c:251 -+#: nis/nis_print.c:252 - msgid "\nGroup Members :\n" - msgstr "\nÈlenovia skupín :\n" - --#: nis/nis_print.c:320 -+#: nis/nis_print.c:323 - msgid "\nTime to Live : " - msgstr "\n®ivotnos» : " - -@@ -133,60 +133,60 @@ - msgid " rpcinfo [ -n portnum ] -t host prognum [ versnum ]\n" - msgstr " rpcinfo [ -n èíslo_portu ] -t poèítaè èíslo_programu [ èíslo_verzie ]\n" - --#: nscd/nscd_stat.c:145 nscd/nscd_stat.c:147 -+#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148 - msgid " no" - msgstr " nie" - --#: nscd/nscd_stat.c:145 nscd/nscd_stat.c:147 -+#: nscd/nscd_stat.c:146 nscd/nscd_stat.c:148 - msgid " yes" - msgstr " áno" - --#: nis/nis_print.c:344 -+#: nis/nis_print.c:349 - #, c-format - msgid " Data Length = %u\n" - msgstr " Då¾ka údajov = %u\n" - --#: nis/nis_print_group_entry.c:121 -+#: nis/nis_print_group_entry.c:123 - msgid " Explicit members:\n" - msgstr " Explicitní èlenovia:\n" - --#: nis/nis_print_group_entry.c:145 nis/nis_print_group_entry.c:161 -+#: nis/nis_print_group_entry.c:147 nis/nis_print_group_entry.c:163 - msgid " Explicit nonmembers:\n" - msgstr " Explicitní neèlenovia:\n" - --#: nis/nis_print_group_entry.c:129 -+#: nis/nis_print_group_entry.c:131 - msgid " Implicit members:\n" - msgstr " Implicitní èlenovia:\n" - --#: nis/nis_print_group_entry.c:153 -+#: nis/nis_print_group_entry.c:155 - msgid " Implicit nonmembers:\n" - msgstr " Implicitní neèlenovia:\n" - --#: nis/nis_print_group_entry.c:126 -+#: nis/nis_print_group_entry.c:128 - msgid " No explicit members\n" - msgstr " ®iadni explicitní èlenovia\n" - --#: nis/nis_print_group_entry.c:150 -+#: nis/nis_print_group_entry.c:152 - msgid " No explicit nonmembers\n" - msgstr " ®iadni explicitní neèlenovia\n" - --#: nis/nis_print_group_entry.c:134 -+#: nis/nis_print_group_entry.c:136 - msgid " No implicit members\n" - msgstr " ®iadni implicitní èlenovia\n" - --#: nis/nis_print_group_entry.c:158 -+#: nis/nis_print_group_entry.c:160 - msgid " No implicit nonmembers\n" - msgstr " ®iadni implicitní neèlenovia\n" - --#: nis/nis_print_group_entry.c:142 -+#: nis/nis_print_group_entry.c:144 - msgid " No recursive members\n" - msgstr " ®iadni rekurzívni èlenovia\n" - --#: nis/nis_print_group_entry.c:166 -+#: nis/nis_print_group_entry.c:168 - msgid " No recursive nonmembers\n" - msgstr " ®iadni rekurzívni neèlenovia\n" - --#: nis/nis_print_group_entry.c:137 -+#: nis/nis_print_group_entry.c:139 - msgid " Recursive members:\n" - msgstr " Rekurzívni èlenovia:\n" - -@@ -194,138 +194,198 @@ - msgid " program vers proto port\n" - msgstr " program verz proto port\n" - --#: argp/argp-help.c:1571 -+#: argp/argp-help.c:1572 - msgid " or: " - msgstr " alebo: " - -+#: elf/ldconfig.c:448 -+msgid " (SKIPPED)\n" -+msgstr " (VYNECHANÉ)\n" -+ -+#: elf/ldconfig.c:446 -+msgid " (changed)\n" -+msgstr " (zmenené)\n" -+ - #: timezone/zic.c:421 - #, c-format - msgid " (rule from \"%s\", line %d)" - msgstr " (pravidlo z \"%s\", riadok %d)" - --#: argp/argp-help.c:1583 -+#: argp/argp-help.c:1584 - msgid " [OPTION...]" - msgstr " [VO¥BA...]" - --#: locale/programs/ld-collate.c:370 locale/programs/ld-ctype.c:1291 --msgid " done\n" --msgstr " hotovo\n" -- - #: timezone/zic.c:418 - #, c-format - msgid "\"%s\", line %d: %s" - msgstr "\"%s\", riadok %d: %s" - --#: timezone/zic.c:958 -+#: timezone/zic.c:983 - #, c-format - msgid "\"Zone %s\" line and -l option are mutually exclusive" - msgstr "Riadok \"Zone %s\" a voµba -l sa navzájom vyluèujú" - --#: timezone/zic.c:966 -+#: timezone/zic.c:991 - #, c-format - msgid "\"Zone %s\" line and -p option are mutually exclusive" - msgstr "Riadok \"Zone %s\" a voµba -p sa navzájom vyluèujú" - --#: sunrpc/rpc_main.c:1401 -+#: sunrpc/rpc_main.c:1410 - msgid "\"infile\" is required for template generation flags.\n" - msgstr "\"vst_súbor\" je vy¾adovaný pri pou¾ití príznakov tvorby vzoru.\n" - --#: argp/argp-help.c:210 -+#: argp/argp-help.c:209 - #, c-format - msgid "%.*s: ARGP_HELP_FMT parameter requires a value" - msgstr "%.*s: Parameter ARGP_HELP_FMT vy¾aduje hodnotu" - --#: argp/argp-help.c:219 -+#: argp/argp-help.c:218 - #, c-format - msgid "%.*s: Unknown ARGP_HELP_FMT parameter" - msgstr "%.*s: Neznámy parameter ARGP_HELP_FMT" - --#: timezone/zic.c:768 -+#: locale/programs/ld-address.c:576 locale/programs/ld-collate.c:2593 -+#: locale/programs/ld-collate.c:3719 locale/programs/ld-ctype.c:2110 -+#: locale/programs/ld-ctype.c:2847 locale/programs/ld-identification.c:440 -+#: locale/programs/ld-measurement.c:232 locale/programs/ld-messages.c:326 -+#: locale/programs/ld-monetary.c:934 locale/programs/ld-name.c:300 -+#: locale/programs/ld-numeric.c:370 locale/programs/ld-paper.c:233 -+#: locale/programs/ld-telephone.c:308 locale/programs/ld-time.c:1172 -+#, c-format -+msgid "%1$s: definition does not end with `END %1$s'" -+msgstr "%1$s: Definícia nekonèí `END %1$s'" -+ -+#: elf/cache.c:165 elf/cache.c:175 -+#, c-format -+msgid "%d libs found in cache `%s'\n" -+msgstr "%d kni¾níc nájdených v cache `%s'\n" -+ -+#: timezone/zic.c:793 - #, c-format - msgid "%s in ruleless zone" - msgstr "%s v zóne bez pravidiel" - --#: assert/assert.c:51 -+#: elf/../sysdeps/generic/readelflib.c:65 -+#, c-format -+msgid "%s is a 32 bit ELF file.\n" -+msgstr "%s je 32-bitový ELF súbor.\n" -+ -+#: elf/../sysdeps/generic/readelflib.c:67 -+#, c-format -+msgid "%s is a 64 bit ELF file.\n" -+msgstr "%s je 64-bitový ELF súbor.\n" -+ -+#: elf/../sysdeps/unix/sysv/linux/i386/readelflib.c:48 -+#, c-format -+msgid "%s is for unknown machine %d.\n" -+msgstr "%s je pre neznámy stroj %d.\n" -+ -+#: elf/ldconfig.c:329 -+#, c-format -+msgid "%s is not a known library type" -+msgstr "%s nie je známy typ kni¾nice" -+ -+#: elf/../sysdeps/generic/readelflib.c:76 -+#, c-format -+msgid "%s is not a shared object file (Type: %d).\n" -+msgstr "%s nie je zdieµaný objektový súbor (Typ: %d).\n" -+ -+#: elf/ldconfig.c:415 -+#, c-format -+msgid "%s is not a symbolic link\n" -+msgstr "%s nie je symbolický odkaz\n" -+ -+#: elf/readlib.c:157 -+#, c-format -+msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" -+msgstr "%s nie je ELF súbor - na zaèiatku obsahujé chybné magické bajty.\n" -+ -+#: assert/assert.c:52 - #, c-format - msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n" - msgstr "%s%s%s:%u: %s%sPredpoklad `%s' nesplnený.\n" - --#: assert/assert-perr.c:52 -+#: assert/assert-perr.c:54 - #, c-format - msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n" - msgstr "%s%s%s:%u: %s%sNeoèakávaná chyba: %s.\n" - --#: stdio-common/psignal.c:47 -+#: stdio-common/psignal.c:48 - #, c-format - msgid "%s%sUnknown signal %d\n" - msgstr "%s%sNeznámy signál %d\n" - --#: timezone/zic.c:2201 -+#: timezone/zic.c:2228 - #, c-format - msgid "%s: %d did not sign extend correctly\n" - msgstr "%s: nesprávne roz¹írenie znamienka pre %d\n" - --#: locale/programs/charmap.c:261 -+#: locale/programs/charmap.c:326 - #, c-format - msgid "%s: must be greater than \n" - msgstr "%s: musí by» väè¹ie ako \n" - --#: sunrpc/rpc_main.c:422 -+#: sunrpc/rpc_main.c:423 - #, c-format - msgid "%s: C preprocessor failed with exit code %d\n" - msgstr "%s: C preprocesor zlyhal s výstupným kódom %d\n" - --#: sunrpc/rpc_main.c:419 -+#: sunrpc/rpc_main.c:420 - #, c-format - msgid "%s: C preprocessor failed with signal %d\n" - msgstr "%s: C preprocesor zlyhal so signálom %d\n" - --#: timezone/zic.c:1469 -+#: timezone/zic.c:1494 - #, c-format - msgid "%s: Can't create %s: %s\n" - msgstr "%s: Nie je mo¾né vytvori» %s: %s\n" - --#: timezone/zic.c:2179 -+#: timezone/zic.c:2206 - #, c-format - msgid "%s: Can't create directory %s: %s\n" - msgstr "%s: Nie je mo¾né vytvori» adresár %s: %s\n" - --#: timezone/zic.c:620 -+#: timezone/zic.c:645 - #, c-format - msgid "%s: Can't link from %s to %s: %s\n" - msgstr "%s: Nie je mo¾né vytvori» prepojenie z %s na %s: %s\n" - --#: timezone/zic.c:794 -+#: timezone/zic.c:819 - #, c-format - msgid "%s: Can't open %s: %s\n" - msgstr "%s: Nie je mo¾né otvori» %s: %s\n" - --#: timezone/zic.c:1459 -+#: timezone/zic.c:1484 - #, c-format - msgid "%s: Can't remove %s: %s\n" - msgstr "%s: Nie je mo¾né odstráni» %s: %s\n" - --#: timezone/zic.c:863 -+#: timezone/zic.c:630 -+#, c-format -+msgid "%s: Can't unlink %s: %s\n" -+msgstr "%s: Nie je mo¾né zmaza» %s: %s\n" -+ -+#: timezone/zic.c:888 - #, c-format - msgid "%s: Error closing %s: %s\n" - msgstr "%s: Chyba pri uzatváraní %s: %s\n" - --#: timezone/zic.c:856 -+#: timezone/zic.c:881 - #, c-format - msgid "%s: Error reading %s\n" - msgstr "%s: Chyba pri èítaní %s\n" - --#: timezone/zic.c:1535 -+#: timezone/zdump.c:267 - #, c-format --msgid "%s: Error writing %s\n" --msgstr "%s: Chyba pri zápise %s\n" -+msgid "%s: Error writing " -+msgstr "%s: Chyba pri zápise " - --#: timezone/zdump.c:266 -+#: timezone/zic.c:1560 - #, c-format --msgid "%s: Error writing standard output " --msgstr "%s: Chyba pri zápise na ¹tandardný výstup " -+msgid "%s: Error writing %s\n" -+msgstr "%s: Chyba pri zápise %s\n" - --#: timezone/zic.c:841 -+#: timezone/zic.c:866 - #, c-format - msgid "%s: Leap line in non leap seconds file %s\n" - msgstr "%s: Priestupný riadok v súbore nepriestupných sekúnd %s\n" -@@ -335,122 +395,551 @@ - msgid "%s: Memory exhausted: %s\n" - msgstr "%s: Nedostatok pamäti: %s\n" - --#: timezone/zic.c:524 -+#: timezone/zic.c:525 - #, c-format - msgid "%s: More than one -L option specified\n" - msgstr "%s: Voµba -L zadaná viac ako raz\n" - --#: timezone/zic.c:484 -+#: timezone/zic.c:485 - #, c-format - msgid "%s: More than one -d option specified\n" - msgstr "%s: Voµba -d zadaná viac ako raz\n" - --#: timezone/zic.c:494 -+#: timezone/zic.c:495 - #, c-format - msgid "%s: More than one -l option specified\n" - msgstr "%s: Voµba -l zadaná viac ako raz\n" - --#: timezone/zic.c:504 -+#: timezone/zic.c:505 - #, c-format - msgid "%s: More than one -p option specified\n" - msgstr "%s: Voµba -p zadaná viac ako raz\n" - --#: timezone/zic.c:514 -+#: timezone/zic.c:515 - #, c-format - msgid "%s: More than one -y option specified\n" - msgstr "%s: Voµba -y zadaná viac ako raz\n" - --#: argp/argp-parse.c:640 -+#: argp/argp-parse.c:646 - #, c-format - msgid "%s: Too many arguments\n" - msgstr "%s: Priveµa argumentov\n" - --#: login/programs/database.c:129 -+#: locale/programs/ld-collate.c:457 locale/programs/ld-collate.c:483 -+#: locale/programs/ld-collate.c:499 -+#, c-format -+msgid "%s: `%s' mentioned more than once in definition of weight %d" -+msgstr "%s: `%s' spomenuté viac ako raz v definícii váhy %d" -+ -+#: locale/programs/ld-collate.c:1323 -+#, c-format -+msgid "%s: `%s' must be a character" -+msgstr "%s: `%s' musí by» znak" -+ -+#: locale/programs/ld-address.c:248 locale/programs/ld-address.c:276 -+#: locale/programs/ld-address.c:309 locale/programs/ld-address.c:321 -+#, c-format -+msgid "%s: `%s' value does not match `%s' value" -+msgstr "%s: hodnota `%s' nezodpovedá hodnote `%s'" -+ -+#: locale/programs/ld-monetary.c:835 locale/programs/ld-numeric.c:313 -+#, c-format -+msgid "%s: `-1' must be last entry in `%s' field" -+msgstr "%s: `-1' musí by» posledným záznamom v poli `%s'" -+ -+#: locale/programs/ld-collate.c:447 locale/programs/ld-collate.c:473 -+#, c-format -+msgid "%s: `forward' and `backward' are mutually excluding each other" -+msgstr "%s: `forward' a `backward' sa navzájom vyluèujú" -+ -+#: locale/programs/ld-collate.c:1515 -+#, c-format -+msgid "%s: `position' must be used for a specific level in all sections or none" -+msgstr "%s: `position' musí by» pre danú úroveò pou¾itá vo v¹etkých sekciách, alebo v ¾iadnej" -+ -+#: locale/programs/ld-ctype.c:2635 locale/programs/ld-ctype.c:2775 -+#, c-format -+msgid "%s: `translit_start' section does not end with `translit_end'" -+msgstr "%s: sekcia `translit_start' nekonèí `translit_end'" -+ -+#: locale/programs/ld-collate.c:1123 -+#, c-format -+msgid "%s: byte sequence of first character of sequence is not lower than that of the last character" -+msgstr "%s: poradie bajtu prvého znaku sekvencie nie je men¹ie ako posledného" -+ -+#: locale/programs/ld-collate.c:1081 -+#, c-format -+msgid "%s: byte sequences of first and last character must have the same length" -+msgstr "%s: bajtové sekvencie prvého a posledného znaku musia ma» rovnakú då¾ku" -+ -+#: locale/programs/ld-collate.c:3642 -+#, c-format -+msgid "%s: cannot have `%s' as end of ellipsis range" -+msgstr "%s: `%s' nemô¾e by» koncovým znakom rozsahu pokraèovania" -+ -+#: locale/programs/ld-collate.c:3308 -+#, c-format -+msgid "%s: cannot reorder after %.*s: symbol not known" -+msgstr "%s: nie je mo¾né preradi» za %.*s: neznámy symbol" -+ -+#: locale/programs/ld-ctype.c:2910 locale/programs/ld-ctype.c:2994 -+#: locale/programs/ld-ctype.c:3014 locale/programs/ld-ctype.c:3035 -+#: locale/programs/ld-ctype.c:3056 locale/programs/ld-ctype.c:3077 -+#: locale/programs/ld-ctype.c:3098 locale/programs/ld-ctype.c:3138 -+#: locale/programs/ld-ctype.c:3159 locale/programs/ld-ctype.c:3226 -+#, c-format -+msgid "%s: character `%s' in charmap not representable with one byte" -+msgstr "%s: znak `%s' v znakovej mape nie je vyjadriteµný jedným bajtom" -+ -+#: locale/programs/ld-ctype.c:3270 locale/programs/ld-ctype.c:3295 - #, c-format --msgid "%s: cannot get modification time" --msgstr "%s: nie je mo¾né zisti» èas zmeny" -+msgid "%s: character `%s' needed as default value not representable with one byte" -+msgstr "%s: znak `%s' je potrebný ako prednastavená hodnota nevyjadriteµná jedným bajtom" - --#: timezone/zic.c:1900 -+#: locale/programs/ld-ctype.c:2905 -+#, c-format -+msgid "%s: character `%s' not defined in charmap while needed as default value" -+msgstr "%s: znak `%s' nie je definovaný v mape znakov a je potrebný ako implicitná hodnota" -+ -+#: locale/programs/ld-ctype.c:2989 locale/programs/ld-ctype.c:3009 -+#: locale/programs/ld-ctype.c:3051 locale/programs/ld-ctype.c:3072 -+#: locale/programs/ld-ctype.c:3093 locale/programs/ld-ctype.c:3133 -+#: locale/programs/ld-ctype.c:3154 locale/programs/ld-ctype.c:3221 -+#: locale/programs/ld-ctype.c:3263 locale/programs/ld-ctype.c:3288 -+#, c-format -+msgid "%s: character `%s' not defined while needed as default value" -+msgstr "%s: znak `%s' nie je definovaný a je potrebný ako implicitná hodnota" -+ -+#: timezone/zic.c:1927 - #, c-format - msgid "%s: command was '%s', result was %d\n" - msgstr "%s: príkaz bol '%s', výsledok bol %d\n" - --#: locale/programs/charmap.c:677 locale/programs/locfile.c:1008 -+#: locale/programs/ld-time.c:225 -+#, c-format -+msgid "%s: direction flag in string %Zd in `era' field is not '+' nor '-'" -+msgstr "%s: príznak smeru v re»azci %Zd poµa `era' nie je '+' ani '-'" -+ -+#: locale/programs/ld-time.c:237 -+#, c-format -+msgid "%s: direction flag in string %Zd in `era' field is not a single character" -+msgstr "%s: príznak smeru v re»azci %Zd poµa `era' nie je jeden znak" -+ -+#: locale/programs/ld-ctype.c:2727 -+#, c-format -+msgid "%s: duplicate `default_missing' definition" -+msgstr "%s: duplicitná definícia `default_missing'" -+ -+#: locale/programs/ld-identification.c:423 -+#, c-format -+msgid "%s: duplicate category version definition" -+msgstr "%s: duplicitná definícia verzie kategórie" -+ -+#: locale/programs/ld-collate.c:2711 -+#, c-format -+msgid "%s: duplicate declaration of section `%s'" -+msgstr "%s: duplicitná deklarácia sekcie `%s'" -+ -+#: locale/programs/ld-collate.c:2675 -+#, c-format -+msgid "%s: duplicate definition of `%s'" -+msgstr "%s: duplicitná definícia `%s'" -+ -+#: locale/programs/ld-collate.c:3691 -+#, c-format -+msgid "%s: empty category description not allowed" -+msgstr "%s: prázdny popis kategórie nie je povolený" -+ -+#: locale/programs/ld-collate.c:755 -+#, c-format -+msgid "%s: empty weight string not allowed" -+msgstr "%s: prázdny re»azec váhy nie je povolený" -+ -+#: locale/programs/charmap.c:831 - #, c-format - msgid "%s: error in state machine" - msgstr "%s: chyba v stavovom automate" - --#: posix/getopt.c:784 -+#: locale/programs/ld-ctype.c:2483 -+#, c-format -+msgid "%s: field `%s' declared more than once" -+msgstr "%s: pole `%s' deklarované viac ako raz" -+ -+#: locale/programs/ld-ctype.c:1525 locale/programs/ld-ctype.c:1650 -+#: locale/programs/ld-ctype.c:1756 locale/programs/ld-ctype.c:2346 -+#: locale/programs/ld-ctype.c:3329 -+#, c-format -+msgid "%s: field `%s' does not contain exactly ten entries" -+msgstr "%s: pole `%s' neobsahuje presne desa» polo¾iek" -+ -+#: locale/programs/ld-address.c:154 locale/programs/ld-address.c:205 -+#: locale/programs/ld-address.c:230 locale/programs/ld-address.c:259 -+#: locale/programs/ld-name.c:115 locale/programs/ld-telephone.c:117 -+#, c-format -+msgid "%s: field `%s' must not be empty" -+msgstr "%s: pole `%s' nesmie by» prázdne" -+ -+#: locale/programs/ld-address.c:142 locale/programs/ld-address.c:197 -+#: locale/programs/ld-address.c:224 locale/programs/ld-address.c:284 -+#: locale/programs/ld-address.c:303 locale/programs/ld-address.c:315 -+#: locale/programs/ld-measurement.c:104 locale/programs/ld-monetary.c:244 -+#: locale/programs/ld-monetary.c:260 locale/programs/ld-name.c:104 -+#: locale/programs/ld-numeric.c:113 locale/programs/ld-numeric.c:127 -+#: locale/programs/ld-paper.c:101 locale/programs/ld-paper.c:109 -+#: locale/programs/ld-telephone.c:105 -+#, c-format -+msgid "%s: field `%s' not defined" -+msgstr "%s: pole `%s' nie je definované" -+ -+#: locale/programs/ld-messages.c:115 locale/programs/ld-messages.c:148 -+#, c-format -+msgid "%s: field `%s' undefined" -+msgstr "%s: pole `%s' nedefinované" -+ -+#: locale/programs/ld-time.c:258 -+#, c-format -+msgid "%s: garbage at end of offset value in string %Zd in `era' field" -+msgstr "%s: smetie za koncom hodnoty posunutia v re»azci %Zd poµa `era'" -+ -+#: locale/programs/ld-time.c:318 -+#, c-format -+msgid "%s: garbage at end of starting date in string %Zd in `era' field " -+msgstr "%s: smetie za koncom poèiatoèného dátumu v re»azci %Zd poµa `era' " -+ -+#: locale/programs/ld-time.c:395 -+#, c-format -+msgid "%s: garbage at end of stopping date in string %Zd in `era' field" -+msgstr "%s: smetie za koncom koncového dátumu v re»azci %Zd poµa `era'" -+ -+#: posix/getopt.c:795 - #, c-format - msgid "%s: illegal option -- %c\n" - msgstr "%s: neprípustná voµba -- %c\n" - --#: posix/getopt.c:787 -+#: locale/programs/ld-address.c:573 locale/programs/ld-collate.c:3717 -+#: locale/programs/ld-ctype.c:2844 locale/programs/ld-identification.c:437 -+#: locale/programs/ld-measurement.c:229 locale/programs/ld-messages.c:324 -+#: locale/programs/ld-monetary.c:932 locale/programs/ld-name.c:298 -+#: locale/programs/ld-numeric.c:368 locale/programs/ld-paper.c:231 -+#: locale/programs/ld-telephone.c:306 locale/programs/ld-time.c:1170 -+#, c-format -+msgid "%s: incomplete `END' line" -+msgstr "%s: nekompletný riadok `END'" -+ -+#: locale/programs/ld-address.c:166 -+msgid "%s: invalid escape `%%%c' sequence in field `%s'" -+msgstr "%s: neprípustná escape `%%%x' sekvencia v poli `%s'" -+ -+#: locale/programs/ld-name.c:127 locale/programs/ld-telephone.c:126 -+#: locale/programs/ld-telephone.c:150 -+#, c-format -+msgid "%s: invalid escape sequence in field `%s'" -+msgstr "%s: chybná escape-sekvencia v poli `%s'" -+ -+#: locale/programs/ld-time.c:250 -+#, c-format -+msgid "%s: invalid number for offset in string %Zd in `era' field" -+msgstr "%s: neprípustné èíslo pre posunutie v re»azci %Zd poµa `era'" -+ -+#: locale/programs/ld-collate.c:3143 -+#, c-format -+msgid "%s: invalid number of sorting rules" -+msgstr "%s: chybný poèet pravidiel triedenia" -+ -+#: posix/getopt.c:798 - #, c-format - msgid "%s: invalid option -- %c\n" - msgstr "%s: chybná voµba -- %c\n" - --#: posix/getopt.c:707 -+#: locale/programs/ld-time.c:309 -+#, c-format -+msgid "%s: invalid starting date in string %Zd in `era' field" -+msgstr "%s: neprípustný poèiatoèný dátum v re»azci %Zd poµa `era'" -+ -+#: locale/programs/ld-time.c:386 -+#, c-format -+msgid "%s: invalid stopping date in string %Zd in `era' field" -+msgstr "%s: neprípustný koncový dátum v re»azci %d poµa `era'" -+ -+#: locale/programs/ld-measurement.c:112 -+#, c-format -+msgid "%s: invalid value for field `%s'" -+msgstr "%s: neprípustná hodnota poµa `%s'" -+ -+#: locale/programs/ld-address.c:242 locale/programs/ld-address.c:270 -+#, c-format -+msgid "%s: language abbreviation `%s' not defined" -+msgstr "%s: skratka jazyka `%s' nie je definovaná" -+ -+#: locale/programs/ld-collate.c:3223 locale/programs/ld-collate.c:3346 -+#: locale/programs/ld-collate.c:3695 -+#, c-format -+msgid "%s: missing `order_end' keyword" -+msgstr "%s: chýbajúce kµúèové slovo `order_end'" -+ -+#: locale/programs/ld-collate.c:3360 locale/programs/ld-collate.c:3707 -+#, c-format -+msgid "%s: missing `reorder-end' keyword" -+msgstr "%s: chýbajúce kµúèové slovo `reorder-end'" -+ -+#: locale/programs/ld-collate.c:3710 -+#, c-format -+msgid "%s: missing `reorder-sections-end' keyword" -+msgstr "%s: chýbajúce kµúèové slovo `reorder-sections-end'" -+ -+#: locale/programs/ld-time.c:435 -+#, c-format -+msgid "%s: missing era format in string %Zd in `era' field" -+msgstr "%s: chýba formát éry v re»azci %Zd v poli `era'" -+ -+#: locale/programs/ld-time.c:423 -+#, c-format -+msgid "%s: missing era name in string %Zd in `era' field" -+msgstr "%s: chýba meno éry v re»azci %Zd v poli `era'" -+ -+#: locale/programs/ld-collate.c:3119 -+#, c-format -+msgid "%s: multiple order definitions for section `%s'" -+msgstr "%s: viacnásobná definícia poradia pre sekciu `%s'" -+ -+#: locale/programs/ld-collate.c:3169 -+#, c-format -+msgid "%s: multiple order definitions for unnamed section" -+msgstr "%s: viacnásobná definícia poradia pre sekciu bez mena" -+ -+#: locale/programs/ld-messages.c:137 locale/programs/ld-messages.c:170 -+#, c-format -+msgid "%s: no correct regular expression for field `%s': %s" -+msgstr "%s: pre pole `%s' neexistuje korektný regulérny výraz: %s" -+ -+#: locale/programs/ld-identification.c:169 -+#, c-format -+msgid "%s: no identification for category `%s'" -+msgstr "%s: kategória `%s' nemá identifikáciu" -+ -+#: locale/programs/ld-ctype.c:2753 -+#, c-format -+msgid "%s: no representable `default_missing' definition found" -+msgstr "%s: nenájdená zobraziteµná definícia `default_missing'" -+ -+#: locale/programs/ld-collate.c:591 -+#, c-format -+msgid "%s: not enough sorting rules" -+msgstr "%s: nedostatoèný poèet pravidiel triedenia" -+ -+#: locale/programs/ld-address.c:295 -+#, c-format -+msgid "%s: numeric country code `%d' not valid" -+msgstr "%s: èíselný kód krajiny `%d' nie je platný" -+ -+#: posix/getopt.c:718 - #, c-format - msgid "%s: option `%c%s' doesn't allow an argument\n" - msgstr "%s: voµba `%c%s' nedovoµuje pou¾i» argument\n" - --#: posix/getopt.c:677 -+#: posix/getopt.c:688 - #, c-format - msgid "%s: option `%s' is ambiguous\n" - msgstr "%s: voµba `%s' nie je jednoznaèná\n" - --#: posix/getopt.c:725 posix/getopt.c:898 -+#: posix/getopt.c:736 posix/getopt.c:909 - #, c-format - msgid "%s: option `%s' requires an argument\n" - msgstr "%s: voµba `%s' vy¾aduje argument\n" - --#: posix/getopt.c:702 -+#: posix/getopt.c:713 - #, c-format - msgid "%s: option `--%s' doesn't allow an argument\n" - msgstr "%s: voµba `--%s' nedovoµuje pou¾i» argument\n" - --#: posix/getopt.c:882 -+#: posix/getopt.c:893 - #, c-format - msgid "%s: option `-W %s' doesn't allow an argument\n" - msgstr "%s: voµba `-W %s' nedovoµuje pou»i» argument\n" - --#: posix/getopt.c:864 -+#: posix/getopt.c:875 - #, c-format - msgid "%s: option `-W %s' is ambiguous\n" - msgstr "%s: voµba `-W %s' nie je jednoznaèná\n" - --#: posix/getopt.c:817 posix/getopt.c:947 -+#: posix/getopt.c:828 posix/getopt.c:958 - #, c-format - msgid "%s: option requires an argument -- %c\n" - msgstr "%s: voµba vy¾aduje argument -- %c\n" - --#: sunrpc/rpc_main.c:287 -+#: locale/programs/ld-collate.c:1314 locale/programs/ld-collate.c:3654 -+#, c-format -+msgid "%s: order for `%.*s' already defined at %s:%Zu" -+msgstr "%s: poradie pre `%.*s' je u¾ definované na %s:%Zu" -+ -+#: locale/programs/ld-collate.c:3297 -+#, c-format -+msgid "%s: order for collating element %.*s not yet defined" -+msgstr "%s: poradie pre element triedenia `%.*s' e¹te nebolo definované" -+ -+#: locale/programs/ld-collate.c:3281 -+#, c-format -+msgid "%s: order for collating symbol %.*s not yet defined" -+msgstr "%s: poradie pre symbol triedenia `%.*s' e¹te nebolo definované" -+ -+#: sunrpc/rpc_main.c:289 - #, c-format - msgid "%s: output would overwrite %s\n" - msgstr "%s: výstup by prepísal %s\n" - --#: timezone/zic.c:848 timezone/zic.c:1262 timezone/zic.c:1287 -+#: timezone/zic.c:873 timezone/zic.c:1287 timezone/zic.c:1312 - #, c-format - msgid "%s: panic: Invalid l_value %d\n" - msgstr "%s: fatálna chyba: Neprípustná l_hodnota %d\n" - --#: locale/programs/charmap.c:684 locale/programs/repertoire.c:289 -+#: locale/programs/charmap.c:838 locale/programs/ld-address.c:592 -+#: locale/programs/ld-collate.c:2590 locale/programs/ld-collate.c:3735 -+#: locale/programs/ld-ctype.c:2107 locale/programs/ld-ctype.c:2864 -+#: locale/programs/ld-identification.c:456 -+#: locale/programs/ld-measurement.c:248 locale/programs/ld-messages.c:342 -+#: locale/programs/ld-monetary.c:950 locale/programs/ld-name.c:316 -+#: locale/programs/ld-numeric.c:386 locale/programs/ld-paper.c:249 -+#: locale/programs/ld-telephone.c:324 locale/programs/ld-time.c:1188 -+#: locale/programs/locfile.h:103 locale/programs/repertoire.c:325 - #, c-format - msgid "%s: premature end of file" - msgstr "%s: predèasný koniec súboru" - --#: sunrpc/rpc_main.c:294 -+#: locale/programs/ld-collate.c:3394 locale/programs/ld-collate.c:3580 -+#, c-format -+msgid "%s: section `%.*s' not known" -+msgstr "%s: neznáma sekcia `%.*s'" -+ -+#: locale/programs/ld-time.c:337 -+#, c-format -+msgid "%s: starting date is invalid in string %Zd in `era' field" -+msgstr "%s: neprípustný poèiatoèný dátum v re»azci %Zd v poli `era'" -+ -+#: locale/programs/ld-time.c:414 -+#, c-format -+msgid "%s: stopping date is invalid in string %Zd in `era' field" -+msgstr "%s: neprípustný koncový dátum v re»azci %d v poli `era'" -+ -+#: locale/programs/ld-collate.c:1248 -+#, c-format -+msgid "%s: symbolic range ellipsis must not be direct followed by `order_end'" -+msgstr "%s: pokraèovanie symbolického rozsahu nesmie by» priamo nasledované `order_end'" -+ -+#: locale/programs/ld-collate.c:1244 -+#, c-format -+msgid "%s: symbolic range ellipsis must not directly follow `order_start'" -+msgstr "%s: pokraèovanie symbolického rozsahu nesmie priamo nasledo» `order_start'" -+ -+#: locale/programs/ld-address.c:583 locale/programs/ld-collate.c:518 -+#: locale/programs/ld-collate.c:570 locale/programs/ld-collate.c:865 -+#: locale/programs/ld-collate.c:878 locale/programs/ld-collate.c:2581 -+#: locale/programs/ld-collate.c:3726 locale/programs/ld-ctype.c:1840 -+#: locale/programs/ld-ctype.c:2098 locale/programs/ld-ctype.c:2673 -+#: locale/programs/ld-ctype.c:2855 locale/programs/ld-identification.c:447 -+#: locale/programs/ld-measurement.c:239 locale/programs/ld-messages.c:333 -+#: locale/programs/ld-monetary.c:941 locale/programs/ld-name.c:307 -+#: locale/programs/ld-numeric.c:377 locale/programs/ld-paper.c:240 -+#: locale/programs/ld-telephone.c:315 locale/programs/ld-time.c:1179 -+#, c-format -+msgid "%s: syntax error" -+msgstr "%s: chyba syntaxe" -+ -+#: locale/programs/ld-ctype.c:2178 -+#, c-format -+msgid "%s: syntax error in definition of new character class" -+msgstr "%s: chyba syntaxe v definícii novej triedy znakov" -+ -+#: locale/programs/ld-ctype.c:2193 -+#, c-format -+msgid "%s: syntax error in definition of new character map" -+msgstr "%s: chyba syntaxe v definícii novej znakovej mapy" -+ -+#: locale/programs/ld-ctype.c:3735 -+#, c-format -+msgid "%s: table for class \"%s\": %lu bytes\n" -+msgstr "%s: tabuµka triedy \"%s\": %lu bajtov\n" -+ -+#: locale/programs/ld-ctype.c:3803 -+#, c-format -+msgid "%s: table for map \"%s\": %lu bytes\n" -+msgstr "%s: tabuµka mapy \"%s\": %lu bajtov\n" -+ -+#: locale/programs/ld-ctype.c:3935 -+#, c-format -+msgid "%s: table for width: %lu bytes\n" -+msgstr "%s: tabuµka ¹írky: %lu bajtov\n" -+ -+#: locale/programs/ld-address.c:216 -+#, c-format -+msgid "%s: terminology language code `%s' not defined" -+msgstr "%s: kód jazyka terminológie `%s' nie je definovaný" -+ -+#: locale/programs/ld-collate.c:1054 -+#, c-format -+msgid "%s: the start and the end symbol of a range must stand for characters" -+msgstr "%s: poèiatoèný a koncový symbol rozsahu musia zastupova» znaky" -+ -+#: locale/programs/ld-time.c:464 -+#, c-format -+msgid "%s: third operand for value of field `%s' must not be larger than %d" -+msgstr "%s: tretí operand hodnoty poµa `%s' nesmie by» väè¹í ako %d" -+ -+#: locale/programs/ld-collate.c:555 -+#, c-format -+msgid "%s: too many rules; first entry only had %d" -+msgstr "%s: priveµa pravidiel; prvý záznam mal iba %d" -+ -+#: locale/programs/ld-collate.c:906 -+#, c-format -+msgid "%s: too many values" -+msgstr "%s: priveµa hodnôt" -+ -+#: locale/programs/ld-ctype.c:3639 -+#, c-format -+msgid "%s: transliteration data from locale `%s' not available" -+msgstr "%s: transliteraèné údaje prostredia `%s' nie sú dostupné" -+ -+#: sunrpc/rpc_main.c:296 -+#, c-format -+msgid "%s: unable to open %s: %m\n" -+msgstr "%s: nie je mo¾né otvori» %s: %m\n" -+ -+#: locale/programs/ld-collate.c:2849 -+#, c-format -+msgid "%s: unknown character in collating symbol name" -+msgstr "%s: neznámy znak v názve symbolu triedenia" -+ -+#: locale/programs/ld-collate.c:2981 -+#, c-format -+msgid "%s: unknown character in equivalent definition name" -+msgstr "%s: neznámy znak v názve ekvivalentnej definície" -+ -+#: locale/programs/ld-collate.c:2994 -+#, c-format -+msgid "%s: unknown character in equivalent definition value" -+msgstr "%s: neznámy znak v hodnote ekvivalentnej definície" -+ -+#: locale/programs/ld-time.c:1040 -+#, c-format -+msgid "%s: unknown character in field `%s'" -+msgstr "%s: neznámy znak v poli `%s'" -+ -+#: locale/programs/ld-collate.c:3091 -+#, c-format -+msgid "%s: unknown section name `%s'" -+msgstr "%s: neznámy názov sekcie `%s'" -+ -+#: locale/programs/ld-collate.c:3004 - #, c-format --msgid "%s: unable to open " --msgstr "%s: Nie je mo¾né otvori» " -+msgid "%s: unknown symbol `%s' in equivalent definition" -+msgstr "%s: neznámy symbol `%s' v ekvivalentnej definícii" - --#: posix/getopt.c:758 -+#: posix/getopt.c:769 - #, c-format - msgid "%s: unrecognized option `%c%s'\n" - msgstr "%s: nerozpoznaná voµba `%c%s'\n" - --#: posix/getopt.c:754 -+#: posix/getopt.c:765 - #, c-format - msgid "%s: unrecognized option `--%s'\n" - msgstr "%s: nerozpoznaná voµba `--%s'\n" -@@ -458,35 +947,75 @@ - #: timezone/zic.c:443 - #, c-format - msgid "" --"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n" --"\t[ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n" -+"%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] \\\n" -+"\t[ -d directory ] [ -L leapseconds ] [ -y yearistype ] [ filename ... ]\n" - msgstr "" --"%s: Pou¾itie: %s [ -s ] [ -v ] [ -l lokálny_èas ] [ -p posix_pravidlá ]\n" -+"%s: Pou¾itie: %s [ -s ] [ -v ] [ -l lokálny_èas ] [ -p posix_pravidlá ] \\\n" - "\t[ -d adresár ] [ -L priestupné_sekundy ] [ -y typ_roku ] [ súbor ... ]\n" - --#: timezone/zdump.c:174 -+#: timezone/zdump.c:175 - #, c-format - msgid "%s: usage is %s [ -v ] [ -c cutoff ] zonename ...\n" - msgstr "%s: Pou¾itie: %s [ -v ] [ -c limit ] meno_zóny ...\n" - --#: sunrpc/rpc_main.c:307 -+#: locale/programs/ld-messages.c:121 locale/programs/ld-messages.c:154 -+#, c-format -+msgid "%s: value for field `%s' must not be an empty string" -+msgstr "%s: hodnota poµa `%s' nesmie by» prázdny re»azec" -+ -+#: locale/programs/ld-monetary.c:250 locale/programs/ld-numeric.c:119 -+#, c-format -+msgid "%s: value for field `%s' must not be the empty string" -+msgstr "%s: hodnota poµa `%s' nesmie by» prázdny re»azec" -+ -+#: locale/programs/ld-monetary.c:232 -+#, c-format -+msgid "%s: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217" -+msgstr "%s: hodnota poµa `int_curr_symbol' nezodpovedá platnému názvu v ISO 4217" -+ -+#: locale/programs/ld-monetary.c:224 -+#, c-format -+msgid "%s: value of field `int_curr_symbol' has wrong length" -+msgstr "%s: hodnota poµa `int_curr_symbol' má chybnú då¾ku" -+ -+#: locale/programs/ld-monetary.c:857 locale/programs/ld-numeric.c:334 -+#, c-format -+msgid "%s: values for field `%s' must be smaller than 127" -+msgstr "%s: hodnoty poµa `%s' musia by» men¹ie ako 127" -+ -+#: locale/programs/ld-time.c:488 -+#, c-format -+msgid "%s: values for field `%s' must not be larger than %d" -+msgstr "%s: hodnoty poµa `%s' nesmú by» väè¹ie ako %d" -+ -+#: locale/programs/ld-time.c:472 locale/programs/ld-time.c:480 -+#, c-format -+msgid "%s: values of field `%s' must not be larger than %d" -+msgstr "%s: hodnoty poµa `%s' nesmú by» väè¹ie ako %d" -+ -+#: locale/programs/ld-collate.c:850 - #, c-format --msgid "%s: while writing output: " --msgstr "%s: poèas zápisu výstupu: " -+msgid "%s: weights must use the same ellipsis symbol as the name" -+msgstr "%s: váhy musia ako názov pou¾i» rovnaký symbol pokraèovania" - --#: argp/argp-parse.c:164 -+#: sunrpc/rpc_main.c:308 -+#, c-format -+msgid "%s: while writing output %s: %m" -+msgstr "%s: poèas zápisu výstupu %s: %m" -+ -+#: argp/argp-parse.c:170 - msgid "(PROGRAM ERROR) No version known!?" - msgstr "(CHYBA PROGRAMU) Verzia neznáma!?" - --#: argp/argp-parse.c:781 -+#: argp/argp-parse.c:787 - msgid "(PROGRAM ERROR) Option should have been recognized!?" - msgstr "(CHYBA PROGRAMU) Voµba by mala by» rozpoznaná!?" - --#: nis/nis_print.c:129 -+#: nis/nis_print.c:130 - msgid "(Unknown object)\n" - msgstr "(Neznámy objekt)\n" - --#: sunrpc/clnt_perr.c:124 -+#: sunrpc/clnt_perr.c:125 - #, c-format - msgid "(unknown authentication error - %d)" - msgstr "(neznáma chyba pri overovaní toto¾nosti - %d)" -@@ -495,16 +1024,16 @@ - msgid "(unknown)" - msgstr "(neznámy)" - --#: elf/sprof.c:574 -+#: elf/sprof.c:570 - #, c-format - msgid "*** The file `%s' is stripped: no detailed analysis possible\n" - msgstr "*** Zo súboru `%s' boli odstránené ladiace informácie: podrobná analýza nie je mo¾ná\n" - --#: catgets/gencat.c:266 -+#: catgets/gencat.c:282 - msgid "*standard input*" - msgstr "*¹tandardný vstup*" - --#: catgets/gencat.c:120 -+#: catgets/gencat.c:125 - msgid "" - "-o OUTPUT-FILE [INPUT-FILE]...\n" - "[OUTPUT-FILE [INPUT-FILE]...]" -@@ -512,30 +1041,36 @@ - "-o VÝSTUPNÝ_SÚBOR [VSTUPNÝ_SÚBOR]...\n" - "[ VÝSTUPNÝ_SÚBOR [VSTUPNÝ_SÚBOR]...]" - --#: stdio-common/../sysdeps/gnu/errlist.c:778 -+#: stdio-common/../sysdeps/gnu/errlist.c:797 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:115 - msgid ".lib section in a.out corrupted" - msgstr "Po¹kodená sekcia .lib v a.out" - --#: sunrpc/clnt_perr.c:110 sunrpc/clnt_perr.c:131 -+#: sunrpc/clnt_perr.c:111 sunrpc/clnt_perr.c:132 - #, c-format - msgid "; low version = %lu, high version = %lu" - msgstr "; ni¾¹ia verzia = %lu, vy¹¹ia verzia = %lu" - --#: sunrpc/clnt_perr.c:117 -+#: sunrpc/clnt_perr.c:118 - msgid "; why = " - msgstr "; dôvod = " - --#: locale/programs/charset.c:98 -+#: locale/programs/charmap.c:999 - #, c-format - msgid "<%s> and <%s> are illegal names for range" - msgstr "<%s> and <%s> sú neprípustné názvy pre rozsah" - --#: locale/programs/ld-ctype.c:342 -+#: locale/programs/repertoire.c:448 -+#, c-format -+msgid "<%s> and <%s> are invalid names for range" -+msgstr "<%s> a <%s> sú neprípustné názvy pre rozsah" -+ -+#: locale/programs/ld-ctype.c:565 locale/programs/ld-ctype.c:600 - #, c-format - msgid " character must not be in class `%s'" - msgstr " znak nesmie by» v triede `%s'" - --#: locale/programs/ld-ctype.c:330 -+#: locale/programs/ld-ctype.c:553 locale/programs/ld-ctype.c:589 - #, c-format - msgid " character not in class `%s'" - msgstr " znak nie je v triede `%s'" -@@ -543,102 +1078,149 @@ - #. TRANS The experienced user will know what is wrong. - #. TRANS @c This error code is a joke. Its perror text is part of the joke. - #. TRANS @c Don't change it. --#: stdio-common/../sysdeps/gnu/errlist.c:603 -+#: stdio-common/../sysdeps/gnu/errlist.c:622 - msgid "?" - msgstr "?" - --#: sysdeps/unix/sysv/linux/siglist.h:27 -+#: sysdeps/generic/siglist.h:34 - msgid "Aborted" - msgstr "Zru¹ené" - --#: nis/nis_print.c:318 -+#: nis/nis_print.c:321 - msgid "Access Rights : " - msgstr "Prístupové práva : " - --#: stdio-common/../sysdeps/gnu/errlist.c:774 -+#: stdio-common/../sysdeps/gnu/errlist.c:793 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:114 - msgid "Accessing a corrupted shared library" - msgstr "Prístup k po¹kodenej zdieµanej kni¾nici" - - #. TRANS The requested socket address is already in use. @xref{Socket Addresses}. --#: stdio-common/../sysdeps/gnu/errlist.c:366 -+#: stdio-common/../sysdeps/gnu/errlist.c:367 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:155 - msgid "Address already in use" - msgstr "Adresa je pou¾ívaná" - --#: posix/../sysdeps/posix/gai_strerror.c:30 -+#: posix/../sysdeps/posix/gai_strerror.c:31 - msgid "Address family for hostname not supported" - msgstr "Trieda adries nie je podporovaná poèítaèom" - - #. TRANS The address family specified for a socket is not supported; it is - #. TRANS inconsistent with the protocol being used on the socket. @xref{Sockets}. --#: stdio-common/../sysdeps/gnu/errlist.c:361 -+#: stdio-common/../sysdeps/gnu/errlist.c:362 - msgid "Address family not supported by protocol" - msgstr "Trieda adries nie je podporovaná protokolom" - --#: stdio-common/../sysdeps/gnu/errlist.c:742 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:154 -+msgid "Address family not supported by protocol family" -+msgstr "Trieda adries nie je podporovaná rodinou protokolov" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:761 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:98 - msgid "Advertise error" - msgstr "Chyba pri zverejnení" - --#: stdio-common/../sysdeps/unix/siglist.c:39 --#: sysdeps/unix/sysv/linux/siglist.h:33 -+#: stdio-common/../sysdeps/unix/siglist.c:40 sysdeps/generic/siglist.h:40 - msgid "Alarm clock" - msgstr "Budík" - -+#: malloc/memusagestat.c:57 -+msgid "Also draw graph for total memory consumption" -+msgstr "Vykreslí aj graf celkovej spotreby pamäti" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:83 -+msgid "Anode table overflow" -+msgstr "Preteèenie tabuµky anode" -+ -+#: intl/tst-gettext2.c:37 -+msgid "Another string for testing." -+msgstr "Iný re»azec pre testovanie." -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:37 -+msgid "Arg list too long" -+msgstr "Príli¹ dlhý zoznam argumentov" -+ - #. TRANS Argument list too long; used when the arguments passed to a new program - #. TRANS being executed with one of the @code{exec} functions (@pxref{Executing a - #. TRANS File}) occupy too much memory space. This condition never arises in the - #. TRANS GNU system. --#: stdio-common/../sysdeps/gnu/errlist.c:69 -+#: stdio-common/../sysdeps/gnu/errlist.c:70 - msgid "Argument list too long" - msgstr "Príli¹ dlhý zoznam argumentov" - --#: nis/nis_error.c:65 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:63 -+msgid "Argument out of domain" -+msgstr "Argument mimo domény" -+ -+#: nis/nis_error.c:66 - msgid "Attempt to remove a non-empty table" - msgstr "Pokus o odstránenie neprázdnej tabuµky" - --#: stdio-common/../sysdeps/gnu/errlist.c:782 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:116 -+msgid "Attempting to link in more shared libraries than system limit" -+msgstr "Pokus o pou¾itie viac zdieµaných kni¾níc, ako je systémový limit" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:801 - msgid "Attempting to link in too many shared libraries" - msgstr "Pokus o pou¾itie priveµa zdieµaných kni¾níc" - --#: sunrpc/clnt_perr.c:273 -+#: sunrpc/clnt_perr.c:329 - msgid "Authentication OK" - msgstr "Overenie práv úspe¹né" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:561 -+#: stdio-common/../sysdeps/gnu/errlist.c:562 - msgid "Authentication error" - msgstr "Overenie práv neúspe¹né" - --#: nis/nis_print.c:105 -+#: nis/nis_print.c:106 - msgid "BOGUS OBJECT\n" - msgstr "POCHYBNÝ OBJEKT\n" - - #. TRANS Bad address; an invalid pointer was detected. - #. TRANS In the GNU system, this error never happens; you get a signal instead. --#: stdio-common/../sysdeps/gnu/errlist.c:114 -+#: stdio-common/../sysdeps/gnu/errlist.c:115 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:44 - msgid "Bad address" - msgstr "Chybná adresa" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:80 -+msgid "Bad exchange descriptor" -+msgstr "Chybný exchange deskriptor" -+ - #. TRANS Bad file descriptor; for example, I/O on a descriptor that has been - #. TRANS closed or reading from a descriptor open only for writing (or vice - #. TRANS versa). --#: stdio-common/../sysdeps/gnu/errlist.c:82 -+#: stdio-common/../sysdeps/gnu/errlist.c:83 - msgid "Bad file descriptor" - msgstr "Chybný deskriptor súboru" - --#: stdio-common/../sysdeps/gnu/errlist.c:730 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:39 -+msgid "Bad file number" -+msgstr "Chybné èíslo súboru" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:749 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:87 - msgid "Bad font file format" - msgstr "Chybný formát súboru rezov písma" - --#: stdio-common/../sysdeps/gnu/errlist.c:622 -+#: stdio-common/../sysdeps/gnu/errlist.c:641 - msgid "Bad message" - msgstr "Chybná správa" - --#: stdio-common/../sysdeps/unix/siglist.c:37 --#: sysdeps/unix/sysv/linux/siglist.h:56 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:84 -+msgid "Bad request code" -+msgstr "Neprípustný kód ¾iadosti" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:81 -+msgid "Bad request descriptor" -+msgstr "Neprípustný deskriptor ¾iadosti" -+ -+#: stdio-common/../sysdeps/unix/siglist.c:38 sysdeps/generic/siglist.h:63 - msgid "Bad system call" - msgstr "Chybné volanie systému" - --#: posix/../sysdeps/posix/gai_strerror.c:32 -+#: posix/../sysdeps/posix/gai_strerror.c:33 - msgid "Bad value for ai_flags" - msgstr "Chybná hodnota ai_flags" - -@@ -646,18 +1228,19 @@ - msgid "Be strictly POSIX conform" - msgstr "Presný súlad s POSIX" - --#: nis/nis_print.c:301 -+#: nis/nis_print.c:302 - msgid "Binary data\n" - msgstr "Binárne údaje\n" - - #. TRANS A file that isn't a block special file was given in a situation that - #. TRANS requires one. For example, trying to mount an ordinary file as a file - #. TRANS system in Unix gives this error. --#: stdio-common/../sysdeps/gnu/errlist.c:121 -+#: stdio-common/../sysdeps/gnu/errlist.c:122 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:45 - msgid "Block device required" - msgstr "Vy¾adované blokové zariadenie" - --#: sunrpc/pmap_rmt.c:347 -+#: sunrpc/pmap_rmt.c:348 - msgid "Broadcast poll problem" - msgstr "Problém pri volaní poll pre v¹eobecné vysielanie" - -@@ -666,135 +1249,223 @@ - #. TRANS @code{SIGPIPE} signal; this signal terminates the program if not handled - #. TRANS or blocked. Thus, your program will never actually see @code{EPIPE} - #. TRANS unless it has handled or blocked @code{SIGPIPE}. --#: stdio-common/../sysdeps/gnu/errlist.c:234 --#: stdio-common/../sysdeps/unix/siglist.c:38 --#: sysdeps/unix/sysv/linux/siglist.h:32 -+#: stdio-common/../sysdeps/gnu/errlist.c:235 -+#: stdio-common/../sysdeps/unix/siglist.c:39 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:62 -+#: sysdeps/generic/siglist.h:39 - msgid "Broken pipe" - msgstr "Preru¹ená rúra" - --#: stdio-common/../sysdeps/unix/siglist.c:35 --#: sysdeps/unix/sysv/linux/siglist.h:30 -+#: stdio-common/../sysdeps/unix/siglist.c:36 sysdeps/generic/siglist.h:37 - msgid "Bus error" - msgstr "Chyba na zbernici" - --#: nis/nis_print.c:45 -+#: nis/nis_print.c:46 - msgid "CDS" - msgstr "CDS" - --#: stdio-common/../sysdeps/unix/siglist.c:49 --#: sysdeps/unix/sysv/linux/siglist.h:43 -+#: stdio-common/../sysdeps/unix/siglist.c:50 sysdeps/generic/siglist.h:50 - msgid "CPU time limit exceeded" - msgstr "Prekroèený èasový limit pre procesor" - --#: nis/nis_error.c:32 -+#: nis/nis_error.c:33 - msgid "Cache expired" - msgstr "®ivotnos» cache vypr¹ala" - --#: stdio-common/../sysdeps/gnu/errlist.c:770 -+#: stdio-common/../sysdeps/gnu/errlist.c:789 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:113 - msgid "Can not access a needed shared library" - msgstr "Prístup k potrebnej zdieµanej kni¾nici nie je mo¾ný" - --#: nis/ypclnt.c:769 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:117 -+msgid "Can not exec a shared library directly" -+msgstr "Nie je mo¾né priamo spusti» zdieµanú kni¾nicu" -+ -+#: nis/ypclnt.c:792 - msgid "Can't bind to server which serves this domain" - msgstr "Pripojenie k serveru obsluhujúcemu túto doménu nie je mo¾né" - --#: nis/ypclnt.c:781 -+#: elf/ldconfig.c:934 -+msgid "Can't chdir to /" -+msgstr "Nie je mo¾né zmeni» adresár na /" -+ -+#: nis/ypclnt.c:804 - msgid "Can't communicate with portmapper" - msgstr "Komunikácia s portmapperom nie je mo¾ná" - --#: nis/ypclnt.c:783 -+#: nis/ypclnt.c:806 - msgid "Can't communicate with ypbind" - msgstr "Komunikácia s ypbind nie je mo¾ná" - --#: nis/ypclnt.c:785 -+#: nis/ypclnt.c:808 - msgid "Can't communicate with ypserv" - msgstr "Komunikácia s ypserv nie je mo¾ná" - -+#: elf/cache.c:359 -+#, c-format -+msgid "Can't create temporary cache file %s" -+msgstr "Nie je mo¾né vytvori» doèasný cache súbor %s" -+ -+#: elf/ldconfig.c:502 -+#, c-format -+msgid "Can't find %s" -+msgstr "Nie je mo¾né nájs» %s" -+ -+#: elf/ldconfig.c:440 -+#, c-format -+msgid "Can't link %s to %s" -+msgstr "Nie je mo¾né vytvori» odkaz %s na %s" -+ -+#: elf/ldconfig.c:518 elf/ldconfig.c:672 -+#, c-format -+msgid "Can't lstat %s" -+msgstr "Zlyhal lstat %s" -+ -+#: elf/cache.c:108 elf/ldconfig.c:955 -+#, c-format -+msgid "Can't open cache file %s\n" -+msgstr "Nie je mo¾né otvori» cache súbor %s\n" -+ -+#: elf/ldconfig.c:976 -+#, c-format -+msgid "Can't open cache file directory %s\n" -+msgstr "Nie je mo¾né otvori» adresár cache súboru %s\n" -+ -+#: elf/ldconfig.c:865 -+#, c-format -+msgid "Can't open configuration file %s" -+msgstr "Nie je mo¾né otvori» konfiguraèný súbor %s" -+ -+#: elf/ldconfig.c:621 -+#, c-format -+msgid "Can't open directory %s" -+msgstr "Nie je mo¾né otvori» adresár %s" -+ -+#: elf/cache.c:353 -+#, c-format -+msgid "Can't remove old temporary cache file %s" -+msgstr "Nie je mo¾né zmaza» doèasný cache súbor %s" -+ -+#: elf/ldconfig.c:405 -+#, c-format -+msgid "Can't stat %s\n" -+msgstr "Zlyhal stat %s\n" -+ -+#: elf/ldconfig.c:434 -+#, c-format -+msgid "Can't unlink %s" -+msgstr "Nie je mo¾né odstráni» %s" -+ - #. TRANS No memory available. The system cannot allocate more virtual memory - #. TRANS because its capacity is full. --#: stdio-common/../sysdeps/gnu/errlist.c:103 -+#: stdio-common/../sysdeps/gnu/errlist.c:104 - msgid "Cannot allocate memory" - msgstr "Nie je mo¾né prideli» pamä»" - - #. TRANS The requested socket address is not available; for example, you tried - #. TRANS to give a socket a name that doesn't match the local host name. - #. TRANS @xref{Socket Addresses}. --#: stdio-common/../sysdeps/gnu/errlist.c:373 -+#: stdio-common/../sysdeps/gnu/errlist.c:374 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:156 - msgid "Cannot assign requested address" - msgstr "Priradenie po¾adovanej adresy nie je mo¾né" - --#: sunrpc/pmap_rmt.c:264 -+#: sunrpc/pmap_rmt.c:265 - msgid "Cannot create socket for broadcast rpc" - msgstr "Nie je mo¾né vytvori» zásuvku pre broadcast rpc" - --#: stdio-common/../sysdeps/gnu/errlist.c:786 -+#: stdio-common/../sysdeps/gnu/errlist.c:805 - msgid "Cannot exec a shared library directly" - msgstr "Nie je mo¾né priamo spusti» zdieµanú kni¾nicu" - --#: sunrpc/rpc_main.c:1406 -+#: elf/readlib.c:98 -+#, c-format -+msgid "Cannot fstat file %s.\n" -+msgstr "Nie je mo¾né vykona» fstat() súboru %s.\n" -+ -+#: sunrpc/rpc_main.c:1415 - msgid "Cannot have more than one file generation flag!\n" - msgstr "Nie je mo¾né pou¾i» viac ako jeden príznak tvorby súboru!\n" - --#: sunrpc/pmap_rmt.c:360 -+#: elf/readlib.c:117 -+#, c-format -+msgid "Cannot mmap file %s.\n" -+msgstr "Nie je mo¾né mmap-ova» súbor %s.\n" -+ -+#: sunrpc/pmap_rmt.c:361 - msgid "Cannot receive reply to broadcast" - msgstr "Nie je mo¾né prija» odpoveï na broadcast" - --#: sunrpc/pmap_clnt.c:74 -+#: sunrpc/pmap_clnt.c:136 - msgid "Cannot register service" - msgstr "Nie je mo¾né zaregistrova» slu¾bu" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:173 -+msgid "Cannot send after socket shutdown" -+msgstr "Nie je mo¾né vysiela» po ukonèení èinnosti komunikaèného bodu" -+ - #. TRANS The socket has already been shut down. --#: stdio-common/../sysdeps/gnu/errlist.c:434 -+#: stdio-common/../sysdeps/gnu/errlist.c:435 - msgid "Cannot send after transport endpoint shutdown" - msgstr "Nie je mo¾né vysiela» po ukonèení èinnosti komunikaèného bodu" - --#: sunrpc/pmap_rmt.c:322 -+#: sunrpc/pmap_rmt.c:323 - msgid "Cannot send broadcast packet" - msgstr "Nie je mo¾né vysla» broadcast balík" - --#: sunrpc/pmap_rmt.c:271 -+#: sunrpc/pmap_rmt.c:272 - msgid "Cannot set socket option SO_BROADCAST" - msgstr "Nie je mo¾né nastavi» pre socket voµbu SO_BROADCAST" - --#: sunrpc/rpc_main.c:1193 -+#: sunrpc/rpc_main.c:1195 - msgid "Cannot specify more than one input file!\n" - msgstr "Nie je mo¾né zada» viac ako jeden vstupný súbor!\n" - --#: sunrpc/rpc_main.c:1363 -+#: sunrpc/rpc_main.c:1372 - msgid "Cannot use netid flag with inetd flag!\n" - msgstr "Príznaky netid a inetd nie je mo¾né pou¾i» súèasne!\n" - --#: sunrpc/rpc_main.c:1375 -+#: sunrpc/rpc_main.c:1384 - msgid "Cannot use netid flag without TIRPC!\n" - msgstr "Nie je mo¾né pou¾i» príznak netid bez TIRPC!\n" - --#: sunrpc/rpc_main.c:1382 -+#: sunrpc/rpc_main.c:1391 - msgid "Cannot use table flags with newstyle!\n" - msgstr "Pri pou¾ití nového ¹týlu nie je mo¾né pou¾i» príznaky tabuµky!\n" - --#: stdio-common/../sysdeps/gnu/errlist.c:670 -+#: elf/ldconfig.c:131 -+msgid "Change to and use ROOT as root directory" -+msgstr "Zmeni» adresár na ROOT a pou¾i» ho ako koreòový adresár" -+ -+#: elf/cache.c:390 -+#, c-format -+msgid "Changing access rights of %s to 0644 failed" -+msgstr "Zmena prístupových práv %s na 0644 zlyhala" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:689 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:67 - msgid "Channel number out of range" - msgstr "Èíslo kanálu mimo povoleného rozsahu" - --#: nis/nis_print.c:264 -+#: nis/nis_print.c:265 - #, c-format - msgid "Character Separator : %c\n" - msgstr "Oddeµovaè znakov : %c\n" - --#: stdio-common/../sysdeps/unix/siglist.c:45 --#: sysdeps/unix/sysv/linux/siglist.h:39 -+#: stdio-common/../sysdeps/unix/siglist.c:46 sysdeps/generic/siglist.h:46 - msgid "Child exited" - msgstr "Detský proces skonèil" - --#: sunrpc/clnt_perr.c:283 -+#: sunrpc/clnt_perr.c:348 - msgid "Client credential too weak" - msgstr "Oprávnenia klienta sú nepostaèujúce" - --#: nis/nis_print.c:266 -+#: nis/nis_print.c:267 - msgid "Columns :\n" - msgstr "Ståpce :\n" - --#: stdio-common/../sysdeps/gnu/errlist.c:750 -+#: stdio-common/../sysdeps/gnu/errlist.c:769 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:100 - msgid "Communication error on send" - msgstr "Chyba komunikácie pri vysielaní" - -@@ -803,54 +1474,48 @@ - msgstr "Kompilácia ¹pecifikácie národného prostredia" - - #. TRANS Go home and have a glass of warm, dairy-fresh milk. --#: stdio-common/../sysdeps/gnu/errlist.c:613 -+#: stdio-common/../sysdeps/gnu/errlist.c:632 - msgid "Computer bought the farm" - msgstr "Poèítaè kúpil farmu" - --#: locale/programs/ld-ctype.c:1253 --msgid "Computing table size for character classes might take a while..." --msgstr "Výpoèet veµkosti tabuµky pre triedy znakov (mô¾e chvíµu trva»)..." -- --#: locale/programs/ld-collate.c:336 --msgid "Computing table size for collation information might take a while..." --msgstr "Výpoèet veµkosti tabuµky pre informácie o triedení (mô¾e chvíµu trva»)..." -+#: elf/ldconfig.c:141 -+msgid "Configure Dynamic Linker Run Time Bindings." -+msgstr "Konfigurácia runtime väzieb dynamického linkera." - - #. TRANS A remote host refused to allow the network connection (typically because - #. TRANS it is not running the requested service). --#: stdio-common/../sysdeps/gnu/errlist.c:451 -+#: stdio-common/../sysdeps/gnu/errlist.c:452 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:176 - msgid "Connection refused" - msgstr "Spojenie odmietnuté" - - #. TRANS A network connection was closed for reasons outside the control of the - #. TRANS local host, such as by the remote machine rebooting or an unrecoverable - #. TRANS protocol violation. --#: stdio-common/../sysdeps/gnu/errlist.c:401 -+#: stdio-common/../sysdeps/gnu/errlist.c:402 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:161 - msgid "Connection reset by peer" - msgstr "Spojenie zru¹ené druhou stranou" - - #. TRANS A socket operation with a specified timeout received no response during - #. TRANS the timeout period. --#: stdio-common/../sysdeps/gnu/errlist.c:445 -+#: stdio-common/../sysdeps/gnu/errlist.c:446 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:175 - msgid "Connection timed out" - msgstr "Èasový limit pre spojenie vypr¹al" - --#: stdio-common/../sysdeps/unix/siglist.c:44 --#: sysdeps/unix/sysv/linux/siglist.h:38 -+#: stdio-common/../sysdeps/unix/siglist.c:45 sysdeps/generic/siglist.h:45 - msgid "Continued" - msgstr "Pokraèovanie" - --#: iconv/iconv_prog.c:66 -+#: iconv/iconv_prog.c:69 - msgid "Convert encoding of given files from one encoding to another." - msgstr "Konverzia kódovania zadaných súborov na iné." - --#: db2/makedb.c:58 --msgid "Convert key to lower case" --msgstr "Zmeni» kµúè na malé písmená" -- --#: catgets/gencat.c:236 db2/makedb.c:242 elf/sprof.c:359 --#: iconv/iconv_prog.c:294 locale/programs/locale.c:267 --#: locale/programs/localedef.c:403 nscd/nscd.c:223 nss/getent.c:65 --#: posix/getconf.c:624 -+#: catgets/gencat.c:246 elf/ldconfig.c:264 elf/sprof.c:355 -+#: iconv/iconv_prog.c:351 locale/programs/locale.c:269 -+#: locale/programs/localedef.c:311 nscd/nscd.c:287 nscd/nscd_nischeck.c:90 -+#: nss/getent.c:63 posix/getconf.c:751 - #, c-format - msgid "" - "Copyright (C) %s Free Software Foundation, Inc.\n" -@@ -861,167 +1526,353 @@ - "Toto je voµne ¹íriteµný software; pre podmienky kopírovania pozri\n" - "zdrojový kód.Na software nie je poskytovaná ®IADNA záruka.\n" - --#: nscd/nscd_conf.c:167 -+#: nscd/nscd_conf.c:166 - #, c-format - msgid "Could not create log file \"%s\"" - msgstr "Nie je mo¾né vytvori» ¾urnálový súbor \"%s\"" - --#: catgets/gencat.c:107 -+#: catgets/gencat.c:112 - msgid "Create C header file NAME containing symbol definitions" - msgstr "Vytvori» C hlavièkový súbor NÁZOV obsahujúci definície symbolov" - --#: locale/programs/localedef.c:103 -+#: locale/programs/localedef.c:102 -+msgid "Create old-style tables" -+msgstr "Vytvori» tabuµky na starý spôsob" -+ -+#: locale/programs/localedef.c:101 - msgid "Create output even if warning messages were issued" - msgstr "Vytvori» výstupný súbor aj pri výskyte varovaní" - --#: db2/makedb.c:68 --msgid "Create simple DB database from textual input." --msgstr "Vytvorenie jednoduchej DB databázy z textového vstupu." -- --#: nis/nis_print.c:322 -+#: nis/nis_print.c:326 - #, c-format - msgid "Creation Time : %s" - msgstr "Èas vytvorenia : %s" - --#: nis/nss_nisplus/nisplus-publickey.c:89 --#: nis/nss_nisplus/nisplus-publickey.c:159 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:48 -+msgid "Cross-device link" -+msgstr "Odkaz medzi zariadeniami" -+ -+#: malloc/memusagestat.c:67 -+msgid "DATAFILE [OUTFILE]" -+msgstr "DÁTOVÝ_SÚBOR [VÝSTUPNÝ_SÚBOR]" -+ -+#: nis/nss_nisplus/nisplus-publickey.c:96 -+#: nis/nss_nisplus/nisplus-publickey.c:172 - #, c-format - msgid "DES entry for netname %s not unique\n" - msgstr "DES záznam pre sie»ový názov %s nie je jednoznaèný\n" - --#: nis/nis_print.c:111 -+#: nis/nis_print.c:112 - msgid "DIRECTORY\n" - msgstr "ADRESÁR\n" - --#: nis/nis_print.c:41 -+#: nis/nis_print.c:42 - msgid "DNANS" - msgstr "DNANS" - --#: nis/nis_print.c:37 -+#: nis/nis_print.c:38 - msgid "DNS" - msgstr "DNS" - --#: nis/nis_error.c:51 -+#: elf/dl-open.c:189 -+msgid "DST not allowed in SUID/SGID programs" -+msgstr "DST nie je pre SUID/SGID programy povolené" -+ -+#: elf/dl-error.c:71 -+msgid "DYNAMIC LINKER BUG!!!" -+msgstr "CHYBA V DYNAMICKOM LINKERI!!!" -+ -+#: nis/nis_error.c:52 - msgid "Database for table does not exist" - msgstr "Databáza pre tabuµku neexistuje" - --#: nis/ypclnt.c:795 -+#: nis/ypclnt.c:818 - msgid "Database is busy" - msgstr "Databáza je pou¾ívaná" - --#: nis/nis_print.c:225 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:75 -+msgid "Deadlock situation detected/avoided" -+msgstr "Bol detekovaný a znemo¾nený deadlock" -+ -+#: nis/nis_print.c:226 - msgid "Default Access rights :\n" - msgstr "Implicitné príst. práva :\n" - - #. TRANS No default destination address was set for the socket. You get this - #. TRANS error when you try to transmit data over a connectionless socket, - #. TRANS without first specifying a destination for the data with @code{connect}. --#: stdio-common/../sysdeps/gnu/errlist.c:429 -+#: stdio-common/../sysdeps/gnu/errlist.c:430 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:126 - msgid "Destination address required" - msgstr "Je potrebné zada» cieµovú hodnotu" - --#: stdio-common/../sysdeps/gnu/errlist.c:650 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:46 -+msgid "Device busy" -+msgstr "Zariadenie je pou¾ívané" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:669 - msgid "Device not a stream" - msgstr "Zariadenie nie je prúd" - --#. TRANS No such device or address. The system tried to use the device --#. TRANS represented by a file you specified, and it couldn't find the device. --#. TRANS This can mean that the device file was installed incorrectly, or that --#. TRANS the physical device is missing or not correctly attached to the --#. TRANS computer. --#: stdio-common/../sysdeps/gnu/errlist.c:61 --msgid "Device not configured" --msgstr "Zariadenie nie je nakonfigurované" -- - #. TRANS Resource busy; a system resource that can't be shared is already in use. - #. TRANS For example, if you try to delete a file that is the root of a currently - #. TRANS mounted filesystem, you get this error. --#: stdio-common/../sysdeps/gnu/errlist.c:128 -+#: stdio-common/../sysdeps/gnu/errlist.c:129 - msgid "Device or resource busy" - msgstr "Zariadenie alebo iný zdroj je pou¾ívané" - --#: nis/nis_print.c:179 -+#: nis/nis_print.c:180 - #, c-format - msgid "Diffie-Hellmann (%d bits)\n" - msgstr "Diffie-Hellmann (%d bitov)\n" - --#: nis/nis_print.c:315 -+#: nis/nis_print.c:318 - #, c-format - msgid "Directory : %s\n" - msgstr "Adresár : %s\n" - - #. TRANS Directory not empty, where an empty directory was expected. Typically, - #. TRANS this error occurs when you are trying to delete a directory. --#: stdio-common/../sysdeps/gnu/errlist.c:480 -+#: stdio-common/../sysdeps/gnu/errlist.c:481 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:123 - msgid "Directory not empty" - msgstr "Adresár nie je prázdny" - --#. TRANS The user's disk quota was exceeded. --#: stdio-common/../sysdeps/gnu/errlist.c:498 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:79 - msgid "Disc quota exceeded" - msgstr "Disková kvóta prekroèená" - --#: nscd/nscd.c:80 -+#. TRANS The user's disk quota was exceeded. -+#: stdio-common/../sysdeps/gnu/errlist.c:499 -+msgid "Disk quota exceeded" -+msgstr "Disková kvóta prekroèená" -+ -+#: nscd/nscd.c:86 - msgid "Do not fork and display messages on the current tty" - msgstr "Nespú¹»a» samostatný proces a zobrazova» správy na aktuálnom termináli" - --#: db2/makedb.c:61 --msgid "Do not print messages while building database" --msgstr "Poèas tvorby databázy nevypisova» správy" -- --#: catgets/gencat.c:109 -+#: catgets/gencat.c:114 - msgid "Do not use existing catalog, force new output file" - msgstr "Nepou¾íva» existujúci katalóg, vnúti» nový výstupný súbor" - --#: nis/ypclnt.c:841 -+#: nis/ypclnt.c:864 - msgid "Domain not bound" - msgstr "Doména nie je pripojená" - --#: stdio-common/../sysdeps/unix/siglist.c:32 --#: sysdeps/unix/sysv/linux/siglist.h:53 -+#: elf/ldconfig.c:129 -+msgid "Don't build cache" -+msgstr "Nevytvori» cache" -+ -+#: elf/ldconfig.c:130 -+msgid "Don't generate links" -+msgstr "Negenerova» odkazy" -+ -+#: debug/pcprofiledump.c:56 -+msgid "Dump information generated by PC profiling." -+msgstr "Vypísa» informáciu získanú profilovaním PC." -+ -+#: elf/dl-load.c:1290 -+msgid "ELF file ABI version invalid" -+msgstr "Neplatná verzia ABI ELF súboru" -+ -+#: elf/dl-load.c:1287 -+msgid "ELF file OS ABI invalid" -+msgstr "Neplatný OS ABI ELF súboru" -+ -+#: elf/dl-load.c:1296 -+msgid "ELF file version does not match current one" -+msgstr "Verzia súboru ELF sa nezhoduje s aktuálnou" -+ -+#: elf/dl-load.c:1283 -+msgid "ELF file version ident does not match current one" -+msgstr "Identifikácia verzie ELF súboru sa nezhoduje s aktuálnou" -+ -+#: elf/dl-load.c:1307 -+msgid "ELF file's phentsize not the expected size" -+msgstr "phentsize ELF súboru nie je oèakávaná" -+ -+#: elf/dl-load.c:876 -+msgid "ELF load command address/offset not properly aligned" -+msgstr "ELF zavádzacia adresa/posunutie nie je správne zarovnaná" -+ -+#: elf/dl-load.c:873 -+msgid "ELF load command alignment not page-aligned" -+msgstr "ELF zarovnanie príkazu nie je zarovnané na stránku" -+ -+#: stdio-common/../sysdeps/unix/siglist.c:33 sysdeps/generic/siglist.h:60 - msgid "EMT trap" - msgstr "EMT preru¹enie" - --#: nis/nis_print.c:120 -+#: nis/nis_print.c:121 - msgid "ENTRY\n" - msgstr "ZÁZNAM\n" - --#: nis/nis_print.c:299 -+#: nis/nis_print.c:300 - msgid "Encrypted data\n" - msgstr "©ifrované údaje\n" - --#: nis/nis_error.c:52 --msgid "Entry/Table type mismatch" -+#: nis/nis_error.c:53 -+msgid "Entry/table type mismatch" - msgstr "Nesúlad záznamu s tabuµkou" - --#: nis/nis_error.c:56 -+#: nss/getent.c:127 nss/getent.c:292 -+#, c-format -+msgid "Enumeration not supported on %s\n" -+msgstr "Enumerácia %s nie je podporované\n" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:30 -+msgid "Error 0" -+msgstr "Chyba 0" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:130 -+msgid "Error 100" -+msgstr "Chyba 100" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:131 -+msgid "Error 101" -+msgstr "Chyba 101" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:132 -+msgid "Error 102" -+msgstr "Chyba 102" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:133 -+msgid "Error 103" -+msgstr "Chyba 103" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:134 -+msgid "Error 104" -+msgstr "Chyba 104" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:135 -+msgid "Error 105" -+msgstr "Chyba 105" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:136 -+msgid "Error 106" -+msgstr "Chyba 106" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:137 -+msgid "Error 107" -+msgstr "Chyba 107" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:138 -+msgid "Error 108" -+msgstr "Chyba 108" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:139 -+msgid "Error 109" -+msgstr "Chyba 109" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:140 -+msgid "Error 110" -+msgstr "Chyba 110" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:141 -+msgid "Error 111" -+msgstr "Chyba 111" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:142 -+msgid "Error 112" -+msgstr "Chyba 112" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:143 -+msgid "Error 113" -+msgstr "Chyba 113" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:144 -+msgid "Error 114" -+msgstr "Chyba 114" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:145 -+msgid "Error 115" -+msgstr "Chyba 115" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:146 -+msgid "Error 116" -+msgstr "Chyba 116" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:147 -+msgid "Error 117" -+msgstr "Chyba 117" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:148 -+msgid "Error 118" -+msgstr "Chyba 118" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:149 -+msgid "Error 119" -+msgstr "Chyba 119" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:166 -+msgid "Error 136" -+msgstr "Chybe 136" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:172 -+msgid "Error 142" -+msgstr "Chyba 142" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:88 -+msgid "Error 58" -+msgstr "Chyba 58" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:89 -+msgid "Error 59" -+msgstr "Chyba 59" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:102 -+msgid "Error 72" -+msgstr "Chyba 72" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:103 -+msgid "Error 73" -+msgstr "Chyba 73" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:105 -+msgid "Error 75" -+msgstr "Chyba 75" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:106 -+msgid "Error 76" -+msgstr "Chyba 76" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:121 -+msgid "Error 91" -+msgstr "Chyba 91" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:122 -+msgid "Error 92" -+msgstr "Chyba 92" -+ -+#: nis/nis_error.c:57 - msgid "Error in RPC subsystem" - msgstr "Chyba v RPC subsystéme" - --#: nis/nis_error.c:66 -+#: nis/nis_error.c:67 - msgid "Error in accessing NIS+ cold start file. Is NIS+ installed?" - msgstr "Chyba pri prístupe NIS+ súboru studeného ¹tartu. Je NIS+ nain¹talované?" - --#: string/../sysdeps/mach/_strerror.c:56 --#: sysdeps/mach/hurd/mips/dl-machine.c:67 -+#: string/../sysdeps/mach/_strerror.c:58 -+#: sysdeps/mach/hurd/mips/dl-machine.c:68 - msgid "Error in unknown error system: " - msgstr "Chyba v neznámom chybovom systéme: " - --#: nis/nis_error.c:59 -+#: nis/nis_error.c:60 - msgid "Error while talking to callback proc" - msgstr "Chyba poèas komunikácie s procedúrou spätného volania" - --#: inet/ruserpass.c:161 -+#: inet/ruserpass.c:181 - msgid "Error: .netrc file is readable by others." - msgstr "Chyba: súbor .netrc je èitateµný pre ostatných." - --#: stdio-common/../sysdeps/gnu/errlist.c:710 -+#: stdio-common/../sysdeps/gnu/errlist.c:729 - msgid "Exchange full" - msgstr "Stredisko plné" - - #. TRANS Invalid executable file format. This condition is detected by the - #. TRANS @code{exec} functions; see @ref{Executing a File}. --#: stdio-common/../sysdeps/gnu/errlist.c:75 -+#: stdio-common/../sysdeps/gnu/errlist.c:76 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:38 - msgid "Exec format error" - msgstr "Chybný formát spustiteµného súboru" - -@@ -1029,75 +1880,113 @@ - msgid "FATAL: system does not define `_POSIX2_LOCALEDEF'" - msgstr "FATÁLNA CHYBA: systém nedefinuje `_POSIX2_LOCALEDEF'" - --#: locale/programs/localedef.c:99 -+#: locale/programs/localedef.c:97 - msgid "FILE contains mapping from symbolic names to UCS4 values" - msgstr "SÚBOR obsahuje mapovanie symbolických názvov na UCS4 hodnoty" - --#: sunrpc/clnt_perr.c:287 -+#: sunrpc/clnt_perr.c:356 - msgid "Failed (unspecified error)" - msgstr "Zlyhalo (ne¹pecifikovaná chyba)" - --#: stdio-common/../sysdeps/gnu/errlist.c:762 -+#: nscd/nscd.c:400 -+#, c-format -+msgid "Failed to look up user '%s' to run server as" -+msgstr "Nepodarilo sa vyhµada» pou¾ívateµa '%s', pod ktorým má server be¾a»" -+ -+#: elf/readlib.c:108 -+#, c-format -+msgid "File %s is too small, not checked." -+msgstr "Súbor %s je príli¹ krátky, neskontrolovaný." -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:781 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:111 - msgid "File descriptor in bad state" - msgstr "Deskriptor súboru v chybnom stave" - - #. TRANS File exists; an existing file was specified in a context where it only - #. TRANS makes sense to specify a new file. --#: stdio-common/../sysdeps/gnu/errlist.c:134 -+#: stdio-common/../sysdeps/gnu/errlist.c:135 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:47 - msgid "File exists" - msgstr "Súbor existuje" - --#: stdio-common/../sysdeps/gnu/errlist.c:726 -+#: elf/cache.c:124 elf/cache.c:134 -+msgid "File is not a cache file.\n" -+msgstr "Súbor nie je cache súborom.\n" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:86 -+msgid "File locking deadlock" -+msgstr "Vzájomné zablokovanie pri zamykaní súboru" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:745 - msgid "File locking deadlock error" - msgstr "Vzájomné zablokovanie pri zamykaní súboru" - - #. TRANS Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for - #. TRANS Files}) or host name too long (in @code{gethostname} or - #. TRANS @code{sethostname}; @pxref{Host Identification}). --#: stdio-common/../sysdeps/gnu/errlist.c:464 -+#: stdio-common/../sysdeps/gnu/errlist.c:465 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:108 - msgid "File name too long" - msgstr "Meno súboru príli¹ dlhé" - --#: stdio-common/../sysdeps/unix/siglist.c:50 --#: sysdeps/unix/sysv/linux/siglist.h:44 -+#: stdio-common/../sysdeps/unix/siglist.c:51 sysdeps/generic/siglist.h:51 - msgid "File size limit exceeded" - msgstr "Prekroèený limit då¾ky súboru" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:53 -+msgid "File table overflow" -+msgstr "Preteèenie tabuµky súborov" -+ - #. TRANS File too big; the size of a file would be larger than allowed by the system. --#: stdio-common/../sysdeps/gnu/errlist.c:202 -+#: stdio-common/../sysdeps/gnu/errlist.c:203 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:57 - msgid "File too large" - msgstr "Súbor je príli¹ veµký" - --#: nis/nis_error.c:37 --msgid "First/Next chain broken" --msgstr "Chyba zre»azenia prvý/ïal¹í" -+#: intl/tst-gettext2.c:36 -+msgid "First string for testing." -+msgstr "Prvý testovací re»azec." -+ -+#: nis/nis_error.c:38 -+msgid "First/next chain broken" -+msgstr "Preru¹ené zre»azenie prvý/ïal¹í" - --#: stdio-common/../sysdeps/unix/siglist.c:33 --#: sysdeps/unix/sysv/linux/siglist.h:28 -+#: stdio-common/../sysdeps/unix/siglist.c:34 sysdeps/generic/siglist.h:35 - msgid "Floating point exception" - msgstr "Výnimka pohyblivej rádovej èiarky" - --#: nis/nis_error.c:67 -+#: elf/ldconfig.c:136 -+msgid "Format to use: new, old or compat (default)" -+msgstr "Pou¾i» formát: nový (new), starý (old) alebo kompatibilný (compat - prednastavené)" -+ -+#: nis/nis_error.c:68 - msgid "Full resync required for directory" - msgstr "Adresár vy¾aduje úplnú resynchronizáciu" - --#. TRANS Function not implemented. Some functions have commands or options defined --#. TRANS that might not be supported in all implementations, and this is the kind --#. TRANS of error you get if you request them and they are not supported. --#: stdio-common/../sysdeps/gnu/errlist.c:573 -+#. TRANS Function not implemented. This indicates that the function called is -+#. TRANS not implemented at all, either in the C library itself or in the -+#. TRANS operating system. When you get this error, you can be sure that this -+#. TRANS particular function will always fail with @code{ENOSYS} unless you -+#. TRANS install a new version of the C library or the operating system. -+#: stdio-common/../sysdeps/gnu/errlist.c:576 - msgid "Function not implemented" - msgstr "Funkcia nie je implementovaná" - --#: nis/nis_print.c:114 -+#: nis/nis_print.c:115 - msgid "GROUP\n" - msgstr "SKUPINA\n" - --#: argp/argp-help.c:231 -+#: argp/argp-help.c:230 - #, c-format - msgid "Garbage in ARGP_HELP_FMT: %s" - msgstr "Nezmysly v ARGP_HELP_FMT: %s" - --#: catgets/gencat.c:115 -+#: malloc/memusagestat.c:64 -+msgid "Generate graphic from memory profiling data" -+msgstr "Generova» graf z údajov profilu pamäti" -+ -+#: catgets/gencat.c:120 - msgid "" - "Generate message catalog.\\vIf INPUT-FILE is -, input is read from standard input. If OUTPUT-FILE\n" - "is -, output is written to standard output.\n" -@@ -1105,123 +1994,134 @@ - "Tvorba katalógu správ.\\vAk je VSTUPNÝ_SÚBOR -, vstup je naèítaný zo ¹tandardného vstupu. Ak je\n" - "VÝSTUPNÝ_SÚBOR -, výstup je zapísaný na ¹tandardný výstup.\n" - --#: nis/nis_error.c:36 -+#: malloc/memusagestat.c:55 -+msgid "Generate output linear to time (default is linear to number of function calls)" -+msgstr "Generova» výstup lineárny s èasom (prednastavený je lineárne k poètu volaní funkcií)" -+ -+#: elf/ldconfig.c:128 -+msgid "Generate verbose messages" -+msgstr "Vypísova» podrobnej¹ie správy" -+ -+#: nis/nis_error.c:37 - msgid "Generic system error" - msgstr "V¹eobecná chyba systému" - --#: locale/programs/locale.c:75 -+#: locale/programs/locale.c:77 - msgid "Get locale-specific information." - msgstr "Získa» informáciu ¹pecifickú pre národné prostredie." - --#: argp/argp-parse.c:88 -+#: argp/argp-parse.c:94 - msgid "Give a short usage message" - msgstr "Vypísa» krátky návod na pou¾itie" - --#: argp/argp-parse.c:87 -+#: argp/argp-parse.c:93 - msgid "Give this help list" - msgstr "Vypísa» túto pomoc" - - #. TRANS This error code has no purpose. --#: stdio-common/../sysdeps/gnu/errlist.c:618 -+#: stdio-common/../sysdeps/gnu/errlist.c:637 - msgid "Gratuitous error" - msgstr "Vïaèná chyba" - --#: nis/nis_print.c:317 -+#: nis/nis_print.c:320 - #, c-format - msgid "Group : %s\n" - msgstr "Skupina : %s\n" - --#: nis/nis_print.c:248 -+#: nis/nis_print.c:249 - msgid "Group Flags :" - msgstr "Príznaky skupiny :" - --#: nis/nis_print_group_entry.c:113 -+#: nis/nis_print_group_entry.c:115 - #, c-format - msgid "Group entry for \"%s.%s\" group:\n" - msgstr "Záznam skupiny pre skupinu \"%s.%s\":\n" - --#: argp/argp-parse.c:91 -+#: argp/argp-parse.c:97 - msgid "Hang for SECS seconds (default 3600)" - msgstr "Poèka» SECS sekúnd (implicitne 3600)" - --#: stdio-common/../sysdeps/unix/siglist.c:26 --#: sysdeps/unix/sysv/linux/siglist.h:22 -+#: stdio-common/../sysdeps/unix/siglist.c:27 sysdeps/generic/siglist.h:29 - msgid "Hangup" - msgstr "Zavesenie" - --#: nscd/grpcache.c:238 -+#: nscd/grpcache.c:253 - #, c-format - msgid "Haven't found \"%d\" in group cache!" - msgstr "Nenájdené \"%d\" v cache skupín!" - --#: nscd/pwdcache.c:235 -+#: nscd/pwdcache.c:249 - #, c-format - msgid "Haven't found \"%d\" in password cache!" - msgstr "Nenájdené \"%d\" v cache hesiel!" - --#: nscd/grpcache.c:210 -+#: nscd/grpcache.c:214 - #, c-format - msgid "Haven't found \"%s\" in group cache!" - msgstr "Nenájdené \"%s\" v cache skupín!" - --#: nscd/hstcache.c:297 nscd/hstcache.c:328 nscd/hstcache.c:359 --#: nscd/hstcache.c:390 -+#: nscd/hstcache.c:299 nscd/hstcache.c:341 nscd/hstcache.c:386 -+#: nscd/hstcache.c:430 - #, c-format - msgid "Haven't found \"%s\" in hosts cache!" - msgstr "Nenájdené \"%s\" v cache poèítaèov!" - --#: nscd/pwdcache.c:207 -+#: nscd/pwdcache.c:210 - #, c-format - msgid "Haven't found \"%s\" in password cache!" - msgstr "Nenájdené \"%s\" v cache hesiel!" - - #. TRANS The remote host for a requested network connection is down. --#: stdio-common/../sysdeps/gnu/errlist.c:469 -+#: stdio-common/../sysdeps/gnu/errlist.c:470 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:177 - msgid "Host is down" - msgstr "Poèítaè je vypnutý" - --#: resolv/herror.c:75 -+#: resolv/herror.c:69 - msgid "Host name lookup failure" - msgstr "Nepodarilo sa nájs» meno poèítaèa" - --#: stdio-common/../sysdeps/unix/siglist.c:48 --#: sysdeps/unix/sysv/linux/siglist.h:42 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:35 -+msgid "I/O error" -+msgstr "V/V chyba" -+ -+#: stdio-common/../sysdeps/unix/siglist.c:49 sysdeps/generic/siglist.h:49 - msgid "I/O possible" - msgstr "V/V mo¾ný" - --#: db2/makedb.c:71 --msgid "" --"INPUT-FILE OUTPUT-FILE\n" --"-o OUTPUT-FILE INPUT-FILE\n" --"-u INPUT-FILE" --msgstr "" --"VSTUPNÝ_SÚBOR VÝSTUPNÝ_SÚBOR\n" --"-o VÝSTUPNÝ_SÚBOR VSTUPNÝ_SÚBOR\n" --"-u VSTUPNÝ_SÚBOR" -- --#: stdio-common/../sysdeps/unix/siglist.c:31 -+#: stdio-common/../sysdeps/unix/siglist.c:32 - msgid "IOT trap" - msgstr "IOT preru¹enie" - --#: nis/nis_print.c:35 -+#: nis/nis_print.c:36 - msgid "IVY" - msgstr "IVY" - --#: stdio-common/../sysdeps/gnu/errlist.c:626 -+#: stdio-common/../sysdeps/gnu/errlist.c:645 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:66 - msgid "Identifier removed" - msgstr "Identifikátor odstránený" - --#: stdio-common/../sysdeps/unix/siglist.c:29 --#: sysdeps/unix/sysv/linux/siglist.h:25 -+#: elf/ldconfig.c:525 -+#, c-format -+msgid "Ignored file %s since it is not a regular file." -+msgstr "Súbor %s ignorovaný, keï¾e nie je regulérnym súborom." -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:118 -+msgid "Illegal byte sequence" -+msgstr "Neprípustná sekvencia bajtov" -+ -+#: stdio-common/../sysdeps/unix/siglist.c:30 sysdeps/generic/siglist.h:32 - msgid "Illegal instruction" - msgstr "Neprípustná in¹trukcia" - --#: nis/nis_error.c:61 -+#: nis/nis_error.c:62 - msgid "Illegal object type for operation" - msgstr "Neprípustný typ objektu pre operáciu" - - #. TRANS Invalid seek operation (such as on a pipe). --#: stdio-common/../sysdeps/gnu/errlist.c:213 -+#: stdio-common/../sysdeps/gnu/errlist.c:214 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:59 - msgid "Illegal seek" - msgstr "Neprípustné nastavenie pozície" - -@@ -1230,13 +2130,14 @@ - #. TRANS - #. TRANS On some systems @code{chmod} returns this error if you try to set the - #. TRANS sticky bit on a non-directory file; @pxref{Setting Permissions}. --#: stdio-common/../sysdeps/gnu/errlist.c:556 -+#: stdio-common/../sysdeps/gnu/errlist.c:557 - msgid "Inappropriate file type or format" - msgstr "Nevhodný typ alebo formát súboru" - - #. TRANS Inappropriate I/O control operation, such as trying to set terminal - #. TRANS modes on an ordinary file. --#: stdio-common/../sysdeps/gnu/errlist.c:188 -+#: stdio-common/../sysdeps/gnu/errlist.c:189 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:55 - msgid "Inappropriate ioctl for device" - msgstr "Nevhodný ioctl pre toto zariadenie" - -@@ -1246,41 +2147,45 @@ - #. TRANS error because functions such as @code{read} and @code{write} translate - #. TRANS it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control}, - #. TRANS for information on process groups and these signals. --#: stdio-common/../sysdeps/gnu/errlist.c:589 -+#: stdio-common/../sysdeps/gnu/errlist.c:608 - msgid "Inappropriate operation for background process" - msgstr "Nevhodná operácia pre proces v pozadí" - --#: sysdeps/unix/sysv/linux/siglist.h:62 -+#: sysdeps/generic/siglist.h:69 - msgid "Information request" - msgstr "®iados» o informáciu" - --#: iconv/iconv_prog.c:57 -+#: iconv/iconv_prog.c:58 - msgid "Information:" - msgstr "Informácia:" - --#: locale/programs/localedef.c:94 -+#: locale/programs/localedef.c:92 - msgid "Input Files:" - msgstr "Vstupné súbory:" - --#: iconv/iconv_prog.c:54 -+#: elf/ldconfig.c:698 elf/readlib.c:92 -+#, c-format -+msgid "Input file %s not found.\n" -+msgstr "Vstupný súbor %s nebol nájdený.\n" -+ -+#: iconv/iconv_prog.c:55 - msgid "Input/Output format specification:" - msgstr "©pecifikácia vstupno/výstupného formátu:" - - #. TRANS Input/output error; usually used for physical read or write errors. --#: stdio-common/../sysdeps/gnu/errlist.c:52 -+#: stdio-common/../sysdeps/gnu/errlist.c:53 - msgid "Input/output error" - msgstr "Chyba vstupu/výstupu" - --#: nis/ypclnt.c:775 -+#: nis/ypclnt.c:798 - msgid "Internal NIS error" - msgstr "Interná chyba NIS" - --#: nis/ypclnt.c:839 -+#: nis/ypclnt.c:862 - msgid "Internal ypbind error" - msgstr "Interná chyba ypbind" - --#: stdio-common/../sysdeps/unix/siglist.c:27 --#: sysdeps/unix/sysv/linux/siglist.h:23 -+#: stdio-common/../sysdeps/unix/siglist.c:28 sysdeps/generic/siglist.h:30 - msgid "Interrupt" - msgstr "Preru¹enie" - -@@ -1291,231 +2196,263 @@ - #. TRANS You can choose to have functions resume after a signal that is handled, - #. TRANS rather than failing with @code{EINTR}; see @ref{Interrupted - #. TRANS Primitives}. --#: stdio-common/../sysdeps/gnu/errlist.c:47 -+#: stdio-common/../sysdeps/gnu/errlist.c:48 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:34 - msgid "Interrupted system call" - msgstr "Preru¹ené volanie systému" - --#: stdio-common/../sysdeps/gnu/errlist.c:666 -+#: stdio-common/../sysdeps/gnu/errlist.c:685 - msgid "Interrupted system call should be restarted" - msgstr "Preru¹ené volanie systému by malo by» znovu spustené" - --#: nis/nis_error.c:44 --msgid "Invalid Object for operation" --msgstr "Neplatný objekt pre operáciu" -- - #. TRANS Invalid argument. This is used to indicate various kinds of problems - #. TRANS with passing the wrong argument to a library function. --#: stdio-common/../sysdeps/gnu/errlist.c:164 -+#: stdio-common/../sysdeps/gnu/errlist.c:165 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:52 - msgid "Invalid argument" - msgstr "Neprípustný argument" - --#: posix/regex.c:1018 -+#: posix/regex.c:1102 - msgid "Invalid back reference" - msgstr "Neprípustný spätný odkaz" - --#: posix/regex.c:1016 -+#: posix/regex.c:1096 - msgid "Invalid character class name" - msgstr "Neprípustný názov triedy znakov" - --#: sunrpc/clnt_perr.c:275 -+#: sunrpc/clnt_perr.c:332 - msgid "Invalid client credential" - msgstr "Neplatné oprávnenie klienta" - --#: sunrpc/clnt_perr.c:279 -+#: sunrpc/clnt_perr.c:340 - msgid "Invalid client verifier" - msgstr "Neplatné overenie klienta" - --#: posix/regex.c:1015 -+#: posix/regex.c:1093 - msgid "Invalid collation character" - msgstr "Neprípustný znak triedenia" - --#: posix/regex.c:1022 -+#: posix/regex.c:1114 - msgid "Invalid content of \\{\\}" - msgstr "Neprípustný obsah \\{\\}" - - #. TRANS An attempt to make an improper link across file systems was detected. - #. TRANS This happens not only when you use @code{link} (@pxref{Hard Links}) but - #. TRANS also when you rename a file with @code{rename} (@pxref{Renaming Files}). --#: stdio-common/../sysdeps/gnu/errlist.c:141 -+#: stdio-common/../sysdeps/gnu/errlist.c:142 - msgid "Invalid cross-device link" - msgstr "Neprípustný odkaz medzi zariadeniami" - --#: stdio-common/../sysdeps/gnu/errlist.c:702 -+#: stdio-common/../sysdeps/gnu/errlist.c:721 - msgid "Invalid exchange" - msgstr "Neprípustná výmena" - -+#: nis/nis_error.c:45 -+msgid "Invalid object for operation" -+msgstr "Neplatný objekt pre operáciu" -+ - #. TRANS While decoding a multibyte character the function came along an invalid - #. TRANS or an incomplete sequence of bytes or the given wide character is invalid. --#: stdio-common/../sysdeps/gnu/errlist.c:579 -+#: stdio-common/../sysdeps/gnu/errlist.c:598 - msgid "Invalid or incomplete multibyte or wide character" - msgstr "Neprípustný alebo nekompletný viacbajtový alebo ¹iroký znak" - --#: posix/regex.c:1025 -+#: posix/regex.c:1123 - msgid "Invalid preceding regular expression" - msgstr "Neprípustný predchádzajúci regulérny výraz" - --#: posix/regex.c:1023 -+#: posix/regex.c:1117 - msgid "Invalid range end" - msgstr "Neprípustný koniec rozsahu" - --#: posix/regex.c:1014 -+#: posix/regex.c:1090 - msgid "Invalid regular expression" - msgstr "Neprípustný regulérny výraz" - --#: stdio-common/../sysdeps/gnu/errlist.c:718 -+#: stdio-common/../sysdeps/gnu/errlist.c:737 - msgid "Invalid request code" - msgstr "Neprípustný kód ¾iadosti" - --#: stdio-common/../sysdeps/gnu/errlist.c:706 -+#: stdio-common/../sysdeps/gnu/errlist.c:725 - msgid "Invalid request descriptor" - msgstr "Neprípustný deskriptor ¾iadosti" - --#: sunrpc/clnt_perr.c:285 -+#: sunrpc/clnt_perr.c:352 - msgid "Invalid server verifier" - msgstr "Neplatné overenie servera" - --#: stdio-common/../sysdeps/gnu/errlist.c:722 -+#: stdio-common/../sysdeps/gnu/errlist.c:741 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:85 - msgid "Invalid slot" - msgstr "Neplatná priehradka" - -+#: nscd/nscd.c:91 -+msgid "Invalidate the specified cache" -+msgstr "Zneplatni» zadanú cache" -+ - #. TRANS File is a directory; you cannot open a directory for writing, - #. TRANS or create or remove hard links to it. --#: stdio-common/../sysdeps/gnu/errlist.c:158 -+#: stdio-common/../sysdeps/gnu/errlist.c:159 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:51 - msgid "Is a directory" - msgstr "Je adresár" - --#: stdio-common/../sysdeps/gnu/errlist.c:806 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:169 -+msgid "Is a name file" -+msgstr "Je súbor názvu" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:825 - msgid "Is a named type file" --msgstr "Je pomenovaný súbor" -+msgstr "Je pomenovaný súbor typu" - --#: nis/nis_print.c:187 -+#: nis/nis_print.c:188 - msgid "Kerberos.\n" - msgstr "Kerberos.\n" - --#: stdio-common/../sysdeps/unix/siglist.c:34 --#: sysdeps/unix/sysv/linux/siglist.h:29 -+#: stdio-common/../sysdeps/unix/siglist.c:35 sysdeps/generic/siglist.h:36 - msgid "Killed" - msgstr "Zabitý" - --#: nis/nis_print.c:123 -+#: nis/nis_print.c:124 - msgid "LINK\n" - msgstr "ODKAZ\n" - --#: nis/nis_local_names.c:125 -+#: nis/nis_local_names.c:126 - #, c-format - msgid "LOCAL entry for UID %d in directory %s not unique\n" - msgstr "LOCAL záznam pre UID %d v adresári %s nie je jednoznaèný\n" - --#: stdio-common/../sysdeps/gnu/errlist.c:698 -+#: stdio-common/../sysdeps/gnu/errlist.c:717 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:74 - msgid "Level 2 halted" - msgstr "Úroveò 2 zastavená" - --#: stdio-common/../sysdeps/gnu/errlist.c:674 -+#: stdio-common/../sysdeps/gnu/errlist.c:693 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:68 - msgid "Level 2 not synchronized" - msgstr "Úroveò 2 nie je synchronizovaná" - --#: stdio-common/../sysdeps/gnu/errlist.c:678 -+#: stdio-common/../sysdeps/gnu/errlist.c:697 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:69 - msgid "Level 3 halted" - msgstr "Úroveò 3 zastavená" - --#: stdio-common/../sysdeps/gnu/errlist.c:682 -+#: stdio-common/../sysdeps/gnu/errlist.c:701 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:70 - msgid "Level 3 reset" - msgstr "Úroveò 3 nastavená na východzie hodnoty" - --#: nis/nis_error.c:53 --msgid "Link Points to illegal name" --msgstr "Odkaz odkazuje na neprípustný názov" -- --#: stdio-common/../sysdeps/gnu/errlist.c:638 -+#: stdio-common/../sysdeps/gnu/errlist.c:657 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:97 - msgid "Link has been severed" - msgstr "Odkaz bol znièený" - --#: stdio-common/../sysdeps/gnu/errlist.c:686 -+#: stdio-common/../sysdeps/gnu/errlist.c:705 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:71 - msgid "Link number out of range" - msgstr "Èíslo odkazu mimo rozsahu" - --#: nis/nis_print.c:282 -+#: nis/nis_error.c:54 -+msgid "Link points to illegal name" -+msgstr "Odkaz odkazuje na neprípustný názov" -+ -+#: nis/nis_print.c:283 - msgid "Linked Object Type : " - msgstr "Typ odkazovaného objektu : " - --#: nis/nis_print.c:284 -+#: nis/nis_print.c:285 - #, c-format - msgid "Linked to : %s\n" - msgstr "Odkazuje na : %s\n" - --#: nis/ypclnt.c:787 -+#: nis/ypclnt.c:810 - msgid "Local domain name not set" - msgstr "Meno miestnej domény nie je nastavené" - --#: nis/ypclnt.c:777 -+#: nis/ypclnt.c:800 - msgid "Local resource allocation failure" - msgstr "Chyba pri pridelení miestnych zdrojov" - --#: stdio-common/../sysdeps/gnu/errlist.c:734 -+#: stdio-common/../sysdeps/gnu/errlist.c:753 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:94 - msgid "Machine is not on the network" - msgstr "Poèítaè nie je zapojený v sieti" - --#: nis/nis_error.c:45 --msgid "Malformed Name, or illegal name" --msgstr "Chybne formované alebo neprípustný názov" -+#: nis/nis_error.c:46 -+msgid "Malformed name, or illegal name" -+msgstr "Chybne formovaný alebo neprípustný názov" - --#: argp/argp-help.c:1182 -+#: argp/argp-help.c:1185 - msgid "Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options." - msgstr "Povinné alebo voliteµné argumenty dlhých tvarov volieb sú povinné alebo voliteµné pre µubovoµné zodpovedajúce krátke voµby." - --#: nis/nis_print.c:168 -+#: elf/ldconfig.c:135 -+msgid "Manually link individual libraries." -+msgstr "Ruène linkova» jednotlivé kni¾nice." -+ -+#: nis/nis_print.c:169 - msgid "Master Server :\n" - msgstr "Hlavný server :\n" - --#: nis/nis_error.c:75 -+#: nis/nis_error.c:76 - msgid "Master server busy, full dump rescheduled." - msgstr "Hlavný server zaneprázdnený, úplný prenos preplánovaný." - --#: posix/../sysdeps/posix/gai_strerror.c:35 -+#: posix/../sysdeps/posix/gai_strerror.c:36 - msgid "Memory allocation failure" - msgstr "Pridelenie pamäti zlyhalo" - --#: posix/regex.c:1024 -+#: posix/regex.c:1120 - msgid "Memory exhausted" - msgstr "Pamä» vyèerpaná" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:82 -+msgid "Message tables full" -+msgstr "Plná tabuµka správ" -+ - #. TRANS The size of a message sent on a socket was larger than the supported - #. TRANS maximum size. --#: stdio-common/../sysdeps/gnu/errlist.c:317 -+#: stdio-common/../sysdeps/gnu/errlist.c:318 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:127 - msgid "Message too long" - msgstr "Príli¹ dlhá správa" - --#: nis/nis_error.c:57 -+#: nis/nis_error.c:58 - msgid "Missing or malformed attribute" - msgstr "Chýbajúci alebo chybne formovaný atribút" - --#: nis/nis_print.c:323 -+#: nis/nis_print.c:328 - #, c-format - msgid "Mod. Time : %s" - msgstr "Èas zmeny :%s" - --#: nis/nis_error.c:50 -+#: nis/nis_error.c:51 - msgid "Modification failed" - msgstr "Modifikácia zlyhala" - --#: nis/nis_error.c:63 -+#: nis/nis_error.c:64 - msgid "Modify operation failed" - msgstr "Operácia zmeny zlyhala" - --#: locale/programs/locale.c:68 -+#: locale/programs/locale.c:70 - msgid "Modify output format:" - msgstr "Modifikova» výstupný formát:" - --#: stdio-common/../sysdeps/gnu/errlist.c:630 -+#: stdio-common/../sysdeps/gnu/errlist.c:649 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:104 - msgid "Multihop attempted" - msgstr "Pokus o spojenie cez viac uzlov" - --#: catgets/gencat.c:106 catgets/gencat.c:110 db2/makedb.c:59 --#: locale/programs/localedef.c:115 nscd/nscd.c:77 -+#: nscd/nscd_conf.c:182 -+msgid "Must specify user name for server-user option" -+msgstr "Pre server-user voµbu je potrebné zada» meno pou¾ívateµa" -+ -+#: catgets/gencat.c:111 catgets/gencat.c:115 locale/programs/localedef.c:115 -+#: nscd/nscd.c:83 - msgid "NAME" - msgstr "NÁZOV" - --#: locale/programs/locale.c:78 -+#: locale/programs/locale.c:80 - msgid "" - "NAME\n" - "[-a|-m]" -@@ -1523,269 +2460,365 @@ - "NÁZOV\n" - "[-a|-m]" - --#: nis/nis_print.c:31 -+#: nis/nis_print.c:32 - msgid "NIS" - msgstr "NIS" - --#: nis/ypclnt.c:791 -+#: nis/ypclnt.c:814 - msgid "NIS client/server version mismatch - can't supply service" - msgstr "Rozdielne verzie NIS klienta a serveru - nie je mo¾né poskytnú» slu¾bu" - --#: nis/ypclnt.c:789 -+#: nis/ypclnt.c:812 - msgid "NIS map database is bad" - msgstr "Databáza máp NIS je chybná" - --#: nis/nis_error.c:68 -+#: nis/nis_error.c:69 - msgid "NIS+ operation failed" - msgstr "NIS+ operácia zlyhala" - --#: nis/nis_error.c:33 -+#: nis/nis_error.c:34 - msgid "NIS+ servers unreachable" - msgstr "NIS+ server nie je dostupný" - --#: nis/nis_error.c:69 -+#: nis/nis_error.c:70 - msgid "NIS+ service is unavailable or not installed" - msgstr "Slu¾ba NIS+ nie je dostupná alebo nain¹talovaná" - --#: nis/nis_print.c:108 -+#: nis/nis_print.c:109 - msgid "NO OBJECT\n" - msgstr "®IADNY OBJEKT\n" - --#: nscd/nscd.c:81 -+#: nscd/nscd.c:87 - msgid "NUMBER" - msgstr "POÈET" - --#: nis/nis_print.c:162 -+#: nis/nis_print.c:163 - #, c-format --msgid "Name : '%s'\n" --msgstr "Názov : '%s'\n" -+msgid "Name : `%s'\n" -+msgstr "Názov : `%s'\n" - --#: nscd/nscd.c:88 -+#: nscd/nscd.c:97 - msgid "Name Service Cache Daemon." - msgstr "Démon cache slu¾by názvov." - --#: nis/nis_error.c:40 -+#: nis/nis_error.c:41 - msgid "Name not served by this server" - msgstr "Názov nie je obsluhovaný týmto serverom" - --#: stdio-common/../sysdeps/gnu/errlist.c:758 -+#: stdio-common/../sysdeps/gnu/errlist.c:777 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:110 - msgid "Name not unique on network" - msgstr "Meno nie je v sieti jednoznaèné" - --#: posix/../sysdeps/posix/gai_strerror.c:37 -+#: posix/../sysdeps/posix/gai_strerror.c:38 - msgid "Name or service not known" - msgstr "Názov alebo slu¾ba neznáme" - --#: nis/nis_error.c:49 -+#: malloc/memusagestat.c:53 -+msgid "Name output file" -+msgstr "Výstupný súbor názvu" -+ -+#: nis/nis_error.c:50 - msgid "Name/entry isn't unique" - msgstr "Názov/záznam nie sú jednoznaèné" - --#: nis/nis_error.c:58 -+#: nis/nis_error.c:59 - msgid "Named object is not searchable" - msgstr "Zadaný objekt nie je prehµadávateµný" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:566 -+#: stdio-common/../sysdeps/gnu/errlist.c:567 - msgid "Need authenticator" - msgstr "Potrebuje overovací objekt" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:159 -+msgid "Network dropped connection because of reset" -+msgstr "Sie» zru¹ila spojenie kvôli resetu" -+ - #. TRANS A network connection was reset because the remote host crashed. --#: stdio-common/../sysdeps/gnu/errlist.c:389 -+#: stdio-common/../sysdeps/gnu/errlist.c:390 - msgid "Network dropped connection on reset" - msgstr "Sie» zru¹ila spojenie (problém so vzdialeným poèítaèom)" - - #. TRANS A socket operation failed because the network was down. --#: stdio-common/../sysdeps/gnu/errlist.c:378 -+#: stdio-common/../sysdeps/gnu/errlist.c:379 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:157 - msgid "Network is down" - msgstr "Sie» je nefunkèná" - - #. TRANS A socket operation failed because the subnet containing the remote host - #. TRANS was unreachable. --#: stdio-common/../sysdeps/gnu/errlist.c:384 -+#: stdio-common/../sysdeps/gnu/errlist.c:385 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:158 - msgid "Network is unreachable" - msgstr "Sie» nie je dostupná" - --#: stdio-common/../sysdeps/gnu/errlist.c:694 -+#: stdio-common/../sysdeps/gnu/errlist.c:713 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:73 - msgid "No CSI structure available" - msgstr "CSI ¹truktúra nedostupná" - --#: stdio-common/../sysdeps/gnu/errlist.c:802 -+#: stdio-common/../sysdeps/gnu/errlist.c:821 - msgid "No XENIX semaphores available" - msgstr "XENIX semafóry nedostupné" - --#: posix/../sysdeps/posix/gai_strerror.c:36 -+#: posix/../sysdeps/posix/gai_strerror.c:37 - msgid "No address associated with hostname" - msgstr "Názov poèítaèa nemá priradenú adresu" - --#: resolv/herror.c:77 -+#: resolv/herror.c:71 - msgid "No address associated with name" - msgstr "Názov nemá priradenú adresu" - --#: stdio-common/../sysdeps/gnu/errlist.c:714 -+#: stdio-common/../sysdeps/gnu/errlist.c:733 - msgid "No anode" - msgstr "®iadny anode" - - #. TRANS The kernel's buffers for I/O operations are all in use. In GNU, this - #. TRANS error is always synonymous with @code{ENOMEM}; you may get one or the - #. TRANS other from network operations. --#: stdio-common/../sysdeps/gnu/errlist.c:408 -+#: stdio-common/../sysdeps/gnu/errlist.c:409 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:162 - msgid "No buffer space available" - msgstr "Nie je mo¾né prideli» pamä» pre V/V operácie" - -+#: locale/programs/ld-ctype.c:425 -+msgid "No character set name specified in charmap" -+msgstr "V znakovej mape nie je zadaný názov znakovej sady" -+ - #. TRANS There are no child processes. This error happens on operations that are - #. TRANS supposed to manipulate child processes, when there aren't any processes - #. TRANS to manipulate. --#: stdio-common/../sysdeps/gnu/errlist.c:89 -+#: stdio-common/../sysdeps/gnu/errlist.c:90 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:40 - msgid "No child processes" - msgstr "Detské procesy neexistujú" - --#: stdio-common/../sysdeps/gnu/errlist.c:634 -+#: stdio-common/../sysdeps/gnu/errlist.c:653 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:91 - msgid "No data available" - msgstr "Dáta nie sú k dispozícii" - --#: nis/nis_error.c:73 -+#: locale/programs/ld-address.c:131 locale/programs/ld-collate.c:1500 -+#: locale/programs/ld-ctype.c:407 locale/programs/ld-identification.c:132 -+#: locale/programs/ld-measurement.c:93 locale/programs/ld-messages.c:98 -+#: locale/programs/ld-monetary.c:194 locale/programs/ld-name.c:94 -+#: locale/programs/ld-numeric.c:99 locale/programs/ld-paper.c:91 -+#: locale/programs/ld-telephone.c:94 locale/programs/ld-time.c:160 -+#, c-format -+msgid "No definition for %s category found" -+msgstr "Nebola nájdená definícia kategórie %s" -+ -+#: nis/nis_error.c:74 - msgid "No file space on server" - msgstr "Na serveri u¾ nie je ¾iadne miesto pre súbory" - -+#: elf/ldconfig.c:532 -+#, c-format -+msgid "No link created since soname could not be found for %s" -+msgstr "Odkaz nebol vytvorený, keï¾e pre %s nebolo mo¾né nájs» soname" -+ - #. TRANS No locks available. This is used by the file locking facilities; see - #. TRANS @ref{File Locks}. This error is never generated by the GNU system, but - #. TRANS it can result from an operation to an NFS server running another - #. TRANS operating system. --#: stdio-common/../sysdeps/gnu/errlist.c:547 -+#: stdio-common/../sysdeps/gnu/errlist.c:548 - msgid "No locks available" - msgstr "Zámky nie sú k dispozícii" - --#: posix/regex.c:1013 -+#: posix/regex.c:1087 - msgid "No match" - msgstr "®iadna zhoda" - --#: stdio-common/../sysdeps/gnu/errlist.c:814 -+#: stdio-common/../sysdeps/gnu/errlist.c:833 - msgid "No medium found" - msgstr "Nenájdené ¾iadne médium" - --#: stdio-common/../sysdeps/gnu/errlist.c:642 -+#: stdio-common/../sysdeps/gnu/errlist.c:661 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:65 - msgid "No message of desired type" - msgstr "®iadna správa ¾elaného typu" - --#: nis/ypclnt.c:779 -+#: nis/ypclnt.c:802 - msgid "No more records in map database" - msgstr "®iadne ïal¹ie záznamy v databáze" - --#: posix/regex.c:5515 -+#: posix/regex.c:5955 - msgid "No previous regular expression" - msgstr "®iadny predchádzajúci regulérny výraz" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:76 -+msgid "No record locks available" -+msgstr "Nie sú k dispozícii ¾iadne zámky" -+ - #: sunrpc/rpcinfo.c:570 - msgid "No remote programs registered.\n" - msgstr "Nie sú registrované ¾iadne vzdialené programy\n" - - #. TRANS The remote host for a requested network connection is not reachable. --#: stdio-common/../sysdeps/gnu/errlist.c:474 -+#: stdio-common/../sysdeps/gnu/errlist.c:475 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:178 - msgid "No route to host" - msgstr "Cesta k poèítaèu neexistuje" - - #. TRANS No space left on device; write operation on a file failed because the - #. TRANS disk is full. --#: stdio-common/../sysdeps/gnu/errlist.c:208 -+#: stdio-common/../sysdeps/gnu/errlist.c:209 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:58 - msgid "No space left on device" - msgstr "Na zariadení u¾ nie je ¾iadne miesto" - - #. TRANS The wrong type of device was given to a function that expects a - #. TRANS particular sort of device. --#: stdio-common/../sysdeps/gnu/errlist.c:147 -+#: stdio-common/../sysdeps/gnu/errlist.c:148 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:49 - msgid "No such device" - msgstr "Také zariadenie neexistuje" - -+#. TRANS No such device or address. The system tried to use the device -+#. TRANS represented by a file you specified, and it couldn't find the device. -+#. TRANS This can mean that the device file was installed incorrectly, or that -+#. TRANS the physical device is missing or not correctly attached to the -+#. TRANS computer. -+#: stdio-common/../sysdeps/gnu/errlist.c:62 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:36 -+msgid "No such device or address" -+msgstr "Také zariadenie alebo adresa neexistuje" -+ - #. TRANS No such file or directory. This is a ``file doesn't exist'' error - #. TRANS for ordinary files that are referenced in contexts where they are - #. TRANS expected to already exist. --#: stdio-common/../sysdeps/gnu/errlist.c:31 -+#: stdio-common/../sysdeps/gnu/errlist.c:32 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:32 - msgid "No such file or directory" - msgstr "Adresár alebo súbor neexistuje" - --#: nis/ypclnt.c:773 -+#: nis/ypclnt.c:796 - msgid "No such key in map" - msgstr "Tento kµúè v databáze neexistuje" - --#: nis/ypclnt.c:771 -+#: nis/ypclnt.c:794 - msgid "No such map in server's domain" - msgstr "Táto mapa sa v doméne servera nenachádza" - - #. TRANS No process matches the specified process ID. --#: stdio-common/../sysdeps/gnu/errlist.c:36 -+#: stdio-common/../sysdeps/gnu/errlist.c:37 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:33 - msgid "No such process" - msgstr "Tento proces neexistuje" - --#: nis/nis_error.c:60 -+#: nis/nis_error.c:61 - msgid "Non NIS+ namespace encountered" - msgstr "Zaznamenaný priestor názvov mimo NIS+" - --#: posix/../sysdeps/posix/gai_strerror.c:33 -+#: posix/../sysdeps/posix/gai_strerror.c:34 - msgid "Non-recoverable failure in name resolution" - msgstr "Neopraviteµná chyba pri rie¹ení názvu" - --#: nis/nis_print.c:176 -+#: nis/nis_print.c:177 - msgid "None.\n" - msgstr "®iadne.\n" - --#: nis/nis_error.c:48 --msgid "Not Found, no such name" --msgstr "Nenájdené, takýto názov neexistuje" -- --#: stdio-common/../sysdeps/gnu/errlist.c:798 -+#: stdio-common/../sysdeps/gnu/errlist.c:817 - msgid "Not a XENIX named type file" - msgstr "Nejde o pomenovaný XENIX súbor" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:107 -+msgid "Not a data message" -+msgstr "Nejde o dátovú správu" -+ - #. TRANS A file that isn't a directory was specified when a directory is required. --#: stdio-common/../sysdeps/gnu/errlist.c:152 -+#: stdio-common/../sysdeps/gnu/errlist.c:153 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:50 - msgid "Not a directory" - msgstr "Nie je adresár" - --#: nis/nis_error.c:30 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:167 -+msgid "Not a name file" -+msgstr "Nejde o súbor názvu" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:90 -+msgid "Not a stream device" -+msgstr "Nejde o prúdové zariadenie" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:168 -+msgid "Not available" -+msgstr "Nie je k dispozícii" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:42 -+msgid "Not enough space" -+msgstr "Nedostatok miesta" -+ -+#: nis/nis_error.c:31 - msgid "Not found" - msgstr "Nenájdené" - --#: nis/nis_error.c:43 -+#: nis/nis_error.c:49 -+msgid "Not found, no such name" -+msgstr "Nenájdené, takýto názov neexistuje" -+ -+#: nis/nis_error.c:44 - msgid "Not master server for this domain" - msgstr "Nie je hlavný server pre túto doménu" - --#: nis/nis_error.c:39 -+#: nis/nis_error.c:40 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:31 - msgid "Not owner" - msgstr "Nie je vlastníkom" - --#: nis/nis_print.c:263 -+#. TRANS Not supported. A function returns this error when certain parameter -+#. TRANS values are valid, but the functionality they request is not available. -+#. TRANS This can mean that the function does not implement a particular command -+#. TRANS or option value or flag bit at all. For functions that operate on some -+#. TRANS object given in a parameter, such as a file descriptor or a port, it -+#. TRANS might instead mean that only @emph{that specific object} (file -+#. TRANS descriptor, port, etc.) is unable to support the other parameters given; -+#. TRANS different file descriptors might support different ranges of parameter -+#. TRANS values. -+#. TRANS -+#. TRANS If the entire function is not available at all in the implementation, -+#. TRANS it returns @code{ENOSYS} instead. -+#: stdio-common/../sysdeps/gnu/errlist.c:592 -+msgid "Not supported" -+msgstr "Nie je podporovaný" -+ -+#: nis/nis_print.c:264 - #, c-format - msgid "Number of Columns : %d\n" - msgstr "Poèet ståpcov : %d\n" - --#: nis/nis_print.c:358 -+#: nis/nis_print.c:363 - #, c-format - msgid "Number of objects : %u\n" - msgstr "Poèet objektov : %u\n" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:120 -+msgid "Number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS" -+msgstr "Poèet symbolických odkazov nájdených poèas prechádzania cesty presahuje MAXSYMLINKS" -+ - #. TRANS Domain error; used by mathematical functions when an argument value does - #. TRANS not fall into the domain over which the function is defined. --#: stdio-common/../sysdeps/gnu/errlist.c:240 -+#: stdio-common/../sysdeps/gnu/errlist.c:241 - msgid "Numerical argument out of domain" - msgstr "Èíselný rozsah mimo domény definície funkcie" - - #. TRANS Range error; used by mathematical functions when the result value is - #. TRANS not representable because of overflow or underflow. --#: stdio-common/../sysdeps/gnu/errlist.c:246 -+#: stdio-common/../sysdeps/gnu/errlist.c:247 - msgid "Numerical result out of range" - msgstr "Èíselný výsledok mimo povoleného rozsahu" - --#: nis/nis_print.c:362 -+#: nis/nis_print.c:367 - #, c-format - msgid "Object #%d:\n" - msgstr "Objekt #%d:\n" - --#: nis/nis_print.c:314 -+#: nis/nis_print.c:317 - #, c-format - msgid "Object Name : %s\n" - msgstr "Názov objektu : %s\n" - --#: nis/nis_print.c:324 -+#: nis/nis_print.c:329 - msgid "Object Type : " - msgstr "Typ objektu : " - -@@ -1793,31 +2826,45 @@ - #. TRANS already specifies an NFS-mounted file. - #. TRANS (This is an error on some operating systems, but we expect it to work - #. TRANS properly on the GNU system, making this error code impossible.) --#: stdio-common/../sysdeps/gnu/errlist.c:514 -+#: stdio-common/../sysdeps/gnu/errlist.c:515 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:96 - msgid "Object is remote" - msgstr "Objekt je vzdialený" - --#: nis/nis_error.c:42 -+#: nis/nis_error.c:43 - msgid "Object with same name exists" - msgstr "Existuje objekt s rovnakým názvom" - --#: timezone/zic.c:1995 -+#: timezone/zic.c:2022 - msgid "Odd number of quotation marks" - msgstr "Nepárny poèet úvodzoviek" - --#: nscd/nscd.c:185 -+#: elf/ldconfig.c:134 -+msgid "Only process directories specified on the command line. Don't build cache." -+msgstr "Na príkazovom riadku sú zadané iba adresáre procesov. Nevytvára» cache." -+ -+#: nscd/nscd.c:200 nscd/nscd.c:220 nscd/nscd.c:226 - msgid "Only root is allowed to use this option!" - msgstr "Táto voµba je dostupná iba superu¾ívateµovi!" - - #. TRANS An operation is already in progress on an object that has non-blocking - #. TRANS mode selected. --#: stdio-common/../sysdeps/gnu/errlist.c:306 -+#: stdio-common/../sysdeps/gnu/errlist.c:307 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:179 - msgid "Operation already in progress" - msgstr "Operácia je u¾ rozpracovaná" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:77 -+msgid "Operation canceled" -+msgstr "Operácia zru¹ená" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:119 -+msgid "Operation not applicable" -+msgstr "Operácia nie je aplikovateµná" -+ - #. TRANS Operation not permitted; only the owner of the file (or other resource) - #. TRANS or processes with special privileges can perform the operation. --#: stdio-common/../sysdeps/gnu/errlist.c:24 -+#: stdio-common/../sysdeps/gnu/errlist.c:25 - msgid "Operation not permitted" - msgstr "Operácia nie je povolená" - -@@ -1827,10 +2874,15 @@ - #. TRANS error can happen for many calls when the object does not support the - #. TRANS particular operation; it is a generic indication that the server knows - #. TRANS nothing to do for that call. --#: stdio-common/../sysdeps/gnu/errlist.c:350 -+#: stdio-common/../sysdeps/gnu/errlist.c:351 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:78 - msgid "Operation not supported" - msgstr "Operácia nie je podporovaná" - -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:152 -+msgid "Operation not supported on transport endpoint" -+msgstr "Operácia nie je podporovaná na koncovom bode komunikácie" -+ - #. TRANS An operation that cannot complete immediately was initiated on an object - #. TRANS that has non-blocking mode selected. Some functions that must always - #. TRANS block (such as @code{connect}; @pxref{Connecting}) never return -@@ -1839,7 +2891,8 @@ - #. TRANS the object before the call completes return @code{EALREADY}. You can - #. TRANS use the @code{select} function to find out when the pending operation - #. TRANS has completed; @pxref{Waiting for I/O}. --#: stdio-common/../sysdeps/gnu/errlist.c:300 -+#: stdio-common/../sysdeps/gnu/errlist.c:301 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:180 - msgid "Operation now in progress" - msgstr "Operácia prebieha" - -@@ -1848,67 +2901,86 @@ - #. TRANS - #. TRANS C libraries in many older Unix systems have @code{EWOULDBLOCK} as a - #. TRANS separate error code. --#: stdio-common/../sysdeps/gnu/errlist.c:288 -+#: stdio-common/../sysdeps/gnu/errlist.c:289 - msgid "Operation would block" - msgstr "Operácia by blokovala" - --#: stdio-common/../sysdeps/gnu/errlist.c:646 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:129 -+msgid "Option not supported by protocol" -+msgstr "Voµba nie je protokolom podporovaná" -+ -+#: locale/programs/localedef.c:103 -+msgid "Optional output file prefix" -+msgstr "Voliteµný prefix výstupného súboru" -+ -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:93 -+msgid "Out of stream resources" -+msgstr "Prúdové zdroje vyèerpané" -+ -+#: stdio-common/../sysdeps/gnu/errlist.c:665 - msgid "Out of streams resources" - msgstr "Prúdové zdroje vyèerpané" - --#: iconv/iconv_prog.c:59 locale/programs/localedef.c:101 -+#: iconv/iconv_prog.c:60 locale/programs/localedef.c:99 - msgid "Output control:" - msgstr "Riadenie výstupu:" - --#: elf/sprof.c:76 -+#: elf/sprof.c:72 - msgid "Output selection:" - msgstr "Výber výstupu:" - --#: nis/nis_print.c:316 -+#: nis/nis_print.c:319 - #, c-format - msgid "Owner : %s\n" - msgstr "Vlastník : %s\n" - --#: nis/nis_print.c:126 -+#: nis/nis_print.c:127 - msgid "PRIVATE\n" - msgstr "SÚKROMNÝ\n" - --#: stdio-common/../sysdeps/gnu/errlist.c:738 -+#: stdio-common/../sysdeps/gnu/errlist.c:757 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:95 - msgid "Package not installed" - msgstr "Balík nie je nain¹talovaný" - --#: nscd/nscd_conf.c:84 -+#: nscd/nscd_conf.c:83 - #, c-format - msgid "Parse error: %s" - msgstr "Chyba analýzy: %s" - --#: nis/nis_error.c:54 --msgid "Partial Success" -+#: nis/nis_error.c:55 -+msgid "Partial success" - msgstr "Èiastoèný úspech" - --#: nis/nis_error.c:62 -+#: nis/nis_error.c:63 - msgid "Passed object is not the same object on server" - msgstr "Odovzdaný objekt nie je na serveri tým istým objektom" - -+#: elf/ldconfig.c:287 -+#, c-format -+msgid "Path `%s' given more than once" -+msgstr "Cesta `%s' bola zadaná viac ako raz" -+ - #. TRANS Permission denied; the file permissions do not allow the attempted operation. --#: nis/nis_error.c:38 nis/ypclnt.c:793 --#: stdio-common/../sysdeps/gnu/errlist.c:108 -+#: nis/nis_error.c:39 nis/ypclnt.c:816 -+#: stdio-common/../sysdeps/gnu/errlist.c:109 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:43 - msgid "Permission denied" - msgstr "Prístup odmietnutý" - --#: sysdeps/unix/sysv/linux/siglist.h:64 -+#: sysdeps/generic/siglist.h:71 - msgid "Power failure" - msgstr "Výpadok napájania" - --#: posix/regex.c:1026 -+#: posix/regex.c:1126 - msgid "Premature end of regular expression" - msgstr "Predèasný koniec regulérneho výrazu" - --#: db2/makedb.c:63 --msgid "Print content of database file, one entry a line" --msgstr "Vypísa» obsah databázového súboru, jeden záznam na riadok" -+#: elf/ldconfig.c:127 -+msgid "Print cache" -+msgstr "Vypísa» cache" - --#: nscd/nscd.c:83 -+#: nscd/nscd.c:89 - msgid "Print current configuration statistic" - msgstr "Vypísa» ¹tatistiku aktuálnej konfigurácie" - -@@ -1916,243 +2988,259 @@ - msgid "Print more messages" - msgstr "Vypísa» viac správ" - --#: argp/argp-parse.c:148 -+#: argp/argp-parse.c:154 - msgid "Print program version" - msgstr "Vypísa» verziu programu" - --#: nis/nis_error.c:29 -+#: nis/nis_error.c:30 - msgid "Probable success" - msgstr "Pravdepodobný úspech" - --#: nis/nis_error.c:31 -+#: nis/nis_error.c:32 - msgid "Probably not found" - msgstr "Pravdepodobne nenájdené" - --#: stdio-common/../sysdeps/unix/siglist.c:52 --#: sysdeps/unix/sysv/linux/siglist.h:46 -+#: stdio-common/../sysdeps/unix/siglist.c:53 sysdeps/generic/siglist.h:53 - msgid "Profiling timer expired" - msgstr "Profilovací èasovaè vypr¹al" - --#: stdio-common/../sysdeps/gnu/errlist.c:690 -+#: stdio-common/../sysdeps/gnu/errlist.c:709 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:72 - msgid "Protocol driver not attached" - msgstr "Ovládaè protokolu nepripojený" - --#: stdio-common/../sysdeps/gnu/errlist.c:658 -+#: stdio-common/../sysdeps/gnu/errlist.c:677 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:101 - msgid "Protocol error" - msgstr "Chyba protokolu" - - #. TRANS The socket communications protocol family you requested is not supported. --#: stdio-common/../sysdeps/gnu/errlist.c:355 -+#: stdio-common/../sysdeps/gnu/errlist.c:356 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:153 - msgid "Protocol family not supported" - msgstr "Rodina protokolov nie je podporovaná" - - #. TRANS You specified a socket option that doesn't make sense for the - #. TRANS particular protocol being used by the socket. @xref{Socket Options}. --#: stdio-common/../sysdeps/gnu/errlist.c:328 -+#: stdio-common/../sysdeps/gnu/errlist.c:329 - msgid "Protocol not available" - msgstr "Protokol nie je k dispozícii" - - #. TRANS The socket domain does not support the requested communications protocol - #. TRANS (perhaps because the requested protocol is completely invalid). - #. TRANS @xref{Creating a Socket}. --#: stdio-common/../sysdeps/gnu/errlist.c:335 -+#: stdio-common/../sysdeps/gnu/errlist.c:336 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:150 - msgid "Protocol not supported" - msgstr "Protokol nie je podporovaný" - - #. TRANS The socket type does not support the requested communications protocol. --#: stdio-common/../sysdeps/gnu/errlist.c:322 -+#: stdio-common/../sysdeps/gnu/errlist.c:323 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:128 - msgid "Protocol wrong type for socket" - msgstr "Protokol nie je socketom podporovaný" - --#: nis/nis_error.c:64 -+#: nis/nis_error.c:65 - msgid "Query illegal for named table" - msgstr "Neprípustná otázka pre danú tabuµku" - --#: stdio-common/../sysdeps/unix/siglist.c:28 --#: sysdeps/unix/sysv/linux/siglist.h:24 -+#: stdio-common/../sysdeps/unix/siglist.c:29 sysdeps/generic/siglist.h:31 - msgid "Quit" - msgstr "Koniec" - --#: stdio-common/../sysdeps/gnu/errlist.c:754 -+#: stdio-common/../sysdeps/gnu/errlist.c:773 - msgid "RFS specific error" - msgstr "RFS-¹pecifická chyba" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:539 -+#: stdio-common/../sysdeps/gnu/errlist.c:540 - msgid "RPC bad procedure for program" - msgstr "Chybná RPC procedúra pre program" - --#: nis/ypclnt.c:767 -+#: nis/ypclnt.c:790 - msgid "RPC failure on NIS operation" - msgstr "Zlyhal RPC pri NIS operácii" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:529 -+#: stdio-common/../sysdeps/gnu/errlist.c:530 - msgid "RPC program not available" - msgstr "RPC program nie je k dispozícii" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:534 -+#: stdio-common/../sysdeps/gnu/errlist.c:535 - msgid "RPC program version wrong" - msgstr "Chybná verzia RPC programu" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:519 -+#: stdio-common/../sysdeps/gnu/errlist.c:520 - msgid "RPC struct is bad" - msgstr "RPC ¹truktúra je chybná" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:524 -+#: stdio-common/../sysdeps/gnu/errlist.c:525 - msgid "RPC version wrong" - msgstr "Chybná verzia RPC" - --#: sunrpc/clnt_perr.c:215 -+#: sunrpc/clnt_perr.c:271 - msgid "RPC: (unknown error code)" - msgstr "RPC: (neznámny chybový kód)" - --#: sunrpc/clnt_perr.c:176 -+#: sunrpc/clnt_perr.c:190 - msgid "RPC: Authentication error" - msgstr "RPC: Chyba pri overení práv" - --#: sunrpc/clnt_perr.c:166 -+#: sunrpc/clnt_perr.c:170 - msgid "RPC: Can't decode result" - msgstr "RPC: Nie je mo¾né dekódova» výsledok" - --#: sunrpc/clnt_perr.c:164 -+#: sunrpc/clnt_perr.c:166 - msgid "RPC: Can't encode arguments" - msgstr "RPC: Nie je mo¾né zakódova» argumenty" - --#: sunrpc/clnt_perr.c:196 -+#: sunrpc/clnt_perr.c:230 - msgid "RPC: Failed (unspecified error)" - msgstr "RPC: Zlyhalo (ne¹pecifikovaná chyba)" - --#: sunrpc/clnt_perr.c:174 -+#: sunrpc/clnt_perr.c:186 - msgid "RPC: Incompatible versions of RPC" - msgstr "RPC: Nekompatibilné verzie RPC" - --#: sunrpc/clnt_perr.c:192 -+#: sunrpc/clnt_perr.c:222 - msgid "RPC: Port mapper failure" - msgstr "RPC: Chyba portmappera" - --#: sunrpc/clnt_perr.c:182 -+#: sunrpc/clnt_perr.c:202 - msgid "RPC: Procedure unavailable" - msgstr "RPC: Procedúra nie je k dispozícii" - --#: sunrpc/clnt_perr.c:194 -+#: sunrpc/clnt_perr.c:226 - msgid "RPC: Program not registered" - msgstr "RPC: Program nie je registrovaný" - --#: sunrpc/clnt_perr.c:178 -+#: sunrpc/clnt_perr.c:194 - msgid "RPC: Program unavailable" - msgstr "RPC: Program nie je k dispozícii" - --#: sunrpc/clnt_perr.c:180 -+#: sunrpc/clnt_perr.c:198 - msgid "RPC: Program/version mismatch" - msgstr "RPC: Nesúhlasí program alebo verzia" - --#: sunrpc/clnt_perr.c:186 -+#: sunrpc/clnt_perr.c:210 - msgid "RPC: Remote system error" - msgstr "RPC: Chyba vzdialeného systému" - --#: sunrpc/clnt_perr.c:184 -+#: sunrpc/clnt_perr.c:206 - msgid "RPC: Server can't decode arguments" - msgstr "RPC: Server nemô¾e dekódova» argumenty" - --#: sunrpc/clnt_perr.c:162 -+#: sunrpc/clnt_perr.c:163 - msgid "RPC: Success" - msgstr "RPC: Úspech" - --#: sunrpc/clnt_perr.c:172 -+#: sunrpc/clnt_perr.c:182 - msgid "RPC: Timed out" - msgstr "RPC: Èasovaè vypr¹al" - --#: sunrpc/clnt_perr.c:170 -+#: sunrpc/clnt_perr.c:178 - msgid "RPC: Unable to receive" - msgstr "RPC: Nie je mo¾né prijíma»" - --#: sunrpc/clnt_perr.c:168 -+#: sunrpc/clnt_perr.c:174 - msgid "RPC: Unable to send" - msgstr "RPC: Nie je mo¾né vysiela»" - --#: sunrpc/clnt_perr.c:188 -+#: sunrpc/clnt_perr.c:214 - msgid "RPC: Unknown host" - msgstr "RPC: Neznámy poèítaè" - --#: sunrpc/clnt_perr.c:190 -+#: sunrpc/clnt_perr.c:218 - msgid "RPC: Unknown protocol" - msgstr "RPC: Neznámy protokol" - --#: nis/nis_print.c:184 -+#: nis/nis_print.c:185 - #, c-format - msgid "RSA (%d bits)\n" - msgstr "RSA (%d bitov)\n" - --#: elf/dlsym.c:59 elf/dlvsym.c:62 -+#: elf/dl-sym.c:68 elf/dl-sym.c:125 - msgid "RTLD_NEXT used in code not dynamically loaded" - msgstr "RTLD_NEXT je pou¾ité pre kód, ktorý nie je dynamicky zavedený" - --#: elf/sprof.c:88 -+#: elf/sprof.c:84 - msgid "Read and display shared object profiling data" - msgstr "Preèíta» a vypísa» profilovacie údaje zdieµaného objektu" - --#: nscd/nscd.c:78 -+#: nscd/nscd.c:84 - msgid "Read configuration data from NAME" - msgstr "Naèíta» údaje o konfigurácii z NÁZOV" - - #. TRANS An attempt was made to modify something on a read-only file system. --#: stdio-common/../sysdeps/gnu/errlist.c:218 -+#: stdio-common/../sysdeps/gnu/errlist.c:219 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:60 - msgid "Read-only file system" - msgstr "Súborový systém dovoµuje len èítanie" - --#: string/strsignal.c:66 -+#: string/strsignal.c:67 - #, c-format - msgid "Real-time signal %d" - msgstr "Signál reálneho èasu %d" - --#: posix/regex.c:1027 -+#: posix/regex.c:1129 - msgid "Regular expression too big" - msgstr "Regulérny výraz príli¹ veµký" - --#: stdio-common/../sysdeps/gnu/errlist.c:810 -+#: stdio-common/../sysdeps/gnu/errlist.c:829 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:170 - msgid "Remote I/O error" - msgstr "Vzdialená V/V chyba" - --#: stdio-common/../sysdeps/gnu/errlist.c:766 -+#: stdio-common/../sysdeps/gnu/errlist.c:785 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:112 - msgid "Remote address changed" - msgstr "Vzdialená adresa sa zmenila" - --#: inet/ruserpass.c:162 -+#: inet/ruserpass.c:182 - msgid "Remove password or make file unreadable by others." - msgstr "Odstráòte heslo alebo zaká¾te èítanie súboru ostatnými." - --#: elf/sprof.c:537 -+#: elf/cache.c:394 -+#, c-format -+msgid "Renaming of %s to %s failed" -+msgstr "Premenovanie %s na %s zlyhalo" -+ -+#: elf/sprof.c:532 - #, c-format - msgid "Reopening shared object `%s' failed" - msgstr "Znovuotvorenie zdieµaného objektu `%s' zlyhalo" - --#: nis/nis_print.c:170 -+#: nis/nis_print.c:171 - msgid "Replicate :\n" - msgstr "Replika :\n" - --#: argp/argp-help.c:1638 -+#: argp/argp-help.c:1639 - #, c-format - msgid "Report bugs to %s.\n" - msgstr "Chyby hláste na adrese %s.\n" - --#: catgets/gencat.c:223 db2/makedb.c:229 iconv/iconv_prog.c:280 --#: locale/programs/locale.c:254 locale/programs/localedef.c:389 -+#: catgets/gencat.c:233 debug/pcprofiledump.c:181 iconv/iconv_prog.c:337 -+#: locale/programs/locale.c:256 locale/programs/localedef.c:297 -+#: malloc/memusagestat.c:602 - msgid "Report bugs using the `glibcbug' script to .\n" - msgstr "Chyby hláste na adrese - pou¾ite skript `glibcbug'.\n" - --#: nis/ypclnt.c:765 -+#: nis/ypclnt.c:788 - msgid "Request arguments bad" - msgstr "Chybné argumenty ¾iadosti" - --#: resolv/herror.c:73 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:171 -+msgid "Reserved for future use" -+msgstr "Rezervované pre budúce pou¾itie" -+ -+#: resolv/herror.c:67 - msgid "Resolver Error 0 (no error)" - msgstr "Chyba resolvera 0 (¾iadna chyba)" - --#: resolv/herror.c:117 -+#: resolv/herror.c:107 - msgid "Resolver internal error" - msgstr "Vnútorná chyba resolvera" - -@@ -2160,11 +3248,11 @@ - #. TRANS deadlock situation. The system does not guarantee that it will notice - #. TRANS all such situations. This error means you got lucky and the system - #. TRANS noticed; it might just hang. @xref{File Locks}, for an example. --#: stdio-common/../sysdeps/gnu/errlist.c:97 -+#: stdio-common/../sysdeps/gnu/errlist.c:98 - msgid "Resource deadlock avoided" - msgstr "Bolo zabránené vzájomnému zablokovaniu" - --#: stdio-common/../sysdeps/unix/siglist.c:54 -+#: stdio-common/../sysdeps/unix/siglist.c:55 sysdeps/generic/siglist.h:74 - msgid "Resource lost" - msgstr "Zdroj bol stratený" - -@@ -2197,76 +3285,83 @@ - #. TRANS so usually an interactive program should report the error to the user - #. TRANS and return to its command loop. - #. TRANS @end itemize --#: stdio-common/../sysdeps/gnu/errlist.c:279 -+#: stdio-common/../sysdeps/gnu/errlist.c:280 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:41 - msgid "Resource temporarily unavailable" - msgstr "Zdroj je doèasne neprístupný" - --#: nis/nis_error.c:47 --msgid "Results Sent to callback proc" -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:64 -+msgid "Result too large" -+msgstr "Výsledok je príli¹ veµký" -+ -+#: nis/nis_error.c:48 -+msgid "Results sent to callback proc" - msgstr "Výsledky poslané procedúre spätného volania" - --#: elf/sprof.c:91 -+#: elf/sprof.c:87 - msgid "SHOBJ [PROFDATA]" - msgstr "ZDIE¥_OBJEKT [PROF_ÚDAJE]" - --#: nis/nis_print.c:33 -+#: nis/nis_print.c:34 - msgid "SUNYP" - msgstr "SUNYP" - --#: nis/nis_print.c:265 -+#: nis/nis_print.c:266 - #, c-format - msgid "Search Path : %s\n" - msgstr "Prehµadávaná cesta : %s\n" - --#: stdio-common/../sysdeps/unix/siglist.c:36 --#: sysdeps/unix/sysv/linux/siglist.h:31 -+#: stdio-common/../sysdeps/unix/siglist.c:37 sysdeps/generic/siglist.h:38 - msgid "Segmentation fault" - msgstr "Chyba segmentácie" - --#: nis/nis_error.c:35 -+#: nis/nis_error.c:36 - msgid "Server busy, try again" - msgstr "Server zaneprázdnený, skúste znovu" - --#: nis/nis_error.c:41 -+#: nis/nis_error.c:42 - msgid "Server out of memory" - msgstr "Vyèerpaná pamä» servera" - --#: sunrpc/clnt_perr.c:277 -+#: sunrpc/clnt_perr.c:336 - msgid "Server rejected credential" - msgstr "Server odmietol oprávnenie" - --#: sunrpc/clnt_perr.c:281 -+#: sunrpc/clnt_perr.c:344 - msgid "Server rejected verifier" - msgstr "Server odmietol overenie" - --#: posix/../sysdeps/posix/gai_strerror.c:38 -+#: posix/../sysdeps/posix/gai_strerror.c:39 - msgid "Servname not supported for ai_socktype" - msgstr "Servname nie je pre ai_socktype podporovaná" - --#: argp/argp-parse.c:89 -+#: argp/argp-parse.c:95 - msgid "Set the program name" - msgstr "Nastavi» názov programu" - --#: nscd/nscd.c:82 -+#: nscd/nscd.c:88 - msgid "Shut the server down" - msgstr "Zastavi» server" - --#: stdio-common/../sysdeps/unix/siglist.c:25 -+#: stdio-common/../sysdeps/unix/siglist.c:26 - msgid "Signal 0" - msgstr "Signál 0" - - #. TRANS A file that isn't a socket was specified when a socket is required. --#: stdio-common/../sysdeps/gnu/errlist.c:311 -+#: stdio-common/../sysdeps/gnu/errlist.c:312 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:125 - msgid "Socket operation on non-socket" - msgstr "Socketová operácia na objekte, ktorý nie je socket" - - #. TRANS The socket type is not supported. --#: stdio-common/../sysdeps/gnu/errlist.c:340 -+#: stdio-common/../sysdeps/gnu/errlist.c:341 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:151 - msgid "Socket type not supported" - msgstr "Typ socketu nie je podporovaný" - - #. TRANS A network connection was aborted locally. --#: stdio-common/../sysdeps/gnu/errlist.c:394 -+#: stdio-common/../sysdeps/gnu/errlist.c:395 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:160 - msgid "Software caused connection abort" - msgstr "Software spôsobil zru¹enie spojenia" - -@@ -2274,15 +3369,16 @@ - msgid "Sorry. You are not root\n" - msgstr "Bohu¾iaµ - nie ste superu¾ívateµ\n" - --#: locale/programs/localedef.c:97 -+#: locale/programs/localedef.c:95 - msgid "Source definitions are found in FILE" - msgstr "Zdrojové definície sa nachádzajú v SÚBORe" - --#: stdio-common/../sysdeps/gnu/errlist.c:746 -+#: stdio-common/../sysdeps/gnu/errlist.c:765 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:99 - msgid "Srmount error" - msgstr "Chyba srmount" - --#: sysdeps/unix/sysv/linux/siglist.h:59 -+#: sysdeps/generic/siglist.h:66 - msgid "Stack fault" - msgstr "Chyba zásobníka" - -@@ -2290,73 +3386,75 @@ - #. TRANS system which is due to file system rearrangements on the server host. - #. TRANS Repairing this condition usually requires unmounting and remounting - #. TRANS the NFS file system on the local host. --#: stdio-common/../sysdeps/gnu/errlist.c:506 -+#: stdio-common/../sysdeps/gnu/errlist.c:507 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:181 - msgid "Stale NFS file handle" - msgstr "Zastaralý odkaz na NFS súbor" - --#: nscd/nscd.c:81 -+#: nscd/nscd.c:87 - msgid "Start NUMBER threads" - msgstr "Spusti» POÈET vlákien" - --#: nis/nis_print.c:357 -+#: nis/nis_print.c:362 - #, c-format - msgid "Status : %s\n" - msgstr "Stav : %s\n" - --#: stdio-common/../sysdeps/unix/siglist.c:43 --#: sysdeps/unix/sysv/linux/siglist.h:37 -+#: stdio-common/../sysdeps/unix/siglist.c:44 sysdeps/generic/siglist.h:44 - msgid "Stopped" - msgstr "Zastavené" - --#: stdio-common/../sysdeps/unix/siglist.c:42 --#: sysdeps/unix/sysv/linux/siglist.h:36 -+#: stdio-common/../sysdeps/unix/siglist.c:43 sysdeps/generic/siglist.h:43 - msgid "Stopped (signal)" - msgstr "Zastavené (signál)" - --#: stdio-common/../sysdeps/unix/siglist.c:46 --#: sysdeps/unix/sysv/linux/siglist.h:40 -+#: stdio-common/../sysdeps/unix/siglist.c:47 sysdeps/generic/siglist.h:47 - msgid "Stopped (tty input)" - msgstr "Zastavené (vstup z terminálu)" - --#: stdio-common/../sysdeps/unix/siglist.c:47 --#: sysdeps/unix/sysv/linux/siglist.h:41 -+#: stdio-common/../sysdeps/unix/siglist.c:48 sysdeps/generic/siglist.h:48 - msgid "Stopped (tty output)" - msgstr "Zastavené (výstup na terminál)" - --#: stdio-common/../sysdeps/gnu/errlist.c:790 -+#: stdio-common/../sysdeps/gnu/errlist.c:809 - msgid "Streams pipe error" - msgstr "Chyba rúry prúdov" - --#: stdio-common/../sysdeps/gnu/errlist.c:794 -+#: stdio-common/../sysdeps/gnu/errlist.c:813 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:165 - msgid "Structure needs cleaning" - msgstr "©truktúra potrebuje opravu" - --#: nis/nis_error.c:28 nis/ypclnt.c:763 nis/ypclnt.c:837 posix/regex.c:1012 --#: stdio-common/../sysdeps/gnu/errlist.c:19 -+#: nis/nis_error.c:29 nis/ypclnt.c:786 nis/ypclnt.c:860 posix/regex.c:1084 -+#: stdio-common/../sysdeps/gnu/errlist.c:20 - msgid "Success" - msgstr "Úspech" - -+#: nss/getent.c:703 -+msgid "Supported databases:" -+msgstr "Podporované databázy:" -+ - #: locale/programs/localedef.c:106 - msgid "Suppress warnings and information messages" - msgstr "Potlaèi» varovné a informaèné správy" - --#: locale/programs/localedef.c:96 -+#: locale/programs/localedef.c:94 - msgid "Symbolic character names defined in FILE" - msgstr "Symbolické názvy znakov sú definované v SÚBORe" - --#: posix/../sysdeps/posix/gai_strerror.c:40 -+#: posix/../sysdeps/posix/gai_strerror.c:41 - msgid "System error" - msgstr "Chyba systému" - --#: locale/programs/locale.c:63 -+#: locale/programs/locale.c:65 - msgid "System information:" - msgstr "Systémové informácie:" - --#: nis/ypclnt.c:843 -+#: nis/ypclnt.c:866 - msgid "System resource allocation failure" - msgstr "Pridelenie systémových zdrojov zlyhalo" - --#: locale/programs/localedef.c:384 -+#: locale/programs/localedef.c:292 - #, c-format - msgid "" - "System's directory for character maps : %s\n" -@@ -2369,21 +3467,28 @@ - " cestu locale : %s\n" - "%s" - --#: nis/nis_print.c:117 -+#: nscd/nscd.c:90 -+msgid "TABLE" -+msgstr "TABU¥KA" -+ -+#: nis/nis_print.c:118 - msgid "TABLE\n" - msgstr "TABU¥KA\n" - --#: nis/nis_print.c:262 -+#: nscd/nscd.c:92 -+msgid "TABLE,yes" -+msgstr "TABU¥KA,áno" -+ -+#: nis/nis_print.c:263 - #, c-format - msgid "Table Type : %s\n" - msgstr "Typ tabuµky : %s\n" - --#: posix/../sysdeps/posix/gai_strerror.c:31 -+#: posix/../sysdeps/posix/gai_strerror.c:32 - msgid "Temporary failure in name resolution" - msgstr "Doèasná chyba pri rie¹ení názvu" - --#: stdio-common/../sysdeps/unix/siglist.c:40 --#: sysdeps/unix/sysv/linux/siglist.h:34 -+#: stdio-common/../sysdeps/unix/siglist.c:41 sysdeps/generic/siglist.h:41 - msgid "Terminated" - msgstr "Ukonèené" - -@@ -2392,52 +3497,58 @@ - #. TRANS debugger to run a program is considered having it open for writing and - #. TRANS will cause this error. (The name stands for ``text file busy''.) This - #. TRANS is not an error in the GNU system; the text is copied as necessary. --#: stdio-common/../sysdeps/gnu/errlist.c:197 -+#: stdio-common/../sysdeps/gnu/errlist.c:198 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:56 - msgid "Text file busy" - msgstr "Spustiteµný súbor je pou¾ívaný" - --#: iconv/iconv_prog.c:536 -+#: iconv/iconv_prog.c:627 - msgid "" - "The following list contain all the coded character sets known. This does\n" - "not necessarily mean that all combinations of these names can be used for\n" - "the FROM and TO command line parameters. One coded character set can be\n" - "listed with several different names (aliases).\n" --" Some of the names are no plain strings but instead regular expressions and\n" --"they match a variety of names which can be given as parameters to the\n" --"program.\n" - "\n" - " " - msgstr "" - "Nasledujúci zoznam obsahuje v¹etky známe znakové sady. To nutne neznamená,\n" - "¾e v¹etky kombinácie týchto názvov mô¾u by» pou¾ité pre argumenty Z a DO.\n" - "Jedna sada znakov mô¾e by» uvedená pod viacerými názvami (aliasmi).\n" --" Niektoré z názvov nie sú obyèajné re»azce, ale regulárne výrazy, ktoré\n" --"¹pecifikujú mo¾né parametre programu.\n" - "\n" - " " - --#: nis/nis_print.c:223 -+#: sunrpc/rpc_main.c:1364 -+msgid "This implementation doesn't support newstyle or MT-safe code!\n" -+msgstr "Táto implementácia nepodporuje nový ¹týl alebo MT-bezpeèný kód!\n" -+ -+#: nis/nis_print.c:224 - msgid "Time to live : " - msgstr "®ivotnos» : " - --#: stdio-common/../sysdeps/gnu/errlist.c:662 -+#: stdio-common/../sysdeps/gnu/errlist.c:681 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:92 - msgid "Timer expired" - msgstr "Èasovaè vypr¹al" - --#: nis/nis_error.c:55 --msgid "Too Many Attributes" -+#: malloc/memusagestat.c:54 -+msgid "Title string used in output graphic" -+msgstr "Titulok pou¾itý pre výstupný graf" -+ -+#: nis/nis_error.c:56 -+msgid "Too many attributes" - msgstr "Priveµa atribútov" - - #. TRANS Too many levels of symbolic links were encountered in looking up a file name. - #. TRANS This often indicates a cycle of symbolic links. --#: stdio-common/../sysdeps/gnu/errlist.c:457 -+#: stdio-common/../sysdeps/gnu/errlist.c:458 - msgid "Too many levels of symbolic links" - msgstr "Priveµa úrovní symbolických odkazov" - - #. TRANS Too many links; the link count of a single file would become too large. - #. TRANS @code{rename} can cause this error if the file being renamed already has - #. TRANS as many links as it can take (@pxref{Renaming Files}). --#: stdio-common/../sysdeps/gnu/errlist.c:225 -+#: stdio-common/../sysdeps/gnu/errlist.c:226 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:61 - msgid "Too many links" - msgstr "Priveµa odkazov" - -@@ -2448,54 +3559,57 @@ - #. TRANS limit that can usually be increased. If you get this error, you might - #. TRANS want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited; - #. TRANS @pxref{Limits on Resources}. --#: stdio-common/../sysdeps/gnu/errlist.c:175 -+#: stdio-common/../sysdeps/gnu/errlist.c:176 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:54 - msgid "Too many open files" - msgstr "Priveµa otvorených súborov" - - #. TRANS There are too many distinct file openings in the entire system. Note - #. TRANS that any number of linked channels count as just one file opening; see - #. TRANS @ref{Linked Channels}. This error never occurs in the GNU system. --#: stdio-common/../sysdeps/gnu/errlist.c:182 -+#: stdio-common/../sysdeps/gnu/errlist.c:183 - msgid "Too many open files in system" - msgstr "Priveµa otvorených súborov v systéme" - - #. TRANS This means that the per-user limit on new process would be exceeded by - #. TRANS an attempted @code{fork}. @xref{Limits on Resources}, for details on - #. TRANS the @code{RLIMIT_NPROC} limit. --#: stdio-common/../sysdeps/gnu/errlist.c:487 -+#: stdio-common/../sysdeps/gnu/errlist.c:488 - msgid "Too many processes" - msgstr "Priveµa procesov" - - #. TRANS ??? --#: stdio-common/../sysdeps/gnu/errlist.c:439 -+#: stdio-common/../sysdeps/gnu/errlist.c:440 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:174 - msgid "Too many references: cannot splice" - msgstr "Priveµa odkazov - nie je mo¾né rozdeli»" - - #. TRANS The file quota system is confused because there are too many users. - #. TRANS @c This can probably happen in a GNU system when using NFS. --#: stdio-common/../sysdeps/gnu/errlist.c:493 -+#: stdio-common/../sysdeps/gnu/errlist.c:494 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:124 - msgid "Too many users" - msgstr "Priveµa pou¾ívateµov" - --#: stdio-common/../sysdeps/unix/siglist.c:30 --#: sysdeps/unix/sysv/linux/siglist.h:26 -+#: stdio-common/../sysdeps/unix/siglist.c:31 sysdeps/generic/siglist.h:33 - msgid "Trace/breakpoint trap" - msgstr "Trasovacie/ladiace preru¹enie" - --#: posix/regex.c:1017 -+#: posix/regex.c:1099 - msgid "Trailing backslash" - msgstr "Koncové spätné lomítko" - - #. TRANS In the GNU system, opening a file returns this error when the file is - #. TRANS translated by a program and the translator program dies while starting - #. TRANS up, before it has connected to the file. --#: stdio-common/../sysdeps/gnu/errlist.c:596 -+#: stdio-common/../sysdeps/gnu/errlist.c:615 - msgid "Translator died" - msgstr "Prekladací program skonèil" - - #. TRANS You tried to connect a socket that is already connected. - #. TRANS @xref{Connecting}. --#: stdio-common/../sysdeps/gnu/errlist.c:414 -+#: stdio-common/../sysdeps/gnu/errlist.c:415 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:163 - msgid "Transport endpoint is already connected" - msgstr "Koncový komunikaèný bod je u¾ spojený" - -@@ -2503,139 +3617,139 @@ - #. TRANS try to transmit data over a socket, without first specifying a - #. TRANS destination for the data. For a connectionless socket (for datagram - #. TRANS protocols, such as UDP), you get @code{EDESTADDRREQ} instead. --#: stdio-common/../sysdeps/gnu/errlist.c:422 -+#: stdio-common/../sysdeps/gnu/errlist.c:423 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:164 - msgid "Transport endpoint is not connected" - msgstr "Koncový komunikaèný bod nie je spojený" - --#: argp/argp-help.c:1610 -+#: argp/argp-help.c:1611 - #, c-format - msgid "Try `%s --help' or `%s --usage' for more information.\n" - msgstr "Pou¾ite `%s --help' alebo `%s --usage' pre viac informácií.\n" - --#: inet/rcmd.c:143 --#, c-format --msgid "Trying %s...\n" --msgstr "Skú¹am %s...\n" -- --#: nis/nis_print.c:163 -+#: nis/nis_print.c:164 - #, c-format - msgid "Type : %s\n" - msgstr "Typ : %s\n" - --#: nis/nis_print.c:47 -+#: nis/nis_print.c:48 - msgid "UNKNOWN" - msgstr "NEZNAMY" - --#: nis/nis_error.c:72 -+#: nis/nis_error.c:73 - msgid "Unable to authenticate NIS+ client" - msgstr "Nie je mo¾né overi» toto¾nos» NIS+ klienta" - --#: nis/nis_error.c:71 -+#: nis/nis_error.c:72 - msgid "Unable to authenticate NIS+ server" - msgstr "Nie je mo¾né overi» toto¾nos» NIS+ servera" - --#: nis/nis_error.c:46 -+#: nis/nis_error.c:47 - msgid "Unable to create callback" - msgstr "Nie je mo¾né vytvori» spätné volanie" - --#: nis/nis_error.c:74 -+#: nis/nis_error.c:75 - msgid "Unable to create process on server" - msgstr "Nie je mo¾né vytvori» proces na serveri" - --#: nis/nis_print.c:190 -+#: nis/nis_print.c:191 - #, c-format - msgid "Unknown (type = %d, bits = %d)\n" - msgstr "Neznáme (typ = %d, bitov = %d)\n" - --#: inet/ruserpass.c:248 -+#: inet/ruserpass.c:274 - #, c-format - msgid "Unknown .netrc keyword %s" - msgstr "Neznáme kµúèové slovo v .netrc: %s" - --#: nis/ypclnt.c:797 -+#: elf/../sysdeps/generic/readelflib.c:69 -+#, c-format -+msgid "Unknown ELFCLASS in file %s.\n" -+msgstr "Neznáma ELFCLASS v súbore %s.\n" -+ -+#: nis/ypclnt.c:820 - msgid "Unknown NIS error code" - msgstr "Neznámy chybový kód NIS" - --#: nss/getent.c:505 -+#: nss/getent.c:771 - #, c-format - msgid "Unknown database: %s\n" - msgstr "Neznáma databáza %s\n" - --#: posix/../sysdeps/posix/gai_strerror.c:51 -+#: posix/../sysdeps/posix/gai_strerror.c:52 - msgid "Unknown error" - msgstr "Neznáma chyba" - - #: string/../sysdeps/generic/_strerror.c:48 --#: string/../sysdeps/mach/_strerror.c:86 --#: sysdeps/mach/hurd/mips/dl-machine.c:82 -+#: string/../sysdeps/mach/_strerror.c:88 -+#: sysdeps/mach/hurd/mips/dl-machine.c:83 - msgid "Unknown error " - msgstr "Neznáma chyba " - --#: resolv/herror.c:74 -+#: resolv/herror.c:68 - msgid "Unknown host" - msgstr "Neznámy poèítaè" - --#: nis/nis_error.c:34 -+#: nis/nis_error.c:35 - msgid "Unknown object" - msgstr "Neznámy objekt" - --#: nscd/nscd_conf.c:181 -+#: nscd/nscd_conf.c:187 - #, c-format - msgid "Unknown option: %s %s %s" - msgstr "Neznáma voµba: %s %s %s" - --#: resolv/herror.c:120 -+#: resolv/herror.c:110 - msgid "Unknown resolver error" - msgstr "Neznáma chyba resolvera" - --#: resolv/herror.c:76 -+#: resolv/herror.c:70 - msgid "Unknown server error" - msgstr "Neznáma chyba servera" - --#: string/strsignal.c:70 -+#: string/strsignal.c:71 - #, c-format - msgid "Unknown signal %d" - msgstr "Neznámy signál %d" - --#: misc/error.c:107 -+#: misc/error.c:114 timezone/zic.c:384 - msgid "Unknown system error" - msgstr "Neznáma chyba systému" - --#: nis/ypclnt.c:845 -+#: nis/ypclnt.c:868 - msgid "Unknown ypbind error" - msgstr "Neznáma chyba ypbind" - --#: posix/regex.c:1020 -+#: posix/regex.c:1108 - msgid "Unmatched ( or \\(" - msgstr "Nepárová ( or \\(" - --#: posix/regex.c:1028 -+#: posix/regex.c:1132 - msgid "Unmatched ) or \\)" - msgstr "Nepárová ) or \\)" - --#: posix/regex.c:1019 -+#: posix/regex.c:1105 - msgid "Unmatched [ or [^" - msgstr "Nepárová [ or [^" - --#: posix/regex.c:1021 -+#: posix/regex.c:1111 - msgid "Unmatched \\{" - msgstr "Nepárová \\{" - --#: posix/getconf.c:692 -+#: posix/getconf.c:819 - #, c-format - msgid "Unrecognized variable `%s'" - msgstr "Nerozpoznaná premenná `%s'" - --#: stdio-common/../sysdeps/unix/siglist.c:41 --#: sysdeps/unix/sysv/linux/siglist.h:35 -+#: stdio-common/../sysdeps/unix/siglist.c:42 sysdeps/generic/siglist.h:42 - msgid "Urgent I/O condition" - msgstr "Urgentný V/V stav" - --#: argp/argp-help.c:1567 -+#: argp/argp-help.c:1568 - msgid "Usage:" - msgstr "Pou¾itie:" - --#: posix/getconf.c:604 -+#: posix/getconf.c:731 - #, c-format - msgid "Usage: %s variable_name [pathname]\n" - msgstr "Pou¾itie: %s meno_premennej [cesta]\n" -@@ -2644,1031 +3758,1117 @@ - msgid "Usage: rpcinfo [ -n portnum ] -u host prognum [ versnum ]\n" - msgstr "Pou¾itie: rpcinfo [ -n èíslo_portu ] -u poèítaè èíslo_programu [ èíslo_verzie ]\n" - --#: stdio-common/../sysdeps/unix/siglist.c:55 --#: sysdeps/unix/sysv/linux/siglist.h:48 -+#: elf/ldconfig.c:132 -+msgid "Use CACHE as cache file" -+msgstr "Pou¾i» CACHE ako cache súbor" -+ -+#: elf/ldconfig.c:133 -+msgid "Use CONF as configuration file" -+msgstr "Pou¾i» CONF ako konfiguraèný súbor" -+ -+#: nscd/nscd.c:92 -+msgid "Use separate cache for each user" -+msgstr "Pou¾i» samostatnú cache pre ka¾dého pou¾ívateµa" -+ -+#: stdio-common/../sysdeps/unix/siglist.c:56 sysdeps/generic/siglist.h:55 - msgid "User defined signal 1" - msgstr "Pou¾ívateµom definovaný signál 1" - --#: stdio-common/../sysdeps/unix/siglist.c:56 --#: sysdeps/unix/sysv/linux/siglist.h:49 -+#: stdio-common/../sysdeps/unix/siglist.c:57 sysdeps/generic/siglist.h:56 - msgid "User defined signal 2" - msgstr "Pou¾ívateµom definovaný signál 2" - --#: stdio-common/../sysdeps/gnu/errlist.c:654 -+#: stdio-common/../sysdeps/gnu/errlist.c:673 -+#: stdio-common/../sysdeps/unix/sysv/sysv4/solaris2/sparc/errlist.c:109 - msgid "Value too large for defined data type" - msgstr "Hodnota je pre daný dátový typ priveµká" - --#: stdio-common/../sysdeps/unix/siglist.c:51 --#: sysdeps/unix/sysv/linux/siglist.h:45 -+#: stdio-common/../sysdeps/unix/siglist.c:52 sysdeps/generic/siglist.h:52 - msgid "Virtual timer expired" - msgstr "Vypr¹al virtuálny èasovaè" - --#: timezone/zic.c:1899 -+#: timezone/zic.c:1926 - msgid "Wild result from command execution" - msgstr "Èudný výsledok vykonania programu" - --#: stdio-common/../sysdeps/unix/siglist.c:53 --#: sysdeps/unix/sysv/linux/siglist.h:47 -+#: stdio-common/../sysdeps/unix/siglist.c:54 sysdeps/generic/siglist.h:54 - msgid "Window changed" - msgstr "Okno sa zmenilo" - --#: locale/programs/locale.c:67 -+#: locale/programs/locale.c:69 - msgid "Write names of available charmaps" - msgstr "Vypísa» názvy dostupných znakových sád" - --#: locale/programs/locale.c:65 -+#: locale/programs/locale.c:67 - msgid "Write names of available locales" - msgstr "Vypísa» názvy dostupných národných prostredí" - --#: locale/programs/locale.c:69 -+#: locale/programs/locale.c:71 - msgid "Write names of selected categories" - msgstr "Vypísa» názvy vybraných kategórií" - --#: locale/programs/locale.c:70 -+#: locale/programs/locale.c:72 - msgid "Write names of selected keywords" - msgstr "Vypísa» názvy vybraných kµúèových slov" - --#: catgets/gencat.c:110 db2/makedb.c:59 -+#: catgets/gencat.c:115 - msgid "Write output to file NAME" - msgstr "Zapísa» výstup do súboru SÚBOR" - --#: catgets/gencat.c:241 db2/makedb.c:247 elf/sprof.c:365 --#: iconv/iconv_prog.c:299 locale/programs/locale.c:272 --#: locale/programs/localedef.c:408 nscd/nscd.c:228 nss/getent.c:70 --#: posix/getconf.c:629 -+#: elf/cache.c:366 elf/cache.c:375 elf/cache.c:379 -+msgid "Writing of cache data failed" -+msgstr "Zápi údajov do cache zlyhal" -+ -+#: elf/cache.c:383 -+msgid "Writing of cache data failed." -+msgstr "Zápi údajov do cache zlyhal." -+ -+#: catgets/gencat.c:251 elf/ldconfig.c:269 elf/sprof.c:361 -+#: iconv/iconv_prog.c:356 locale/programs/locale.c:274 -+#: locale/programs/localedef.c:316 nscd/nscd.c:292 nscd/nscd_nischeck.c:95 -+#: nss/getent.c:68 posix/getconf.c:756 - #, c-format - msgid "Written by %s.\n" - msgstr "Autor: %s.\n" - --#: stdio-common/../sysdeps/gnu/errlist.c:818 -+#: stdio-common/../sysdeps/gnu/errlist.c:837 - msgid "Wrong medium type" - msgstr "Chybný typ média" - --#: nis/nis_print.c:39 -+#: nis/nis_print.c:40 - msgid "X500" - msgstr "X500" - --#: nis/nis_print.c:43 -+#: nis/nis_print.c:44 - msgid "XCHS" - msgstr "XCHS" - --#: nis/ypclnt.c:185 -+#: nis/ypclnt.c:174 - #, c-format - msgid "YPBINDPROC_DOMAIN: %s\n" - msgstr "YPBINDPROC_DOMAIN: %s\n" - --#: nis/nis_error.c:70 -+#: nis/nis_error.c:71 - msgid "Yes, 42 is the meaning of life" - msgstr "Áno, 42 je význam ¾ivota" - - #. TRANS You did @strong{what}? --#: stdio-common/../sysdeps/gnu/errlist.c:608 -+#: stdio-common/../sysdeps/gnu/errlist.c:627 - msgid "You really blew it this time" - msgstr "Tentokrát si to skutoène poondial" - --#: timezone/zic.c:1063 -+#: timezone/zic.c:1088 - msgid "Zone continuation line end time is not after end time of previous line" - msgstr "Koncový èas pokraèovacieho riadku zóny nie je väè¹í ako koncový èas predchádzajúceho riadku" - --#: iconv/iconv_prog.c:70 -+#: iconv/iconv_prog.c:73 - msgid "[FILE...]" - msgstr "[SÚBOR...]" - --#: locale/programs/charmap.c:481 locale/programs/locfile.c:471 --#: locale/programs/repertoire.c:278 -+#: debug/pcprofiledump.c:59 -+msgid "[FILE]" -+msgstr "[SÚBOR]" -+ -+#: sunrpc/pmap_clnt.c:72 -+msgid "__get_myaddress: ioctl (get interface configuration)" -+msgstr "__get_myaddress: ioctl (získanie konfigurácie rozhrania)" -+ -+#: locale/programs/ld-collate.c:417 -+#, c-format -+msgid "`%.*s' already defined as collating element" -+msgstr "`%.*s' bol u¾ definovaný ako element triedenia" -+ -+#: locale/programs/ld-collate.c:410 -+#, c-format -+msgid "`%.*s' already defined as collating symbol" -+msgstr "`%.*s' bol u¾ definovaný ako symbol triedenia" -+ -+#: locale/programs/ld-collate.c:394 -+#, c-format -+msgid "`%.*s' already defined in charmap" -+msgstr "`%.*s' bol u¾ definovaný v znakovej mape" -+ -+#: locale/programs/ld-collate.c:403 -+#, c-format -+msgid "`%.*s' already defined in repertoire" -+msgstr "`%.*s' bol u¾ definovaný v repertoári" -+ -+#: locale/programs/charmap.c:599 locale/programs/locfile.h:96 -+#: locale/programs/repertoire.c:314 - #, c-format - msgid "`%1$s' definition does not end with `END %1$s'" - msgstr "Definícia `%1$s' nekonèí `END %1$s'" - --#: elf/sprof.c:766 -+#: locale/programs/ld-collate.c:1268 locale/programs/ld-ctype.c:1454 - #, c-format --msgid "`%s' is no correct profile data file for `%s'" --msgstr "`%s' nie sú správne profilovacie údaje pre `%s'" -+msgid "`%s' and `%.*s' are no valid names for symbolic range" -+msgstr "`%s' a `%.*s' sú neprípustné názvy pre symbolický rozsah" - --#: locale/programs/ld-monetary.c:369 locale/programs/ld-numeric.c:193 -+#: elf/sprof.c:762 - #, c-format --msgid "`-1' must be last entry in `%s' field in `%s' category" --msgstr "`-1' musí by» posledným záznamom v poli `%s' kategórie `%s'" -+msgid "`%s' is no correct profile data file for `%s'" -+msgstr "`%s' nie sú správne profilovacie údaje pre `%s'" - --#: locale/programs/ld-collate.c:1666 --msgid "`...' must only be used in `...' and `UNDEFINED' entries" --msgstr "`...' mô¾e by» pou¾ité iba v záznamoch `...' a `UNDEFINED'" -- --#: locale/programs/locfile.c:668 --msgid "`from' expected after first argument to `collating-element'" --msgstr "`from' je oèakávané po prvom argumente `collating-element'" -- --#: locale/programs/ld-collate.c:1118 --msgid "`from' string in collation element declaration contains unknown character" --msgstr "`from' re»azec v deklarácii elementu triedenia obsahuje neznámy znak" -+#: locale/programs/ld-ctype.c:691 -+msgid "`digit' category has not entries in groups of ten" -+msgstr "kategória `digit' neobsahuje záznamy v skupinách po desiatich" - --#: posix/../sysdeps/posix/gai_strerror.c:34 -+#: posix/../sysdeps/posix/gai_strerror.c:35 - msgid "ai_family not supported" - msgstr "ai_family nie je podporovaná" - --#: posix/../sysdeps/posix/gai_strerror.c:39 -+#: posix/../sysdeps/posix/gai_strerror.c:40 - msgid "ai_socktype not supported" - msgstr "ai_socktype nie je podporovaný" - --#: nscd/nscd.c:121 -+#: nscd/nscd.c:130 - msgid "already running" - msgstr "u¾ be¾í" - --#: locale/programs/charmap.c:352 locale/programs/repertoire.c:152 -+#: locale/programs/charmap.c:434 locale/programs/repertoire.c:184 - #, c-format - msgid "argument to <%s> must be a single character" - msgstr "argument pre <%s> musí by» jeden znak" - --#: locale/programs/locfile.c:240 -+#: locale/programs/locfile.c:124 - #, c-format - msgid "argument to `%s' must be a single character" - msgstr "argument pre `%s' musí by» jeden znak" - --#: sunrpc/auth_unix.c:321 -+#: sunrpc/auth_unix.c:311 - msgid "auth_none.c - Fatal marshalling problem" - msgstr "auth_none.c - Fatálna chyba marshallingu" - --#: sunrpc/auth_unix.c:116 sunrpc/auth_unix.c:122 sunrpc/auth_unix.c:151 -+#: sunrpc/auth_unix.c:106 sunrpc/auth_unix.c:112 sunrpc/auth_unix.c:142 - msgid "authunix_create: out of memory\n" - msgstr "authunix_create: nedostatok pamäti\n" - --#: locale/programs/charmap.c:297 locale/programs/locfile.c:234 --#: locale/programs/locfile.c:261 locale/programs/repertoire.c:144 -+#: locale/programs/charmap.c:364 locale/programs/locfile.c:118 -+#: locale/programs/locfile.c:145 locale/programs/repertoire.c:176 - msgid "bad argument" - msgstr "chybný argument" - --#: inet/rcmd.c:318 -+#: inet/rcmd.c:424 - msgid "bad owner" - msgstr "chybný vlastník" - --#: timezone/zic.c:1185 -+#: timezone/zic.c:1210 - msgid "blank FROM field on Link line" - msgstr "prázdne pole OD v riadku Link" - --#: timezone/zic.c:1189 -+#: timezone/zic.c:1214 - msgid "blank TO field on Link line" - msgstr "prázdne pole DO v riadku Link" - --#: malloc/mcheck.c:208 -+#: malloc/mcheck.c:291 - msgid "block freed twice\n" - msgstr "blok uvoµnený dvakrát\n" - --#: malloc/mcheck.c:211 -+#: malloc/mcheck.c:294 - msgid "bogus mcheck_status, library is buggy\n" - msgstr "pochybný mcheck_status, kni¾nica má chyby\n" - --#: sunrpc/pmap_rmt.c:185 -+#: sunrpc/pmap_rmt.c:186 - msgid "broadcast: ioctl (get interface configuration)" - msgstr "broadcast: ioctl (získanie konfigurácie rozhrania)" - --#: sunrpc/pmap_rmt.c:194 -+#: sunrpc/pmap_rmt.c:195 - msgid "broadcast: ioctl (get interface flags)" - msgstr "broadcast: ioctl (získanie nastavení rozhrania)" - --#: login/programs/request.c:167 --msgid "buffer overflow" --msgstr "preteèenie vyrovnávacej pamäti" -- --#: sunrpc/svc_udp.c:446 -+#: sunrpc/svc_udp.c:528 - msgid "cache_set: could not allocate new rpc_buffer" - msgstr "cache_set: nebolo mo¾né prideli» rpc vyrovnávaciu pamä»" - --#: sunrpc/svc_udp.c:440 -+#: sunrpc/svc_udp.c:522 - msgid "cache_set: victim alloc failed" - msgstr "cache_set: obe» nenájdená" - --#: sunrpc/svc_udp.c:429 -+#: sunrpc/svc_udp.c:511 - msgid "cache_set: victim not found" - msgstr "cache_set: obe» nenájdená" - --#: timezone/zic.c:1726 -+#: timezone/zic.c:1751 - msgid "can't determine time zone abbreviation to use just after until time" - msgstr "nie je mo¾né nájs» skratku èasovej zóny pre pou¾itie hneï po koncovom èase" - --#: sunrpc/svc_simple.c:75 -+#: sunrpc/svc_simple.c:76 - #, c-format --msgid "can't reassign procedure number %d\n" --msgstr "nie je mo¾né znovu prideli» èíslo procedúry %d\n" -+msgid "can't reassign procedure number %ld\n" -+msgstr "nie je mo¾né znovu prideli» èíslo procedúry %ld\n" -+ -+#: elf/dl-reloc.c:152 -+msgid "can't restore segment prot after reloc" -+msgstr "nie je mo¾né obnovi» segment prot po relokácii" - --#: locale/programs/localedef.c:279 -+#: locale/programs/localedef.c:487 - #, c-format --msgid "cannot `stat' locale file `%s'" --msgstr "nie je mo¾né vykona» `stat' pre súbor národného prostredia `%s'" -+msgid "cannot add already read locale `%s' a second time" -+msgstr "nie je mo¾né znovu prida» u¾ naèítané prostredie `%s'" - --#: elf/sprof.c:935 elf/sprof.c:987 -+#: elf/dl-deps.c:470 -+msgid "cannot allocate dependency list" -+msgstr "nie je mo¾né prideli» pamä» pre zoznam závislostí" -+ -+#: elf/dl-load.c:1031 -+msgid "cannot allocate memory for program header" -+msgstr "nie je mo¾né prideli» pamä» pre hlavièku programu" -+ -+#: elf/dl-load.c:339 -+msgid "cannot allocate name record" -+msgstr "nie je mo¾né prideli» pamä» pre záznam názvu" -+ -+#: elf/sprof.c:930 elf/sprof.c:982 - msgid "cannot allocate symbol data" - msgstr "nie je mo¾né prideli» pamä» pre symbolické údaje" - --#: elf/sprof.c:719 elf/sprof.c:777 -+#: elf/dl-deps.c:501 -+msgid "cannot allocate symbol search list" -+msgstr "nie je mo¾né prideli» pamä» pre vyhµadávací zoznam symbolov" -+ -+#: elf/dl-version.c:291 -+msgid "cannot allocate version reference table" -+msgstr "nie je mo¾né prideli» pamä» pre referenènú tabuµku verzií" -+ -+#: elf/dl-load.c:1000 -+msgid "cannot change memory protections" -+msgstr "nie je mo¾né zmeni» ochranu pamäti" -+ -+#: elf/dl-load.c:533 -+msgid "cannot create RUNPATH/RPATH copy" -+msgstr "nie je mo¾né vytvori» kópiu RUNPATH/RPATH" -+ -+#: elf/dl-load.c:418 elf/dl-load.c:518 elf/dl-load.c:546 elf/dl-load.c:593 -+#: elf/dl-load.c:685 -+msgid "cannot create cache for search path" -+msgstr "Nie je mo¾né vytvori» cache pre hµadanie v ceste" -+ -+#: elf/dl-support.c:191 -+msgid "cannot create capability list" -+msgstr "nie je mo¾né vytvori» zoznam schopností" -+ -+#: elf/sprof.c:715 elf/sprof.c:773 - msgid "cannot create internal descriptor" - msgstr "nie je mo¾né vytvori» interný deskriptor" - --#: elf/sprof.c:417 -+#: elf/sprof.c:413 - msgid "cannot create internal descriptors" - msgstr "nie je mo¾né vytvori» interné deskriptory" - --#: nscd/connections.c:180 -+#: elf/dl-load.c:583 -+msgid "cannot create search path array" -+msgstr "nie je mo¾né vytvori» pole ciest" -+ -+#: elf/dl-load.c:1137 -+msgid "cannot create searchlist" -+msgstr "nie je mo¾né vytvori» vyhµadávací zoznam" -+ -+#: elf/dl-load.c:822 elf/dl-load.c:1682 -+msgid "cannot create shared object descriptor" -+msgstr "nie je mo¾né vytvori» deskriptor zdieµaného objektu" -+ -+#: catgets/gencat.c:1316 -+msgid "cannot determine escape character" -+msgstr "nie je mo¾né urèi» znak escape" -+ -+#: elf/dl-load.c:950 -+msgid "cannot dynamically load executable" -+msgstr "nie je mo¾né dynamicky naèíta» spustiteµný súbor" -+ -+#: nscd/connections.c:183 - #, c-format - msgid "cannot enable socket to accept connections: %s" - msgstr "nie je mo¾né povoli» socketu prijíma» spojenia: %s" - --#: sunrpc/rpc_main.c:342 -+#: elf/dl-open.c:121 -+msgid "cannot extend global scope" -+msgstr "nie je mo¾né roz¹íri» globálny rozsah" -+ -+#: sunrpc/rpc_main.c:343 - #, c-format - msgid "cannot find C preprocessor: %s \n" - msgstr "nie je mo¾né nájs» preprocesor: %s \n" - --#: sunrpc/rpc_main.c:350 -+#: sunrpc/rpc_main.c:351 - msgid "cannot find any C preprocessor (cpp)\n" - msgstr "nie je mo¾né nájs» ¾iadny C preprocesor (cpp)\n" - --#: nscd/connections.c:205 -+#: nscd/connections.c:225 - #, c-format - msgid "cannot handle old request version %d; current version is %d" - msgstr "nie je mo¾né spracova» starú verziu ¾iadosti %d; aktuálna verzia je %d" - --#: locale/programs/ld-collate.c:1324 --#, c-format --msgid "cannot insert collation element `%.*s'" --msgstr "nie je mo¾né vlo¾i» element triedenia `%.*s'" -- --#: locale/programs/ld-collate.c:1503 locale/programs/ld-collate.c:1510 --msgid "cannot insert into result table" --msgstr "nie je mo¾né vklada» do výslednej tabuµky" -- --#: locale/programs/ld-collate.c:1175 locale/programs/ld-collate.c:1218 --#, c-format --msgid "cannot insert new collating symbol definition: %s" --msgstr "nie je mo¾né vlo¾i» nový symbol triedenia: %s" -- --#: elf/sprof.c:674 -+#: elf/sprof.c:670 - msgid "cannot load profiling data" - msgstr "nie je mo¾né naèíta» profilovacie údaje" - --#: inet/rcmd.c:314 -+#: elf/dl-deps.c:586 -+msgid "cannot load shared object file" -+msgstr "nepodarilo sa naèíta» súbor zdieµaného objektu" -+ -+#: elf/dl-reloc.c:63 -+msgid "cannot make segment writable for relocation" -+msgstr "nie je mo¾né zmeni» segment na zapisovateµný pre relokáciu" -+ -+#: elf/dl-load.c:1016 -+msgid "cannot map zero-fill pages" -+msgstr "nie je mo¾né namapova» stránky vyplnené nulami" -+ -+#: inet/rcmd.c:420 - msgid "cannot open" - msgstr "nie je mo¾né otvori»" - - #: sysdeps/unix/sysv/linux/lddlibc4.c:64 - #, c-format --msgid "cannot open" --msgstr "nie je mo¾né otvori»" -+msgid "cannot open `%s'" -+msgstr "nie je mo¾né otvori» `%s'" - --#: db2/makedb.c:146 --#, c-format --msgid "cannot open database file `%s': %s" --msgstr "nie je mo¾né otvori» databázový súbor `%s': %s" -+#: debug/pcprofiledump.c:96 -+msgid "cannot open input file" -+msgstr "nie je mo¾né otvori» vstupný súbor" - --#: catgets/gencat.c:272 db2/makedb.c:167 iconv/iconv_prog.c:177 -+#: catgets/gencat.c:288 iconv/iconv_prog.c:225 - #, c-format - msgid "cannot open input file `%s'" - msgstr "nie je mo¾né otvori» vstupný súbor `%s'" - --#: locale/programs/localedef.c:198 -+#: locale/programs/localedef.c:203 locale/programs/localedef.c:218 -+#: locale/programs/localedef.c:513 locale/programs/localedef.c:533 - #, c-format - msgid "cannot open locale definition file `%s'" - msgstr "nie je mo¾né otvori» súbor definície národného prostredia `%s'" - --#: iconv/iconv_prog.c:155 -+#: iconv/iconv_prog.c:194 - msgid "cannot open output file" - msgstr "nie je mo¾né otvori» výstupný súbor" - --#: catgets/gencat.c:774 catgets/gencat.c:815 db2/makedb.c:181 -+#: catgets/gencat.c:944 catgets/gencat.c:985 - #, c-format - msgid "cannot open output file `%s'" - msgstr "nie je mo¾né otvori» výstupný súbor `%s'" - --#: locale/programs/locfile.c:1129 -+#: locale/programs/locfile.c:381 - #, c-format - msgid "cannot open output file `%s' for category `%s'" - msgstr "nie je mo¾né otvori» výstupný súbor `%s' pre kategóriu `%s'" - --#: nscd/connections.c:162 -+#: elf/dl-load.c:1695 -+msgid "cannot open shared object file" -+msgstr "nie je mo¾né otvori» súbor zdieµaného objektu" -+ -+#: nscd/connections.c:165 - #, c-format - msgid "cannot open socket: %s" - msgstr "nie je mo¾né otvori» socket `%s'" - --#: locale/programs/ld-collate.c:1370 --msgid "cannot process order specification" --msgstr "nie je mo¾né spracova» ¹pecifikáciu poradia" -+#: elf/dl-load.c:814 -+msgid "cannot open zero fill device" -+msgstr "nie je mo¾né otvori» zariadenie pre naplnenie nulami" - --#: locale/programs/locale.c:449 -+#: locale/programs/charmap-dir.c:61 - #, c-format - msgid "cannot read character map directory `%s'" - msgstr "nie je mo¾né naèíta» adresár znakových sád `%s'" - --#: nscd/connections.c:122 -+#: nscd/connections.c:125 - msgid "cannot read configuration file; this is fatal" - msgstr "nie je mo¾né naèíta» konfiguraèný súbor; to je fatálne" - --#: login/programs/request.c:91 --msgid "cannot read from client" --msgstr "nie je mo¾né èíta» od klienta" -+#: elf/dl-load.c:838 elf/dl-load.c:1244 -+msgid "cannot read file data" -+msgstr "nie je mo¾né naèíta» údaje súboru" -+ -+#: debug/pcprofiledump.c:102 -+msgid "cannot read header" -+msgstr "nie je mo¾né preèíta» hlavièku" - - #: sysdeps/unix/sysv/linux/lddlibc4.c:68 - #, c-format - msgid "cannot read header from `%s'" - msgstr "nie je mo¾né preèíta» hlavièku z `%s'" - --#: locale/programs/locale.c:306 -+#: locale/programs/locale.c:308 - #, c-format - msgid "cannot read locale directory `%s'" - msgstr "nie je mo¾né naèíta» adresár národných prostredí `%s'" - --#: locale/programs/localedef.c:303 --#, c-format --msgid "cannot read locale file `%s'" --msgstr "nie je mo¾né preèíta» súbor národného prostredia `%s'" -- --#: locale/programs/locfile.c:288 locale/programs/locfile.c:306 --#: locale/programs/locfile.c:324 locale/programs/locfile.c:342 --#: locale/programs/locfile.c:360 locale/programs/locfile.c:378 --#, c-format --msgid "cannot read repertoire map `%s'" --msgstr "nie je mo¾né naèíta» mapu repertoáru `%s'" -- --#: nscd/nscd_stat.c:127 -+#: nscd/nscd_stat.c:128 - msgid "cannot read statistics data" - msgstr "nie je mo¾né naèíta» ¹tatistické údaje" - --#: nscd/cache.c:141 nscd/connections.c:148 -+#: locale/programs/repertoire.c:331 -+msgid "cannot safe new repertoire map" -+msgstr "nie je mo¾né uchova» mapu repertoáru" -+ -+#: elf/dl-load.c:776 -+msgid "cannot stat shared object" -+msgstr "nepodarilo sa zisti» stav zdieµaného objektu" -+ -+#: nscd/cache.c:150 nscd/connections.c:151 - #, c-format - msgid "cannot stat() file `%s': %s" - msgstr "nie je mo¾né vykona» stat() súboru `%s': %s" - --#: locale/programs/localedef.c:328 -+#: locale/programs/localedef.c:230 - #, c-format - msgid "cannot write output files to `%s'" - msgstr "nie je mo¾né zapísa» výstupné súbory do `%s'" - --#: nscd/connections.c:229 nscd/connections.c:250 -+#: nscd/connections.c:261 nscd/connections.c:282 - #, c-format - msgid "cannot write result: %s" - msgstr "nie je mo¾né zapísa» výsledok: %s" - --#: nscd/nscd_stat.c:86 -+#: nscd/nscd_stat.c:87 - #, c-format - msgid "cannot write statistics: %s" - msgstr "nie je mo¾né zapísa» ¹tatistiku: `%s'" - --#: login/programs/request.c:120 --msgid "cannot write to client" --msgstr "nie je mo¾né písa» klientovi" -- --#: locale/programs/localedef.c:442 --msgid "category data requested more than once: should not happen" --msgstr "údaje kategórie po¾adované viac ako raz - to by sa nemalo sta»" -- --#: locale/programs/ld-ctype.c:269 -+#: locale/programs/ld-ctype.c:509 - #, c-format --msgid "character %s'%s' in class `%s' must be in class `%s'" --msgstr "znak %s'%s' v triede `%s' musí by» v triede `%s'" -+msgid "character '%s' in class `%s' must be in class `%s'" -+msgstr "znak '%s' v triede `%s' musí by» v triede `%s'" - --#: locale/programs/ld-ctype.c:294 -+#: locale/programs/ld-ctype.c:524 - #, c-format --msgid "character %s'%s' in class `%s' must not be in class `%s'" --msgstr "znak %s'%s' v triede `%s' nesmie by» v triede `%s'" -+msgid "character '%s' in class `%s' must not be in class `%s'" -+msgstr "znak '%s' v triede `%s' nesmie by» v triede `%s'" - --#: locale/programs/ld-ctype.c:320 -+#: locale/programs/ld-ctype.c:579 - msgid "character not defined in character map" - msgstr "znak nie je definovaný v znakovej sade" - --#: locale/programs/ld-ctype.c:964 locale/programs/ld-ctype.c:1029 --#: locale/programs/ld-ctype.c:1040 locale/programs/ld-ctype.c:1051 --#: locale/programs/ld-ctype.c:1062 locale/programs/ld-ctype.c:1073 --#: locale/programs/ld-ctype.c:1084 locale/programs/ld-ctype.c:1113 --#: locale/programs/ld-ctype.c:1124 locale/programs/ld-ctype.c:1165 --#: locale/programs/ld-ctype.c:1194 locale/programs/ld-ctype.c:1206 -+#: locale/programs/ld-ctype.c:453 -+#, c-format -+msgid "character L'\\u%0*x' in class `%s' must be in class `%s'" -+msgstr "znak L'\\u%0*x' v triede `%s' musí by» v triede `%s'" -+ -+#: locale/programs/ld-ctype.c:467 -+#, c-format -+msgid "character L'\\u%0*x' in class `%s' must not be in class `%s'" -+msgstr "znak L'\\u%0*x' v triede `%s' nesmie by» v triede `%s'" -+ -+#: locale/programs/ld-ctype.c:3030 - #, c-format - msgid "character `%s' not defined while needed as default value" - msgstr "znak `%s' nie je definovaný a je potrebný ako implicitná hodnota" - --#: locale/programs/ld-ctype.c:825 -+#: locale/programs/ld-ctype.c:1215 - #, c-format - msgid "character class `%s' already defined" - msgstr "trieda znakov `%s' je u¾ definovaná" - --#: locale/programs/ld-ctype.c:857 -+#: locale/programs/ld-ctype.c:1247 - #, c-format - msgid "character map `%s' already defined" - msgstr "znaková sada `%s' je u¾ definovaná" - --#: locale/programs/charmap.c:83 -+#: locale/programs/charmap.c:249 -+#, c-format -+msgid "character map `%s' is not ASCII compatible, locale not ISO C compliant\n" -+msgstr "znaková mapa `%s' nie je kompatibilná s ASCII, prostredie nevyhovuje ISO C\n" -+ -+#: locale/programs/charmap.c:135 - #, c-format - msgid "character map file `%s' not found" - msgstr "súbor znakovej sady `%s' nebol nájdený" - --#: sunrpc/clnt_raw.c:110 -+#: locale/programs/charmap.c:460 -+msgid "character sets with locking states are not supported" -+msgstr "znakové sady so zamykacími stavmi nie sú podporované" -+ -+#: locale/programs/localedef.c:482 -+msgid "circular dependencies between locale definitions" -+msgstr "kruhová závislos» medzi definíciami prostredí" -+ -+#: sunrpc/clnt_raw.c:111 - msgid "clnt_raw.c - Fatal header serialization error." - msgstr "clnt_raw.c - Fatálna chyba pri serializácii hlavièky." - --#: sunrpc/clnt_tcp.c:125 sunrpc/clnt_tcp.c:133 -+#: sunrpc/clnt_tcp.c:126 sunrpc/clnt_tcp.c:134 - msgid "clnttcp_create: out of memory\n" - msgstr "clnttcp_create: nedostatok pamäti\n" - --#: sunrpc/clnt_udp.c:124 sunrpc/clnt_udp.c:134 --msgid "svctcp_create: out of memory\n" --msgstr "svctcp_create: nedostatok pamäti\n" -+#: sunrpc/clnt_udp.c:131 sunrpc/clnt_udp.c:141 -+msgid "clntudp_create: out of memory\n" -+msgstr "clntudp_create: nedostatok pamäti\n" - --#: sunrpc/clnt_unix.c:123 sunrpc/clnt_unix.c:131 -+#: sunrpc/clnt_unix.c:124 sunrpc/clnt_unix.c:132 - msgid "clntunix_create: out of memory\n" - msgstr "clntunix_create: nedostatok pamäti\n" - --#: locale/programs/ld-collate.c:1339 --#, c-format --msgid "collation element `%.*s' appears more than once: ignore line" --msgstr "element triedenia `%.*s' uvedený viac ako raz - riadok ignorovaný" -- --#: locale/programs/ld-collate.c:1357 --#, c-format --msgid "collation symbol `%.*s' appears more than once: ignore line" --msgstr "symbol triedenia `%.*s' uvedený viac ako raz - riadok ignorovaný" -- --#: locale/programs/locfile.c:652 --#, c-format --msgid "collation symbol expected after `%s'" --msgstr "po `%s' je oèakávaný symbol triedenia" -- --#: inet/rcmd.c:136 --#, c-format --msgid "connect to address %s: " --msgstr "spojenie s adresou %s: " -- --#: sunrpc/rpc_scan.c:115 -+#: sunrpc/rpc_scan.c:116 - msgid "constant or identifier expected" - msgstr "oèakávaná kon¹tanta alebo identifikátor" - --#: iconv/iconv_prog.c:144 -+#: iconv/iconv_prog.c:182 - #, c-format - msgid "conversion from `%s' to `%s' not supported" - msgstr "konverzia z `%s' do `%s' nie je podporovaná" - --#: iconv/iconv_prog.c:326 -+#: catgets/gencat.c:1290 -+msgid "conversion modules not available" -+msgstr "moduly konverzie nie sú dostupné" -+ -+#: locale/programs/ld-monetary.c:900 -+msgid "conversion rate value cannot be zero" -+msgstr "konverzný pomer nemô¾e by» nula" -+ -+#: iconv/iconv_prog.c:385 iconv/iconv_prog.c:410 - msgid "conversion stopped due to problem in writing the output" - msgstr "konverzia zastavená kvôli problému pri zápise výstupu" - --#: sunrpc/svc_simple.c:83 -+#: sunrpc/svc_simple.c:84 - msgid "couldn't create an rpc server\n" - msgstr "nebolo mo¾né vytvori» rpc server\n" - --#: sunrpc/svc_simple.c:91 -+#: sunrpc/svc_simple.c:92 - #, c-format --msgid "couldn't register prog %d vers %d\n" --msgstr "nebolo mo¾né zaregistrova» program %d verzie %d\n" -+msgid "couldn't register prog %ld vers %ld\n" -+msgstr "nebolo mo¾né zaregistrova» program %ld verzie %ld\n" - --#: nss/getent.c:49 -+#: nss/getent.c:51 - msgid "database [key ...]" - msgstr "databáza [kµúè ...]" - --#: locale/programs/charmap.c:170 -+#: locale/programs/charmap.c:192 - #, c-format - msgid "default character map file `%s' not found" - msgstr "implicitný súbor znakovej sady `%s' nebol nájdený" - --#: locale/programs/ld-time.c:163 --#, c-format --msgid "direction flag in string %d in `era' field in category `%s' is not '+' nor '-'" --msgstr "príznak smeru v re»azci %d poµa `era' v kategórii `%s' nie je '+' ani '-'" -- --#: locale/programs/ld-time.c:174 --#, c-format --msgid "direction flag in string %d in `era' field in category `%s' is not a single character" --msgstr "príznak smeru v re»azci %d poµa `era' v kategórii `%s' nie je jeden znak" -- --#: locale/programs/charset.c:64 locale/programs/charset.c:118 -+#: locale/programs/charmap.c:392 - #, c-format --msgid "duplicate character name `%s'" --msgstr "duplicitné meno znaku `%s'" -- --#: locale/programs/ld-collate.c:1150 --msgid "duplicate collating element definition" --msgstr "duplicitná definícia elementu triedenia" -+msgid "duplicate definition of <%s>" -+msgstr "duplicitná definícia <%s>" - --#: locale/programs/ld-collate.c:1297 -+#: locale/programs/ld-collate.c:3043 - #, c-format --msgid "duplicate definition for character `%.*s'" --msgstr "duplicitná definícia znaku `%.*s'" -+msgid "duplicate definition of script `%s'" -+msgstr "duplicitná definícia skriptu `%s'" - --#: db2/makedb.c:328 --msgid "duplicate key" --msgstr "duplicitný kµúè" -- --#: catgets/gencat.c:388 -+#: catgets/gencat.c:430 - msgid "duplicate set definition" - msgstr "duplicitná definícia sady" - --#: timezone/zic.c:978 -+#: timezone/zic.c:1003 - #, c-format - msgid "duplicate zone name %s (file \"%s\", line %d)" - msgstr "duplicitné meno zóny %s (súbor \"%s\", riadok %d)" - --#: catgets/gencat.c:551 -+#: locale/programs/ld-ctype.c:2557 -+#, c-format -+msgid "duplicated definition for mapping `%s'" -+msgstr "duplicitná definícia mapovania `%s'" -+ -+#: catgets/gencat.c:631 - msgid "duplicated message identifier" - msgstr "duplicitný identifikátor správy" - --#: catgets/gencat.c:524 -+#: catgets/gencat.c:603 - msgid "duplicated message number" - msgstr "duplicitné èíslo správy" - --#: sunrpc/rpc_scan.c:382 -+#: locale/programs/ld-ctype.c:2368 -+msgid "ellipsis range must be marked by two operands of same type" -+msgstr "rozsah pokraèovania musí by» oznaèený dvomi operandami rovnakého typu" -+ -+#: sunrpc/rpc_scan.c:383 - msgid "empty char string" - msgstr "prázdny znakový re»azec" - --#: locale/programs/ld-collate.c:1710 --msgid "empty weight name: line ignored" --msgstr "prázdne meno váhy - riadok ignorovaný" -+#: elf/dl-open.c:223 -+msgid "empty dynamic string token substitution" -+msgstr "prázdna substitúcia tokenu dynamického re»azca" - --#: sunrpc/svc_udp.c:372 -+#: sunrpc/svc_udp.c:454 - msgid "enablecache: cache already enabled" - msgstr "enablecache: vyrovnávacia pamä» je u¾ povolená" - --#: sunrpc/svc_udp.c:378 -+#: sunrpc/svc_udp.c:460 - msgid "enablecache: could not allocate cache" - msgstr "enablecache: nebolo mo¾né prideli» vyrovnáciu pamä»" - --#: sunrpc/svc_udp.c:386 -+#: sunrpc/svc_udp.c:468 - msgid "enablecache: could not allocate cache data" - msgstr "enablecache: nebolo mo¾né prideli» dáta pre vyrovnávaciu pamä»" - --#: sunrpc/svc_udp.c:393 -+#: sunrpc/svc_udp.c:475 - msgid "enablecache: could not allocate cache fifo" - msgstr "enablecache: nebolo mo¾né prideli» frontu pre vyrovnávaciu pamä»" - --#: iconv/iconv_prog.c:56 -+#: iconv/iconv_prog.c:57 - msgid "encoding for output" - msgstr "kódovanie výstupu" - --#: iconv/iconv_prog.c:55 -+#: iconv/iconv_prog.c:56 - msgid "encoding of original text" - msgstr "kódovanie pôvodného textu" - --#: locale/programs/ld-collate.c:1429 --msgid "end point of ellipsis range is bigger then start" --msgstr "koncový bod pokraèovania je väè¹í ako poèiatoèný" -+#: nscd/connections.c:361 nscd/connections.c:453 -+#, c-format -+msgid "error getting callers id: %s" -+msgstr "chyba pri získaní id volajúceho: %s" -+ -+#: locale/programs/ld-collate.c:3013 -+msgid "error while adding equivalent collating symbol" -+msgstr "chyba pri pridávaní ekvivalentného symbolu triedenia" - --#: iconv/iconv_prog.c:193 -+#: iconv/iconv_prog.c:242 - #, c-format - msgid "error while closing input `%s'" - msgstr "chyba poèas zatvárania vstupu `%s'" - --#: iconv/iconv_prog.c:239 -+#: iconv/iconv_prog.c:288 - msgid "error while closing output file" - msgstr "chyba poèas zatvárania výstupného súboru" - --#: elf/sprof.c:710 -+#: elf/sprof.c:706 - msgid "error while closing the profiling data file" - msgstr "chyba poèas zatvárania súboru profilovacích údajov" - --#: locale/programs/ld-collate.c:1158 --msgid "error while inserting collation element into hash table" --msgstr "chyba poèas vkladania elementu triedenia do hash-tabuµky" -- --#: locale/programs/ld-collate.c:1170 --msgid "error while inserting to hash table" --msgstr "chyba poèas vkladania do hash-tabuµky" -- --#: iconv/iconv_prog.c:389 iconv/iconv_prog.c:420 -+#: iconv/iconv_prog.c:474 iconv/iconv_prog.c:505 - msgid "error while reading the input" - msgstr "poèas èítania vstupu" - --#: locale/programs/locfile.c:595 -+#: locale/programs/locfile.h:59 - msgid "expect string argument for `copy'" - msgstr "pre `copy' je oèakávaný re»azcový argyment" - --#: timezone/zic.c:868 -+#: timezone/zic.c:893 - msgid "expected continuation line not found" - msgstr "oèakávaný pokraèovací riadok nebol nájdený" - --#: elf/sprof.c:408 -+#: elf/sprof.c:404 - #, c-format - msgid "failed to load shared object `%s'" - msgstr "nepodarilo sa naèíta» zdieµaný objekt `%s'" - --#: elf/sprof.c:604 -+#: elf/sprof.c:600 - msgid "failed to load symbol data" - msgstr "nepodarilo sa naèíta» symbolické údaje" - --#: elf/sprof.c:702 -+#: elf/dl-load.c:763 -+msgid "failed to map segment from shared object" -+msgstr "nepodarilo sa namapova» segment zo zdieµaného objektu" -+ -+#: elf/sprof.c:698 - msgid "failed to mmap the profiling data file" - msgstr "nepodarilo sa mmap-ova» súbor profilovacích údajov" - --#: iconv/iconv_prog.c:147 -+#: iconv/iconv_prog.c:186 - msgid "failed to start conversion processing" - msgstr "nepodarilo sa od¹tartova» konverziu" - --#: locale/programs/locfile.c:1154 -+#: locale/programs/locfile.c:406 - #, c-format - msgid "failure while writing data for category `%s'" - msgstr "chyba poèas zápisu údajov kategórie `%s'" - --#: nis/nis_call.c:155 -+#: nis/nis_call.c:156 - msgid "fcntl: F_SETFD" - msgstr "fcntl: F_SETFD" - --#: locale/programs/ld-monetary.c:163 locale/programs/ld-numeric.c:98 --#, c-format --msgid "field `%s' in category `%s' not defined" --msgstr "pole `%s' ketegórie `%s' nie je definované" -- --#: locale/programs/ld-messages.c:86 locale/programs/ld-messages.c:110 --#, c-format --msgid "field `%s' in category `%s' undefined" --msgstr "pole `%s' kategórie `%s' nedefinované" -- --#: sunrpc/rpc_main.c:1148 --#, c-format --msgid "file '%s' already exists and may be overwritten\n" --msgstr "súbor '%s' u¾ existuje a mô¾e by» prepísaný\n" -- --#: locale/programs/locfile.c:677 --msgid "from-value of `collating-element' must be a string" --msgstr "hodnota od pre `collating-element' musí by» re»azec" -+#. TRANS: the file will not be removed; this is an -+#. TRANS: informative message. -+#: sunrpc/rpc_main.c:1150 -+#, c-format -+msgid "file `%s' already exists and may be overwritten\n" -+msgstr "súbor `%s' u¾ existuje a mô¾e by» prepísaný\n" -+ -+#: elf/dl-load.c:1244 -+msgid "file too short" -+msgstr "súbor je príli¹ krátky" - --#: inet/rcmd.c:316 -+#: inet/rcmd.c:422 - msgid "fstat failed" - msgstr "fstat sa nepodaril" - --#: locale/programs/linereader.c:333 -+#: locale/programs/linereader.c:383 - msgid "garbage at end of character code specification" - msgstr "smetie za koncom ¹pecifikácie kódu znaku" - --#: locale/programs/linereader.c:219 -+#: locale/programs/linereader.c:271 - msgid "garbage at end of number" - msgstr "smetie za koncom èísla" - --#: locale/programs/ld-time.c:195 --#, c-format --msgid "garbage at end of offset value in string %d in `era' field in category `%s'" --msgstr "smetie za koncom hodnoty posunutia v re»azci %d poµa `era' kategórie `%s'" -- --#: locale/programs/ld-time.c:252 --#, c-format --msgid "garbage at end of starting date in string %d in `era' field in category `%s'" --msgstr "smetie za koncom poèiatoèného dátumu v re»azci %d poµa `era' kategórie `%s'" -- --#: locale/programs/ld-time.c:328 --#, c-format --msgid "garbage at end of stopping date in string %d in `era' field in category `%s'" --msgstr "smetie za koncom koncového dátumu v re»azci %d poµa `era' kategórie `%s'" -- --#: elf/sprof.c:81 -+#: elf/sprof.c:77 - msgid "generate call graph" - msgstr "tvorba grafu volaní" - --#: elf/sprof.c:80 -+#: elf/sprof.c:76 - msgid "generate flat profile with counts and ticks" - msgstr "tvorba jednoduchého profilu s poètami a tikmi" - --#: sunrpc/get_myaddr.c:77 -+#: sunrpc/get_myaddr.c:78 - msgid "get_myaddress: ioctl (get interface configuration)" - msgstr "get_myaddress: ioctl (získanie konfigurácie rozhrania)" - --#: nss/getent.c:53 -+#: nss/getent.c:702 - msgid "getent - get entries from administrative database." - msgstr "getent - získa» záznamy z administratívnej databázy." - --#: nscd/connections.c:200 -+#: nscd/connections.c:220 - #, c-format - msgid "handle_request: request received (Version = %d)" - msgstr "handle_request: ¾iados» prijatá (verzia = %d)" - --#: timezone/zic.c:613 -+#: timezone/zic.c:637 - msgid "hard link failed, symbolic link used" - msgstr "pevný odkaz zlyhal, pou¾itý symbolický" - --#: inet/rcmd.c:322 -+#: inet/rcmd.c:428 - msgid "hard linked somewhere" - msgstr "niekde existuje pevný odkaz" - --#: timezone/zic.c:1162 -+#: locale/programs/charmap.c:981 locale/programs/repertoire.c:430 -+msgid "hexadecimal range format should use only capital characters" -+msgstr "hexadecimálny formát rozsahu by mal pou¾íva» iba veµké písmená" -+ -+#: timezone/zic.c:1187 - msgid "illegal CORRECTION field on Leap line" - msgstr "neprípustné pole CORRECTION v riadku Leap" - --#: timezone/zic.c:1166 -+#: timezone/zic.c:1191 - msgid "illegal Rolling/Stationary field on Leap line" - msgstr "neprípustné pole Rolling/Stationary v riadku Leap" - --#: locale/programs/ld-collate.c:1782 --msgid "illegal character constant in string" --msgstr "neprípustný znak v re»azci" -- --#: sunrpc/rpc_scan.c:311 -+#: sunrpc/rpc_scan.c:312 - msgid "illegal character in file: " - msgstr "neprípustný znak v súbore: " - --#: locale/programs/ld-collate.c:1125 --msgid "illegal collation element" --msgstr "neprípustný element triedenia" -- --#: locale/programs/charmap.c:281 --msgid "illegal definition" --msgstr "neprípustná definícia" -- --#: locale/programs/charmap.c:434 --msgid "illegal encoding given" --msgstr "zadané neprípustné kódovanie" -- --#: locale/programs/linereader.c:551 -+#: locale/programs/linereader.c:595 - msgid "illegal escape sequence at end of string" - msgstr "chybná escape-sekvencia na konci re»azca" - --#: iconv/iconv_prog.c:342 -+#: iconv/iconv_prog.c:427 - #, c-format - msgid "illegal input sequence at position %ld" - msgstr "neprípustná vstupná sekvencia na pozícii %ld" - --#: locale/programs/charset.c:78 --msgid "illegal names for character range" --msgstr "neprípustné mená pre rozsah znakov" -- --#: sunrpc/rpc_main.c:462 -+#: sunrpc/rpc_main.c:463 - #, c-format --msgid "illegal nettype :'%s'\n" --msgstr "chybný nettype :'%s'\n" -+msgid "illegal nettype :`%s'\n" -+msgstr "chybný nettype :`%s'\n" - --#: locale/programs/ld-time.c:187 --#, c-format --msgid "illegal number for offset in string %d in `era' field in category `%s'" --msgstr "neprípustné èíslo pre posunutie v re»azci %d poµa `era' kategórie `%s'" -- --#: catgets/gencat.c:361 catgets/gencat.c:438 -+#: catgets/gencat.c:403 catgets/gencat.c:480 - msgid "illegal set number" - msgstr "neprípustné èíslo sady" - --#: locale/programs/ld-time.c:243 --#, c-format --msgid "illegal starting date in string %d in `era' field in category `%s'" --msgstr "neprípustný poèiatoèný dátum v re»azci %d poµa `era' kategórie `%s'" -- --#: locale/programs/ld-time.c:319 -+#: locale/programs/ld-ctype.c:1221 - #, c-format --msgid "illegal stopping date in string %d in `era' field in category `%s'" --msgstr "neprípustný koncový dátum v re»azci %d poµa `era' kategórie `%s'" -+msgid "implementation limit: no more than %Zd character classes allowed" -+msgstr "limit implementácie: maximálne mno¾stvo tried znakov je %Zd" - --#: locale/programs/ld-ctype.c:831 --#, c-format --msgid "implementation limit: no more than %d character classes allowed" --msgstr "limit implementácie: maximálne mno¾stvo tried znakov je %d" -- --#: locale/programs/ld-ctype.c:863 -+#: locale/programs/ld-ctype.c:1253 - #, c-format - msgid "implementation limit: no more than %d character maps allowed" - msgstr "limit implementácie: maximálne mno¾stvo sád znakov je %d" - --#: iconv/iconv_prog.c:346 -+#: iconv/iconv_prog.c:431 - msgid "incomplete character or shift sequence at end of buffer" - msgstr "nekompletný znak alebo preraïovacia sekvencia na konci vyrovnávacej pamäti" - --#: db2/makedb.c:148 --msgid "incorrectly formatted file" --msgstr "nesprávne formátovaný súbor" -- --#: timezone/zic.c:825 -+#: timezone/zic.c:850 - msgid "input line of unknown type" - msgstr "vstupný riadok neznámeho typu" - --#: iconv/iconv_prog.c:350 -+#: elf/dl-load.c:1291 -+msgid "internal error" -+msgstr "interná chyba" -+ -+#: iconv/iconv_prog.c:435 - msgid "internal error (illegal descriptor)" - msgstr "vnútorná chyba (nesprávny deskriptor)" - --#: timezone/zic.c:1788 -+#: timezone/zic.c:1813 - msgid "internal error - addtype called with bad isdst" - msgstr "vnútorná chyba - addtype zavolaný s chybným isdst" - --#: timezone/zic.c:1796 -+#: timezone/zic.c:1821 - msgid "internal error - addtype called with bad ttisgmt" - msgstr "vnútorná chyba - addtype zavolaný s chybným ttisgmt" - --#: timezone/zic.c:1792 -+#: timezone/zic.c:1817 - msgid "internal error - addtype called with bad ttisstd" - msgstr "vnútorná chyba - addtype zavolaný s chybným ttisstd" - --#: locale/programs/ld-ctype.c:307 -+#: locale/programs/ld-ctype.c:480 locale/programs/ld-ctype.c:536 - #, c-format - msgid "internal error in %s, line %u" - msgstr "vnútorná chyba %s na riadku %u" - --#: timezone/zic.c:1034 -+#: elf/dl-load.c:1264 -+msgid "invalid ELF header" -+msgstr "neprípustná ELF hlavièka" -+ -+#: timezone/zic.c:1059 - msgid "invalid UTC offset" - msgstr "neprípustné posunutie voèi UTC" - --#: timezone/zic.c:1037 -+#: timezone/zic.c:1062 - msgid "invalid abbreviation format" - msgstr "neprípustný formát skratky" - --#: timezone/zic.c:1127 timezone/zic.c:1339 timezone/zic.c:1353 -+#: catgets/gencat.c:687 -+msgid "invalid character: message ignored" -+msgstr "neprípustný znak: správa ignorovaná" -+ -+#: timezone/zic.c:1152 timezone/zic.c:1364 timezone/zic.c:1378 - msgid "invalid day of month" - msgstr "neprípustný deò mesiaca" - --#: timezone/zic.c:1291 -+#: locale/programs/charmap.c:347 -+msgid "invalid definition" -+msgstr "neprípustná definícia" -+ -+#: locale/programs/charmap.c:542 -+msgid "invalid encoding given" -+msgstr "zadané neprípustné kódovanie" -+ -+#: timezone/zic.c:1316 - msgid "invalid ending year" - msgstr "neprípustný koncový rok" - --#: timezone/zic.c:1099 -+#: catgets/gencat.c:1147 locale/programs/linereader.c:533 -+msgid "invalid escape sequence" -+msgstr "neprípustná escape-sekvencia" -+ -+#: timezone/zic.c:1124 - msgid "invalid leaping year" - msgstr "neprípustný priestupný rok" - --#: elf/dl-open.c:159 -+#: catgets/gencat.c:726 -+msgid "invalid line" -+msgstr "neprípustný riadok" -+ -+#: elf/dl-open.c:371 - msgid "invalid mode for dlopen()" - msgstr "neprípustný mód pre dlopen()" - --#: timezone/zic.c:1114 timezone/zic.c:1217 -+#: timezone/zic.c:1139 timezone/zic.c:1242 - msgid "invalid month name" - msgstr "neprípustný názov mesiaca" - --#: timezone/zic.c:933 -+#: locale/programs/charmap.c:969 locale/programs/ld-collate.c:2869 -+#: locale/programs/repertoire.c:418 -+msgid "invalid names for character range" -+msgstr "neprípustné mená pre rozsah znakov" -+ -+#: debug/pcprofiledump.c:166 -+msgid "invalid pointer size" -+msgstr "neprípustná veµkost» ukazovateµa" -+ -+#: catgets/gencat.c:549 -+msgid "invalid quote character" -+msgstr "neprípustný znak citácie" -+ -+#: timezone/zic.c:958 - msgid "invalid saved time" - msgstr "neprípustný ulo¾ený èas" - --#: timezone/zic.c:1266 -+#: timezone/zic.c:1291 - msgid "invalid starting year" - msgstr "neprípustný poèiatoèný rok" - --#: timezone/zic.c:1143 timezone/zic.c:1246 -+#: timezone/zic.c:1168 timezone/zic.c:1271 - msgid "invalid time of day" - msgstr "neprípustný èas v dni" - --#: timezone/zic.c:1344 -+#: timezone/zic.c:1369 - msgid "invalid weekday name" - msgstr "neprípustný názov dòa" - --#: nscd/connections.c:375 -+#: nscd/connections.c:470 -+#, c-format -+msgid "key length in request too long: %d" -+msgstr "då¾ka kµúèa v ¾iadosti príli¹ dlhá: %d" -+ -+#: elf/ldconfig.c:738 -+#, c-format -+msgid "libc4 library %s in wrong directory" -+msgstr "libc4 kni¾nica %s je v nesprávnom adresári" -+ -+#: elf/ldconfig.c:732 - #, c-format --msgid "key length in request too long: %Zd" --msgstr "då¾ka kµúèa v ¾iadosti príli¹ dlhá: %Zd" -+msgid "libc5 library %s in wrong directory" -+msgstr "libc5 kni¾nica %s je v nesprávnom adresári" - --#: locale/programs/ld-collate.c:1422 --msgid "line after ellipsis must contain character definition" --msgstr "riadok za pokraèovaním musí obsahova» definíciu znaku" -+#: elf/ldconfig.c:735 -+#, c-format -+msgid "libc6 library %s in wrong directory" -+msgstr "libc6 kni¾nica %s je v nesprávnom adresári" - --#: locale/programs/ld-collate.c:1401 --msgid "line before ellipsis does not contain definition for character constant" --msgstr "riadok pred pokraèovaním neobsahuje definíciu pre znakovú kon¹tantu" -+#: elf/ldconfig.c:765 -+#, c-format -+msgid "libraries %s and %s in directory %s have same soname but different type." -+msgstr "kni¾nice %s a %s v adresári %s majú rovnaké soname, ale odli¹ný typ." - --#: timezone/zic.c:805 -+#: timezone/zic.c:830 - msgid "line too long" - msgstr "pridlhý riadok" - --#: iconv/iconv_prog.c:58 -+#: iconv/iconv_prog.c:59 - msgid "list all known coded character sets" - msgstr "vypí¹ v¹etky známe znakové sady" - --#: locale/programs/localedef.c:273 --#, c-format --msgid "locale file `%s', used in `copy' statement, not found" --msgstr "súbor národného prostredia `%s' pou¾itý v príkaze `copy' nebol nájdený" -+#: locale/programs/locfile.h:63 -+msgid "locale name should consist only of portable characters" -+msgstr "názov prostredia by malo obsahova» iba prenositeµné znaky" - --#: inet/rcmd.c:307 -+#: inet/rcmd.c:413 - msgid "lstat failed" - msgstr "lstat zlyhal" - --#: catgets/gencat.c:619 -+#: malloc/memusagestat.c:59 -+msgid "make output graphic VALUE pixel high" -+msgstr "výstupný graf bude VALUE pixlov vysoký" -+ -+#: malloc/memusagestat.c:58 -+msgid "make output graphic VALUE pixel wide" -+msgstr "výstupný graf bude VALUE pixlov ¹iroký" -+ -+#: catgets/gencat.c:780 - msgid "malformed line ignored" - msgstr "nesprávny riadok ignorovaný" - --#: elf/sprof.c:554 -+#: elf/sprof.c:550 - msgid "mapping of section header string table failed" - msgstr "zlyhalo mapovanie tabuµky re»azcov hlavièky sekcie" - --#: elf/sprof.c:544 -+#: elf/sprof.c:540 - msgid "mapping of section headers failed" - msgstr "zlyhalo mapovanie hlavièiek sekcie" - --#: malloc/mcheck.c:202 -+#: malloc/mcheck.c:285 - msgid "memory clobbered before allocated block\n" - msgstr "pamä» pred prideleným blokom prepísaná\n" - --#: malloc/mcheck.c:205 -+#: malloc/mcheck.c:288 - msgid "memory clobbered past end of allocated block\n" - msgstr "pamä» za koncom prideleného bloku prepísaná\n" - --#: locale/programs/ld-collate.c:170 locale/programs/ld-collate.c:176 --#: locale/programs/ld-collate.c:180 locale/programs/ld-collate.c:1449 --#: locale/programs/ld-collate.c:1478 locale/programs/locfile.c:1082 --#: locale/programs/xmalloc.c:70 login/programs/database.c:62 --#: login/programs/database.c:79 login/programs/database.c:95 --#: posix/getconf.c:682 -+#: locale/programs/locfile.c:334 locale/programs/xmalloc.c:70 -+#: malloc/obstack.c:477 posix/getconf.c:809 - msgid "memory exhausted" - msgstr "nedostatok pamäti" - --#: malloc/obstack.c:471 --msgid "memory exhausted\n" --msgstr "nedostatok pamäti\n" -- --#: malloc/mcheck.c:199 -+#: malloc/mcheck.c:282 - msgid "memory is consistent, library is buggy\n" - msgstr "pamä» je konzistentná, kni¾nica je chybná\n" - --#: locale/programs/ld-time.c:370 --#, c-format --msgid "missing era format in string %d in `era' field in category `%s'" --msgstr "chýba formát éry v re»azci %d v poli `era' kategórie `%s'" -- --#: locale/programs/ld-time.c:358 --#, c-format --msgid "missing era name in string %d in `era' field in category `%s'" --msgstr "chýba meno éry v re»azci %d v poli `era' kategórie `%s'" -+#: elf/cache.c:120 -+msgid "mmap of cache file failed.\n" -+msgstr "zlyhalo mapovanie cache súboru\n" -+ -+#: elf/../sysdeps/generic/readelflib.c:108 -+msgid "more than one dynamic segment\n" -+msgstr "viac ako jeden dynamický segment\n" - --#: timezone/zic.c:928 -+#: timezone/zic.c:953 - msgid "nameless rule" - msgstr "bezmenné pravidlo" - --#: iconv/iconv_prog.c:133 -+#: iconv/iconv_prog.c:139 - msgid "neither original nor target encoding specified" - msgstr "nie je ¹pecifikované pôvodné ani cieµové kódovanie" - --#: nis/nss_nisplus/nisplus-publickey.c:262 --#: nis/nss_nisplus/nisplus-publickey.c:268 --#: nis/nss_nisplus/nisplus-publickey.c:327 --#: nis/nss_nisplus/nisplus-publickey.c:336 -+#: nis/nss_nisplus/nisplus-publickey.c:281 -+#: nis/nss_nisplus/nisplus-publickey.c:287 -+#: nis/nss_nisplus/nisplus-publickey.c:346 -+#: nis/nss_nisplus/nisplus-publickey.c:355 - #, c-format - msgid "netname2user: (nis+ lookup): %s\n" - msgstr "netname2user: (nis+ lookup): %s\n" - --#: nis/nss_nisplus/nisplus-publickey.c:281 -+#: nis/nss_nisplus/nisplus-publickey.c:300 - #, c-format - msgid "netname2user: DES entry for %s in directory %s not unique" - msgstr "netname2user: DES záznam pre %s v adresári %s nejednoznaèný" - --#: nis/nss_nisplus/nisplus-publickey.c:349 -+#: nis/nss_nisplus/nisplus-publickey.c:368 - #, c-format - msgid "netname2user: LOCAL entry for %s in directory %s not unique" - msgstr "netname2user: LOCAL záznam pre %s v adresári %s nejednoznaèný" - --#: nis/nss_nisplus/nisplus-publickey.c:194 -+#: nis/nss_nisplus/nisplus-publickey.c:207 - #, c-format --msgid "netname2user: missing group id list in '%s'." --msgstr "netname2user: chýbajúci zoznam id skupín v '%s'." -+msgid "netname2user: missing group id list in `%s'." -+msgstr "netname2user: chýbajúci zoznam id skupín v `%s'." - --#: nis/nss_nisplus/nisplus-publickey.c:299 -+#: nis/nss_nisplus/nisplus-publickey.c:318 - #, c-format --msgid "netname2user: principal name '%s' too long" --msgstr "netname2user: názov principála '%s' príli¹ dlhý" -+msgid "netname2user: principal name `%s' too long" -+msgstr "netname2user: názov principála `%s' príli¹ dlhý" - --#: nis/nss_nisplus/nisplus-publickey.c:356 -+#: nis/nss_nisplus/nisplus-publickey.c:375 - msgid "netname2user: should not have uid 0" - msgstr "netname2user: nemal by ma» uid 0" - --#: sunrpc/svc_simple.c:158 -+#: sunrpc/svc_simple.c:159 - #, c-format - msgid "never registered prog %d\n" - msgstr "program %d nebol nikdy registrovaný\n" - --#: locale/programs/repertoire.c:238 -+#: locale/programs/repertoire.c:272 - msgid "no or value given" - msgstr "nezadaná alebo hodnota" - --#: locale/programs/ld-messages.c:101 locale/programs/ld-messages.c:125 --#, c-format --msgid "no correct regular expression for field `%s' in category `%s': %s" --msgstr "pre pole `%s' v kategórii `%s' neexistuje správny regulérny výraz: %s" -- --#: timezone/zic.c:2115 -+#: timezone/zic.c:2142 - msgid "no day in month matches rule" - msgstr "s pravidlom sa nezhoduje ¾iadny deò v mesiaci" - --#: locale/programs/ld-collate.c:267 -+#: locale/programs/ld-collate.c:1757 - msgid "no definition of `UNDEFINED'" - msgstr "neexistuje definícia pre `UNDEFINED'" - --#: elf/sprof.c:276 -+#: elf/sprof.c:272 - #, c-format - msgid "no filename for profiling data given and shared object `%s' has no soname" - msgstr "nebol zadaný názov súboru pre profilovacie údaje a zdieµaný objekt `%s' nemá soname" - --#: locale/programs/locfile.c:609 -+#: locale/programs/ld-ctype.c:739 -+msgid "no input digits defined and none of the standard names in the charmap" -+msgstr "neboli definované ¾iadne vstupné èíslice a v znakovej mape nie je ¾iadne zo ¹tandardných mien" -+ -+#: locale/programs/locfile.h:82 - msgid "no other keyword shall be specified when `copy' is used" - msgstr "pri pou¾ití `copy' nemá by» zadané ¾iadne iné kµúèové slovo" - --#: locale/programs/localedef.c:334 -+#: locale/programs/ld-ctype.c:3349 -+msgid "no output digits defined and none of the standard names in the charmap" -+msgstr "neboli definované ¾iadne výstupné èíslice a v znakovej mape nie je ¾iadne zo ¹tandardných mien" -+ -+#: locale/programs/localedef.c:236 - msgid "no output file produced because warning were issued" - msgstr "výstupný súbor nebol vytvorený kvôli výskytu varovaní" - --#: locale/programs/locfile.c:283 locale/programs/locfile.c:301 --#: locale/programs/locfile.c:319 locale/programs/locfile.c:337 --#: locale/programs/locfile.c:355 locale/programs/locfile.c:373 --msgid "no repertoire map specified: cannot proceed" --msgstr "nebola zadaná mapa repertoáru: nie je mo¾né pokraèova»" -- --#: locale/programs/charmap.c:400 locale/programs/charmap.c:550 --#: locale/programs/charmap.c:629 locale/programs/repertoire.c:199 -+#: locale/programs/charmap.c:488 locale/programs/charmap.c:668 -+#: locale/programs/charmap.c:764 locale/programs/repertoire.c:231 - msgid "no symbolic name given" - msgstr "nebolo zadané ¾iadne symbolické meno" - --#: locale/programs/charmap.c:465 locale/programs/charmap.c:596 --#: locale/programs/charmap.c:662 locale/programs/repertoire.c:261 -+#: locale/programs/charmap.c:575 locale/programs/charmap.c:723 -+#: locale/programs/charmap.c:806 locale/programs/repertoire.c:297 - msgid "no symbolic name given for end of range" - msgstr "nebolo zadané ¾iadne symbolické meno pre koniec rozsahu" - --#: locale/programs/ld-collate.c:249 --#, c-format --msgid "no weight defined for symbol `%s'" --msgstr "symbol `%s' nemá definovanú váhu" -+#: locale/programs/linereader.c:641 -+msgid "non-symbolic character value should not be used" -+msgstr "nesymbolické hodnoty znakov by nemali by» pou¾ívané" -+ -+#: locale/programs/ld-ctype.c:804 -+msgid "not all characters used in `outdigit' are available in the charmap" -+msgstr "nie v¹etky znaky pou¾ité v `outdigit' sú dostupné v znakovej mape" -+ -+#: locale/programs/ld-ctype.c:821 -+msgid "not all characters used in `outdigit' are available in the repertoire" -+msgstr "nie v¹etky znaky pou¾ité v `outdigit' sú dostupné v repertoári" - --#: inet/rcmd.c:309 -+#: inet/rcmd.c:415 - msgid "not regular file" - msgstr "nie je regulérny súbor" - --#: nscd/nscd_stat.c:130 -+#: nscd/nscd_stat.c:131 - #, c-format - msgid "" - "nscd configuration:\n" -@@ -3679,48 +4879,72 @@ - "\n" - "%15d ladiaca úroveò servera\n" - --#: nscd/nscd_stat.c:104 -+#: nscd/nscd_stat.c:105 - msgid "nscd not running!\n" - msgstr "nscd nebe¾í!\n" - --#: locale/programs/charmap.c:514 -+#: elf/dl-load.c:1051 -+msgid "object file has no dynamic section" -+msgstr "objektový súbor neobsahuje ¾iadnu dynamickú sekciu" -+ -+#: iconv/iconv_prog.c:61 -+msgid "omit invalid characters from output" -+msgstr "vynecha» z výstupu neplatné znaky" -+ -+#: elf/dl-load.c:1311 -+msgid "only ET_DYN and ET_EXEC can be loaded" -+msgstr "iba ET_DYN a ET_EXEC mô¾u by» naèítané" -+ -+#: locale/programs/charmap.c:632 - msgid "only WIDTH definitions are allowed to follow the CHARMAP definition" - msgstr "po definícii CHARMAP mô¾u nasledova» iba definície WIDTH" - --#: iconv/iconv_prog.c:135 -+#: locale/programs/ld-collate.c:1005 locale/programs/ld-collate.c:1175 -+#, c-format -+msgid "order for `%.*s' already defined at %s:%Zu" -+msgstr "poradie pre `%.*s' je u¾ definované na %s:%Zu" -+ -+#: iconv/iconv_prog.c:141 - msgid "original encoding not specified using `-f'" - msgstr "pôvodné kódovanie nebolo zadané pomocou `-f'" - --#: iconv/iconv_prog.c:60 -+#: inet/ruserpass.c:167 inet/ruserpass.c:190 -+msgid "out of memory" -+msgstr "nedostatok pamäti" -+ -+#: iconv/iconv_prog.c:62 - msgid "output file" - msgstr "výstupný súbor" - --#: sunrpc/pm_getmaps.c:73 -+#: sunrpc/pm_getmaps.c:74 - msgid "pmap_getmaps rpc problem" - msgstr "pmap_getmaps rpc problém" - --#: inet/rcmd.c:179 -+#: inet/rcmd.c:233 - msgid "poll: protocol failure in circuit setup\n" - msgstr "poll: chyba protokolu poèas prípravy okruhu\n" - --#: sunrpc/rpc_scan.c:523 sunrpc/rpc_scan.c:533 -+#: locale/programs/ld-ctype.c:1949 locale/programs/ld-ctype.c:2000 -+msgid "premature end of `translit_ignore' definition" -+msgstr "predèasný koniec definície `translit_ignore'" -+ -+#: sunrpc/rpc_scan.c:524 sunrpc/rpc_scan.c:534 - msgid "preprocessor error" - msgstr "chyba preprocesora" - --#: elf/sprof.c:78 -+#: locale/programs/ld-ctype.c:2731 -+msgid "previous definition was here" -+msgstr "predchádzajúca definícia bola tu" -+ -+#: elf/sprof.c:74 - msgid "print list of count paths and their number of use" - msgstr "vypísa» zoznam ciest poètov a poèet ich pou¾ití" - --#: iconv/iconv_prog.c:61 -+#: iconv/iconv_prog.c:64 - msgid "print progress information" - msgstr "vypisova» informáciu o postupe" - --#: db2/makedb.c:345 --#, c-format --msgid "problems while reading `%s'" --msgstr "problémy poèas èítania `%s'" -- --#: elf/sprof.c:691 -+#: elf/sprof.c:687 - #, c-format - msgid "profiling data file `%s' does not match shared object `%s'" - msgstr "profilovacie údaje `%s' nesúhlasia so zdieµanýmobjektom `%s'" -@@ -3742,33 +4966,42 @@ - msgid "program %lu version %lu ready and waiting\n" - msgstr "program %lu verzie %lu pripravený a èakajúci\n" - --#: inet/rcmd.c:176 -+#: inet/rcmd.c:270 -+#, c-format -+msgid "rcmd: %s: short read" -+msgstr "rcmd: %s: krátke èítanie" -+ -+#: inet/rcmd.c:230 - #, c-format - msgid "rcmd: poll (setting up stderr): %m\n" - msgstr "rcmd: poll (nastavenie stderr): %m\n" - --#: inet/rcmd.c:110 -+#: inet/rcmd.c:158 - msgid "rcmd: socket: All ports in use\n" - msgstr "rcmd: socket: V¹etky porty sú pou¾ité\n" - --#: inet/rcmd.c:166 -+#: inet/rcmd.c:220 - #, c-format - msgid "rcmd: write (setting up stderr): %m\n" - msgstr "rcmd: write (nastavenie stderr): %m\n" - --#: sunrpc/svc_simple.c:98 -+#: sunrpc/svc_simple.c:99 - msgid "registerrpc: out of memory\n" - msgstr "registerrpc: nedostatok pamäti\n" - --#: timezone/zic.c:1849 -+#: timezone/zic.c:1874 - msgid "repeated leap second moment" - msgstr "opakovaný moment priestupnej sekundy" - --#: locale/programs/repertoire.c:95 -+#: locale/programs/repertoire.c:342 - #, c-format - msgid "repertoire map file `%s' not found" - msgstr "súbor mapy repertoáru `%s' nebol nájdený" - -+#: locale/programs/charmap.c:1063 -+msgid "resulting bytes for range not representable." -+msgstr "výsledné bajty rozsahu nie sú zobraziteµné" -+ - #: sunrpc/rpc_main.c:1117 - msgid "rpcgen: arglist coding error\n" - msgstr "rpcgen: chyba kódovania zoznamu argumentov\n" -@@ -3801,469 +5034,401 @@ - msgid "rpcinfo: can't contact portmapper" - msgstr "rpcinfo: nie je mo¾né spoji» sa s portmapperom" - --#: timezone/zic.c:718 timezone/zic.c:720 -+#: timezone/zic.c:743 timezone/zic.c:745 - msgid "same rule name in multiple files" - msgstr "rovnaké meno pravidla vo viacerých súboroch" - --#: nscd/connections.c:387 -+#: elf/dl-load.c:1116 -+msgid "shared object cannot be dlopen()ed" -+msgstr "zdieµaný objekt nemô¾e by» otvorený pomocou dlopen()" -+ -+#: elf/dl-close.c:63 -+msgid "shared object not open" -+msgstr "zdieµaný objekt nie je otvorený" -+ -+#: nscd/connections.c:482 - #, c-format - msgid "short read while reading request key: %s" - msgstr "neúplné èítanie kµúèa ¾iadosti: %s" - --#: nscd/connections.c:364 -+#: nscd/connections.c:436 - #, c-format - msgid "short read while reading request: %s" - msgstr "neúplné èítanie ¾iadosti: `%s'" - --#: nscd/grpcache.c:191 nscd/hstcache.c:278 nscd/pwdcache.c:188 -+#: nscd/grpcache.c:193 nscd/hstcache.c:278 nscd/pwdcache.c:189 - #, c-format - msgid "short write in %s: %s" - msgstr "neúplný zápis v %s: %s" - --#: inet/rcmd.c:197 -+#: inet/rcmd.c:260 - msgid "socket: protocol failure in circuit setup\n" - msgstr "socket: chyba protokolu pri príprave okruhu\n" - --#: locale/programs/locfile.c:730 --msgid "sorting order `forward' and `backward' are mutually exclusive" --msgstr "poradie triedenia `forward' a `backward' sa navzájom vyluèujú" -- --#: locale/programs/ld-collate.c:1582 locale/programs/ld-collate.c:1628 --msgid "specification of sorting weight for collation symbol does not make sense" --msgstr "¹pecifikácia váh triedenia pre symbol triedenia nedáva zmysel" -- --#: timezone/zic.c:789 -+#: timezone/zic.c:814 - msgid "standard input" - msgstr "¹tandardný vstup" - --#: timezone/zdump.c:268 -+#: timezone/zdump.c:269 - msgid "standard output" - msgstr "¹tandardný výstup" - --#: locale/programs/ld-time.c:272 --#, c-format --msgid "starting date is illegal in string %d in `era' field in category `%s'" --msgstr "neprípustný poèiatoèný dátum v re»azci %d v poli `era' kategórie `%s'" -+#: locale/programs/ld-ctype.c:1680 -+msgid "start and end character sequence of range must have the same length" -+msgstr "úvodná a koncová znaková sekvencia rozsahu musia ma» rovnakú då¾ku" - --#: timezone/zic.c:1300 -+#: timezone/zic.c:1325 - msgid "starting year greater than ending year" - msgstr "poèiatoèný rok väè¹í ako koncový" - --#: timezone/zic.c:1272 timezone/zic.c:1297 -+#: timezone/zic.c:1297 timezone/zic.c:1322 - msgid "starting year too high to be represented" - msgstr "poèiatoèný rok priveµký pre zobrazenie" - --#: timezone/zic.c:1270 timezone/zic.c:1295 -+#: timezone/zic.c:1295 timezone/zic.c:1320 - msgid "starting year too low to be represented" - msgstr "poèiatoèný rok primalý pre zobrazenie" - --#: locale/programs/ld-time.c:348 --#, c-format --msgid "stopping date is illegal in string %d in `era' field in category `%s'" --msgstr "neprípustný koncový dátum v re»azci %d v poli `era' kategórie `%s'" -- --#: sunrpc/svc_run.c:81 --msgid "svc_run: - select failed" --msgstr "svc_run: - select zlyhal" -+#: iconv/iconv_prog.c:63 -+msgid "suppress warnings" -+msgstr "potlaèi» varovania" -+ -+#: sunrpc/svc_run.c:76 -+msgid "svc_run: - poll failed" -+msgstr "svc_run: - poll zlyhal" - --#: sunrpc/svc_tcp.c:160 -+#: sunrpc/svc_tcp.c:161 - msgid "svc_tcp.c - cannot getsockname or listen" - msgstr "svc_tcp.c - nie je mo¾né vykona» getsockname alebo listen" - --#: sunrpc/svc_tcp.c:145 -+#: sunrpc/svc_tcp.c:146 - msgid "svc_tcp.c - tcp socket creation problem" - msgstr "svc_tcp.c - problém pri vytváraní tcp socketu" - --#: sunrpc/svc_tcp.c:209 sunrpc/svc_tcp.c:215 -+#: sunrpc/svc_tcp.c:210 sunrpc/svc_tcp.c:216 - msgid "svc_tcp: makefd_xprt: out of memory\n" - msgstr "svc_tcp: makefd_xprt: nedostatok pamäti\n" - --#: sunrpc/svc_unix.c:135 -+#: sunrpc/svc_unix.c:137 - msgid "svc_unix.c - AF_UNIX socket creation problem" - msgstr "svc_unix.c - problém pri vytváraní AF_UNIX socketu" - --#: sunrpc/svc_unix.c:151 -+#: sunrpc/svc_unix.c:153 - msgid "svc_unix.c - cannot getsockname or listen" - msgstr "svc_unix.c - nemô¾em vykona» getsockname alebo listen" - --#: sunrpc/svc_unix.c:201 sunrpc/svc_unix.c:207 -+#: sunrpc/svc_unix.c:203 sunrpc/svc_unix.c:209 - msgid "svc_unix: makefd_xprt: out of memory\n" - msgstr "svc_unix: makefd_xprt: nedostatok pamäti\n" - --#: sunrpc/svc_tcp.c:168 sunrpc/svc_tcp.c:176 -+#: sunrpc/svc_tcp.c:169 sunrpc/svc_tcp.c:177 - msgid "svctcp_create: out of memory\n" - msgstr "svctcp_create: nedostatok pamäti\n" - --#: sunrpc/svc_udp.c:135 -+# msgmerge complains: duplicate message definition -+# 3073: ...this is the location of the first definition -+# entry disabled, Martin v. Löwis -+# #: sunrpc/svc_tcp.c:168 sunrpc/svc_tcp.c:176 -+# msgid "svctcp_create: out of memory\n" -+# msgstr "svctcp_create: nedostatok pamäti\n" -+#: sunrpc/svc_udp.c:141 - msgid "svcudp_create - cannot getsockname" - msgstr "svcudp_create - nemô¾em vykona» getsockname" - --#: sunrpc/svc_udp.c:143 sunrpc/svc_udp.c:149 sunrpc/svc_udp.c:155 -+#: sunrpc/svc_udp.c:149 sunrpc/svc_udp.c:155 sunrpc/svc_udp.c:161 - msgid "svcudp_create: out of memory\n" - msgstr "svcudp_create: nedostatok pamäti\n" - --#: sunrpc/svc_udp.c:121 -+#: sunrpc/svc_udp.c:127 - msgid "svcudp_create: socket creation problem" - msgstr "svcudp_create: problém pri vytváraní socketu" - --#: sunrpc/svc_unix.c:160 sunrpc/svc_unix.c:168 -+#: sunrpc/svc_udp.c:177 -+msgid "svcudp_create: xp_pad is too small for IP_PKTINFO\n" -+msgstr "svcudp_create: xp_pad je príli¹ malý pre IP_PKTINFO\n" -+ -+#: sunrpc/svc_unix.c:162 sunrpc/svc_unix.c:170 - msgid "svcunix_create: out of memory\n" - msgstr "svcunix_create: nedostatok pamäti\n" - --#: locale/programs/ld-collate.c:1201 -+#: locale/programs/linereader.c:745 - #, c-format --msgid "symbol for multicharacter collating element `%.*s' duplicates element definition" --msgstr "symbol pre viacznakový element triedenia `%.*s' duplikuje definíciu elementu" -+msgid "symbol `%.*s' not in charmap" -+msgstr "symbol `%.*s' nie je v mape znakov" - --#: locale/programs/ld-collate.c:1073 -+#: locale/programs/linereader.c:766 - #, c-format --msgid "symbol for multicharacter collating element `%.*s' duplicates other element definition" --msgstr "symbol pre viacznakový element triedenia `%.*s' duplikuje iný element" -+msgid "symbol `%.*s' not in repertoire map" -+msgstr "symbol `%.*s' nie je v mape repertoáru" - --#: locale/programs/ld-collate.c:1210 -+#: locale/programs/ld-collate.c:1617 locale/programs/ld-collate.c:1716 - #, c-format --msgid "symbol for multicharacter collating element `%.*s' duplicates other symbol definition" --msgstr "symbol pre viacznakový element triedenia `%.*s' duplikuje definíciu iného symbolu" -+msgid "symbol `%s'" -+msgstr "symbol `%s'" - --#: locale/programs/ld-collate.c:1082 -+#: locale/programs/ld-collate.c:1614 locale/programs/ld-collate.c:1713 - #, c-format --msgid "symbol for multicharacter collating element `%.*s' duplicates symbol definition" --msgstr "symbol pre viacznakový element triedenia `%.*s' duplikuje definíciu symbolu" -+msgid "symbol `%s' has the same encoding as" -+msgstr "symbol `%s' má rovnaké kódovanie ako" - --#: locale/programs/ld-collate.c:1064 locale/programs/ld-collate.c:1192 -+#: locale/programs/ld-collate.c:1539 - #, c-format --msgid "symbol for multicharacter collating element `%.*s' duplicates symbolic name in charset" --msgstr "symbol pre viacznakový element triedenia `%.*s' duplikuje symbolické meno v znakovej sade" -+msgid "symbol `%s' not defined" -+msgstr "symbol `%s' nie je definovaný" - --#: locale/programs/charmap.c:399 locale/programs/charmap.c:433 --#: locale/programs/charmap.c:463 locale/programs/charmap.c:549 --#: locale/programs/charmap.c:595 locale/programs/charmap.c:628 --#: locale/programs/charmap.c:660 -+#: locale/programs/ld-ctype.c:1955 locale/programs/ld-ctype.c:2006 -+#: locale/programs/ld-ctype.c:2048 -+msgid "syntax error" -+msgstr "chyba syntaxe" -+ -+#: locale/programs/charmap.c:487 locale/programs/charmap.c:541 -+#: locale/programs/charmap.c:573 locale/programs/charmap.c:667 -+#: locale/programs/charmap.c:722 locale/programs/charmap.c:763 -+#: locale/programs/charmap.c:804 - #, c-format - msgid "syntax error in %s definition: %s" - msgstr "chyba syntaxe v definícii %s: %s" - --#: locale/programs/locfile.c:750 --msgid "syntax error in `order_start' directive" --msgstr "chyba syntaxe v direktíve `order_start'" -- --#: locale/programs/locfile.c:492 --msgid "syntax error in character class definition" --msgstr "chyba syntaxe v definícii triedy znakov" -- --#: locale/programs/locfile.c:550 --msgid "syntax error in character conversion definition" --msgstr "chyba syntaxe v definície konverzie znakov" -- --#: locale/programs/locfile.c:792 --msgid "syntax error in collating order definition" --msgstr "chyba syntaxe v definícii poradia triedenia" -- --#: locale/programs/locfile.c:642 --msgid "syntax error in collation definition" --msgstr "chyba syntaxe v definícii triedenia" -- --#: locale/programs/locfile.c:465 --msgid "syntax error in definition of LC_CTYPE category" --msgstr "chyba syntaxe v definícii kategórie LC_CTYPE" -- --#: locale/programs/locfile.c:408 --msgid "syntax error in definition of new character class" --msgstr "chyba syntaxe v definícii novej triedy znakov" -- --#: locale/programs/locfile.c:418 --msgid "syntax error in definition of new character map" --msgstr "chyba syntaxe v definícii novej znakovej sady" -- --#: locale/programs/locfile.c:1003 --msgid "syntax error in message locale definition" --msgstr "chyba syntaxe v definícii národného prostredia správ" -- --#: locale/programs/locfile.c:914 --msgid "syntax error in monetary locale definition" --msgstr "chyba syntaxe v definícii národného prostredia peòa¾ných hodnôt" -- --#: locale/programs/locfile.c:941 --msgid "syntax error in numeric locale definition" --msgstr "chyba syntaxe v definícii národného prostredia pre èísla" -- --#: locale/programs/locfile.c:852 --msgid "syntax error in order specification" --msgstr "chyba syntaxe v ¹pecifikácii poradia" -- --#: locale/programs/charmap.c:280 locale/programs/charmap.c:296 --#: locale/programs/repertoire.c:143 -+#: locale/programs/charmap.c:346 locale/programs/charmap.c:363 -+#: locale/programs/repertoire.c:175 - #, c-format - msgid "syntax error in prolog: %s" - msgstr "chyba syntaxe v prológu: %s" - --#: locale/programs/repertoire.c:198 locale/programs/repertoire.c:237 --#: locale/programs/repertoire.c:260 -+#: locale/programs/repertoire.c:230 locale/programs/repertoire.c:271 -+#: locale/programs/repertoire.c:296 - #, c-format - msgid "syntax error in repertoire map definition: %s" - msgstr "chyba syntaxe v definícii mapy repertoáru: %s" - --#: locale/programs/locfile.c:979 --msgid "syntax error in time locale definition" --msgstr "chyba syntaxe v definícii národného prostredia pre èas" -- --#: locale/programs/locfile.c:385 -+#: locale/programs/locfile.c:243 - msgid "syntax error: not inside a locale definition section" - msgstr "chyba syntaxe: nie je vnútri sekcie definície národného prostredia" - --#: iconv/iconv_prog.c:137 -+#: iconv/iconv_prog.c:143 - msgid "target encoding not specified using `-t'" - msgstr "kódovanie cieµa nebolo zadané pomocou `-t'" - --#: catgets/gencat.c:390 catgets/gencat.c:526 catgets/gencat.c:553 -+#: catgets/gencat.c:432 catgets/gencat.c:605 catgets/gencat.c:634 - msgid "this is the first definition" - msgstr "toto je prvá definícia" - --#: timezone/zic.c:1132 -+#: timezone/zic.c:1157 - msgid "time before zero" - msgstr "èas men¹í ako nula" - --#: timezone/zic.c:1140 timezone/zic.c:2015 timezone/zic.c:2034 -+#: timezone/zic.c:1165 timezone/zic.c:2042 timezone/zic.c:2061 - msgid "time overflow" - msgstr "preteèenie èasu" - --#: locale/programs/charmap.c:443 -+#: locale/programs/ld-ctype.c:1553 locale/programs/ld-ctype.c:2029 -+#, c-format -+msgid "to-value of range is smaller than from-value " -+msgstr "to-value rozsahu je men¹ia ako from-value " -+ -+#: locale/programs/ld-ctype.c:1687 -+msgid "to-value character sequence is smaller than from-value sequence" -+msgstr "to-value sekvencia znakov je men¹ia ako sekvencia from-value" -+ -+#: locale/programs/charmap.c:551 - msgid "too few bytes in character encoding" - msgstr "primálo bajtov v kódovaní znaku" - --#: locale/programs/charmap.c:445 -+#: locale/programs/charmap.c:553 - msgid "too many bytes in character encoding" - msgstr "priveµa bajtov v kódovaní znaku" - --#: locale/programs/locales.h:92 --msgid "too many character classes defined" --msgstr "priveµa definovaných tried znakov" -- --#: timezone/zic.c:1843 -+#: timezone/zic.c:1868 - msgid "too many leap seconds" - msgstr "priveµa priestupných sekúnd" - --#: timezone/zic.c:1815 -+#: timezone/zic.c:1840 - msgid "too many local time types" - msgstr "priveµa lokálnych typov èasu" - --#: timezone/zic.c:1769 -+#: timezone/zic.c:1794 - msgid "too many transitions?!" - msgstr "priveµa prechodov?!" - --#: locale/programs/ld-collate.c:1637 --msgid "too many weights" --msgstr "priveµa váh" -- --#: timezone/zic.c:2138 -+#: timezone/zic.c:2165 - msgid "too many, or too long, time zone abbreviations" - msgstr "príli¹ veµa alebo príli¹ dlhé skratku èasovej zóny" - --#: locale/programs/linereader.h:146 -+#: locale/programs/linereader.h:157 - msgid "trailing garbage at end of line" - msgstr "smetie na konci riadku" - --#: sunrpc/svc_simple.c:150 -+#: sunrpc/svc_simple.c:151 - #, c-format - msgid "trouble replying to prog %d\n" - msgstr "problémy pri odpovedi programu %d\n" - --#: locale/programs/ld-collate.c:1393 --msgid "two lines in a row containing `...' are not allowed" --msgstr "dva riadky za sebou obsahujúce `...' nie sú povolené" -- --#: timezone/zic.c:1307 -+#: timezone/zic.c:1332 - msgid "typed single year" - msgstr "zadaný jeden rok" - --#: iconv/iconv_prog.c:406 -+#: iconv/iconv_prog.c:491 - msgid "unable to allocate buffer for input" - msgstr "nie je mo¾né prideli» vyrovnávaciu pamä» pre vstup" - --#: nis/nis_callback.c:187 -+#: nis/nis_callback.c:189 - msgid "unable to free arguments" - msgstr "nie je mo¾né uvoµni» argumenty" - --#: posix/getconf.c:654 posix/getconf.c:670 -+#: posix/getconf.c:781 posix/getconf.c:797 - msgid "undefined" - msgstr "nedefinované" - --#: locale/programs/charmap.c:701 locale/programs/charmap.c:712 -+#: locale/programs/charmap.c:856 locale/programs/charmap.c:867 - #, c-format - msgid "unknown character `%s'" - msgstr "neznámy znak `%s'" - --#: locale/programs/ld-messages.c:202 locale/programs/ld-messages.c:213 --#: locale/programs/ld-messages.c:224 locale/programs/ld-messages.c:235 --#: locale/programs/ld-time.c:718 --#, c-format --msgid "unknown character in field `%s' of category `%s'" --msgstr "neznámy znak v poli `%s' kategórie `%s'" -- --#: locale/programs/locfile.c:715 --msgid "unknown collation directive" --msgstr "neznáma direktíva triedenia" -- --#: catgets/gencat.c:487 -+#: catgets/gencat.c:562 - #, c-format - msgid "unknown directive `%s': line ignored" - msgstr "neznáma direktíva `%s' - riadok ignorovaný" - --#: iconv/iconv_prog.c:353 -+#: iconv/iconv_prog.c:438 - #, c-format - msgid "unknown iconv() error %d" - msgstr "neznáma iconv() chyba %d" - --#: catgets/gencat.c:466 -+#: catgets/gencat.c:508 - #, c-format - msgid "unknown set `%s'" - msgstr "neznáma sada `%s'" - --#: locale/programs/ld-collate.c:1377 locale/programs/ld-collate.c:1572 --#: locale/programs/ld-collate.c:1747 --#, c-format --msgid "unknown symbol `%.*s': line ignored" --msgstr "neznámy symbol `%.*s' - riadok ignorovaný" -- --#: timezone/zic.c:761 -+#: timezone/zic.c:786 - msgid "unruly zone" - msgstr "zóna bez pravidiel" - --#: catgets/gencat.c:971 -+#: catgets/gencat.c:1169 - msgid "unterminated message" - msgstr "neukonèená správa" - --#: locale/programs/linereader.c:520 locale/programs/linereader.c:555 -+#: locale/programs/linereader.c:599 locale/programs/linereader.c:784 - msgid "unterminated string" - msgstr "neukonèený re»azec" - --#: sunrpc/rpc_scan.c:350 sunrpc/rpc_scan.c:376 -+#: sunrpc/rpc_scan.c:351 sunrpc/rpc_scan.c:377 - msgid "unterminated string constant" - msgstr "neukonèená re»azcová kon¹tanta" - --#: locale/programs/linereader.c:390 -+#: locale/programs/linereader.c:469 - msgid "unterminated symbolic name" - msgstr "neukonèené symbolické meno" - --#: locale/programs/ld-collate.c:1699 --msgid "unterminated weight name" --msgstr "neukonèené meno váhy" -+#: locale/programs/charmap.c:1005 -+msgid "upper limit in range is not higher then lower limit" -+msgstr "horný limit rozsahu nie je väè¹í ako dolný" - --#: locale/programs/charset.c:104 -+#: locale/programs/repertoire.c:455 - msgid "upper limit in range is not smaller then lower limit" - msgstr "horný limit rozsahu je men¹í ako dolný" - --#: sunrpc/rpc_main.c:1415 -+#: sunrpc/rpc_main.c:1424 - #, c-format --msgid "usage: %s infile\n" -+msgid "usage: %s infile\n" - msgstr "pou¾itie: %s vstupný_súbor\n" - --#: timezone/zic.c:2081 -+#: timezone/zic.c:2108 - msgid "use of 2/29 in non leap-year" - msgstr "29. február pou¾itý v nepriestupnom roku" - --#: locale/programs/charmap.c:522 locale/programs/charmap.c:576 -+#: locale/programs/charmap.c:640 locale/programs/charmap.c:703 - #, c-format - msgid "value for %s must be an integer" - msgstr "hodnota pre %s musí by» celé èíslo" - --#: locale/programs/charmap.c:318 -+#: locale/programs/charmap.c:399 - #, c-format --msgid "value for <%s> must lie between 1 and 4" --msgstr "honota pre <%s> musí by» medzi 1 a 4" -+msgid "value for <%s> must be 1 or greater" -+msgstr "hodnota pre <%s> musí by» 1 alebo viac" - --#: locale/programs/ld-monetary.c:157 locale/programs/ld-numeric.c:92 -+#: locale/programs/charmap.c:411 - #, c-format --msgid "value for field `%s' in category `%s' must not be the empty string" --msgstr "hodnota poµa `%s' kategórie `%s' nesmie by» prázdny re»azec" -- --#: locale/programs/charmap.c:330 --msgid "value of must be greater than the value of " --msgstr "hodnota musí by» väè¹ia ako hodnota " -+msgid "value of <%s> must be greater or equal than the value of <%s>" -+msgstr "hodnota <%s> musí by» väè¹ia alebo rovná hodnote <%s>" - --#: locale/programs/ld-monetary.c:147 --msgid "value of field `int_curr_symbol' in category `LC_MONETARY' does not correspond to a valid name in ISO 4217" --msgstr "hodnota poµa `int_curr_symbol' kategórie `LC_MONETARY' nezodpovedá platnému menu v ISO 4217" -+#: timezone/zic.c:433 -+msgid "warning: " -+msgstr "varovanie: " - --#: locale/programs/ld-monetary.c:139 --msgid "value of field `int_curr_symbol' in category `LC_MONETARY' has wrong length" --msgstr "hodnota poµa `int_curr_symbol' kategórie `LC_MONETARY' má chybnú då¾ku" -- --#: locale/programs/ld-monetary.c:383 locale/programs/ld-numeric.c:207 --#, c-format --msgid "values for field `%s' in category `%s' must be smaller than 127" --msgstr "hodnoty poµa `%s' kategórie `%s' musia by» men¹ie ako 127" -- --#: nscd/connections.c:355 -+#: nscd/connections.c:427 - #, c-format - msgid "while accepting connection: %s" - msgstr "poèas prijatia spojenia: %s" - --#: nscd/grpcache.c:149 nscd/hstcache.c:168 nscd/pwdcache.c:142 -+#: nscd/grpcache.c:150 nscd/hstcache.c:165 nscd/pwdcache.c:143 - msgid "while allocating cache entry" - msgstr "poèas pridelenia záznamu cache" - --#: nscd/cache.c:85 -+#: nscd/cache.c:88 - msgid "while allocating hash table entry" - msgstr "poèas pridelenia záznamu hash-tabuµky" - --#: nscd/grpcache.c:99 nscd/hstcache.c:109 nscd/pwdcache.c:105 -+#: nscd/grpcache.c:100 nscd/hstcache.c:108 nscd/pwdcache.c:106 - msgid "while allocating key copy" - msgstr "poèas pridelenia kópie kµúèa" - --#: catgets/gencat.c:1001 -+#: catgets/gencat.c:1199 - msgid "while opening old catalog file" - msgstr "poèas otvárania starého katalógu" - --#: locale/programs/locale.c:346 -+#: locale/programs/locale.c:361 - msgid "while preparing output" - msgstr "poèas prípravy výstupu" - --#: db2/makedb.c:365 db2/makedb.c:382 --msgid "while reading database" --msgstr "poèas èítania databázy" -- --#: elf/sprof.c:683 -+#: elf/sprof.c:679 - msgid "while stat'ing profiling data file" - msgstr "poèas stat-u súboru profilovacích informácií" - --#: db2/makedb.c:334 --msgid "while writing database file" --msgstr "poèas zápisu databázy" -+#: locale/programs/ld-ctype.c:2392 -+msgid "with UCS range values one must use the hexadecimal symbolic ellipsis `..'" -+msgstr "v rozsahu hodnôt UCS treba pou¾i» hexadecimálne symbolické pokraèovanie `..'" -+ -+#: locale/programs/ld-ctype.c:2406 -+msgid "with character code range values one must use the absolute ellipsis `...'" -+msgstr "v rozsahu hodnôt kódov znakov treba pou¾i» absolútne pokraèovanie `...'" -+ -+#: locale/programs/ld-ctype.c:2377 -+msgid "with symbolic name range values the absolute ellipsis `...' must not be used" -+msgstr "v symbolickom rozsahu hodnôt nesmie by» pou¾ité absolútne pokraèovanie `...'" - --#: nscd/nscd_stat.c:115 -+#: nscd/nscd_stat.c:116 - msgid "write incomplete" - msgstr "neúplný zápis" - --#: inet/rcmd.c:320 -+#: inet/rcmd.c:426 - msgid "writeable by other than owner" - msgstr "zapisovateµný nielen pre vlastníka" - --#: db2/makedb.c:124 nscd/nscd.c:114 nss/getent.c:392 -+#: nscd/nscd.c:123 nscd/nscd_nischeck.c:64 nss/getent.c:761 - msgid "wrong number of arguments" - msgstr "chybný poèet argumentov" - --#: timezone/zic.c:1090 -+#: timezone/zic.c:1115 - msgid "wrong number of fields on Leap line" - msgstr "chybný poèet polí v riadku Leap" - --#: timezone/zic.c:1181 -+#: timezone/zic.c:1206 - msgid "wrong number of fields on Link line" - msgstr "chybný poèet polí v riadku Link" - --#: timezone/zic.c:924 -+#: timezone/zic.c:949 - msgid "wrong number of fields on Rule line" - msgstr "chybný poè¹t polí v riadku Rule" - --#: timezone/zic.c:994 -+#: timezone/zic.c:1019 - msgid "wrong number of fields on Zone continuation line" - msgstr "chybný poèet polí v pokraèovacom riadku Zone" - --#: timezone/zic.c:952 -+#: timezone/zic.c:977 - msgid "wrong number of fields on Zone line" - msgstr "chybný poèet polí v riadku Zone" - --#: sunrpc/xdr_ref.c:84 -+#: sunrpc/xdr_ref.c:85 - msgid "xdr_reference: out of memory\n" - msgstr "xdr_reference: nedostatok pamäti\n" - -@@ -4271,10 +5436,10 @@ - msgid "xdrrec_create: out of memory\n" - msgstr "xdrrec_create: nedostatok pamäti\n" - --#: nis/ypclnt.c:884 -+#: nis/ypclnt.c:907 - msgid "yp_update: cannot convert host to netname\n" - msgstr "yp_update: nie je mo¾né konvertova» meno poèítaèa na meno siete\n" - --#: nis/ypclnt.c:896 -+#: nis/ypclnt.c:919 - msgid "yp_update: cannot get server address\n" - msgstr "yp_update: nie je mo¾né zísti» adresu servera\n" diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/arm-ctl_bus_isa.patch --- a/patches/glibc/2.2.2/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.1.3-allow-gcc-3.4-grp.patch --- a/patches/glibc/2.2.2/glibc-2.1.3-allow-gcc-3.4-grp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -Fixes -initgroups.c: In function `internal_getgrouplist': -initgroups.c:179: error: parse error before "__FUNCTION__" - -CVSROOT: /cvs/glibc -Module name: libc -Changes by: roland@sources.redhat.com 2001-12-16 21:52:12 - -Modified files: - nss : nsswitch.c - grp : initgroups.c - -Log message: - 2001-12-16 Roland McGrath - - * nss/nsswitch.c (__nss_next): Don't use __FUNCTION__ as literal. - * grp/initgroups.c (internal_getgrouplist): Likewise. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/grp/initgroups.c.diff?r1=1.26&r2=1.27&cvsroot=glibc -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nss/nsswitch.c.diff?r1=1.52&r2=1.53&cvsroot=glibc - -Removed 2nd hunk for glibc-2.1.3 (it was just whitespace) - -=================================================================== -RCS file: /cvs/glibc/libc/grp/initgroups.c,v -retrieving revision 1.26 -retrieving revision 1.27 -diff -u -r1.26 -r1.27 ---- libc/grp/initgroups.c 2001/07/06 04:54:46 1.26 -+++ libc/grp/initgroups.c 2001/12/17 05:52:11 1.27 -@@ -176,7 +176,7 @@ - - /* This is really only for debugging. */ - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) -- __libc_fatal ("illegal status in " __FUNCTION__); -+ __libc_fatal ("illegal status in internal_getgrouplist"); - - if (status != NSS_STATUS_SUCCESS - && nss_next_action (nip, status) == NSS_ACTION_RETURN) - -=================================================================== -RCS file: /cvs/glibc/libc/nss/nsswitch.c,v -retrieving revision 1.52 -retrieving revision 1.53 -diff -u -r1.52 -r1.53 ---- libc/nss/nsswitch.c 2001/07/17 08:21:36 1.52 -+++ libc/nss/nsswitch.c 2001/12/17 05:52:11 1.53 -@@ -178,7 +178,7 @@ - { - /* This is really only for debugging. */ - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) -- __libc_fatal ("illegal status in " __FUNCTION__); -+ __libc_fatal ("illegal status in __nss_next"); - - if (nss_next_action (*ni, status) == NSS_ACTION_RETURN) - return 1; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.1.3-allow-gcc3-sscanf.patch --- a/patches/glibc/2.2.2/glibc-2.1.3-allow-gcc3-sscanf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -http://sources.redhat.com/ml/bug-glibc/2003-08/msg00087.html - -From: Gernot Hillier -Organization: Siemens AG -To: Jeffrey Bedard , bug-glibc at gnu dot org -Date: Mon, 18 Aug 2003 08:50:03 +0200 -References: <3F3D0899.6020004@e-list.net> -Message-Id: <200308180850.03431.gernot.hillier@siemens.com> -Subject: Re: Build Fails with gcc 3.3.1 -X-BeenThere: bug-glibc@gnu.org - -Hi! - -Am Freitag, 15. August 2003 18:21 schrieb Jeffrey Bedard: -> gcc sscanf.c -c -std=gnu99 -O2 -Wall -Winline -Wstrict-prototypes -[...] -> sscanf.c:31: warning: conflicting types for built-in function `sscanf' -> sscanf.c: In function `sscanf': -> sscanf.c:37: error: `va_start' used in function with fixed args -> .../stdio-common/_itoa.h: At top level: -> .../stdio-common/_itoa.h:40: warning: inlining failed in call to -> `_itoa_word' .../stdio-common/_itoa.h:76: warning: called from here -> make[2]: *** -> [/home/jefbed/src/packages/glibc-build/stdio-common/sscanf.o] Error 1 - -You can find the fitting patch in the glibc CVS. You have to replace some -function headers. - -I created a patch for glibc-2.2.5 for the same reason. I don't know if it -applies cleanly, but if not it should at least show you what to do... - --- -Bye, - -Gernot Hillier -Siemens AG - - - - -Content-Disposition: attachment; filename="glibc-2.2.5-gcc-3.3.diff" - -diff -ur glibc-2.2.5.orig/stdio-common/sprintf.c glibc-2.2.5/stdio-common/sprintf.c ---- glibc-2.2.5.orig/stdio-common/sprintf.c 2001-07-06 06:55:41.000000000 +0200 -+++ glibc-2.2.5/stdio-common/sprintf.c 2003-08-11 13:25:48.000000000 +0200 -@@ -27,9 +27,7 @@ - /* Write formatted output into S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --sprintf (s, format) -- char *s; -- const char *format; -+sprintf (char *s, const char *format,...) - { - va_list arg; - int done; -Only in glibc-2.2.5/stdio-common: sprintf.c.orig -Only in glibc-2.2.5/stdio-common: sprintf.c.rej -diff -ur glibc-2.2.5.orig/stdio-common/sscanf.c glibc-2.2.5/stdio-common/sscanf.c ---- glibc-2.2.5.orig/stdio-common/sscanf.c 2001-07-06 06:55:41.000000000 +0200 -+++ glibc-2.2.5/stdio-common/sscanf.c 2003-08-11 13:27:58.000000000 +0200 -@@ -27,9 +27,7 @@ - /* Read formatted input from S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --sscanf (s, format) -- const char *s; -- const char *format; -+sscanf (const char *s, const char *format,...) - { - va_list arg; - int done; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.1.3-allow-gcc3-versioninfo.patch --- a/patches/glibc/2.2.2/glibc-2.1.3-allow-gcc3-versioninfo.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# gcc-3.x doesn't like run-on strings -# See also http://sources.redhat.com/ml/libc-alpha/2004-01/msg00032.html - ---- glibc-2.1.3/csu/Makefile.old 2004-03-04 12:18:52.000000000 -0800 -+++ glibc-2.1.3/csu/Makefile 2004-03-04 12:19:35.000000000 -0800 -@@ -188,8 +188,8 @@ - esac; \ - files="$(all-Banner-files)"; \ - if test -n "$$files"; then \ -- echo "\"Available extensions:"; \ -- sed -e '/^#/d' -e 's/^[[:space:]]*/ /' $$files; \ -- echo "\""; \ -+ echo -e "\"Available extensions:\\\\n\""; \ -+ sed -e '/^#/d' -e 's/^[[:space:]]*/ /' \ -+ -e 's/^\(.*\)$$/\"\1\\n\"/' $$files; \ - fi) > $@T - mv -f $@T $@ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.2-allow-gcc-3-configure.patch --- a/patches/glibc/2.2.2/glibc-2.2.2-allow-gcc-3-configure.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -Works around version check: - -checking for i686-unknown-linux-gnu-gcc... gcc -checking version of gcc... 3.4.2, bad -... -configure: error: -*** Some critical program is missing or too old. -*** Check the INSTALL file for required versions. - - ---- glibc-2.2.2/configure.old 2005-04-10 16:57:42.692071968 -0700 -+++ glibc-2.2.2/configure 2005-04-10 16:58:52.993384544 -0700 -@@ -1437,7 +1437,7 @@ - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*) -+ *gcc-2.9[5-9].*|*3.[234].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-dl-machine-i386.patch --- a/patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-dl-machine-i386.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,232 +0,0 @@ -Fixes errors: -In file included from dynamic-link.h:21, - from dl-load.c:32: -../sysdeps/i386/dl-machine.h:121: error: parse error before '.' token -../sysdeps/i386/dl-machine.h:122: error: stray '@' in program -../sysdeps/i386/dl-machine.h:125: error: syntax error at '#' token -../sysdeps/i386/dl-machine.h:128: error: syntax error at '#' token -../sysdeps/i386/dl-machine.h:129: error: syntax error at '#' token -../sysdeps/i386/dl-machine.h:129: error: stray '`' in program -../sysdeps/i386/dl-machine.h:129: error: missing terminating ' character -... -../sysdeps/i386/dl-machine.h:227:22: warning: character constant too long for its type -../sysdeps/i386/dl-machine.h:209: error: stray '\' in program -../sysdeps/i386/dl-machine.h:209: error: stray '\' in program -../sysdeps/i386/dl-machine.h:209: error: stray '\' in program -../sysdeps/i386/dl-machine.h:209: error: missing terminating " character -../sysdeps/i386/dl-machine.h: In function `dl_platform_init': -../sysdeps/i386/dl-machine.h:273: error: `_dl_platform' undeclared (first use in this function) -../sysdeps/i386/dl-machine.h:273: error: (Each undeclared identifier is reported only once -../sysdeps/i386/dl-machine.h:273: error: for each function it appears in.) -dl-load.c: In function `_dl_map_object_from_fd': -dl-load.c:1043: warning: use of cast expressions as lvalues is deprecated -dl-load.c:1043: warning: use of cast expressions as lvalues is deprecated -dl-load.c:1058: warning: use of cast expressions as lvalues is deprecated -dl-load.c:1058: warning: use of cast expressions as lvalues is deprecated - -dl-runtime.c:53: error: conflicting types for 'fixup' -../sysdeps/i386/dl-machine.h:67: error: previous declaration of 'fixup' was here -dl-runtime.c:53: error: conflicting types for 'fixup' -../sysdeps/i386/dl-machine.h:67: error: previous declaration of 'fixup' was here -dl-runtime.c:135: error: conflicting types for 'profile_fixup' -../sysdeps/i386/dl-machine.h:70: error: previous declaration of 'profile_fixup' was here -dl-runtime.c:135: error: conflicting types for 'profile_fixup' -../sysdeps/i386/dl-machine.h:70: error: previous declaration of 'profile_fixup' was here -../sysdeps/i386/dl-machine.h:67: warning: 'fixup' declared `static' but never defined -../sysdeps/i386/dl-machine.h:70: warning: 'profile_fixup' declared `static' but never defined - -Updated to repair breakage caused by unconditionally requiring ARCH_FIXUP_ATTRIBUTE -to be defined. (No wonder glibc-2.2.2 didn't build for anything but x86...) - -=================================================================== ---- glibc-2.2.2/sysdeps/i386/dl-machine.h.old 2005-04-11 17:45:13.000000000 -0700 -+++ glibc-2.2.2/sysdeps/i386/dl-machine.h 2005-04-12 10:01:47.000000000 -0700 -@@ -63,11 +63,14 @@ - destroys the passed register information. */ - /* GKM FIXME: Fix trampoline to pass bounds so we can do - without the `__unbounded' qualifier. */ -+ -+#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused)) -+ - static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset) -- __attribute__ ((regparm (2), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset, - ElfW(Addr) retaddr) -- __attribute__ ((regparm (3), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - #endif - - /* Set up the loaded object described by L so its unrelocated PLT -@@ -117,68 +120,68 @@ - and then redirect to the address it returns. */ - #if !defined PROF && !__BOUNDED_POINTERS__ - # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ -- .text -- .globl _dl_runtime_resolve -- .type _dl_runtime_resolve, @function -- .align 16 --_dl_runtime_resolve: -- pushl %eax # Preserve registers otherwise clobbered. -- pushl %ecx -- pushl %edx -- movl 16(%esp), %edx # Copy args pushed by PLT in register. Note -- movl 12(%esp), %eax # that `fixup' takes its parameters in regs. -- call fixup # Call resolver. -- popl %edx # Get register content back. -- popl %ecx -- xchgl %eax, (%esp) # Get %eax contents end store function address. -- ret $8 # Jump to function address. -- .size _dl_runtime_resolve, .-_dl_runtime_resolve -- -- .globl _dl_runtime_profile -- .type _dl_runtime_profile, @function -- .align 16 --_dl_runtime_profile: -- pushl %eax # Preserve registers otherwise clobbered. -- pushl %ecx -- pushl %edx -- movl 20(%esp), %ecx # Load return address -- movl 16(%esp), %edx # Copy args pushed by PLT in register. Note -- movl 12(%esp), %eax # that `fixup' takes its parameters in regs. -- call profile_fixup # Call resolver. -- popl %edx # Get register content back. -- popl %ecx -- xchgl %eax, (%esp) # Get %eax contents end store function address. -- ret $8 # Jump to function address. -- .size _dl_runtime_profile, .-_dl_runtime_profile -- .previous -+ .text\n\ -+ .globl _dl_runtime_resolve\n\ -+ .type _dl_runtime_resolve, @function\n\ -+ .align 16\n\ -+_dl_runtime_resolve:\n\ -+ pushl %eax # Preserve registers otherwise clobbered.\n\ -+ pushl %ecx\n\ -+ pushl %edx\n\ -+ movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\ -+ movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\ -+ call fixup # Call resolver.\n\ -+ popl %edx # Get register content back.\n\ -+ popl %ecx\n\ -+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\ -+ ret $8 # Jump to function address.\n\ -+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ -+\n\ -+ .globl _dl_runtime_profile\n\ -+ .type _dl_runtime_profile, @function\n\ -+ .align 16\n\ -+_dl_runtime_profile:\n\ -+ pushl %eax # Preserve registers otherwise clobbered.\n\ -+ pushl %ecx\n\ -+ pushl %edx\n\ -+ movl 20(%esp), %ecx # Load return address\n\ -+ movl 16(%esp), %edx # Copy args pushed by PLT in register. Note\n\ -+ movl 12(%esp), %eax # that `fixup' takes its parameters in regs.\n\ -+ call profile_fixup # Call resolver.\n\ -+ popl %edx # Get register content back.\n\ -+ popl %ecx\n\ -+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\ -+ ret $8 # Jump to function address.\n\ -+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\ -+ .previous\n\ - "); - #else --# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ -- .text -- .globl _dl_runtime_resolve -- .globl _dl_runtime_profile -- .type _dl_runtime_resolve, @function -- .type _dl_runtime_profile, @function -- .align 16 --_dl_runtime_resolve: --_dl_runtime_profile: -- pushl %eax # Preserve registers otherwise clobbered. -- pushl %ecx -- pushl %edx -- movl 16(%esp), %edx # Push the arguments for `fixup' -- movl 12(%esp), %eax -- pushl %edx -- pushl %eax -- call fixup # Call resolver. -- popl %edx # Pop the parameters -- popl %ecx -- popl %edx # Get register content back. -- popl %ecx -- xchgl %eax, (%esp) # Get %eax contents end store function address. -- ret $8 # Jump to function address. -- .size _dl_runtime_resolve, .-_dl_runtime_resolve -- .size _dl_runtime_profile, .-_dl_runtime_profile -- .previous -+# define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\n\ -+ .text\n\ -+ .globl _dl_runtime_resolve\n\ -+ .globl _dl_runtime_profile\n\ -+ .type _dl_runtime_resolve, @function\n\ -+ .type _dl_runtime_profile, @function\n\ -+ .align 16\n\ -+_dl_runtime_resolve:\n\ -+_dl_runtime_profile:\n\ -+ pushl %eax # Preserve registers otherwise clobbered.\n\ -+ pushl %ecx\n\ -+ pushl %edx\n\ -+ movl 16(%esp), %edx # Push the arguments for `fixup'\n\ -+ movl 12(%esp), %eax\n\ -+ pushl %edx\n\ -+ pushl %eax\n\ -+ call fixup # Call resolver.\n\ -+ popl %edx # Pop the parameters\n\ -+ popl %ecx\n\ -+ popl %edx # Get register content back.\n\ -+ popl %ecx\n\ -+ xchgl %eax, (%esp) # Get %eax contents end store function address.\n\ -+ ret $8 # Jump to function address.\n\ -+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ -+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\ -+ .previous\n\ - "); - #endif - -@@ -205,7 +208,7 @@ - _dl_start_user:\n\ - # Save the user entry point address in %edi.\n\ - movl %eax, %edi\n\ -- # Point %ebx at the GOT. -+ # Point %ebx at the GOT.\n\ - call 0b\n\ - addl $_GLOBAL_OFFSET_TABLE_, %ebx\n\ - # Store the highest stack address\n\ - -=================================================================== ---- glibc-2.2.2/elf/dl-runtime.c.old 2005-07-07 15:40:26.000000000 -0700 -+++ glibc-2.2.2/elf/dl-runtime.c 2005-07-07 15:41:57.000000000 -0700 -@@ -33,6 +33,11 @@ - # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym)) - #endif - -+/* The fixup functions might have need special attributes. If none -+ are provided define the macro as empty. */ -+#ifndef ARCH_FIXUP_ATTRIBUTE -+# define ARCH_FIXUP_ATTRIBUTE -+#endif - - /* This function is called through a special trampoline from the PLT the - first time each PLT entry is called. We must perform the relocation -@@ -42,7 +47,7 @@ - function. */ - - #ifndef ELF_MACHINE_NO_PLT --static ElfW(Addr) __attribute__ ((unused)) -+static ElfW(Addr) __attribute__ ((unused)) ARCH_FIXUP_ATTRIBUTE - fixup ( - # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, -@@ -126,7 +131,7 @@ - - #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__ - --static ElfW(Addr) __attribute__ ((unused)) -+static ElfW(Addr) __attribute__ ((unused)) ARCH_FIXUP_ATTRIBUTE - profile_fixup ( - #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-errlist.patch --- a/patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-errlist.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -Fixes error -../sysdeps/unix/sysv/linux/errlist.c:41: error: weak declaration of '_old_sys_nerr' must precede definition - -=================================================================== ---- glibc-2.2.2/sysdeps/unix/sysv/linux/errlist.c.old 2005-04-11 16:58:21.000000000 -0700 -+++ glibc-2.2.2/sysdeps/unix/sysv/linux/errlist.c 2005-04-11 16:58:10.000000000 -0700 -@@ -38,10 +38,9 @@ - const int __old_sys_nerr = OLD_ERRLIST_SIZE; - - strong_alias (__old_sys_nerr, _old_sys_nerr); --weak_alias (__old_sys_nerr, _old_sys_nerr) - compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0); - compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0); --weak_alias (__old_sys_errlist, _old_sys_errlist); -+strong_alias (__old_sys_errlist, _old_sys_errlist); - compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0); - compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0); - #endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-longlong.patch --- a/patches/glibc/2.2.2/glibc-2.2.2-allow-gcc3-longlong.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,811 +0,0 @@ -Fixes error -./longlong.h:423: error: parse error before '%' token -./longlong.h:423: error: missing terminating " character -./longlong.h:432: error: missing terminating " character -See also patches/glibc-2.1.3/glibc-2.1.3-allow-gcc3-longlong.patch - -=================================================================== ---- glibc-2.2.2/stdlib/longlong.h.old 2000-02-11 15:48:58.000000000 -0800 -+++ glibc-2.2.2/stdlib/longlong.h 2005-04-11 15:36:10.000000000 -0700 -@@ -108,8 +108,8 @@ - - #if (defined (__a29k__) || defined (_AM29K)) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add %1,%4,%5 -- addc %0,%2,%3" \ -+ __asm__ ("add %1,%4,%5\n" \ -+ "addc %0,%2,%3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%r" ((USItype) (ah)), \ -@@ -117,8 +117,8 @@ - "%r" ((USItype) (al)), \ - "rI" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub %1,%4,%5 -- subc %0,%2,%3" \ -+ __asm__ ("sub %1,%4,%5\n" \ -+ "subc %0,%2,%3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "r" ((USItype) (ah)), \ -@@ -175,8 +175,8 @@ - - #if defined (__arc__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add.f %1, %4, %5 -- adc %0, %2, %3" \ -+ __asm__ ("add.f %1, %4, %5\n" \ -+ "adc %0, %2, %3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%r" ((USItype) (ah)), \ -@@ -184,8 +184,8 @@ - "%r" ((USItype) (al)), \ - "rIJ" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub.f %1, %4, %5 -- sbc %0, %2, %3" \ -+ __asm__ ("sub.f %1, %4, %5\n" \ -+ "sbc %0, %2, %3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "r" ((USItype) (ah)), \ -@@ -206,8 +206,8 @@ - - #if defined (__arm__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("adds %1, %4, %5 -- adc %0, %2, %3" \ -+ __asm__ ("adds %1, %4, %5\n" \ -+ "adc %0, %2, %3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%r" ((USItype) (ah)), \ -@@ -215,8 +215,8 @@ - "%r" ((USItype) (al)), \ - "rI" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subs %1, %4, %5 -- sbc %0, %2, %3" \ -+ __asm__ ("subs %1, %4, %5\n" \ -+ "sbc %0, %2, %3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "r" ((USItype) (ah)), \ -@@ -225,19 +225,19 @@ - "rI" ((USItype) (bl))) - #define umul_ppmm(xh, xl, a, b) \ - {register USItype __t0, __t1, __t2; \ -- __asm__ ("%@ Inlined umul_ppmm -- mov %2, %5, lsr #16 -- mov %0, %6, lsr #16 -- bic %3, %5, %2, lsl #16 -- bic %4, %6, %0, lsl #16 -- mul %1, %3, %4 -- mul %4, %2, %4 -- mul %3, %0, %3 -- mul %0, %2, %0 -- adds %3, %4, %3 -- addcs %0, %0, #65536 -- adds %1, %1, %3, lsl #16 -- adc %0, %0, %3, lsr #16" \ -+ __asm__ ("%@ Inlined umul_ppmm\n" \ -+ "mov %2, %5, lsr #16\n" \ -+ "mov %0, %6, lsr #16\n" \ -+ "bic %3, %5, %2, lsl #16\n" \ -+ "bic %4, %6, %0, lsl #16\n" \ -+ "mul %1, %3, %4\n" \ -+ "mul %4, %2, %4\n" \ -+ "mul %3, %0, %3\n" \ -+ "mul %0, %2, %0\n" \ -+ "adds %3, %4, %3\n" \ -+ "addcs %0, %0, #65536\n" \ -+ "adds %1, %1, %3, lsl #16\n" \ -+ "adc %0, %0, %3, lsr #16" \ - : "=&r" ((USItype) (xh)), \ - "=r" ((USItype) (xl)), \ - "=&r" (__t0), "=&r" (__t1), "=r" (__t2) \ -@@ -277,8 +277,8 @@ - - #if defined (__gmicro__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add.w %5,%1 -- addx %3,%0" \ -+ __asm__ ("add.w %5,%1\n" \ -+ "addx %3,%0" \ - : "=g" ((USItype) (sh)), \ - "=&g" ((USItype) (sl)) \ - : "%0" ((USItype) (ah)), \ -@@ -286,8 +286,8 @@ - "%1" ((USItype) (al)), \ - "g" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub.w %5,%1 -- subx %3,%0" \ -+ __asm__ ("sub.w %5,%1\n" \ -+ "subx %3,%0" \ - : "=g" ((USItype) (sh)), \ - "=&g" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ -@@ -316,8 +316,8 @@ - - #if defined (__hppa) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add %4,%5,%1 -- addc %2,%3,%0" \ -+ __asm__ ("add %4,%5,%1\n" \ -+ "addc %2,%3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%rM" ((USItype) (ah)), \ -@@ -325,8 +325,8 @@ - "%rM" ((USItype) (al)), \ - "rM" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub %4,%5,%1 -- subb %2,%3,%0" \ -+ __asm__ ("sub %4,%5,%1\n" \ -+ "subb %2,%3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "rM" ((USItype) (ah)), \ -@@ -357,22 +357,22 @@ - do { \ - USItype __tmp; \ - __asm__ ( \ -- "ldi 1,%0 -- extru,= %1,15,16,%%r0 ; Bits 31..16 zero? -- extru,tr %1,15,16,%1 ; No. Shift down, skip add. -- ldo 16(%0),%0 ; Yes. Perform add. -- extru,= %1,23,8,%%r0 ; Bits 15..8 zero? -- extru,tr %1,23,8,%1 ; No. Shift down, skip add. -- ldo 8(%0),%0 ; Yes. Perform add. -- extru,= %1,27,4,%%r0 ; Bits 7..4 zero? -- extru,tr %1,27,4,%1 ; No. Shift down, skip add. -- ldo 4(%0),%0 ; Yes. Perform add. -- extru,= %1,29,2,%%r0 ; Bits 3..2 zero? -- extru,tr %1,29,2,%1 ; No. Shift down, skip add. -- ldo 2(%0),%0 ; Yes. Perform add. -- extru %1,30,1,%1 ; Extract bit 1. -- sub %0,%1,%0 ; Subtract it. -- " : "=r" (count), "=r" (__tmp) : "1" (x)); \ -+ "ldi 1,%0\n" \ -+ "extru,= %1,15,16,%%r0 ; Bits 31..16 zero?\n" \ -+ "extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 16(%0),%0 ; Yes. Perform add.\n" \ -+ "extru,= %1,23,8,%%r0 ; Bits 15..8 zero?\n" \ -+ "extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 8(%0),%0 ; Yes. Perform add.\n" \ -+ "extru,= %1,27,4,%%r0 ; Bits 7..4 zero?\n" \ -+ "extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 4(%0),%0 ; Yes. Perform add.\n" \ -+ "extru,= %1,29,2,%%r0 ; Bits 3..2 zero?\n" \ -+ "extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n" \ -+ "ldo 2(%0),%0 ; Yes. Perform add.\n" \ -+ "extru %1,30,1,%1 ; Extract bit 1.\n" \ -+ "sub %0,%1,%0 ; Subtract it.\n" \ -+ : "=r" (count), "=r" (__tmp) : "1" (x)); \ - } while (0) - #endif - -@@ -419,8 +419,8 @@ - - #if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addl %5,%1 -- adcl %3,%0" \ -+ __asm__ ("addl %5,%1\n" \ -+ "adcl %3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%0" ((USItype) (ah)), \ -@@ -428,8 +428,8 @@ - "%1" ((USItype) (al)), \ - "g" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subl %5,%1 -- sbbl %3,%0" \ -+ __asm__ ("subl %5,%1\n" \ -+ "sbbl %3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ -@@ -525,9 +525,9 @@ - #if defined (__M32R__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ - /* The cmp clears the condition bit. */ \ -- __asm__ ("cmp %0,%0 -- addx %%5,%1 -- addx %%3,%0" \ -+ __asm__ ("cmp %0,%0\n" \ -+ "addx %%5,%1\n" \ -+ "addx %%3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%0" ((USItype) (ah)), \ -@@ -537,9 +537,9 @@ - : "cbit") - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ - /* The cmp clears the condition bit. */ \ -- __asm__ ("cmp %0,%0 -- subx %5,%1 -- subx %3,%0" \ -+ __asm__ ("cmp %0,%0\n" \ -+ "subx %5,%1\n" \ -+ "subx %3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ -@@ -551,8 +551,8 @@ - - #if defined (__mc68000__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("add%.l %5,%1 -- addx%.l %3,%0" \ -+ __asm__ ("add%.l %5,%1\n" \ -+ "addx%.l %3,%0" \ - : "=d" ((USItype) (sh)), \ - "=&d" ((USItype) (sl)) \ - : "%0" ((USItype) (ah)), \ -@@ -560,8 +560,8 @@ - "%1" ((USItype) (al)), \ - "g" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("sub%.l %5,%1 -- subx%.l %3,%0" \ -+ __asm__ ("sub%.l %5,%1\n" \ -+ "subx%.l %3,%0" \ - : "=d" ((USItype) (sh)), \ - "=&d" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ -@@ -602,32 +602,32 @@ - #if !defined(__mcf5200__) - /* %/ inserts REGISTER_PREFIX, %# inserts IMMEDIATE_PREFIX. */ - #define umul_ppmm(xh, xl, a, b) \ -- __asm__ ("| Inlined umul_ppmm -- move%.l %2,%/d0 -- move%.l %3,%/d1 -- move%.l %/d0,%/d2 -- swap %/d0 -- move%.l %/d1,%/d3 -- swap %/d1 -- move%.w %/d2,%/d4 -- mulu %/d3,%/d4 -- mulu %/d1,%/d2 -- mulu %/d0,%/d3 -- mulu %/d0,%/d1 -- move%.l %/d4,%/d0 -- eor%.w %/d0,%/d0 -- swap %/d0 -- add%.l %/d0,%/d2 -- add%.l %/d3,%/d2 -- jcc 1f -- add%.l %#65536,%/d1 --1: swap %/d2 -- moveq %#0,%/d0 -- move%.w %/d2,%/d0 -- move%.w %/d4,%/d2 -- move%.l %/d2,%1 -- add%.l %/d1,%/d0 -- move%.l %/d0,%0" \ -+ __asm__ ("| Inlined umul_ppmm\n" \ -+ "move%.l %2,%/d0\n" \ -+ "move%.l %3,%/d1\n" \ -+ "move%.l %/d0,%/d2\n" \ -+ "swap %/d0\n" \ -+ "move%.l %/d1,%/d3\n" \ -+ "swap %/d1\n" \ -+ "move%.w %/d2,%/d4\n" \ -+ "mulu %/d3,%/d4\n" \ -+ "mulu %/d1,%/d2\n" \ -+ "mulu %/d0,%/d3\n" \ -+ "mulu %/d0,%/d1\n" \ -+ "move%.l %/d4,%/d0\n" \ -+ "eor%.w %/d0,%/d0\n" \ -+ "swap %/d0\n" \ -+ "add%.l %/d0,%/d2\n" \ -+ "add%.l %/d3,%/d2\n" \ -+ "jcc 1f\n" \ -+ "add%.l %#65536,%/d1\n" \ -+"1: swap %/d2\n" \ -+ "moveq %#0,%/d0\n" \ -+ "move%.w %/d2,%/d0\n" \ -+ "move%.w %/d4,%/d2\n" \ -+ "move%.l %/d2,%1\n" \ -+ "add%.l %/d1,%/d0\n" \ -+ "move%.l %/d0,%0" \ - : "=g" ((USItype) (xh)), \ - "=g" ((USItype) (xl)) \ - : "g" ((USItype) (a)), \ -@@ -653,8 +653,8 @@ - - #if defined (__m88000__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addu.co %1,%r4,%r5 -- addu.ci %0,%r2,%r3" \ -+ __asm__ ("addu.co %1,%r4,%r5\n" \ -+ "addu.ci %0,%r2,%r3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%rJ" ((USItype) (ah)), \ -@@ -662,8 +662,8 @@ - "%rJ" ((USItype) (al)), \ - "rJ" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subu.co %1,%r4,%r5 -- subu.ci %0,%r2,%r3" \ -+ __asm__ ("subu.co %1,%r4,%r5\n" \ -+ "subu.ci %0,%r2,%r3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "rJ" ((USItype) (ah)), \ -@@ -880,8 +880,8 @@ - - #if defined (__pyr__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addw %5,%1 -- addwc %3,%0" \ -+ __asm__ ("addw %5,%1\n" \ -+ "addwc %3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%0" ((USItype) (ah)), \ -@@ -889,8 +889,8 @@ - "%1" ((USItype) (al)), \ - "g" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subw %5,%1 -- subwb %3,%0" \ -+ __asm__ ("subw %5,%1\n" \ -+ "subwb %3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ -@@ -902,8 +902,8 @@ - ({union {UDItype __ll; \ - struct {USItype __h, __l;} __i; \ - } __xx; \ -- __asm__ ("movw %1,%R0 -- uemul %2,%0" \ -+ __asm__ ("movw %1,%R0\n" \ -+ "uemul %2,%0" \ - : "=&r" (__xx.__ll) \ - : "g" ((USItype) (u)), \ - "g" ((USItype) (v))); \ -@@ -912,8 +912,8 @@ - - #if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("a %1,%5 -- ae %0,%3" \ -+ __asm__ ("a %1,%5\n" \ -+ "ae %0,%3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%0" ((USItype) (ah)), \ -@@ -921,8 +921,8 @@ - "%1" ((USItype) (al)), \ - "r" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("s %1,%5 -- se %0,%3" \ -+ __asm__ ("s %1,%5\n" \ -+ "se %0,%3" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ -@@ -933,26 +933,26 @@ - do { \ - USItype __m0 = (m0), __m1 = (m1); \ - __asm__ ( \ -- "s r2,r2 -- mts r10,%2 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- m r2,%3 -- cas %0,r2,r0 -- mfs r10,%1" \ -+ "s r2,r2\n" -+ "mts r10,%2\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "m r2,%3\n" \ -+ "cas %0,r2,r0\n" \ -+ "mfs r10,%1" \ - : "=r" ((USItype) (ph)), \ - "=r" ((USItype) (pl)) \ - : "%r" (__m0), \ -@@ -982,9 +982,9 @@ - #if defined (__sh2__) && W_TYPE_SIZE == 32 - #define umul_ppmm(w1, w0, u, v) \ - __asm__ ( \ -- "dmulu.l %2,%3 -- sts macl,%1 -- sts mach,%0" \ -+ "dmulu.l %2,%3\n" \ -+ "sts macl,%1\n" \ -+ "sts mach,%0" \ - : "=r" ((USItype)(w1)), \ - "=r" ((USItype)(w0)) \ - : "r" ((USItype)(u)), \ -@@ -996,8 +996,8 @@ - #if defined (__sparc__) && !defined(__arch64__) \ - && !defined(__sparcv9) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addcc %r4,%5,%1 -- addx %r2,%3,%0" \ -+ __asm__ ("addcc %r4,%5,%1\n" \ -+ "addx %r2,%3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "%rJ" ((USItype) (ah)), \ -@@ -1006,8 +1006,8 @@ - "rI" ((USItype) (bl)) \ - __CLOBBER_CC) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subcc %r4,%5,%1 -- subx %r2,%3,%0" \ -+ __asm__ ("subcc %r4,%5,%1\n" \ -+ "subx %r2,%3,%0" \ - : "=r" ((USItype) (sh)), \ - "=&r" ((USItype) (sl)) \ - : "rJ" ((USItype) (ah)), \ -@@ -1040,45 +1040,45 @@ - : "r" ((USItype) (u)), \ - "r" ((USItype) (v))) - #define udiv_qrnnd(q, r, n1, n0, d) \ -- __asm__ ("! Inlined udiv_qrnnd -- wr %%g0,%2,%%y ! Not a delayed write for sparclite -- tst %%g0 -- divscc %3,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%%g1 -- divscc %%g1,%4,%0 -- rd %%y,%1 -- bl,a 1f -- add %1,%4,%1 --1: ! End of inline udiv_qrnnd" \ -+ __asm__ ("! Inlined udiv_qrnnd\n" \ -+ "wr %%g0,%2,%%y ! Not a delayed write for sparclite\n" \ -+ "tst %%g0\n" \ -+ "divscc %3,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%%g1\n" \ -+ "divscc %%g1,%4,%0\n" \ -+ "rd %%y,%1\n" \ -+ "bl,a 1f\n" \ -+ "add %1,%4,%1\n" \ -+"1: ! End of inline udiv_qrnnd" \ - : "=r" ((USItype) (q)), \ - "=r" ((USItype) (r)) \ - : "r" ((USItype) (n1)), \ -@@ -1099,46 +1099,46 @@ - /* SPARC without integer multiplication and divide instructions. - (i.e. at least Sun4/20,40,60,65,75,110,260,280,330,360,380,470,490) */ - #define umul_ppmm(w1, w0, u, v) \ -- __asm__ ("! Inlined umul_ppmm -- wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr -- sra %3,31,%%o5 ! Don't move this insn -- and %2,%%o5,%%o5 ! Don't move this insn -- andcc %%g0,0,%%g1 ! Don't move this insn -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,%3,%%g1 -- mulscc %%g1,0,%%g1 -- add %%g1,%%o5,%0 -- rd %%y,%1" \ -+ __asm__ ("! Inlined umul_ppmm\n" \ -+ "wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n" \ -+ "sra %3,31,%%o5 ! Don't move this insn\n" \ -+ "and %2,%%o5,%%o5 ! Don't move this insn\n" \ -+ "andcc %%g0,0,%%g1 ! Don't move this insn\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,%3,%%g1\n" \ -+ "mulscc %%g1,0,%%g1\n" \ -+ "add %%g1,%%o5,%0\n" \ -+ "rd %%y,%1" \ - : "=r" ((USItype) (w1)), \ - "=r" ((USItype) (w0)) \ - : "%rI" ((USItype) (u)), \ -@@ -1148,30 +1148,30 @@ - /* It's quite necessary to add this much assembler for the sparc. - The default udiv_qrnnd (in C) is more than 10 times slower! */ - #define udiv_qrnnd(q, r, n1, n0, d) \ -- __asm__ ("! Inlined udiv_qrnnd -- mov 32,%%g1 -- subcc %1,%2,%%g0 --1: bcs 5f -- addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb -- sub %1,%2,%1 ! this kills msb of n -- addx %1,%1,%1 ! so this can't give carry -- subcc %%g1,1,%%g1 --2: bne 1b -- subcc %1,%2,%%g0 -- bcs 3f -- addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb -- b 3f -- sub %1,%2,%1 ! this kills msb of n --4: sub %1,%2,%1 --5: addxcc %1,%1,%1 -- bcc 2b -- subcc %%g1,1,%%g1 --! Got carry from n. Subtract next step to cancel this carry. -- bne 4b -- addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb -- sub %1,%2,%1 --3: xnor %0,0,%0 -- ! End of inline udiv_qrnnd" \ -+ __asm__ ("! Inlined udiv_qrnnd\n" \ -+ "mov 32,%%g1\n" \ -+ "subcc %1,%2,%%g0\n" \ -+"1: bcs 5f\n" \ -+ "addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \ -+ "sub %1,%2,%1 ! this kills msb of n\n" \ -+ "addx %1,%1,%1 ! so this can't give carry\n" \ -+ "subcc %%g1,1,%%g1\n" \ -+"2: bne 1b\n" \ -+ "subcc %1,%2,%%g0\n" \ -+ "bcs 3f\n" \ -+ "addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \ -+ "b 3f\n" \ -+ "sub %1,%2,%1 ! this kills msb of n\n" \ -+"4: sub %1,%2,%1\n" \ -+"5: addxcc %1,%1,%1\n" \ -+ "bcc 2b\n" \ -+ "subcc %%g1,1,%%g1\n" \ -+"! Got carry from n. Subtract next step to cancel this carry.\n" \ -+ "bne 4b\n" \ -+ "addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb\n" \ -+ "sub %1,%2,%1\n" \ -+"3: xnor %0,0,%0\n" \ -+ "! End of inline udiv_qrnnd" \ - : "=&r" ((USItype) (q)), \ - "=&r" ((USItype) (r)) \ - : "r" ((USItype) (d)), \ -@@ -1185,11 +1185,11 @@ - #if ((defined (__sparc__) && defined (__arch64__)) \ - || defined (__sparcv9)) && W_TYPE_SIZE == 64 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addcc %r4,%5,%1 -- add %r2,%3,%0 -- bcs,a,pn %%xcc, 1f -- add %0, 1, %0 -- 1:" \ -+ __asm__ ("addcc %r4,%5,%1\n" \ -+ "add %r2,%3,%0\n" \ -+ "bcs,a,pn %%xcc, 1f\n" \ -+ "add %0, 1, %0\n" \ -+ "1:" \ - : "=r" ((UDItype)(sh)), \ - "=&r" ((UDItype)(sl)) \ - : "%rJ" ((UDItype)(ah)), \ -@@ -1199,11 +1199,11 @@ - __CLOBBER_CC) - - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subcc %r4,%5,%1 -- sub %r2,%3,%0 -- bcs,a,pn %%xcc, 1f -- sub %0, 1, %0 -- 1:" \ -+ __asm__ ("subcc %r4,%5,%1\n" \ -+ "sub %r2,%3,%0\n" \ -+ "bcs,a,pn %%xcc, 1f\n" \ -+ "sub %0, 1, %0\n" \ -+ "1:" \ - : "=r" ((UDItype)(sh)), \ - "=&r" ((UDItype)(sl)) \ - : "rJ" ((UDItype)(ah)), \ -@@ -1216,27 +1216,27 @@ - do { \ - UDItype tmp1, tmp2, tmp3, tmp4; \ - __asm__ __volatile__ ( \ -- "srl %7,0,%3 -- mulx %3,%6,%1 -- srlx %6,32,%2 -- mulx %2,%3,%4 -- sllx %4,32,%5 -- srl %6,0,%3 -- sub %1,%5,%5 -- srlx %5,32,%5 -- addcc %4,%5,%4 -- srlx %7,32,%5 -- mulx %3,%5,%3 -- mulx %2,%5,%5 -- sethi %%hi(0x80000000),%2 -- addcc %4,%3,%4 -- srlx %4,32,%4 -- add %2,%2,%2 -- movcc %%xcc,%%g0,%2 -- addcc %5,%4,%5 -- sllx %3,32,%3 -- add %1,%3,%1 -- add %5,%2,%0" \ -+ "srl %7,0,%3\n" \ -+ "mulx %3,%6,%1\n" \ -+ "srlx %6,32,%2\n" \ -+ "mulx %2,%3,%4\n" \ -+ "sllx %4,32,%5\n" \ -+ "srl %6,0,%3\n" \ -+ "sub %1,%5,%5\n" \ -+ "srlx %5,32,%5\n" \ -+ "addcc %4,%5,%4\n" \ -+ "srlx %7,32,%5\n" \ -+ "mulx %3,%5,%3\n" \ -+ "mulx %2,%5,%5\n" \ -+ "sethi %%hi(0x80000000),%2\n" \ -+ "addcc %4,%3,%4\n" \ -+ "srlx %4,32,%4\n" \ -+ "add %2,%2,%2\n" \ -+ "movcc %%xcc,%%g0,%2\n" \ -+ "addcc %5,%4,%5\n" \ -+ "sllx %3,32,%3\n" \ -+ "add %1,%3,%1\n" \ -+ "add %5,%2,%0" \ - : "=r" ((UDItype)(wh)), \ - "=&r" ((UDItype)(wl)), \ - "=&r" (tmp1), "=&r" (tmp2), "=&r" (tmp3), "=&r" (tmp4) \ -@@ -1250,8 +1250,8 @@ - - #if defined (__vax__) && W_TYPE_SIZE == 32 - #define add_ssaaaa(sh, sl, ah, al, bh, bl) \ -- __asm__ ("addl2 %5,%1 -- adwc %3,%0" \ -+ __asm__ ("addl2 %5,%1\n" \ -+ "adwc %3,%0" \ - : "=g" ((USItype) (sh)), \ - "=&g" ((USItype) (sl)) \ - : "%0" ((USItype) (ah)), \ -@@ -1259,8 +1259,8 @@ - "%1" ((USItype) (al)), \ - "g" ((USItype) (bl))) - #define sub_ddmmss(sh, sl, ah, al, bh, bl) \ -- __asm__ ("subl2 %5,%1 -- sbwc %3,%0" \ -+ __asm__ ("subl2 %5,%1\n" \ -+ "sbwc %3,%0" \ - : "=g" ((USItype) (sh)), \ - "=&g" ((USItype) (sl)) \ - : "0" ((USItype) (ah)), \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.2-export_fp_hw.patch --- a/patches/glibc/2.2.2/glibc-2.2.2-export_fp_hw.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Fixes undefined symbol _fp_hw required by the ABI: -readelf -s /opt/crosstool/i686-pc-linux-gnu/i686-unknown-linux-gnu/gcc-3.4.3-glibc-2.2.2/i686-unknown-linux-gnu/lib/crt1.o | grep fp_hw - 29: 00000000 4 NOTYPE GLOBAL DEFAULT UND _fp_hw -Rumored to fix problems with icc, which gets upset at any symbol -which is undefined, even if nobody cares about it. - -Revision 1.16, Thu Feb 22 19:57:34 2001 UTC (4 years, 2 months ago) by drepper -Branch: MAIN -CVS Tags: glibc-2_2_3 -Changes since 1.15: +1 -1 lines -Diff to previous 1.15 (colored) - -(_fp_hw): Actually define label. - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/i386/elf/start.S,v -retrieving revision 1.15 -retrieving revision 1.16 -diff -u -r1.15 -r1.16 ---- libc/sysdeps/i386/elf/start.S 2001/02/03 21:34:54 1.15 -+++ libc/sysdeps/i386/elf/start.S 2001/02/22 19:57:34 1.16 -@@ -85,7 +85,7 @@ - meaningless since we don't support machines < 80386. */ - .section .rodata - .globl _fp_hw -- .long 3 -+_fp_hw: .long 3 - .size _fp_hw, 4 - - /* Define a symbol for the first piece of initialized data. */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.2-printf-not-macro.patch --- a/patches/glibc/2.2.2/glibc-2.2.2-printf-not-macro.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -I'm testing toolchains with glibc-2.2.2 now. It looks ok except -that glibc-2.2.2 headers contain the gosh-awful line - # define printf(fmt, args...) fprintf (stdout, fmt, ##args) -which causes builds of programs with methods named 'printf' to fail with - error: `stdout' is not a type -Feh. - -Revision 1.8, Thu Aug 2 16:09:51 2001 UTC (3 years, 9 months ago) by aj -Branch: MAIN -CVS Tags: glibc-2_3_2, glibc-2_2_4, glibc-2-3-1, glibc-2-3, glibc-2-2-branch, glibc-2-2-5 - -(printf): Remove printf optimization since GCC 3.0 can optimize printf. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/libio/bits/stdio.h.diff?r1=1.7&r2=1.8&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/libio/bits/stdio.h,v -retrieving revision 1.7 -retrieving revision 1.8 -diff -u -r1.7 -r1.8 ---- libc/libio/bits/stdio.h 2001/07/06 04:55:32 1.7 -+++ libc/libio/bits/stdio.h 2001/08/02 16:09:51 1.8 -@@ -29,13 +29,6 @@ - - - #ifdef __USE_EXTERN_INLINES --/* Since version 2.97 GCC knows about `fprintf' and can optimize certain -- cases. Help gcc to optimize more code by mapping `printf' to the known -- `fprintf' function. Unfortunately we have to use a macro. */ --# if __GNUC_PREREQ (2,97) --# define printf(fmt, args...) fprintf (stdout, fmt, ##args) --# endif -- - /* Write formatted output to stdout from argument list ARG. */ - __STDIO_INLINE int - vprintf (__const char *__restrict __fmt, _G_va_list __arg) __THROW diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.2-syslog-bugfix.patch --- a/patches/glibc/2.2.2/glibc-2.2.2-syslog-bugfix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -Backport a bugfix from glibc-2.2.5 to glibc-2.2.2 for the following problem: - When syslog-ng is restarted (or HUPed), vixie-cron (and probably other - programs) stop logging to syslog. - - -2001-08-27 Ulrich Drepper * misc/syslog.c (vsyslog): - Try a bit harder to use syslogd. If the connection went down after we - first used it try to connect again and resend the message before printing - to the console. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/misc/Attic/syslog.c.diff?r1=1.32&r2=1.30&cvsroot=glibc -[ paths adjusted ] - -=================================================================== -RCS file: /cvs/glibc/libc/misc/Attic/syslog.c,v -retrieving revision 1.30 -retrieving revision 1.32 -diff -u -r1.30 -r1.32 ---- glibc-2.2.2/misc/syslog.c 2001/08/24 03:21:14 1.30 -+++ glibc-2.2.5/misc/syslog.c 2001/08/30 23:13:49 1.32 -@@ -239,17 +239,29 @@ - - if (!connected || __send(LogFile, buf, bufsize, 0) < 0) - { -- closelog_internal (); /* attempt re-open next time */ -- /* -- * Output the message to the console; don't worry about blocking, -- * if console blocks everything will. Make sure the error reported -- * is the one from the syslogd failure. -- */ -- if (LogStat & LOG_CONS && -- (fd = __open(_PATH_CONSOLE, O_WRONLY|O_NOCTTY, 0)) >= 0) -+ if (connected) - { -- dprintf (fd, "%s\r\n", buf + msgoff); -- (void)__close(fd); -+ /* Try to reopen the syslog connection. Maybe it went -+ down. */ -+ closelog_internal (); -+ openlog_internal(LogTag, LogStat | LOG_NDELAY, 0); -+ } -+ -+ if (!connected || __send(LogFile, buf, bufsize, 0) < 0) -+ { -+ closelog_internal (); /* attempt re-open next time */ -+ /* -+ * Output the message to the console; don't worry -+ * about blocking, if console blocks everything will. -+ * Make sure the error reported is the one from the -+ * syslogd failure. -+ */ -+ if (LogStat & LOG_CONS && -+ (fd = __open(_PATH_CONSOLE, O_WRONLY|O_NOCTTY, 0)) >= 0) -+ { -+ dprintf (fd, "%s\r\n", buf + msgoff); -+ (void)__close(fd); -+ } - } - } - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.5-alpha-pwrite64.patch --- a/patches/glibc/2.2.2/glibc-2.2.5-alpha-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -Fix for this error: - -../sysdeps/unix/sysv/linux/pread.c: In function `__libc_pread': -../sysdeps/unix/sysv/linux/pread.c:52: error: `__NR_pread' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/pread.c:52: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/pread.c:52: error: for each function it appears in.) -make[2]: *** [/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/build-glibc/posix/pread.o] Error 1 -make[2]: Leaving directory `/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5/posix' -make[1]: *** [posix/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - -[ Same as glibc-2.3.2-alpha-pwrite.patch except for copyright date ] - -extracted from GLIBC CVS by Dan Kegel -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.14&r2=1.15&cvsroot=glibc' -(to match context of...) -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.16&r2=1.17&cvsroot=glibc' -and rediffed. - -cf. -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00038.html - -Originally thought we needed this hunk, too: -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00037.html -but it seems the sysdep.h change is sufficient, and works better -when compiling against linux-2.4. - -=================================================================== ---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h.old 2004-05-24 22:21:44.000000000 -0700 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h 2004-05-24 22:22:48.000000000 -0700 -@@ -1,3 +1,3 @@ --/* Copyright (C) 1992, 1993, 1995, 1996, 1997 Free Software Foundation, Inc. -+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, , August 1995. -@@ -60,6 +60,21 @@ - #define __NR_osf_getsysinfo 256 - #define __NR_osf_setsysinfo 257 - -+/* Help old kernel headers where particular syscalls are not available. */ -+#ifndef __NR_semtimedop -+# define __NR_semtimedop 423 -+#endif -+ -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - /* - * In order to get the hidden arguments for rt_sigaction set up - * properly, we need to call the assembly version. Detect this in the diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.5-arm-pwrite64.patch --- a/patches/glibc/2.2.2/glibc-2.2.5-arm-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Should fix - -../sysdeps/unix/sysv/linux/pread.c: In function `__libc_pread': -../sysdeps/unix/sysv/linux/pread.c:52: error: `__NR_pread' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/pread.c:52: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/pread.c:52: error: for each function it appears in.) -make[2]: *** [/home/dank/crosstool-0.28/build/arm-9tdmi-linux-gnu/gcc-3.4.1-glibc-2.2.5/build-glibc/posix/pread.o] Error 1 -make[2]: Leaving directory `/home/dank/crosstool-0.28/build/arm-9tdmi-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5/posix' -make[1]: *** [posix/subdir_lib] Error 2 - -Copied from similar patch for alpha. - ---- glibc-2.2.5-orig/sysdeps/unix/sysv/linux/arm/sysdep.h 2001-07-05 21:56:13.000000000 -0700 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h 2004-08-07 10:45:26.000000000 -0700 -@@ -32,6 +32,15 @@ - #define SWI_BASE (0x900000) - #define SYS_ify(syscall_name) (__NR_##syscall_name) - -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif - - #ifdef __ASSEMBLER__ - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.5-i386-pwrite64.patch --- a/patches/glibc/2.2.2/glibc-2.2.5-i386-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -diff -urN glibc-2.2.5-orig/sysdeps/unix/sysv/linux/i386/sysdep.h glibc-2.2.5/sysdeps/unix/sysv/linux/i386/sysdep.h ---- glibc-2.2.5-orig/sysdeps/unix/sysv/linux/i386/sysdep.h 2001-07-06 06:56:16.000000000 +0200 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/i386/sysdep.h 2004-09-03 12:35:44.000000000 +0200 -@@ -36,6 +36,16 @@ - #undef L - #define L(name) .L##name - -+/* This is a kludge to make syscalls.list find these under the names -+ * pread and pwrite, since some kernel headers define those names -+ * and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - #ifdef __ASSEMBLER__ - - /* Linux uses a negative return value to indicate syscall errors, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-2.2.5-m68k-pwrite.patch --- a/patches/glibc/2.2.2/glibc-2.2.5-m68k-pwrite.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -Copied from similar patch for other architectures. - -Should fix this error: -../sysdeps/unix/sysv/linux/pread.c: In function `__libc_pread': -../sysdeps/unix/sysv/linux/pread.c:53: `__NR_pread' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/pread.c:53: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/pread.c:53: for each function it appears in.) -make[2]: *** [/home/dank/wk/crosstool-0.28-rc37/build/m68k-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.5/build-glibc/posix/pread.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc37/build/m68k-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.5/glibc-2.2.5/posix' -make[1]: *** [posix/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc37/build/m68k-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - ---- glibc-2.2.5/sysdeps/unix/sysv/linux/m68k/sysdep.h.old 2004-10-05 08:37:37.000000000 -0700 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/m68k/sysdep.h 2004-10-05 08:38:22.000000000 -0700 -@@ -32,6 +32,16 @@ - # define SYS_ify(syscall_name) __NR_/**/syscall_name - #endif - -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - #ifdef __ASSEMBLER__ - - /* Linux uses a negative return value to indicate syscall errors, unlike diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-manual-stdin.texi-1.127.patch --- a/patches/glibc/2.2.2/glibc-manual-stdin.texi-1.127.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -=================================================================== -RCS file: /cvs/glibc/libc/manual/stdio.texi,v -retrieving revision 1.126 -retrieving revision 1.127 -diff -u -r1.126 -r1.127 ---- libc/manual/stdio.texi 2001/06/06 07:11:31 1.126 -+++ libc/manual/stdio.texi 2001/07/31 18:57:16 1.127 -@@ -3265,8 +3265,8 @@ - If you are trying to read input that doesn't match a single, fixed - pattern, you may be better off using a tool such as Flex to generate a - lexical scanner, or Bison to generate a parser, rather than using --@code{scanf}. For more information about these tools, see @ref{, , , --flex.info, Flex: The Lexical Scanner Generator}, and @ref{, , , -+@code{scanf}. For more information about these tools, see @ref{Top, , , -+flex.info, Flex: The Lexical Scanner Generator}, and @ref{Top, , , - bison.info, The Bison Reference Manual}. - - @node Input Conversion Syntax diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/glibc-nss-noopt.patch --- a/patches/glibc/2.2.2/glibc-nss-noopt.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ ---- glibc-2.2.2/nss/Makefile.orig Tue May 20 16:02:47 2003 -+++ glibc-2.2.2/nss/Makefile Tue May 20 16:03:52 2003 -@@ -41,6 +41,10 @@ - - tests = test-netdb - -+# Disable optimization when building nss to avoid crash described in -+# http://gcc.gnu.org/ml/gcc-bugs/1998-06/msg00168.html -+default_cflags := -g -O0 -+ - include ../Makeconfig - - ifeq (yes,$(build-static-nss)) ---- glibc-2.2.2/locale/Makefile.orig Tue May 20 17:29:11 2003 -+++ glibc-2.2.2/locale/Makefile Tue May 20 17:29:39 2003 -@@ -66,6 +66,10 @@ - GPERF = gperf - GPERFFLAGS = -acCgopt -k1,2,5,9,$$ -L ANSI-C - -+# Disable optimization when building locale or nss to avoid crash described in -+# http://gcc.gnu.org/ml/gcc-bugs/1998-06/msg00168.html -+default_cflags := -g -O0 -+ - include ../Rules - - programs/%-kw.h: programs/%-kw.gperf diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.2/tst-pathopt-cross.patch --- a/patches/glibc/2.2.2/tst-pathopt-cross.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -Fixes error -tst-pathopt.sh: /crosstool-0.20/build/powerpc-750-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-glibc/elf/ld.so: cannot execute binary file -make[2]: *** [/crosstool-0.20/build/powerpc-750-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-glibc/elf/tst-pathopt.out] Error 126 -See also http://sources.redhat.com/ml/libc-alpha/2001-03/msg00113.html - -=================================================================== -RCS file: /cvs/glibc/libc/elf/Makefile,v -retrieving revision 1.196 -retrieving revision 1.197 -diff -u -r1.196 -r1.197 ---- libc/elf/Makefile 2001/03/16 07:29:45 1.196 -+++ libc/elf/Makefile 2001/03/25 04:57:51 1.197 -@@ -246,8 +246,10 @@ - generated += $(addsuffix .so,$(strip $(modules-names))) - - ifeq (yes,$(build-shared)) -+ifeq ($(cross-compiling),no) - tests: $(objpfx)tst-pathopt.out - endif -+endif - - $(objpfx)testobj1.so: $(libdl) - $(objpfx)testobj1_1.so: $(objpfx)testobj1.so $(libdl) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.3/errlist-1.9.patch --- a/patches/glibc/2.2.3/errlist-1.9.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Fixes: - -../sysdeps/unix/sysv/linux/errlist.c:41: weak declaration of `_old_sys_nerr' must precede definition -make[2]: *** [/home/dank/downloads/crosstool-0.24/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/build-glibc/stdio-common/errlist.os] Error 1 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/Attic/errlist.c,v -retrieving revision 1.8 -retrieving revision 1.9 -diff -u -r1.8 -r1.9 ---- libc/sysdeps/unix/sysv/linux/errlist.c 2001/07/06 04:56:12 1.8 -+++ libc/sysdeps/unix/sysv/linux/errlist.c 2002/05/20 06:56:53 1.9 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. -+/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -38,10 +38,9 @@ - const int __old_sys_nerr = OLD_ERRLIST_SIZE; - - strong_alias (__old_sys_nerr, _old_sys_nerr); --weak_alias (__old_sys_nerr, _old_sys_nerr) - compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0); - compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0); --weak_alias (__old_sys_errlist, _old_sys_errlist); -+strong_alias (__old_sys_errlist, _old_sys_errlist); - compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0); - compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0); - #endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.3/errlist-arm.patch --- a/patches/glibc/2.2.3/errlist-arm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -Subject: patch for arm -From: Philip Blundell -To: libc-hacker at sources dot redhat dot com -Content-Type: text/plain -Content-Transfer-Encoding: 7bit -Date: 22 Jul 2002 20:12:06 +0100 -Message-Id: <1027365126.725.10.camel@kc> -Mime-Version: 1.0 - -The mainline seems to need this patch in order to compile. - -p. - -2002-07-22 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/errlist.c: Remove extra weak alias - definiton of _old_sys_nerr. Define _old_sys_errlist as strong - alias. - -Index: sysdeps/unix/sysv/linux/arm/errlist.c -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/arm/errlist.c,v -retrieving revision 1.4 -diff -u -p -r1.4 errlist.c ---- glibc/sysdeps/unix/sysv/linux/arm/errlist.c 6 Jul 2001 04:56:13 -0000 1.4 -+++ glibc/sysdeps/unix/sysv/linux/arm/errlist.c 22 Jul 2002 19:10:57 -0000 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. -+/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -38,10 +38,9 @@ extern const char *const *__old_sys_errl - const int __old_sys_nerr = OLD_ERRLIST_SIZE; - - strong_alias (__old_sys_nerr, _old_sys_nerr); --weak_alias (__old_sys_nerr, _old_sys_nerr) - compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0); - compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0); --weak_alias (__old_sys_errlist, _old_sys_errlist); -+strong_alias (__old_sys_errlist, _old_sys_errlist); - compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0); - compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0); - #endif - - - - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.3/glibc-2.2.3-mips-base-addr-got.patch --- a/patches/glibc/2.2.3/glibc-2.2.3-mips-base-addr-got.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,276 +0,0 @@ -From http://www.ltc.com/~brad/mips/glibc-2.2.3-mips-base-addr-got.diff - -Hopefully fixes the error: - -/opt/crosstool/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/lib/gcc-lib/mipsel-unknown-linux-gnu/3.2.3/../../../../mipsel-unknown-linux-gnu/bin/ld: target elf32-littlemips not found -collect2: ld returned 1 exit status -make[2]: *** [/home/dank/downloads/crosstool-0.24/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/build-glibc/elf/ld.so] Error 1 - - -diff -urNbB glibc-2.2.3/sysdeps/mips/dl-machine.h glibc-2.2.3-mips/sysdeps/mips/dl-machine.h ---- glibc-2.2.3/sysdeps/mips/dl-machine.h Mon Mar 26 23:53:28 2001 -+++ glibc-2.2.3-mips/sysdeps/mips/dl-machine.h Sun Aug 12 11:08:17 2001 -@@ -61,23 +61,6 @@ - in l_info array. */ - #define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM) - --/* -- * MIPS libraries are usually linked to a non-zero base address. We -- * subtract the base address from the address where we map the object -- * to. This results in more efficient address space usage. -- * -- * FIXME: By the time when MAP_BASE_ADDR is called we don't have the -- * DYNAMIC section read. Until this is fixed make the assumption that -- * libraries have their base address at 0x5ffe0000. This needs to be -- * fixed before we can safely get rid of this MIPSism. -- */ --#if 0 --#define MAP_BASE_ADDR(l) ((l)->l_info[DT_MIPS(BASE_ADDRESS)] ? \ -- (l)->l_info[DT_MIPS(BASE_ADDRESS)]->d_un.d_ptr : 0) --#else --#define MAP_BASE_ADDR(l) 0x5ffe0000 --#endif -- - /* If there is a DT_MIPS_RLD_MAP entry in the dynamic section, fill it in - with the run-time address of the r_debug structure */ - #define ELF_MACHINE_DEBUG_SETUP(l,r) \ -@@ -557,51 +540,30 @@ - /* Do nothing. */ - } - -+#ifndef RTLD_BOOTSTRAP - /* Relocate GOT. */ - static inline void - elf_machine_got_rel (struct link_map *map, int lazy) - { - ElfW(Addr) *got; - ElfW(Sym) *sym; -+ const ElfW(Half) *vernum; - int i, n, symidx; -- /* This function is loaded in dl-reloc as a nested function and can -- therefore access the variables scope and strtab from -- _dl_relocate_object. */ --#ifdef RTLD_BOOTSTRAP --# define RESOLVE_GOTSYM(sym,sym_index) 0 --#else --# define RESOLVE_GOTSYM(sym,sym_index) \ -+ -+#define RESOLVE_GOTSYM(sym,vernum,sym_index) \ - ({ \ - const ElfW(Sym) *ref = sym; \ -+ const struct r_found_version *version \ -+ = vernum ? &map->l_versions [vernum [sym_index]] : NULL; \ - ElfW(Addr) value; \ -- \ -- switch (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL) \ -- { \ -- default: \ -- { \ -- const ElfW(Half) *vernum = \ -- (const void *) D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]); \ -- ElfW(Half) ndx = vernum[sym_index]; \ -- const struct r_found_version *version = &l->l_versions[ndx]; \ -- \ -- if (version->hash != 0) \ -- { \ -- value = _dl_lookup_versioned_symbol(strtab + sym->st_name,\ -- map, \ -- &ref, scope, version, \ -- R_MIPS_REL32, 0); \ -- break; \ -- } \ -- /* Fall through. */ \ -- } \ -- case 0: \ -- value = _dl_lookup_symbol (strtab + sym->st_name, map, &ref, \ -- scope, R_MIPS_REL32, 0); \ -- } \ -- \ -+ value = RESOLVE (&ref, version, R_MIPS_REL32); \ - (ref)? value + ref->st_value: 0; \ - }) --#endif /* RTLD_BOOTSTRAP */ -+ -+ if (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL) -+ vernum = (const void *) D_PTR (map, l_info[VERSYMIDX (DT_VERSYM)]); -+ else -+ vernum = NULL; - - got = (ElfW(Addr) *) D_PTR (map, l_info[DT_PLTGOT]); - -@@ -639,10 +601,10 @@ - && sym->st_value && lazy) - *got = sym->st_value + map->l_addr; - else -- *got = RESOLVE_GOTSYM (sym, symidx); -+ *got = RESOLVE_GOTSYM (sym, vernum, symidx); - } - else if (sym->st_shndx == SHN_COMMON) -- *got = RESOLVE_GOTSYM (sym, symidx); -+ *got = RESOLVE_GOTSYM (sym, vernum, symidx); - else if (ELFW(ST_TYPE) (sym->st_info) == STT_FUNC - && *got != sym->st_value - && lazy) -@@ -653,7 +615,7 @@ - *got += map->l_addr; - } - else -- *got = RESOLVE_GOTSYM (sym, symidx); -+ *got = RESOLVE_GOTSYM (sym, vernum, symidx); - - ++got; - ++sym; -@@ -661,9 +623,8 @@ - } - - #undef RESOLVE_GOTSYM -- -- return; - } -+#endif - - /* Set up the loaded object described by L so its stub function - will jump to the on-demand fixup code __dl_runtime_resolve. */ -diff -urNbB glibc-2.2.3/sysdeps/mips/mips64/rtld-parms glibc-2.2.3-mips/sysdeps/mips/mips64/rtld-parms ---- glibc-2.2.3/sysdeps/mips/mips64/rtld-parms Sat Jul 12 18:26:11 1997 -+++ glibc-2.2.3-mips/sysdeps/mips/mips64/rtld-parms Wed Dec 31 19:00:00 1969 -@@ -1,3 +0,0 @@ --ifndef rtld-wordsize --rtld-wordsize = 64 --endif -diff -urNbB glibc-2.2.3/sysdeps/mips/mipsel/rtld-parms glibc-2.2.3-mips/sysdeps/mips/mipsel/rtld-parms ---- glibc-2.2.3/sysdeps/mips/mipsel/rtld-parms Sat Jul 12 18:26:15 1997 -+++ glibc-2.2.3-mips/sysdeps/mips/mipsel/rtld-parms Wed Dec 31 19:00:00 1969 -@@ -1,3 +0,0 @@ --ifndef rtld-oformat --rtld-oformat = elf32-littlemips --endif -diff -urNbB glibc-2.2.3/sysdeps/mips/rtld-ldscript.in glibc-2.2.3-mips/sysdeps/mips/rtld-ldscript.in ---- glibc-2.2.3/sysdeps/mips/rtld-ldscript.in Sat Jul 12 18:23:14 1997 -+++ glibc-2.2.3-mips/sysdeps/mips/rtld-ldscript.in Wed Dec 31 19:00:00 1969 -@@ -1,106 +0,0 @@ --OUTPUT_FORMAT("@@rtld-oformat@@") --OUTPUT_ARCH(@@rtld-arch@@) --ENTRY(@@rtld-entry@@) --SECTIONS --{ -- /* Read-only sections, merged into text segment: */ -- . = @@rtld-base@@; -- .reginfo : { *(.reginfo) } -- .dynamic : { *(.dynamic) } -- .dynstr : { *(.dynstr) } -- .dynsym : { *(.dynsym) } -- .hash : { *(.hash) } -- .rel.text : { *(.rel.text) } -- .rela.text : { *(.rela.text) } -- .rel.data : { *(.rel.data) } -- .rela.data : { *(.rela.data) } -- .rel.rodata : { *(.rel.rodata) } -- .rela.rodata : { *(.rela.rodata) } -- .rel.got : { *(.rel.got) } -- .rela.got : { *(.rela.got) } -- .rel.ctors : { *(.rel.ctors) } -- .rela.ctors : { *(.rela.ctors) } -- .rel.dtors : { *(.rel.dtors) } -- .rela.dtors : { *(.rela.dtors) } -- .rel.init : { *(.rel.init) } -- .rela.init : { *(.rela.init) } -- .rel.fini : { *(.rel.fini) } -- .rela.fini : { *(.rela.fini) } -- .rel.bss : { *(.rel.bss) } -- .rela.bss : { *(.rela.bss) } -- .rel.plt : { *(.rel.plt) } -- .rela.plt : { *(.rela.plt) } -- .rodata : { *(.rodata) } -- .rodata1 : { *(.rodata1) } -- .init : { *(.init) } =0 -- .text : -- { -- *(.text) -- *(.stub) -- /* .gnu.warning sections are handled specially by elf32.em. */ -- *(.gnu.warning) -- } =0 -- .fini : { *(.fini) } =0 -- /* Adjust the address for the data segment. We want to adjust up to -- the same address within the page on the next page up. It would -- be more correct to do this: -- . = 0x10000000; -- The current expression does not correctly handle the case of a -- text segment ending precisely at the end of a page; it causes the -- data segment to skip a page. The above expression does not have -- this problem, but it will currently (2/95) cause BFD to allocate -- a single segment, combining both text and data, for this case. -- This will prevent the text segment from being shared among -- multiple executions of the program; I think that is more -- important than losing a page of the virtual address space (note -- that no actual memory is lost; the page which is skipped can not -- be referenced). */ -- . += 0x10000; -- .data : -- { -- *(.data) -- CONSTRUCTORS -- } -- .data1 : { *(.data1) } -- .ctors : { *(.ctors) } -- .dtors : { *(.dtors) } -- _gp = ALIGN(16) + 0x7ff0; -- .got : -- { -- *(.got.plt) *(.got) -- } -- /* We want the small data sections together, so single-instruction offsets -- can access them all, and initialized data all before uninitialized, so -- we can shorten the on-disk segment size. */ -- .sdata : { *(.sdata) } -- .lit8 : { *(.lit8) } -- .lit4 : { *(.lit4) } -- .sbss : { *(.sbss) *(.scommon) } -- .bss : -- { -- *(.dynbss) -- *(.bss) -- *(COMMON) -- } -- /* The normal linker scripts created by the binutils doesn't have the -- symbols end and _end which breaks ld.so's dl-minimal.c. */ -- _end = . ; -- PROVIDE (end = .); -- /* These are needed for ELF backends which have not yet been -- converted to the new style linker. */ -- .stab 0 : { *(.stab) } -- .stabstr 0 : { *(.stabstr) } -- /* DWARF debug sections. -- Symbols in the .debug DWARF section are relative to the beginning of the -- section so we begin .debug at 0. It's not clear yet what needs to happen -- for the others. */ -- .debug 0 : { *(.debug) } -- .debug_srcinfo 0 : { *(.debug_srcinfo) } -- .debug_aranges 0 : { *(.debug_aranges) } -- .debug_pubnames 0 : { *(.debug_pubnames) } -- .debug_sfnames 0 : { *(.debug_sfnames) } -- .line 0 : { *(.line) } -- /* These must appear regardless of . */ -- .gptab.sdata : { *(.gptab.data) *(.gptab.sdata) } -- .gptab.sbss : { *(.gptab.bss) *(.gptab.sbss) } --} -diff -urNbB glibc-2.2.3/sysdeps/mips/rtld-parms glibc-2.2.3-mips/sysdeps/mips/rtld-parms ---- glibc-2.2.3/sysdeps/mips/rtld-parms Mon Jul 21 19:04:07 1997 -+++ glibc-2.2.3-mips/sysdeps/mips/rtld-parms Wed Dec 31 19:00:00 1969 -@@ -1,15 +0,0 @@ --ifndef rtld-wordsize --rtld-wordsize = 32 --endif --ifndef rtld-oformat --rtld-oformat = elf$(rtld-wordsize)-bigmips --endif --ifndef rtld-arch --rtld-arch = mips --endif --ifndef rtld-entry --rtld-entry = __start --endif --ifndef rtld-base --rtld-base = 0x0fb60000 + SIZEOF_HEADERS --endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.3/glibc-2.2.5-mips-clone-local-label.patch --- a/patches/glibc/2.2.3/glibc-2.2.5-mips-clone-local-label.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -This is a workaround for - -mipsel-unknown-linux-gnu-gcc ../sysdeps/unix/sysv/linux/mips/clone.S -c -I../include -I. -I/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc -I.. -I../libio -I/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc -I../sysdeps/mips/elf -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/mips -I../sysdeps/unix/sysv/linux/mips -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/mips -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/mips/mipsel -I../sysdeps/mips/fpu -I../sysdeps/mips -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /home3/dank/crosstool-0.7/result/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/lib/gcc-lib/mipsel-unknown-linux-gnu/3.2.3/include -isystem /home3/dank/crosstool-0.7/result/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/mipsel-unknown-linux-gnu/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DASSEMBLER -o /home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc/clone.o -../sysdeps/unix/sysv/linux/mips/clone.S: Assembler messages: -../sysdeps/unix/sysv/linux/mips/clone.S:66: Error: Can not represent BFD_RELOC_16_PCREL_S2 relocation in this object file format -make[2]: *** [/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc/clone.o] Error 1 - -which was using h.j.lu's binutils-2.13.90.0.18. - - -But see http://lists.debian.org/debian-mips/2003/debian-mips-200305/msg00011.html -which says -"A newer version of binutils (CVS post 2003-03-12) fixes it without -the need of changing perfectly legal code." -So presumably this can be ditched sooner or later. - -From http://honk.physik.uni-konstanz.de/~agx/linux-mips/glibc/patches/applied/clone-local-label.diff - -2003-03-13 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local label - .Lthread_start since current binutils don't allow branches to globally - visible symbols. - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/clone.S,v -retrieving revision 1.10 -diff -u -r1.10 clone.S ---- glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 12 Mar 2003 01:04:51 -0000 1.10 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 12 Mar 2003 19:04:39 -0000 -@@ -63,7 +63,7 @@ - syscall - - bnez a3,error -- beqz v0,__thread_start -+ beqz v0,.Lthread_start - - /* Successful return from the parent */ - addiu sp,32 -@@ -85,6 +85,7 @@ - debug info. */ - - ENTRY(__thread_start) -+.Lthread_start: - /* cp is already loaded. */ - .cprestore 16 - /* The stackframe has been created on entry of clone(). */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.3/glibc-manual-stdin.texi-1.127.patch --- a/patches/glibc/2.2.3/glibc-manual-stdin.texi-1.127.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -Fixes error -./stdio.texi:3269: First argument to cross-reference may not be empty. -./stdio.texi:3270: First argument to cross-reference may not be empty. -makeinfo: Removing output file `/home/dank/downloads/crosstool-0.24/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/glibc-2.2.3/manual/libc.info' due to errors; use --force to preserve. -make[2]: *** [libc.info] Error 2 -make[2]: Leaving directory `/home/dank/downloads/crosstool-0.24/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.3/glibc-2.2.3/manual' - -=================================================================== -RCS file: /cvs/glibc/libc/manual/stdio.texi,v -retrieving revision 1.126 -retrieving revision 1.127 -diff -u -r1.126 -r1.127 ---- libc/manual/stdio.texi 2001/06/06 07:11:31 1.126 -+++ libc/manual/stdio.texi 2001/07/31 18:57:16 1.127 -@@ -3265,8 +3265,8 @@ - If you are trying to read input that doesn't match a single, fixed - pattern, you may be better off using a tool such as Flex to generate a - lexical scanner, or Bison to generate a parser, rather than using --@code{scanf}. For more information about these tools, see @ref{, , , --flex.info, Flex: The Lexical Scanner Generator}, and @ref{, , , -+@code{scanf}. For more information about these tools, see @ref{Top, , , -+flex.info, Flex: The Lexical Scanner Generator}, and @ref{Top, , , - bison.info, The Bison Reference Manual}. - - @node Input Conversion Syntax diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/alpha-build-failure.patch --- a/patches/glibc/2.2.5/alpha-build-failure.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ -See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=156841 - -Here's the error I got before I applied the patch: - -/home3/dank/crosstool-0.5/result/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/lib/gcc-lib/alpha-unknown-linux-gnu/3.2.3/../../../../alpha-unknown-linux-gnu/bin/ld: /home3/dank/crosstool-0.5/build/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libc_pic.os: pc-relative relocation against dynamic symbol __divlu -/home3/dank/crosstool-0.5/result/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/lib/gcc-lib/alpha-unknown-linux-gnu/3.2.3/../../../../alpha-unknown-linux-gnu/bin/ld: /home3/dank/crosstool-0.5/build/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libc_pic.os: pc-relative relocation against dynamic symbol __divqu -/home3/dank/crosstool-0.5/result/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/lib/gcc-lib/alpha-unknown-linux-gnu/3.2.3/../../../../alpha-unknown-linux-gnu/bin/ld: /home3/dank/crosstool-0.5/build/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libc_pic.os: pc-relative relocation against dynamic symbol __remlu -/home3/dank/crosstool-0.5/result/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/lib/gcc-lib/alpha-unknown-linux-gnu/3.2.3/../../../../alpha-unknown-linux-gnu/bin/ld: /home3/dank/crosstool-0.5/build/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libc_pic.os: pc-relative relocation against dynamic symbol __remqu -collect2: ld returned 1 exit status -make[1]: *** [/home3/dank/crosstool-0.5/build/alpha-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libc.so] Error 1 - - ---- glibc-2.2.5/sysdeps/alpha/divrem.h 6 Jul 2001 04:55:45 -0000 1.8 -+++ glibc-2.2.5/sysdeps/alpha/divrem.h 15 Jun 2002 20:53:37 -0000 1.9 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1996, 1997 Free Software Foundation, Inc. -+/* Copyright (C) 1996,97,2002 Free Software Foundation, Inc. - Contributed by David Mosberger (davidm@cs.arizona.edu). - This file is part of the GNU C Library. - -@@ -86,6 +86,7 @@ - - .align 3 - UFUNC_NAME: -+$udiv_entry: - lda sp, -STACK(sp) - .frame sp, STACK, retaddr, 0 - #ifdef PROF -@@ -206,7 +207,7 @@ - cmovge AT, AT, arg2 - - /* Do the unsigned division. */ -- bsr retaddr, UFUNC_NAME -+ bsr retaddr, $udiv_entry - - /* Restore originals and adjust the sign of the result. */ - ldq arg1, 0(sp) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/arm-asm-clobber.patch --- a/patches/glibc/2.2.5/arm-asm-clobber.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -http://gcc.gnu.org/PR11103 - -Error: -../sysdeps/unix/sysv/linux/arm/sigaction.c: In function `__libc_sigaction': -../sysdeps/unix/sysv/linux/arm/sigaction.c:100: error: asm-specifier for variable `_a1' conflicts with asm clobber list -../sysdeps/unix/sysv/linux/arm/sigaction.c:139: error: asm-specifier for variable `_a1' conflicts with asm clobber list -make[2]: *** [/crosstool-0.22/build/arm-unknown-linux-gnu/gcc-3.3-glibc-2.2.5/build-glibc/signal/sigaction.o] Error 1 - -Fix from http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-July/005826.html -rediffed against glibc-2.2.5 -Not tested. (I don't even understand it, just being a patch monkey...) - ---- glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h.old Wed Aug 27 09:58:15 2003 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h Wed Aug 27 09:59:04 2003 -@@ -131,7 +131,7 @@ - asm volatile ("swi %1 @ syscall " #name \ - : "=r" (_a1) \ - : "i" (SYS_ify(name)) ASM_ARGS_##nr \ -- : "a1", "memory"); \ -+ : "memory"); \ - _sys_result = _a1; \ - } \ - if (_sys_result >= (unsigned int) -4095) \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/arm-ctl_bus_isa.patch --- a/patches/glibc/2.2.5/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/cris-libc-symbols.patch --- a/patches/glibc/2.2.5/cris-libc-symbols.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -From http://sources.redhat.com/ml/libc-alpha/2002-06/msg00006.html - -Message-ID: <15612.44195.299251.921969@honolulu.ilog.fr> -Date: Tue, 4 Jun 2002 14:03:47 +0200 (CEST) -From: Bruno Haible -To: libc-alpha at sources dot redhat dot com -Subject: link_warning fix - - -Hi, - -While cross-compiling glibc-2.2.5 for target=cris-linux using gcc-3.1 and -binutils-2.12.90.0.7, I get an error - -cris-linux-gcc ../sysdeps/unix/sysv/linux/sigstack.c -c -O2 -Wall -Winline -Wstrict-prototypes -Wwrite-strings -g -I../include -I. -I/backup/cross-build/build-glibc-cris/signal -I.. -I../libio -I/backup/cross-build/build-glibc-cris -I../sysdeps/cris/elf -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/cris -I../sysdeps/unix/sysv/linux/cris -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/cris -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /cross/cris-linux-tools/lib/gcc-lib/cris-linux/3.1/include -isystem /cross/cris-linux/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -o /backup/cross-build/build-glibc-cris/signal/sigstack.o -/tmp/cca7qZyI.s: Assembler messages: -/tmp/cca7qZyI.s:87: Warning: rest of line ignored; first ignored character is `,' -/tmp/cca7qZyI.s:87: Error: Unknown opcode: `progbits' -make[2]: *** [/backup/cross-build/build-glibc-cris/signal/sigstack.o] Fehler 1 - - -The reason is that the .s file contains the following. - -... - .size sigstack,.Lfe1-sigstack -#APP - .section .gnu.warning.sigstack - .previous -#NO_APP - .section .gnu.warning.sigstack - #,"a",@progbits - .align 2 - .type __evoke_link_warning_sigstack,@object -... - -and comments (introduced by '#') are recognized by the assembler only after -#APP, not after #NO_APP. The workaround is to add '#APP' to the fake section -name. The following patch works for me. - -2002-06-02 Bruno Haible - - * include/libc-symbols.h (__as_app_line): New macro. - (link_warning): Emit #APP line to turn comment recognition on. - -*** glibc-2.2.5/include/libc-symbols.h.bak 2001-08-04 01:02:52.000000000 +0200 ---- glibc-2.2.5/include/libc-symbols.h 2002-06-02 16:22:15.000000000 +0200 -*************** -*** 207,224 **** - # define __make_section_unallocated(section_string) - # endif - -! /* Tacking on "\n\t#" to the section name makes gcc put it's bogus -! section attributes on what looks like a comment to the assembler. */ - # ifdef HAVE_SECTION_QUOTES - # define link_warning(symbol, msg) \ - __make_section_unallocated (".gnu.warning." #symbol) \ -! static const char __evoke_link_warning_##symbol[] \ -! __attribute__ ((section (".gnu.warning." #symbol "\"\n\t#\""))) = msg; - # else - # define link_warning(symbol, msg) \ - __make_section_unallocated (".gnu.warning." #symbol) \ -! static const char __evoke_link_warning_##symbol[] \ -! __attribute__ ((section (".gnu.warning." #symbol "\n\t#"))) = msg; - # endif - # else /* Not ELF: a.out */ - # ifdef HAVE_XCOFF ---- 207,235 ---- - # define __make_section_unallocated(section_string) - # endif - -! /* Tacking on "\n\t#" to the section name makes gcc put its bogus -! section attributes on what looks like a comment to the assembler. -! Furthermore, with gas, we need to add a "#APP" line so the comment -! is recognized as such. */ -! # ifdef HAVE_GNU_AS -! # define __as_app_line "#APP\n" -! # else -! # define __as_app_line "" -! # endif - # ifdef HAVE_SECTION_QUOTES - # define link_warning(symbol, msg) \ - __make_section_unallocated (".gnu.warning." #symbol) \ -! static const char __evoke_link_warning_##symbol[] \ -! __attribute__ \ -! ((section (".gnu.warning." #symbol "\"\n" __as_app_line "\t#\""))) \ -! = msg; - # else - # define link_warning(symbol, msg) \ - __make_section_unallocated (".gnu.warning." #symbol) \ -! static const char __evoke_link_warning_##symbol[] \ -! __attribute__ \ -! ((section (".gnu.warning." #symbol "\n" __as_app_line "\t#"))) \ -! = msg; - # endif - # else /* Not ELF: a.out */ - # ifdef HAVE_XCOFF - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/cris-stack-direction.patch --- a/patches/glibc/2.2.5/cris-stack-direction.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -From http://sources.redhat.com/ml/libc-alpha/2002-06/msg00007.html - -Message-ID: <15612.44228.774370.154718@honolulu.ilog.fr> -Date: Tue, 4 Jun 2002 14:04:20 +0200 (CEST) -From: Bruno Haible -To: libc-alpha at sources dot redhat dot com -Subject: cris stack direction - - -Hi, - -While cross-compiling glibc-2.2.5 for target=cris-linux using gcc-3.1 and -binutils-2.12.90.0.7, I get an error - -cris-linux-gcc cancel.c -c -O2 -Wall -Winline -Wstrict-prototypes -Wwrite-strings -g -D__NO_WEAK_PTHREAD_ALIASES -D_RPC_THREAD_SAFE_ -I../include -I. -I/backup/cross-build/build-glibc-cris/linuxthreads -I.. -I../libio -I/backup/cross-build/build-glibc-cris -I../sysdeps/cris/elf -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/cris -I../sysdeps/unix/sysv/linux/cris -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/cris -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /cross/cris-linux-tools/lib/gcc-lib/cris-linux/3.1/include -isystem /cross/cris-linux/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -o /backup/cross-build/build-glibc-cris/linuxthreads/cancel.o -cancel.c:29:3: #error "Define either _STACK_GROWS_DOWN or _STACK_GROWS_UP" -cancel.c: In function `_pthread_cleanup_push': -cancel.c:134: warning: implicit declaration of function `FRAME_LEFT' -make[2]: *** [/backup/cross-build/build-glibc-cris/linuxthreads/cancel.o] Fehler 1 - -The fix is to add a file sysdeps/cris/stackinfo.h. - - -2002-06-02 Bruno Haible - - * sysdeps/cris/stackinfo.h: New file. - -*** glibc-2.2.5/sysdeps/cris/stackinfo.h.bak 2002-06-02 17:52:05.000000000 +0200 ---- glibc-2.2.5/sysdeps/cris/stackinfo.h 2002-06-02 17:52:24.000000000 +0200 -*************** -*** 0 **** ---- 1,28 ---- -+ /* Copyright (C) 2002 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+ /* This file contains a bit of information about the stack allocation -+ of the processor. */ -+ -+ #ifndef _STACKINFO_H -+ #define _STACKINFO_H 1 -+ -+ /* On cris the stack grows down. */ -+ #define _STACK_GROWS_DOWN 1 -+ -+ #endif /* stackinfo.h */ - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/dl-machine-alpha.patch --- a/patches/glibc/2.2.5/dl-machine-alpha.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,424 +0,0 @@ -From http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/alpha/dl-machine.h.diff?r1=1.56&r2=1.57&cvsroot=glibc -(minus first hunk) -Lets glibc-2.2.5 compile with gcc-3.3 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/alpha/dl-machine.h,v -retrieving revision 1.56 -retrieving revision 1.57 -diff -u -r1.56 -r1.57 ---- libc/sysdeps/alpha/dl-machine.h 2001/12/12 00:10:27 1.56 -+++ libc/sysdeps/alpha/dl-machine.h 2001/12/31 17:33:59 1.57 -@@ -156,125 +157,126 @@ - #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name, IMB) \ - extern void tramp_name (void); \ - asm ( "\ -- .globl " #tramp_name " -- .ent " #tramp_name " --" #tramp_name ": -- lda $sp, -44*8($sp) -- .frame $sp, 44*8, $26 -- /* Preserve all integer registers that C normally doesn't. */ -- stq $26, 0*8($sp) -- stq $0, 1*8($sp) -- stq $1, 2*8($sp) -- stq $2, 3*8($sp) -- stq $3, 4*8($sp) -- stq $4, 5*8($sp) -- stq $5, 6*8($sp) -- stq $6, 7*8($sp) -- stq $7, 8*8($sp) -- stq $8, 9*8($sp) -- stq $16, 10*8($sp) -- stq $17, 11*8($sp) -- stq $18, 12*8($sp) -- stq $19, 13*8($sp) -- stq $20, 14*8($sp) -- stq $21, 15*8($sp) -- stq $22, 16*8($sp) -- stq $23, 17*8($sp) -- stq $24, 18*8($sp) -- stq $25, 19*8($sp) -- stq $29, 20*8($sp) -- stt $f0, 21*8($sp) -- stt $f1, 22*8($sp) -- stt $f10, 23*8($sp) -- stt $f11, 24*8($sp) -- stt $f12, 25*8($sp) -- stt $f13, 26*8($sp) -- stt $f14, 27*8($sp) -- stt $f15, 28*8($sp) -- stt $f16, 29*8($sp) -- stt $f17, 30*8($sp) -- stt $f18, 31*8($sp) -- stt $f19, 32*8($sp) -- stt $f20, 33*8($sp) -- stt $f21, 34*8($sp) -- stt $f22, 35*8($sp) -- stt $f23, 36*8($sp) -- stt $f24, 37*8($sp) -- stt $f25, 38*8($sp) -- stt $f26, 39*8($sp) -- stt $f27, 40*8($sp) -- stt $f28, 41*8($sp) -- stt $f29, 42*8($sp) -- stt $f30, 43*8($sp) -- .mask 0x27ff01ff, -44*8 -- .fmask 0xfffffc03, -(44-21)*8 -- /* Set up our $gp */ -- br $gp, .+4 -- ldgp $gp, 0($gp) -- .prologue 0 -- /* Set up the arguments for fixup: */ -- /* $16 = link_map out of plt0 */ -- /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */ -- /* $18 = return address */ -- subq $28, $27, $17 -- ldq $16, 8($27) -- subq $17, 20, $17 -- mov $26, $18 -- addq $17, $17, $17 -- /* Do the fixup */ -- bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng -- /* Move the destination address into position. */ -- mov $0, $27 -- /* Restore program registers. */ -- ldq $26, 0*8($sp) -- ldq $0, 1*8($sp) -- ldq $1, 2*8($sp) -- ldq $2, 3*8($sp) -- ldq $3, 4*8($sp) -- ldq $4, 5*8($sp) -- ldq $5, 6*8($sp) -- ldq $6, 7*8($sp) -- ldq $7, 8*8($sp) -- ldq $8, 9*8($sp) -- ldq $16, 10*8($sp) -- ldq $17, 11*8($sp) -- ldq $18, 12*8($sp) -- ldq $19, 13*8($sp) -- ldq $20, 14*8($sp) -- ldq $21, 15*8($sp) -- ldq $22, 16*8($sp) -- ldq $23, 17*8($sp) -- ldq $24, 18*8($sp) -- ldq $25, 19*8($sp) -- ldq $29, 20*8($sp) -- ldt $f0, 21*8($sp) -- ldt $f1, 22*8($sp) -- ldt $f10, 23*8($sp) -- ldt $f11, 24*8($sp) -- ldt $f12, 25*8($sp) -- ldt $f13, 26*8($sp) -- ldt $f14, 27*8($sp) -- ldt $f15, 28*8($sp) -- ldt $f16, 29*8($sp) -- ldt $f17, 30*8($sp) -- ldt $f18, 31*8($sp) -- ldt $f19, 32*8($sp) -- ldt $f20, 33*8($sp) -- ldt $f21, 34*8($sp) -- ldt $f22, 35*8($sp) -- ldt $f23, 36*8($sp) -- ldt $f24, 37*8($sp) -- ldt $f25, 38*8($sp) -- ldt $f26, 39*8($sp) -- ldt $f27, 40*8($sp) -- ldt $f28, 41*8($sp) -- ldt $f29, 42*8($sp) -- ldt $f30, 43*8($sp) -- /* Flush the Icache after having modified the .plt code. */ -- " #IMB " -- /* Clean up and turn control to the destination */ -- lda $sp, 44*8($sp) -- jmp $31, ($27) -+ .globl " #tramp_name " \n\ -+ .ent " #tramp_name " \n\ -+" #tramp_name ": \n\ -+ lda $sp, -44*8($sp) \n\ -+ .frame $sp, 44*8, $26 \n\ -+ /* Preserve all integer registers that C normally \n\ -+ doesn't. */ \n\ -+ stq $26, 0*8($sp) \n\ -+ stq $0, 1*8($sp) \n\ -+ stq $1, 2*8($sp) \n\ -+ stq $2, 3*8($sp) \n\ -+ stq $3, 4*8($sp) \n\ -+ stq $4, 5*8($sp) \n\ -+ stq $5, 6*8($sp) \n\ -+ stq $6, 7*8($sp) \n\ -+ stq $7, 8*8($sp) \n\ -+ stq $8, 9*8($sp) \n\ -+ stq $16, 10*8($sp) \n\ -+ stq $17, 11*8($sp) \n\ -+ stq $18, 12*8($sp) \n\ -+ stq $19, 13*8($sp) \n\ -+ stq $20, 14*8($sp) \n\ -+ stq $21, 15*8($sp) \n\ -+ stq $22, 16*8($sp) \n\ -+ stq $23, 17*8($sp) \n\ -+ stq $24, 18*8($sp) \n\ -+ stq $25, 19*8($sp) \n\ -+ stq $29, 20*8($sp) \n\ -+ stt $f0, 21*8($sp) \n\ -+ stt $f1, 22*8($sp) \n\ -+ stt $f10, 23*8($sp) \n\ -+ stt $f11, 24*8($sp) \n\ -+ stt $f12, 25*8($sp) \n\ -+ stt $f13, 26*8($sp) \n\ -+ stt $f14, 27*8($sp) \n\ -+ stt $f15, 28*8($sp) \n\ -+ stt $f16, 29*8($sp) \n\ -+ stt $f17, 30*8($sp) \n\ -+ stt $f18, 31*8($sp) \n\ -+ stt $f19, 32*8($sp) \n\ -+ stt $f20, 33*8($sp) \n\ -+ stt $f21, 34*8($sp) \n\ -+ stt $f22, 35*8($sp) \n\ -+ stt $f23, 36*8($sp) \n\ -+ stt $f24, 37*8($sp) \n\ -+ stt $f25, 38*8($sp) \n\ -+ stt $f26, 39*8($sp) \n\ -+ stt $f27, 40*8($sp) \n\ -+ stt $f28, 41*8($sp) \n\ -+ stt $f29, 42*8($sp) \n\ -+ stt $f30, 43*8($sp) \n\ -+ .mask 0x27ff01ff, -44*8 \n\ -+ .fmask 0xfffffc03, -(44-21)*8 \n\ -+ /* Set up our $gp */ \n\ -+ br $gp, .+4 \n\ -+ ldgp $gp, 0($gp) \n\ -+ .prologue 0 \n\ -+ /* Set up the arguments for fixup: */ \n\ -+ /* $16 = link_map out of plt0 */ \n\ -+ /* $17 = offset of reloc entry = ($28 - $27 - 20) /12 * 24 */\n\ -+ /* $18 = return address */ \n\ -+ subq $28, $27, $17 \n\ -+ ldq $16, 8($27) \n\ -+ subq $17, 20, $17 \n\ -+ mov $26, $18 \n\ -+ addq $17, $17, $17 \n\ -+ /* Do the fixup */ \n\ -+ bsr $26, " ASM_ALPHA_NG_SYMBOL_PREFIX #fixup_name "..ng\n\ -+ /* Move the destination address into position. */ \n\ -+ mov $0, $27 \n\ -+ /* Restore program registers. */ \n\ -+ ldq $26, 0*8($sp) \n\ -+ ldq $0, 1*8($sp) \n\ -+ ldq $1, 2*8($sp) \n\ -+ ldq $2, 3*8($sp) \n\ -+ ldq $3, 4*8($sp) \n\ -+ ldq $4, 5*8($sp) \n\ -+ ldq $5, 6*8($sp) \n\ -+ ldq $6, 7*8($sp) \n\ -+ ldq $7, 8*8($sp) \n\ -+ ldq $8, 9*8($sp) \n\ -+ ldq $16, 10*8($sp) \n\ -+ ldq $17, 11*8($sp) \n\ -+ ldq $18, 12*8($sp) \n\ -+ ldq $19, 13*8($sp) \n\ -+ ldq $20, 14*8($sp) \n\ -+ ldq $21, 15*8($sp) \n\ -+ ldq $22, 16*8($sp) \n\ -+ ldq $23, 17*8($sp) \n\ -+ ldq $24, 18*8($sp) \n\ -+ ldq $25, 19*8($sp) \n\ -+ ldq $29, 20*8($sp) \n\ -+ ldt $f0, 21*8($sp) \n\ -+ ldt $f1, 22*8($sp) \n\ -+ ldt $f10, 23*8($sp) \n\ -+ ldt $f11, 24*8($sp) \n\ -+ ldt $f12, 25*8($sp) \n\ -+ ldt $f13, 26*8($sp) \n\ -+ ldt $f14, 27*8($sp) \n\ -+ ldt $f15, 28*8($sp) \n\ -+ ldt $f16, 29*8($sp) \n\ -+ ldt $f17, 30*8($sp) \n\ -+ ldt $f18, 31*8($sp) \n\ -+ ldt $f19, 32*8($sp) \n\ -+ ldt $f20, 33*8($sp) \n\ -+ ldt $f21, 34*8($sp) \n\ -+ ldt $f22, 35*8($sp) \n\ -+ ldt $f23, 36*8($sp) \n\ -+ ldt $f24, 37*8($sp) \n\ -+ ldt $f25, 38*8($sp) \n\ -+ ldt $f26, 39*8($sp) \n\ -+ ldt $f27, 40*8($sp) \n\ -+ ldt $f28, 41*8($sp) \n\ -+ ldt $f29, 42*8($sp) \n\ -+ ldt $f30, 43*8($sp) \n\ -+ /* Flush the Icache after having modified the .plt code. */\n\ -+ " #IMB " \n\ -+ /* Clean up and turn control to the destination */ \n\ -+ lda $sp, 44*8($sp) \n\ -+ jmp $31, ($27) \n\ - .end " #tramp_name) - - #ifndef PROF -@@ -292,85 +294,87 @@ - its return value is the user program's entry point. */ - - #define RTLD_START asm ("\ --.text -- .set at -- .globl _start -- .ent _start --_start: -- br $gp, 0f --0: ldgp $gp, 0($gp) -- .prologue 0 -- /* Pass pointer to argument block to _dl_start. */ -- mov $sp, $16 -- bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng -- .end _start -- /* FALLTHRU */ -- .globl _dl_start_user -- .ent _dl_start_user --_dl_start_user: -- .frame $30,0,$31,0 -- .prologue 0 -- /* Save the user entry point address in s0. */ -- mov $0, $9 -- /* Store the highest stack address. */ -- stq $30, __libc_stack_end -- /* See if we were run as a command with the executable file -- name as an extra leading argument. */ -- ldl $1, _dl_skip_args -- bne $1, $fixup_stack --$fixup_stack_ret: -- /* The special initializer gets called with the stack just -- as the application's entry point will see it; it can -- switch stacks if it moves these contents over. */ --" RTLD_START_SPECIAL_INIT " -- /* Call _dl_init(_dl_loaded, argc, argv, envp) to run initializers. */ -- ldq $16, _dl_loaded -- ldq $17, 0($sp) -- lda $18, 8($sp) -- s8addq $17, 8, $19 -- addq $19, $18, $19 -- jsr $26, _dl_init -- /* Pass our finalizer function to the user in $0. */ -- lda $0, _dl_fini -- /* Jump to the user's entry point. */ -- mov $9, $27 -- jmp ($9) --$fixup_stack: -- /* Adjust the stack pointer to skip _dl_skip_args words. This -- involves copying everything down, since the stack pointer must -- always be 16-byte aligned. */ -- ldq $2, 0($sp) -- ldq $5, _dl_argv -- subq $31, $1, $6 -- subq $2, $1, $2 -- s8addq $6, $5, $5 -- mov $sp, $4 -- s8addq $1, $sp, $3 -- stq $2, 0($sp) -- stq $5, _dl_argv -- /* Copy down argv. */ --0: ldq $5, 8($3) -- addq $4, 8, $4 -- addq $3, 8, $3 -- stq $5, 0($4) -- bne $5, 0b -- /* Copy down envp. */ --1: ldq $5, 8($3) -- addq $4, 8, $4 -- addq $3, 8, $3 -- stq $5, 0($4) -- bne $5, 1b -- /* Copy down auxiliary table. */ --2: ldq $5, 8($3) -- ldq $6, 16($3) -- addq $4, 16, $4 -- addq $3, 16, $3 -- stq $5, -8($4) -- stq $6, 0($4) -- bne $5, 2b -- br $fixup_stack_ret -- .end _dl_start_user -- .set noat -+.text \n\ -+ .set at \n\ -+ .globl _start \n\ -+ .ent _start \n\ -+_start: \n\ -+ br $gp, 0f \n\ -+0: ldgp $gp, 0($gp) \n\ -+ .prologue 0 \n\ -+ /* Pass pointer to argument block to _dl_start. */ \n\ -+ mov $sp, $16 \n\ -+ bsr $26, "ASM_ALPHA_NG_SYMBOL_PREFIX"_dl_start..ng \n\ -+ .end _start \n\ -+ /* FALLTHRU */ \n\ -+ .globl _dl_start_user \n\ -+ .ent _dl_start_user \n\ -+_dl_start_user: \n\ -+ .frame $30,0,$31,0 \n\ -+ .prologue 0 \n\ -+ /* Save the user entry point address in s0. */ \n\ -+ mov $0, $9 \n\ -+ /* Store the highest stack address. */ \n\ -+ stq $30, __libc_stack_end \n\ -+ /* See if we were run as a command with the executable \n\ -+ file name as an extra leading argument. */ \n\ -+ ldl $1, _dl_skip_args \n\ -+ bne $1, $fixup_stack \n\ -+$fixup_stack_ret: \n\ -+ /* The special initializer gets called with the stack \n\ -+ just as the application's entry point will see it; \n\ -+ it can switch stacks if it moves these contents \n\ -+ over. */ \n\ -+" RTLD_START_SPECIAL_INIT " \n\ -+ /* Call _dl_init(_dl_loaded, argc, argv, envp) to run \n\ -+ initializers. */ \n\ -+ ldq $16, _dl_loaded \n\ -+ ldq $17, 0($sp) \n\ -+ lda $18, 8($sp) \n\ -+ s8addq $17, 8, $19 \n\ -+ addq $19, $18, $19 \n\ -+ jsr $26, _dl_init \n\ -+ /* Pass our finalizer function to the user in $0. */ \n\ -+ lda $0, _dl_fini \n\ -+ /* Jump to the user's entry point. */ \n\ -+ mov $9, $27 \n\ -+ jmp ($9) \n\ -+$fixup_stack: \n\ -+ /* Adjust the stack pointer to skip _dl_skip_args words.\n\ -+ This involves copying everything down, since the \n\ -+ stack pointer must always be 16-byte aligned. */ \n\ -+ ldq $2, 0($sp) \n\ -+ ldq $5, _dl_argv \n\ -+ subq $31, $1, $6 \n\ -+ subq $2, $1, $2 \n\ -+ s8addq $6, $5, $5 \n\ -+ mov $sp, $4 \n\ -+ s8addq $1, $sp, $3 \n\ -+ stq $2, 0($sp) \n\ -+ stq $5, _dl_argv \n\ -+ /* Copy down argv. */ \n\ -+0: ldq $5, 8($3) \n\ -+ addq $4, 8, $4 \n\ -+ addq $3, 8, $3 \n\ -+ stq $5, 0($4) \n\ -+ bne $5, 0b \n\ -+ /* Copy down envp. */ \n\ -+1: ldq $5, 8($3) \n\ -+ addq $4, 8, $4 \n\ -+ addq $3, 8, $3 \n\ -+ stq $5, 0($4) \n\ -+ bne $5, 1b \n\ -+ /* Copy down auxiliary table. */ \n\ -+2: ldq $5, 8($3) \n\ -+ ldq $6, 16($3) \n\ -+ addq $4, 16, $4 \n\ -+ addq $3, 16, $3 \n\ -+ stq $5, -8($4) \n\ -+ stq $6, 0($4) \n\ -+ bne $5, 2b \n\ -+ br $fixup_stack_ret \n\ -+ .end _dl_start_user \n\ -+ .set noat \n\ - .previous"); - - #ifndef RTLD_START_SPECIAL_INIT diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/dl-machine-arm.patch --- a/patches/glibc/2.2.5/dl-machine-arm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,389 +0,0 @@ -Fixes error: -In file included from dynamic-link.h:21, - from dl-load.c:32: -../sysdeps/arm/dl-machine.h:124:25: missing terminating " character -... -make[2]: *** [/crosstool-0.22/build/arm-unknown-linux-gnu/gcc-3.3-glibc-2.2.5/build-glibc/elf/dl-load.o] Error 1 - -The first two hunks of -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.39&r2=1.40&cvsroot=glibc -applied cleanly, but the third hunk didn't, so I just added the \n\'s by hand for that section. - ---- glibc-2.2.5/sysdeps/arm/dl-machine.h.orig Sat Sep 8 14:31:40 2001 -+++ glibc-2.2.5/sysdeps/arm/dl-machine.h Wed Aug 27 10:55:26 2003 -@@ -121,14 +121,15 @@ - and then redirect to the address it returns. */ - // macro for handling PIC situation.... - #ifdef PIC --#define CALL_ROUTINE(x) " ldr sl,0f -- add sl, pc, sl --1: ldr r2, 2f -- mov lr, pc -- add pc, sl, r2 -- b 3f --0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4 --2: .word " #x "(GOTOFF) -+#define CALL_ROUTINE(x) "\ -+ ldr sl,0f\n\ -+ add sl, pc, sl\n\ -+1: ldr r2, 2f\n\ -+ mov lr, pc\n\ -+ add pc, sl, r2\n\ -+ b 3f\n\ -+0: .word _GLOBAL_OFFSET_TABLE_ - 1b - 4\n\ -+2: .word " #x "(GOTOFF)\n\ - 3: " - #else - #define CALL_ROUTINE(x) " bl " #x -@@ -136,114 +137,114 @@ - - #ifndef PROF - # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ -- .text -- .globl _dl_runtime_resolve -- .type _dl_runtime_resolve, #function -- .align 2 --_dl_runtime_resolve: -- @ we get called with -- @ stack[0] contains the return address from this call -- @ ip contains &GOT[n+3] (pointer to function) -- @ lr points to &GOT[2] -- -- @ save almost everything; lr is already on the stack -- stmdb sp!,{r0-r3,sl,fp} -- -- @ prepare to call fixup() -- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each -- sub r1, ip, lr -- sub r1, r1, #4 -- add r1, r1, r1 -- -- @ get pointer to linker struct -- ldr r0, [lr, #-4] -- -- @ call fixup routine -- " CALL_ROUTINE(fixup) " -- -- @ save the return -- mov ip, r0 -- -- @ restore the stack -- ldmia sp!,{r0-r3,sl,fp,lr} -- -- @ jump to the newly found address -- mov pc, ip -- -- .size _dl_runtime_resolve, .-_dl_runtime_resolve -- -- .globl _dl_runtime_profile -- .type _dl_runtime_profile, #function -- .align 2 --_dl_runtime_profile: -- @ save almost everything; lr is already on the stack -- stmdb sp!,{r0-r3,sl,fp} -- -- @ prepare to call fixup() -- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each -- sub r1, ip, lr -- sub r1, r1, #4 -- add r1, r1, r1 -- -- @ get pointer to linker struct -- ldr r0, [lr, #-4] -- -- @ call profiling fixup routine -- " CALL_ROUTINE(profile_fixup) " -- -- @ save the return -- mov ip, r0 -- -- @ restore the stack -- ldmia sp!,{r0-r3,sl,fp,lr} -- -- @ jump to the newly found address -- mov pc, ip -- -- .size _dl_runtime_resolve, .-_dl_runtime_resolve -- .previous -+ .text\n\ -+ .globl _dl_runtime_resolve\n\ -+ .type _dl_runtime_resolve, #function\n\ -+ .align 2\n\ -+_dl_runtime_resolve:\n\ -+ @ we get called with\n\ -+ @ stack[0] contains the return address from this call\n\ -+ @ ip contains &GOT[n+3] (pointer to function)\n\ -+ @ lr points to &GOT[2]\n\ -+\n\ -+ @ save almost everything; lr is already on the stack\n\ -+ stmdb sp!,{r0-r3,sl,fp}\n\ -+\n\ -+ @ prepare to call fixup()\n\ -+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\ -+ sub r1, ip, lr\n\ -+ sub r1, r1, #4\n\ -+ add r1, r1, r1\n\ -+\n\ -+ @ get pointer to linker struct\n\ -+ ldr r0, [lr, #-4]\n\ -+\n\ -+ @ call fixup routine\n\ -+ " CALL_ROUTINE(fixup) "\n\ -+\n\ -+ @ save the return\n\ -+ mov ip, r0\n\ -+\n\ -+ @ restore the stack\n\ -+ ldmia sp!,{r0-r3,sl,fp,lr}\n\ -+\n\ -+ @ jump to the newly found address\n\ -+ mov pc, ip\n\ -+\n\ -+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ -+\n\ -+ .globl _dl_runtime_profile\n\ -+ .type _dl_runtime_profile, #function\n\ -+ .align 2\n\ -+_dl_runtime_profile:\n\ -+ @ save almost everything; lr is already on the stack\n\ -+ stmdb sp!,{r0-r3,sl,fp}\n\ -+\n\ -+ @ prepare to call fixup()\n\ -+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\ -+ sub r1, ip, lr\n\ -+ sub r1, r1, #4\n\ -+ add r1, r1, r1\n\ -+\n\ -+ @ get pointer to linker struct\n\ -+ ldr r0, [lr, #-4]\n\ -+\n\ -+ @ call profiling fixup routine\n\ -+ " CALL_ROUTINE(profile_fixup) "\n\ -+\n\ -+ @ save the return\n\ -+ mov ip, r0\n\ -+\n\ -+ @ restore the stack\n\ -+ ldmia sp!,{r0-r3,sl,fp,lr}\n\ -+\n\ -+ @ jump to the newly found address\n\ -+ mov pc, ip\n\ -+\n\ -+ .size _dl_runtime_resolve, .-_dl_runtime_resolve\n\ -+ .previous\n\ - "); - #else // PROF - # define ELF_MACHINE_RUNTIME_TRAMPOLINE asm ("\ -- .text -- .globl _dl_runtime_resolve -- .globl _dl_runtime_profile -- .type _dl_runtime_resolve, #function -- .type _dl_runtime_profile, #function -- .align 2 --_dl_runtime_resolve: --_dl_runtime_profile: -- @ we get called with -- @ stack[0] contains the return address from this call -- @ ip contains &GOT[n+3] (pointer to function) -- @ lr points to &GOT[2] -- -- @ save almost everything; return add is already on the stack -- stmdb sp!,{r0-r3,sl,fp} -- -- @ prepare to call fixup() -- @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each -- sub r1, ip, lr -- sub r1, r1, #4 -- add r1, r1, r1 -- -- @ get pointer to linker struct -- ldr r0, [lr, #-4] -- -- @ call profiling fixup routine -- " CALL_ROUTINE(fixup) " -- -- @ save the return -- mov ip, r0 -- -- @ restore the stack -- ldmia sp!,{r0-r3,sl,fp,lr} -- -- @ jump to the newly found address -- mov pc, ip -- -- .size _dl_runtime_profile, .-_dl_runtime_profile -- .previous -+ .text\n\ -+ .globl _dl_runtime_resolve\n\ -+ .globl _dl_runtime_profile\n\ -+ .type _dl_runtime_resolve, #function\n\ -+ .type _dl_runtime_profile, #function\n\ -+ .align 2\n\ -+_dl_runtime_resolve:\n\ -+_dl_runtime_profile:\n\ -+ @ we get called with\n\ -+ @ stack[0] contains the return address from this call\n\ -+ @ ip contains &GOT[n+3] (pointer to function)\n\ -+ @ lr points to &GOT[2]\n\ -+\n\ -+ @ save almost everything; return add is already on the stack\n\ -+ stmdb sp!,{r0-r3,sl,fp}\n\ -+\n\ -+ @ prepare to call fixup()\n\ -+ @ change &GOT[n+3] into 8*n NOTE: reloc are 8 bytes each\n\ -+ sub r1, ip, lr\n\ -+ sub r1, r1, #4\n\ -+ add r1, r1, r1\n\ -+\n\ -+ @ get pointer to linker struct\n\ -+ ldr r0, [lr, #-4]\n\ -+\n\ -+ @ call profiling fixup routine\n\ -+ " CALL_ROUTINE(fixup) "\n\ -+\n\ -+ @ save the return\n\ -+ mov ip, r0\n\ -+\n\ -+ @ restore the stack\n\ -+ ldmia sp!,{r0-r3,sl,fp,lr}\n\ -+\n\ -+ @ jump to the newly found address\n\ -+ mov pc, ip\n\ -+\n\ -+ .size _dl_runtime_profile, .-_dl_runtime_profile\n\ -+ .previous\n\ - "); - #endif //PROF - -@@ -256,70 +257,70 @@ - its return value is the user program's entry point. */ - - #define RTLD_START asm ("\ --.text --.globl _start --.globl _dl_start_user --_start: -- @ at start time, all the args are on the stack -- mov r0, sp -- bl _dl_start -- @ returns user entry point in r0 --_dl_start_user: -- mov r6, r0 -- @ we are PIC code, so get global offset table -- ldr sl, .L_GET_GOT -- add sl, pc, sl --.L_GOT_GOT: -- @ Store the highest stack address -- ldr r1, .L_STACK_END -- ldr r1, [sl, r1] -- str sp, [r1] -- @ See if we were run as a command with the executable file -- @ name as an extra leading argument. -- ldr r4, .L_SKIP_ARGS -- ldr r4, [sl, r4] -- @ get the original arg count -- ldr r1, [sp] -- @ subtract _dl_skip_args from it -- sub r1, r1, r4 -- @ adjust the stack pointer to skip them -- add sp, sp, r4, lsl #2 -- @ get the argv address -- add r2, sp, #4 -- @ store the new argc in the new stack location -- str r1, [sp] -- @ compute envp -- add r3, r2, r1, lsl #2 -- add r3, r3, #4 -- -- @ now we call _dl_init -- ldr r0, .L_LOADED -- ldr r0, [sl, r0] -- ldr r0, [r0] -- @ call _dl_init -- bl _dl_init(PLT) -- @ clear the startup flag -- ldr r2, .L_STARTUP_FLAG -- ldr r1, [sl, r2] -- mov r0, #0 -- str r0, [r1] -- @ load the finalizer function -- ldr r0, .L_FINI_PROC -- ldr r0, [sl, r0] -- @ jump to the user_s entry point -- mov pc, r6 --.L_GET_GOT: -+.text\n\ -+.globl _start\n\ -+.globl _dl_start_user\n\ -+_start:\n\ -+ @ at start time, all the args are on the stack\n\ -+ mov r0, sp\n\ -+ bl _dl_start\n\ -+ @ returns user entry point in r0\n\ -+_dl_start_user:\n\ -+ mov r6, r0\n\ -+ @ we are PIC code, so get global offset table\n\ -+ ldr sl, .L_GET_GOT\n\ -+ add sl, pc, sl\n\ -+.L_GOT_GOT:\n\ -+ @ Store the highest stack address\n\ -+ ldr r1, .L_STACK_END\n\ -+ ldr r1, [sl, r1]\n\ -+ str sp, [r1]\n\ -+ @ See if we were run as a command with the executable file\n\ -+ @ name as an extra leading argument.\n\ -+ ldr r4, .L_SKIP_ARGS\n\ -+ ldr r4, [sl, r4]\n\ -+ @ get the original arg count\n\ -+ ldr r1, [sp]\n\ -+ @ subtract _dl_skip_args from it\n\ -+ sub r1, r1, r4\n\ -+ @ adjust the stack pointer to skip them\n\ -+ add sp, sp, r4, lsl #2\n\ -+ @ get the argv address\n\ -+ add r2, sp, #4\n\ -+ @ store the new argc in the new stack location\n\ -+ str r1, [sp]\n\ -+ @ compute envp\n\ -+ add r3, r2, r1, lsl #2\n\ -+ add r3, r3, #4\n\ -+\n\ -+ @ now we call _dl_init\n\ -+ ldr r0, .L_LOADED\n\ -+ ldr r0, [sl, r0]\n\ -+ ldr r0, [r0]\n\ -+ @ call _dl_init\n\ -+ bl _dl_init(PLT)\n\ -+ @ clear the startup flag\n\ -+ ldr r2, .L_STARTUP_FLAG\n\ -+ ldr r1, [sl, r2]\n\ -+ mov r0, #0\n\ -+ str r0, [r1]\n\ -+ @ load the finalizer function\n\ -+ ldr r0, .L_FINI_PROC\n\ -+ ldr r0, [sl, r0]\n\ -+ @ jump to the user_s entry point\n\ -+ mov pc, r6\n\ -+.L_GET_GOT:\n\ - .word _GLOBAL_OFFSET_TABLE_ - .L_GOT_GOT - 4 \n\ - .L_SKIP_ARGS: \n\ - .word _dl_skip_args(GOTOFF) \n\ --.L_STARTUP_FLAG: -- .word _dl_starting_up(GOT) --.L_FINI_PROC: -- .word _dl_fini(GOT) --.L_STACK_END: -- .word __libc_stack_end(GOT) --.L_LOADED: -- .word _dl_loaded(GOT) -+.L_STARTUP_FLAG:\n\ -+ .word _dl_starting_up(GOT)\n\ -+.L_FINI_PROC:\n\ -+ .word _dl_fini(GOT)\n\ -+.L_STACK_END:\n\ -+ .word __libc_stack_end(GOT)\n\ -+.L_LOADED:\n\ -+ .word _dl_loaded(GOT)\n\ - .previous\n\ - "); - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/dl-machine-m68k.patch --- a/patches/glibc/2.2.5/dl-machine-m68k.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -Retrieved with - wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/m68k/dl-machine.h.diff?r1=1.53&r2=1.55&cvsroot=glibc' - -Fixes error - -In file included from dynamic-link.h:21, - from dl-load.c:32: -../sysdeps/m68k/dl-machine.h:108: error: parse error before '.' token -../sysdeps/m68k/dl-machine.h:109: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:120: error: syntax error at '#' token -../sysdeps/m68k/dl-machine.h:123: error: stray '\' in program -../sysdeps/m68k/dl-machine.h:123: error: missing terminating " character -../sysdeps/m68k/dl-machine.h:148: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:152: error: syntax error at '#' token -../sysdeps/m68k/dl-machine.h:156: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:161: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:163: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:166: error: stray '@' in program -In file included from dynamic-link.h:21, - from dl-load.c:32: -../sysdeps/m68k/dl-machine.h:175:4: invalid preprocessing directive #Call -../sysdeps/m68k/dl-machine.h:179: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:180: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:181: error: syntax error at '#' token -../sysdeps/m68k/dl-machine.h:182: error: syntax error at '#' token -../sysdeps/m68k/dl-machine.h:184: error: stray '@' in program -../sysdeps/m68k/dl-machine.h:187: error: missing terminating ' character -../sysdeps/m68k/dl-machine.h:190: error: missing terminating " character -dl-load.c: In function `_dl_map_object_from_fd': -dl-load.c:1089: warning: use of cast expressions as lvalues is deprecated -dl-load.c:1089: warning: use of cast expressions as lvalues is deprecated -dl-load.c:1109: warning: use of cast expressions as lvalues is deprecated -dl-load.c:1109: warning: use of cast expressions as lvalues is deprecated -make[2]: *** [/home/dank/wk/crosstool-0.28-rc24/build/m68k-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/build-glibc/elf/dl-load.o] Error 1 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/m68k/dl-machine.h,v -retrieving revision 1.53 -retrieving revision 1.55 -diff -u -r1.53 -r1.55 ---- libc/sysdeps/m68k/dl-machine.h 2001/08/26 22:26:36 1.53 -+++ libc/sysdeps/m68k/dl-machine.h 2002/02/01 10:28:20 1.55 -@@ -1,5 +1,5 @@ - /* Machine-dependent ELF dynamic relocation inline functions. m68k version. -- Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. -+ Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -85,11 +85,11 @@ - { - got[2] = (Elf32_Addr) &_dl_runtime_profile; - -- if (_dl_name_match_p (_dl_profile, l)) -+ if (_dl_name_match_p (GL(dl_profile), l)) - { - /* This is the object we are looking for. Say that we really - want profiling and the timers are started. */ -- _dl_profile_map = l; -+ GL(dl_profile_map) = l; - } - } - else -@@ -104,22 +104,22 @@ - /* This code is used in dl-runtime.c to call the `fixup' function - and then redirect to the address it returns. */ - #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \ --"| Trampoline for " #fixup_name " -- .globl " #tramp_name " -- .type " #tramp_name ", @function --" #tramp_name ": -- | Save %a0 (struct return address) and %a1. -- move.l %a0, -(%sp) -- move.l %a1, -(%sp) -- | Call the real address resolver. -- jbsr " #fixup_name " -- | Restore register %a0 and %a1. -- move.l (%sp)+, %a1 -- move.l (%sp)+, %a0 -- | Pop parameters -- addq.l #8, %sp -- | Call real function. -- jmp (%d0) -+"| Trampoline for " #fixup_name "\n\ -+ .globl " #tramp_name "\n\ -+ .type " #tramp_name ", @function\n\ -+" #tramp_name ":\n\ -+ | Save %a0 (struct return address) and %a1.\n\ -+ move.l %a0, -(%sp)\n\ -+ move.l %a1, -(%sp)\n\ -+ | Call the real address resolver.\n\ -+ jbsr " #fixup_name "\n\ -+ | Restore register %a0 and %a1.\n\ -+ move.l (%sp)+, %a1\n\ -+ move.l (%sp)+, %a0\n\ -+ | Pop parameters\n\ -+ addq.l #8, %sp\n\ -+ | Call real function.\n\ -+ jmp (%d0)\n\ - .size " #tramp_name ", . - " #tramp_name "\n" - #ifndef PROF - #define ELF_MACHINE_RUNTIME_TRAMPOLINE \ -@@ -143,50 +143,50 @@ - its return value is the user program's entry point. */ - - #define RTLD_START asm ("\ -- .text -- .globl _start -- .type _start,@function --_start: -- move.l %sp, -(%sp) -- jbsr _dl_start -- addq.l #4, %sp -- /* FALLTHRU */ -- -- .globl _dl_start_user -- .type _dl_start_user,@function --_dl_start_user: -- | Save the user entry point address in %a4. -- move.l %d0, %a4 -- | Point %a5 at the GOT. -- lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5 -- | Remember the highest stack address. -- move.l %sp, ([__libc_stack_end@GOT.w, %a5]) -- | See if we were run as a command with the executable file -- | name as an extra leading argument. -- move.l ([_dl_skip_args@GOT.w, %a5]), %d0 -- | Pop the original argument count -- move.l (%sp)+, %d1 -- | Subtract _dl_skip_args from it. -- sub.l %d0, %d1 -- | Adjust the stack pointer to skip _dl_skip_args words. -- lea (%sp, %d0*4), %sp -- | Push back the modified argument count. -- move.l %d1, -(%sp) -- # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env) -- pea 8(%sp, %d1*4) -- pea 8(%sp) -- move.l %d1, -(%sp) -- move.l ([_dl_loaded@GOT.w, %a5]), -(%sp) -- jbsr _dl_init@PLTPC -- addq.l #8, %sp -- addq.l #8, %sp -- | Pass our finalizer function to the user in %a1. -- move.l _dl_fini@GOT.w(%a5), %a1 -- | Initialize %fp with the stack pointer. -- move.l %sp, %fp -- | Jump to the user's entry point. -- jmp (%a4) -- .size _dl_start_user, . - _dl_start_user -+ .text\n\ -+ .globl _start\n\ -+ .type _start,@function\n\ -+_start:\n\ -+ move.l %sp, -(%sp)\n\ -+ jbsr _dl_start\n\ -+ addq.l #4, %sp\n\ -+ /* FALLTHRU */\n\ -+\n\ -+ .globl _dl_start_user\n\ -+ .type _dl_start_user,@function\n\ -+_dl_start_user:\n\ -+ | Save the user entry point address in %a4.\n\ -+ move.l %d0, %a4\n\ -+ | Point %a5 at the GOT.\n\ -+ lea _GLOBAL_OFFSET_TABLE_@GOTPC(%pc), %a5\n\ -+ | Remember the highest stack address.\n\ -+ move.l %sp, ([__libc_stack_end@GOT.w, %a5])\n\ -+ | See if we were run as a command with the executable file\n\ -+ | name as an extra leading argument.\n\ -+ move.l ([_dl_skip_args@GOT.w, %a5]), %d0\n\ -+ | Pop the original argument count\n\ -+ move.l (%sp)+, %d1\n\ -+ | Subtract _dl_skip_args from it.\n\ -+ sub.l %d0, %d1\n\ -+ | Adjust the stack pointer to skip _dl_skip_args words.\n\ -+ lea (%sp, %d0*4), %sp\n\ -+ | Push back the modified argument count.\n\ -+ move.l %d1, -(%sp)\n\ -+ # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ -+ pea 8(%sp, %d1*4)\n\ -+ pea 8(%sp)\n\ -+ move.l %d1, -(%sp)\n\ -+ move.l ([_rtld_global@GOT.w, %a5]), -(%sp)\n\ -+ jbsr _dl_init@PLTPC\n\ -+ addq.l #8, %sp\n\ -+ addq.l #8, %sp\n\ -+ | Pass our finalizer function to the user in %a1.\n\ -+ move.l _dl_fini@GOT.w(%a5), %a1\n\ -+ | Initialize %fp with the stack pointer.\n\ -+ move.l %sp, %fp\n\ -+ | Jump to the user's entry point.\n\ -+ jmp (%a4)\n\ -+ .size _dl_start_user, . - _dl_start_user\n\ - .previous"); - - /* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so -@@ -251,7 +251,7 @@ - found. */ - break; - if (sym->st_size > refsym->st_size -- || (sym->st_size < refsym->st_size && _dl_verbose)) -+ || (sym->st_size < refsym->st_size && GL(dl_verbose))) - { - extern char **_dl_argv; - const char *strtab; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/dl-machine-sh.patch --- a/patches/glibc/2.2.5/dl-machine-sh.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -Retrieved with -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/sh/dl-machine.h.diff?r1=1.21&r2=1.22&cvsroot=glibc' - -Fixes error -/tmp/ccFobT8r.s: Assembler messages: -/tmp/ccFobT8r.s:1819: Error: symbol `.L3' is already defined -make[2]: *** [/home/dank/wk/crosstool-0.28-rc24/build/sh4-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/build-glibc/elf/rtld.os] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc24/build/sh4-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/glibc-2.2.5/elf' - -See also http://sources.redhat.com/ml/libc-alpha/2002-07/msg00001.html - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/sh/dl-machine.h,v -retrieving revision 1.21 -retrieving revision 1.22 -diff -u -r1.21 -r1.22 ---- libc/sysdeps/sh/dl-machine.h 2002/04/08 20:59:36 1.21 -+++ libc/sysdeps/sh/dl-machine.h 2002/06/28 17:26:01 1.22 -@@ -53,16 +53,16 @@ - elf_machine_load_address (void) - { - Elf32_Addr addr; -- asm ("mov.l .L1,r0\n\ -- mov.l .L3,r2\n\ -+ asm ("mov.l 1f,r0\n\ -+ mov.l 3f,r2\n\ - add r12,r2\n\ - mov.l @(r0,r12),r0\n\ -- bra .L2\n\ -+ bra 2f\n\ - sub r0,r2\n\ - .align 2\n\ -- .L1: .long _dl_start@GOT\n\ -- .L3: .long _dl_start@GOTOFF\n\ -- .L2: mov r2,%0" -+ 1: .long _dl_start@GOT\n\ -+ 3: .long _dl_start@GOTOFF\n\ -+ 2: mov r2,%0" - : "=r" (addr) : : "r0", "r1", "r2"); - return addr; - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/dl-machine-sparc.patch --- a/patches/glibc/2.2.5/dl-machine-sparc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,230 +0,0 @@ ---- glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h.old Sat Jun 7 18:19:03 2003 -+++ glibc-2.2.5/sysdeps/sparc/sparc32/dl-machine.h Sat Jun 7 18:20:04 2003 -@@ -148,23 +148,23 @@ - and then redirect to the address it returns. */ - #define TRAMPOLINE_TEMPLATE(tramp_name, fixup_name) \ - asm ( "\ -- .text -- .globl " #tramp_name " -- .type " #tramp_name ", @function -- .align 32 --" #tramp_name ": -- /* Set up the arguments to fixup -- -- %o0 = link_map out of plt0 -- %o1 = offset of reloc entry -- %o2 = return address */ -- ld [%o7 + 8], %o0 -- srl %g1, 10, %o1 -- mov %i7, %o2 -- call " #fixup_name " -- sub %o1, 4*12, %o1 -- jmp %o0 -- restore -- .size " #tramp_name ", . - " #tramp_name " -+ .text\n\ -+ .globl " #tramp_name "\n\ -+ .type " #tramp_name ", @function\n\ -+ .align 32\n\ -+" #tramp_name ":\n\ -+ /* Set up the arguments to fixup --\n\ -+ %o0 = link_map out of plt0\n\ -+ %o1 = offset of reloc entry\n\ -+ %o2 = return address */\n\ -+ ld [%o7 + 8], %o0\n\ -+ srl %g1, 10, %o1\n\ -+ mov %i7, %o2\n\ -+ call " #fixup_name "\n\ -+ sub %o1, 4*12, %o1\n\ -+ jmp %o0\n\ -+ restore\n\ -+ .size " #tramp_name ", . - " #tramp_name "\n\ - .previous") - - #ifndef PROF -@@ -199,96 +199,96 @@ - its return value is the user program's entry point. */ - - #define RTLD_START __asm__ ("\ -- .text -- .globl _start -- .type _start, @function -- .align 32 --_start: -- /* Allocate space for functions to drop their arguments. */ -- sub %sp, 6*4, %sp -- /* Pass pointer to argument block to _dl_start. */ -- call _dl_start -- add %sp, 22*4, %o0 -- /* FALTHRU */ -- .globl _dl_start_user -- .type _dl_start_user, @function --_dl_start_user: -- /* Load the PIC register. */ --1: call 2f -- sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 --2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7 -- add %l7, %o7, %l7 -- /* Save the user entry point address in %l0 */ -- mov %o0, %l0 -- /* Store the highest stack address. */ -- sethi %hi(__libc_stack_end), %g2 -- or %g2, %lo(__libc_stack_end), %g2 -- ld [%l7 + %g2], %l1 -- sethi %hi(_dl_skip_args), %g2 -- add %sp, 6*4, %l2 -- or %g2, %lo(_dl_skip_args), %g2 -- st %l2, [%l1] -- /* See if we were run as a command with the executable file name as an -- extra leading argument. If so, adjust the contents of the stack. */ -- ld [%l7+%g2], %i0 -- ld [%i0], %i0 -- tst %i0 -- beq 3f -- ld [%sp+22*4], %i5 /* load argc */ -- /* Find out how far to shift. */ -- sethi %hi(_dl_argv), %l3 -- or %l3, %lo(_dl_argv), %l3 -- ld [%l7+%l3], %l3 -- sub %i5, %i0, %i5 -- ld [%l3], %l4 -- sll %i0, 2, %i2 -- st %i5, [%sp+22*4] -- sub %l4, %i2, %l4 -- add %sp, 23*4, %i1 -- add %i1, %i2, %i2 -- st %l4, [%l3] -- /* Copy down argv */ --21: ld [%i2], %i3 -- add %i2, 4, %i2 -- tst %i3 -- st %i3, [%i1] -- bne 21b -- add %i1, 4, %i1 -- /* Copy down env */ --22: ld [%i2], %i3 -- add %i2, 4, %i2 -- tst %i3 -- st %i3, [%i1] -- bne 22b -- add %i1, 4, %i1 -- /* Copy down auxiliary table. */ --23: ld [%i2], %i3 -- ld [%i2+4], %i4 -- add %i2, 8, %i2 -- tst %i3 -- st %i3, [%i1] -- st %i4, [%i1+4] -- bne 23b -- add %i1, 8, %i1 -- /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */ --3: sethi %hi(_dl_loaded), %o0 -- add %sp, 23*4, %o2 -- orcc %o0, %lo(_dl_loaded), %o0 -- sll %i5, 2, %o3 -- ld [%l7+%o0], %o0 -- add %o3, 4, %o3 -- mov %i5, %o1 -- add %o2, %o3, %o3 -- call _dl_init -- ld [%o0], %o0 -- /* Pass our finalizer function to the user in %g1. */ -- sethi %hi(_dl_fini), %g1 -- or %g1, %lo(_dl_fini), %g1 -- ld [%l7+%g1], %g1 -- /* Jump to the user's entry point and deallocate the extra stack we got. */ -- jmp %l0 -- add %sp, 6*4, %sp -- .size _dl_start_user, . - _dl_start_user -+ .text\n\ -+ .globl _start\n\ -+ .type _start, @function\n\ -+ .align 32\n\ -+_start:\n\ -+ /* Allocate space for functions to drop their arguments. */\n\ -+ sub %sp, 6*4, %sp\n\ -+ /* Pass pointer to argument block to _dl_start. */\n\ -+ call _dl_start\n\ -+ add %sp, 22*4, %o0\n\ -+ /* FALTHRU */\n\ -+ .globl _dl_start_user\n\ -+ .type _dl_start_user, @function\n\ -+_dl_start_user:\n\ -+ /* Load the PIC register. */\n\ -+1: call 2f\n\ -+ sethi %hi(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\ -+2: or %l7, %lo(_GLOBAL_OFFSET_TABLE_-(1b-.)), %l7\n\ -+ add %l7, %o7, %l7\n\ -+ /* Save the user entry point address in %l0 */\n\ -+ mov %o0, %l0\n\ -+ /* Store the highest stack address. */\n\ -+ sethi %hi(__libc_stack_end), %g2\n\ -+ or %g2, %lo(__libc_stack_end), %g2\n\ -+ ld [%l7 + %g2], %l1\n\ -+ sethi %hi(_dl_skip_args), %g2\n\ -+ add %sp, 6*4, %l2\n\ -+ or %g2, %lo(_dl_skip_args), %g2\n\ -+ st %l2, [%l1]\n\ -+ /* See if we were run as a command with the executable file name as an\n\ -+ extra leading argument. If so, adjust the contents of the stack. */\n\ -+ ld [%l7+%g2], %i0\n\ -+ ld [%i0], %i0\n\ -+ tst %i0\n\ -+ beq 3f\n\ -+ ld [%sp+22*4], %i5 /* load argc */\n\ -+ /* Find out how far to shift. */\n\ -+ sethi %hi(_dl_argv), %l3\n\ -+ or %l3, %lo(_dl_argv), %l3\n\ -+ ld [%l7+%l3], %l3\n\ -+ sub %i5, %i0, %i5\n\ -+ ld [%l3], %l4\n\ -+ sll %i0, 2, %i2\n\ -+ st %i5, [%sp+22*4]\n\ -+ sub %l4, %i2, %l4\n\ -+ add %sp, 23*4, %i1\n\ -+ add %i1, %i2, %i2\n\ -+ st %l4, [%l3]\n\ -+ /* Copy down argv */\n\ -+21: ld [%i2], %i3\n\ -+ add %i2, 4, %i2\n\ -+ tst %i3\n\ -+ st %i3, [%i1]\n\ -+ bne 21b\n\ -+ add %i1, 4, %i1\n\ -+ /* Copy down env */\n\ -+22: ld [%i2], %i3\n\ -+ add %i2, 4, %i2\n\ -+ tst %i3\n\ -+ st %i3, [%i1]\n\ -+ bne 22b\n\ -+ add %i1, 4, %i1\n\ -+ /* Copy down auxiliary table. */\n\ -+23: ld [%i2], %i3\n\ -+ ld [%i2+4], %i4\n\ -+ add %i2, 8, %i2\n\ -+ tst %i3\n\ -+ st %i3, [%i1]\n\ -+ st %i4, [%i1+4]\n\ -+ bne 23b\n\ -+ add %i1, 8, %i1\n\ -+ /* %o0 = _dl_loaded, %o1 = argc, %o2 = argv, %o3 = envp. */\n\ -+3: sethi %hi(_dl_loaded), %o0\n\ -+ add %sp, 23*4, %o2\n\ -+ orcc %o0, %lo(_dl_loaded), %o0\n\ -+ sll %i5, 2, %o3\n\ -+ ld [%l7+%o0], %o0\n\ -+ add %o3, 4, %o3\n\ -+ mov %i5, %o1\n\ -+ add %o2, %o3, %o3\n\ -+ call _dl_init\n\ -+ ld [%o0], %o0\n\ -+ /* Pass our finalizer function to the user in %g1. */\n\ -+ sethi %hi(_dl_fini), %g1\n\ -+ or %g1, %lo(_dl_fini), %g1\n\ -+ ld [%l7+%g1], %g1\n\ -+ /* Jump to the user's entry point and deallocate the extra stack we got. */\n\ -+ jmp %l0\n\ -+ add %sp, 6*4, %sp\n\ -+ .size _dl_start_user, . - _dl_start_user\n\ - .previous"); - - static inline Elf32_Addr diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/errlist-1.9.patch --- a/patches/glibc/2.2.5/errlist-1.9.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/Attic/errlist.c,v -retrieving revision 1.8 -retrieving revision 1.9 -diff -u -r1.8 -r1.9 ---- libc/sysdeps/unix/sysv/linux/errlist.c 2001/07/06 04:56:12 1.8 -+++ libc/sysdeps/unix/sysv/linux/errlist.c 2002/05/20 06:56:53 1.9 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. -+/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -38,10 +38,9 @@ - const int __old_sys_nerr = OLD_ERRLIST_SIZE; - - strong_alias (__old_sys_nerr, _old_sys_nerr); --weak_alias (__old_sys_nerr, _old_sys_nerr) - compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0); - compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0); --weak_alias (__old_sys_errlist, _old_sys_errlist); -+strong_alias (__old_sys_errlist, _old_sys_errlist); - compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0); - compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0); - #endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/errlist-arm.patch --- a/patches/glibc/2.2.5/errlist-arm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -Subject: patch for arm -From: Philip Blundell -To: libc-hacker at sources dot redhat dot com -Content-Type: text/plain -Content-Transfer-Encoding: 7bit -Date: 22 Jul 2002 20:12:06 +0100 -Message-Id: <1027365126.725.10.camel@kc> -Mime-Version: 1.0 - -The mainline seems to need this patch in order to compile. - -p. - -2002-07-22 Philip Blundell - - * sysdeps/unix/sysv/linux/arm/errlist.c: Remove extra weak alias - definiton of _old_sys_nerr. Define _old_sys_errlist as strong - alias. - -Index: sysdeps/unix/sysv/linux/arm/errlist.c -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/arm/errlist.c,v -retrieving revision 1.4 -diff -u -p -r1.4 errlist.c ---- glibc/sysdeps/unix/sysv/linux/arm/errlist.c 6 Jul 2001 04:56:13 -0000 1.4 -+++ glibc/sysdeps/unix/sysv/linux/arm/errlist.c 22 Jul 2002 19:10:57 -0000 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1998, 2000 Free Software Foundation, Inc. -+/* Copyright (C) 1998, 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -38,10 +38,9 @@ extern const char *const *__old_sys_errl - const int __old_sys_nerr = OLD_ERRLIST_SIZE; - - strong_alias (__old_sys_nerr, _old_sys_nerr); --weak_alias (__old_sys_nerr, _old_sys_nerr) - compat_symbol (libc, __old_sys_nerr, _sys_nerr, GLIBC_2_0); - compat_symbol (libc, _old_sys_nerr, sys_nerr, GLIBC_2_0); --weak_alias (__old_sys_errlist, _old_sys_errlist); -+strong_alias (__old_sys_errlist, _old_sys_errlist); - compat_symbol (libc, __old_sys_errlist, _sys_errlist, GLIBC_2_0); - compat_symbol (libc, _old_sys_errlist, sys_errlist, GLIBC_2_0); - #endif - - - - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-fixup.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -Fixes -dl-runtime.c:56: error: conflicting types for 'fixup' -../sysdeps/i386/dl-machine.h:158: error: previous declaration of 'fixup' was here -when building with gcc-3.4.0 - -First hunk: -Define ARCH_FIXUP_ATTRIBUTE and use it in the fixup function declarations. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/dl-machine.h.diff?r1=1.124&r2=1.125&cvsroot=glibc -[rediffed against glibc-2.2.5] - -Second hunk: -If ARCH_FIXUP_ATTRIBUTE is not defined, provide dummy definition. -Use macro in fixup function definitions. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/elf/dl-runtime.c.diff?r1=1.64&r2=1.65&cvsroot=glibc -[rediffed against glibc-2.3.2] - -=================================================================== ---- glibc-2.2.5/sysdeps/i386/dl-machine.h.old Sun Apr 11 11:53:23 2004 -+++ glibc-2.2.5/sysdeps/i386/dl-machine.h Sun Apr 11 11:55:38 2004 -@@ -63,11 +63,12 @@ - destroys the passed register information. */ - /* GKM FIXME: Fix trampoline to pass bounds so we can do - without the `__unbounded' qualifier. */ -+#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused)) - static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset) -- __attribute__ ((regparm (2), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset, - ElfW(Addr) retaddr) -- __attribute__ ((regparm (3), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - #endif - - /* Set up the loaded object described by L so its unrelocated PLT -=================================================================== ---- /home/dank/downloads/glibc-2.3.2/elf/dl-runtime.c Fri Feb 7 11:41:12 2003 -+++ glibc-2.3.2/elf/dl-runtime.c Thu Apr 8 22:24:26 2004 -@@ -36,6 +36,12 @@ - # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym)) - #endif - -+/* The fixup functions might have need special attributes. If none -+ are provided define the macro as empty. */ -+#ifndef ARCH_FIXUP_ATTRIBUTE -+# define ARCH_FIXUP_ATTRIBUTE -+#endif -+ - - /* This function is called through a special trampoline from the PLT the - first time each PLT entry is called. We must perform the relocation -@@ -45,7 +51,7 @@ - function. */ - - #ifndef ELF_MACHINE_NO_PLT --static ElfW(Addr) __attribute_used__ -+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE - fixup ( - # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, -@@ -132,7 +138,7 @@ - - #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__ - --static ElfW(Addr) __attribute_used__ -+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE - profile_fixup ( - #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-grp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -Fixes -initgroups.c: In function `internal_getgrouplist': -initgroups.c:179: error: parse error before "__FUNCTION__" - -CVSROOT: /cvs/glibc -Module name: libc -Changes by: roland@sources.redhat.com 2001-12-16 21:52:12 - -Modified files: - nss : nsswitch.c - grp : initgroups.c - -Log message: - 2001-12-16 Roland McGrath - - * nss/nsswitch.c (__nss_next): Don't use __FUNCTION__ as literal. - * grp/initgroups.c (internal_getgrouplist): Likewise. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/grp/initgroups.c.diff?r1=1.26&r2=1.27&cvsroot=glibc -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nss/nsswitch.c.diff?r1=1.52&r2=1.53&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/grp/initgroups.c,v -retrieving revision 1.26 -retrieving revision 1.27 -diff -u -r1.26 -r1.27 ---- libc/grp/initgroups.c 2001/07/06 04:54:46 1.26 -+++ libc/grp/initgroups.c 2001/12/17 05:52:11 1.27 -@@ -176,7 +176,7 @@ - - /* This is really only for debugging. */ - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) -- __libc_fatal ("illegal status in " __FUNCTION__); -+ __libc_fatal ("illegal status in internal_getgrouplist"); - - if (status != NSS_STATUS_SUCCESS - && nss_next_action (nip, status) == NSS_ACTION_RETURN) -@@ -214,7 +214,7 @@ - } - else - *ngroups = result; -- -+ - memcpy (groups, newgroups, *ngroups * sizeof (gid_t)); - - free (newgroups); - -=================================================================== -RCS file: /cvs/glibc/libc/nss/nsswitch.c,v -retrieving revision 1.52 -retrieving revision 1.53 -diff -u -r1.52 -r1.53 ---- libc/nss/nsswitch.c 2001/07/17 08:21:36 1.52 -+++ libc/nss/nsswitch.c 2001/12/17 05:52:11 1.53 -@@ -178,7 +178,7 @@ - { - /* This is really only for debugging. */ - if (NSS_STATUS_TRYAGAIN > status || status > NSS_STATUS_RETURN) -- __libc_fatal ("illegal status in " __FUNCTION__); -+ __libc_fatal ("illegal status in __nss_next"); - - if (nss_next_action (*ni, status) == NSS_ACTION_RETURN) - return 1; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-weakextern.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-3.4-weakextern.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -Suggested by Jake Page -in http://sources.redhat.com/ml/crossgcc/2004-07/msg00169.html -but the libc-symbols.h fragment has been reworked to fix typos -and to still work on gcc-2.95.3, which lacks _Pragma. - -His comment was: - Fixes gcc-3.4 optimizing out comparisons to weak external symbols in code - like: - if (__pthread_mutex_init != NULL) - __pthread_mutex_init(...); - that causes segfaults during libc init when not linked to libpthread - -diff -uNr glibc-2.2.5-orig/resolv/res_libc.c glibc-2.2.5/resolv/res_libc.c ---- glibc-2.2.5-orig/resolv/res_libc.c 2001-02-12 12:23:34.000000000 -0800 -+++ glibc-2.2.5/resolv/res_libc.c 2004-07-27 22:56:32.000000000 -0700 -@@ -84,7 +84,8 @@ - - #if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_2) - # undef res_init --strong_alias (__res_init, __res_init_weak); -+extern int __res_init_weak (void); - weak_extern (__res_init_weak); -+strong_alias (__res_init, __res_init_weak); - compat_symbol (libc, __res_init_weak, res_init, GLIBC_2_0); - #endif ---- glibc-2.2.5/include/libc-symbols.h.old Fri Aug 13 04:20:55 2004 -+++ glibc-2.2.5/include/libc-symbols.h Fri Aug 13 04:37:06 2004 -@@ -108,10 +108,16 @@ - - /* Declare SYMBOL as weak undefined symbol (resolved to 0 if not defined). */ - # define weak_extern(symbol) _weak_extern (symbol) --# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE --# define _weak_extern(symbol) asm (".weakext " __SYMBOL_PREFIX #symbol); --# else --# define _weak_extern(symbol) asm (".weak " __SYMBOL_PREFIX #symbol); -+# if __GNUC__ >= 3 -+ /* see http://sources.redhat.com/ml/libc-alpha/2003-01/msg00043.html */ -+# define __weak_extern_1(expr) _Pragma(#expr) -+# define _weak_extern(symbol) __weak_extern_1(weak symbol) -+# else /* __GNUC__ == 2 */ -+# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE -+# define _weak_extern(symbol) asm (".weakext " __SYMBOL_PREFIX #symbol); -+# else -+# define _weak_extern(symbol) asm (".weak " __SYMBOL_PREFIX #symbol); -+# endif - # endif - - # else diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-configure.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-configure.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -Fixes -checking version of powerpc-405-linux-gnu-gcc ... 4.0.0, bad -checking for gnumake... no -checking for gmake... no -checking for make... make -checking version of make... 3.80, ok -configure: error: -*** These critical programs are missing or too old:gcc - - ---- glibc-2.2.5/configure.old 2005-03-10 00:23:46.374213600 -0800 -+++ glibc-2.2.5/configure 2005-03-10 00:25:13.313996744 -0800 -@@ -1476,7 +1476,7 @@ - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*) -+ *gcc-2.9[5-9].*|*2.8.[1-9]*|*2.9|*2.9.[0-9]*|2.9[5-9]*|3.[0-9]*|4.0*|cygnus-2.9[1-9]*|gcc-2.9[5-9]|gcc-2.1[0-9][0-9]|sgicc-*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-elf-2.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-elf-2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -Fixes -dynamic-link.h:38: error: invalid storage class for function 'elf_get_dynamic_info' -kinda like http://sourceware.org/cgi-bin/cvsweb.cgi/libc/elf/dynamic-link.h.diff?r1=1.50&r2=1.51&cvsroot=glibc does -and fixes -In file included from dynamic-link.h:218, - from dl-reloc.c:153: -do-rel.h:46: error: invalid storage class for function 'elf_dynamic_do_rel' - ---- /home/dank/downloads/glibc-2.2.5/elf/dynamic-link.h 2001-07-05 21:54:46.000000000 -0700 -+++ glibc-2.2.5/elf/dynamic-link.h 2005-03-11 14:18:34.542858064 -0800 -@@ -33,7 +33,16 @@ - - /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */ - -+#if __GNUC__ >= 4 -+#ifndef RESOLVE_MAP -+static -+#else -+auto -+#endif -+inline void __attribute__ ((unused, always_inline)) -+#else - static inline void __attribute__ ((unused)) -+#endif - elf_get_dynamic_info (struct link_map *l) - { - ElfW(Dyn) *dyn = l->l_ld; - ---- /home/dank/downloads/glibc-2.2.5/elf/do-rel.h 2001-08-24 11:45:23.000000000 -0700 -+++ glibc-2.2.5/elf/do-rel.h 2005-03-11 14:26:43.538519424 -0800 -@@ -39,7 +39,12 @@ - relocations; they should be set up to call _dl_runtime_resolve, rather - than fully resolved now. */ - -+#if __GNUC__ >= 4 -+auto inline void -+__attribute ((always_inline)) -+#else - static inline void -+#endif - elf_dynamic_do_rel (struct link_map *map, - ElfW(Addr) reladdr, ElfW(Addr) relsize, - int lazy) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-elf.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-elf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -Fixes - -dl-load.c: In function '_dl_map_object_from_fd': -dl-load.c:1089: error: invalid lvalue in assignment -dl-load.c:1109: error: invalid lvalue in assignment -make[2]: *** [/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-glibc/elf/dl-load.o] Error 1 - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/elf/dl-load.c.diff?r1=1.235&r2=1.236&cvsroot=glibc -rediffed against glibc-2.2.5 - -Revision 1.236, Sat Feb 21 18:25:41 2004 UTC by aj -Branch: MAIN -Changes since 1.235: +2 -2 lines -Diff to previous 1.235 (colored) - -(_dl_map_object_from_fd): Fix casts used as lvalue. - - -diff -ur glibc-2.2.5/elf/dl-load.c glibc-2.2.5-patched/elf/dl-load.c ---- glibc-2.2.5/elf/dl-load.c 2001-11-10 14:43:10.000000000 -0800 -+++ glibc-2.2.5-patched/elf/dl-load.c 2005-03-11 13:48:18.211982328 -0800 -@@ -1086,7 +1086,7 @@ - } - else - /* Adjust the PT_PHDR value by the runtime load address. */ -- (ElfW(Addr)) l->l_phdr += l->l_addr; -+ l->l_phdr = (ElfW(Phdr) *) ((ElfW(Addr)) l->l_phdr + l->l_addr); - } - - /* We are done mapping in the file. We no longer need the descriptor. */ -@@ -1106,7 +1106,7 @@ - } - } - else -- (ElfW(Addr)) l->l_ld += l->l_addr; -+ l->l_ld = (ElfW(Dyn) *) ((ElfW(Addr)) l->l_ld + l->l_addr); - - l->l_entry += l->l_addr; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-gconv.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-gconv.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,226 +0,0 @@ -Fixes -gconv_open.c: In function `__gconv_open': -gconv_open.c:186: error: invalid lvalue in assignment -when building glibc-2.2.5 with gcc-4.0. -Same as ../glibc-2.3.2/glibc-2.3.2-allow-gcc-3.5-gconv.patch -but rediffed against glibc-2.2.5. - -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/iconv/gconv_simple.c.diff?r1=1.59&r2=1.63&cvsroot=glibc' - * (internal_ucs4_loop): Fix typo in last change. - - * (internal_ucs4le_loop): Remove cast used as lvalue. - - * Fix last commit. - - * iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as lvalue. - (internal_ucs4le_loop_single): Likewise. - (ucs4_internal_loop): Likewise. - (BODY): Likewise. - (internal_ucs4_loop_single): Likewise. - -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/iconv/gconv_open.c.diff?r1=1.32&r2=1.33&cvsroot=glibc' - * iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as lvalue. - (internal_ucs4le_loop_single): Likewise. - (ucs4_internal_loop): Likewise. - (BODY): Likewise. - (internal_ucs4_loop_single): Likewise. - - -=================================================================== -RCS file: /cvs/glibc/libc/iconv/gconv_open.c,v -retrieving revision 1.32 -retrieving revision 1.33 -diff -u -r1.32 -r1.33 ---- libc/iconv/gconv_open.c 2001/11/29 04:51:58 1.32 -+++ libc/iconv/gconv_open.c 2004/02/07 15:56:32 1.33 -@@ -1,5 +1,5 @@ - /* Find matching transformation algorithms and initialize steps. -- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - -@@ -182,8 +182,13 @@ - || __builtin_expect (__gconv_translit_find (runp), 0) == 0) - lastp = runp; - else -- /* This means we haven't found the module. Remove it. */ -- (lastp == NULL ? trans : lastp->next) = runp->next; -+ { -+ /* This means we haven't found the module. Remove it. */ -+ if (lastp == NULL) -+ trans = runp->next; -+ else -+ lastp->next = runp->next; -+ } - } - - /* Allocate room for handle. */ -=================================================================== ---- glibc-2.2.5/iconv/gconv_simple.c.old 2001-08-03 15:06:46.000000000 -0700 -+++ glibc-2.2.5/iconv/gconv_simple.c 2005-03-10 00:49:45.558181608 -0800 -@@ -1,5 +1,5 @@ - /* Simple transformations functions. -- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - -@@ -73,12 +73,13 @@ - #if __BYTE_ORDER == __LITTLE_ENDIAN - /* Sigh, we have to do some real work. */ - size_t cnt; -+ uint32_t *outptr32 = (uint32_t *) outptr; - - for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) -- *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); -+ *outptr32++ = bswap_32 (*(const uint32_t *) inptr); - - *inptrp = inptr; -- *outptrp = outptr; -+ *outptrp = (unsigned char *) outptr32; - #elif __BYTE_ORDER == __BIG_ENDIAN - /* Simply copy the data. */ - *inptrp = inptr + n_convert * 4; -@@ -176,13 +177,16 @@ - (*outptrp)[2] = state->__value.__wchb[1]; - (*outptrp)[3] = state->__value.__wchb[0]; - -- *outptrp += 4; - #elif __BYTE_ORDER == __BIG_ENDIAN - /* XXX unaligned */ -- *(*((uint32_t **) outptrp)++) = state->__value.__wch; -+ (*outptrp)[0] = state->__value.__wchb[0]; -+ (*outptrp)[1] = state->__value.__wchb[1]; -+ (*outptrp)[2] = state->__value.__wchb[2]; -+ (*outptrp)[3] = state->__value.__wchb[3]; - #else - # error "This endianess is not supported." - #endif -+ *outptrp += 4; - - /* Clear the state buffer. */ - state->__count &= ~7; -@@ -251,7 +255,8 @@ - return __GCONV_ILLEGAL_INPUT; - } - -- *((uint32_t *) outptr)++ = inval; -+ *((uint32_t *) outptr) = inval; -+ outptr += sizeof (uint32_t); - } - - *inptrp = inptr; -@@ -427,9 +432,11 @@ - #if __BYTE_ORDER == __BIG_ENDIAN - /* Sigh, we have to do some real work. */ - size_t cnt; -+ uint32_t *outptr32 = (uint32_t *) outptr; - - for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) -- *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); -+ *outptr32++ = bswap_32 (*(const uint32_t *) inptr); -+ outptr = (unsigned char *) outptr32; - - *inptrp = inptr; - *outptrp = outptr; -@@ -530,12 +537,17 @@ - (*outptrp)[2] = state->__value.__wchb[1]; - (*outptrp)[3] = state->__value.__wchb[0]; - -- *outptrp += 4; - #else - /* XXX unaligned */ -- *(*((uint32_t **) outptrp)++) = state->__value.__wch; -+ (*outptrp)[0] = state->__value.__wchb[0]; -+ (*outptrp)[1] = state->__value.__wchb[1]; -+ (*outptrp)[2] = state->__value.__wchb[2]; -+ (*outptrp)[3] = state->__value.__wchb[3]; -+ - #endif - -+ *outptrp += 4; -+ - /* Clear the state buffer. */ - state->__count &= ~7; - -@@ -600,7 +612,8 @@ - return __GCONV_ILLEGAL_INPUT; - } - -- *((uint32_t *) outptr)++ = inval; -+ *((uint32_t *) outptr) = inval; -+ outptr += sizeof (uint32_t); - } - - *inptrp = inptr; -@@ -782,7 +795,8 @@ - } \ - else \ - /* It's an one byte sequence. */ \ -- *((uint32_t *) outptr)++ = *inptr++; \ -+ *((uint32_t *) outptr) = *inptr++; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #include -@@ -812,7 +826,8 @@ - } \ - else \ - /* It's an one byte sequence. */ \ -- *outptr++ = *((const uint32_t *) inptr)++; \ -+ *outptr++ = *((const uint32_t *) inptr); \ -+ inptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #include -@@ -1031,7 +1046,8 @@ - } \ - \ - /* Now adjust the pointers and store the result. */ \ -- *((uint32_t *) outptr)++ = ch; \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - -@@ -1174,7 +1190,8 @@ - continue; \ - } \ - \ -- *((uint32_t *) outptr)++ = u1; \ -+ *((uint32_t *) outptr) = u1; \ -+ outptr += sizeof (uint32_t); \ - inptr += 2; \ - } - #define LOOP_NEED_FLAGS -@@ -1224,7 +1241,8 @@ - } \ - else \ - { \ -- *((uint16_t *) outptr)++ = val; \ -+ *((uint16_t *) outptr) = val; \ -+ outptr += sizeof (uint16_t); \ - inptr += 4; \ - } \ - } -@@ -1265,7 +1283,8 @@ - continue; \ - } \ - \ -- *((uint32_t *) outptr)++ = u1; \ -+ *((uint32_t *) outptr) = u1; \ -+ outptr += sizeof (uint32_t); \ - inptr += 2; \ - } - #define LOOP_NEED_FLAGS -@@ -1314,7 +1333,8 @@ - } \ - else \ - { \ -- *((uint16_t *) outptr)++ = bswap_16 (val); \ -+ *((uint16_t *) outptr) = bswap_16 (val); \ -+ outptr += sizeof (uint16_t); \ - inptr += 4; \ - } \ - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-i386.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-i386.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -Fixes -../sysdeps/i386/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/i386/dl-machine.h:306: error: invalid storage class for function 'elf_machine_rel' -../sysdeps/i386/dl-machine.h:385: error: invalid storage class for function 'elf_machine_rel_relative' -../sysdeps/i386/dl-machine.h:393: error: invalid storage class for function 'elf_machine_lazy_rel' - -when building glibc-2.2.5 with gcc-4.0. - ---- /home/dank/downloads/glibc-2.2.5/sysdeps/i386/dl-machine.h 2001-08-30 16:09:10.000000000 -0700 -+++ glibc-2.2.5/sysdeps/i386/dl-machine.h 2005-03-11 14:00:22.601858328 -0800 -@@ -298,7 +299,12 @@ - /* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - -+#if __GNUC__ >= 4 -+auto inline void -+__attribute ((always_inline)) -+#else - static inline void -+#endif - elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - Elf32_Addr *const reloc_addr) -@@ -378,7 +384,12 @@ - } - } - -+#if __GNUC__ >= 4 -+auto inline void -+__attribute ((always_inline)) -+#else - static inline void -+#endif - elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, - Elf32_Addr *const reloc_addr) - { -@@ -386,7 +397,12 @@ - *reloc_addr += l_addr; - } - -+#if __GNUC__ >= 4 -+auto inline void -+__attribute ((always_inline)) -+#else - static inline void -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rel *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-iconv.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-iconv.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -Fixes -iconvconfig.c: In function 'write_output': -iconvconfig.c:973: error: invalid storage class for function 'name_insert' - ---- glibc-2.2.5/iconv/iconvconfig.c.old 2002-01-20 19:20:53.000000000 -0800 -+++ glibc-2.2.5/iconv/iconvconfig.c 2005-03-11 14:30:27.000000000 -0800 -@@ -969,7 +969,12 @@ - char tmpfname[sizeof (GCONV_MODULES_CACHE) + strlen (".XXXXXX")]; - - /* Function to insert the names. */ -- static void name_insert (const void *nodep, VISIT value, int level) -+#if __GNUC__ >= 4 -+ auto -+#else -+ static -+#endif -+ void name_insert (const void *nodep, VISIT value, int level) - { - struct name *name; - unsigned int idx; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-iconvdata.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-iconvdata.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -Fixes - -In file included from jis0208.c:23: -jis0208.h:32: error: array type has incomplete element type -when building with gcc-4.0 - -In file included from cp1258.c:869: -../iconv/skeleton.c: In function 'gconv': -../iconv/skeleton.c:323: error: invalid lvalue in increment - -In file included from cp1255.c:550: -../iconv/skeleton.c: In function 'gconv': -../iconv/skeleton.c:323: error: invalid lvalue in increment - -In file included from gb18030.c:22114: -../iconv/loop.c: In function 'from_gb18030': -../iconv/loop.c:282: error: invalid lvalue in increment -../iconv/loop.c: In function 'from_gb18030_single': -../iconv/loop.c:384: error: invalid lvalue in increment - ---- /home/dank/downloads/glibc-2.2.5/iconvdata/iso8859-1.c 2001-08-03 15:06:50.000000000 -0700 -+++ glibc-2.2.5/iconvdata/iso8859-1.c 2005-03-11 15:09:15.233602808 -0800 -@@ -35,7 +35,8 @@ - #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO - #define LOOPFCT FROM_LOOP - #define BODY \ -- *((uint32_t *) outptr)++ = *inptr++; -+ *((uint32_t *) outptr) = *inptr++; \ -+ outptr += sizeof (uint32_t); - #include - - ---- /home/dank/downloads/glibc-2.2.5/iconvdata/jis0208.h 2001-07-05 21:54:52.000000000 -0700 -+++ glibc-2.2.5/iconvdata/jis0208.h 2005-03-11 15:27:23.295192304 -0800 -@@ -24,15 +24,6 @@ - #include - #include - --/* Conversion table. */ --extern const uint16_t __jis0208_to_ucs[]; -- --extern const char __jisx0208_from_ucs4_lat1[256][2]; --extern const char __jisx0208_from_ucs4_greek[0xc1][2]; --extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; --extern const char __jisx0208_from_ucs_tab[][2]; -- -- - /* Struct for table with indeces in UCS mapping table. */ - struct jisx0208_ucs_idx - { -@@ -42,6 +33,15 @@ - }; - - -+/* Conversion table. */ -+extern const uint16_t __jis0208_to_ucs[]; -+ -+extern const char __jisx0208_from_ucs4_lat1[256][2]; -+extern const char __jisx0208_from_ucs4_greek[0xc1][2]; -+extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; -+extern const char __jisx0208_from_ucs_tab[][2]; -+ -+ - static inline uint32_t - jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) - { ---- /home/dank/downloads/glibc-2.2.5/iconvdata/cp1258.c 2001-07-05 21:54:49.000000000 -0700 -+++ glibc-2.2.5/iconvdata/cp1258.c 2005-03-11 15:41:44.953200376 -0800 -@@ -66,7 +66,8 @@ - if (__builtin_expect (outbuf + 4 <= outend, 1)) \ - { \ - /* Write out the last character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ -+ outbuf += sizeof (uint32_t); \ - data->__statep->__count = 0; \ - } \ - else \ ---- /home/dank/downloads/glibc-2.2.5/iconvdata/cp1255.c 2001-07-05 21:54:49.000000000 -0700 -+++ glibc-2.2.5/iconvdata/cp1255.c 2005-03-11 15:47:40.689120296 -0800 -@@ -65,7 +65,8 @@ - if (__builtin_expect (outbuf + 4 <= outend, 1)) \ - { \ - /* Write out the last character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ -+ outbuf += sizeof (uint32_t); \ - data->__statep->__count = 0; \ - } \ - else \ ---- /home/dank/downloads/glibc-2.2.5/iconvdata/gb18030.c 2001-08-03 15:06:47.000000000 -0700 -+++ glibc-2.2.5/iconvdata/gb18030.c 2005-03-11 15:54:59.060477720 -0800 -@@ -22108,7 +22108,8 @@ - } \ - } \ - \ -- *((uint32_t *) outptr)++ = ch; \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #include ---- /home/dank/downloads/glibc-2.2.5/iconvdata/iso-2022-cn-ext.c 2001-07-05 21:54:51.000000000 -0700 -+++ glibc-2.2.5/iconvdata/iso-2022-cn-ext.c 2005-03-11 15:55:42.002949472 -0800 -@@ -411,7 +411,8 @@ - } \ - } \ - \ -- *((uint32_t *) outptr)++ = ch; \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ - } - #define EXTRA_LOOP_DECLS , int *setp - #define INIT_PARAMS int set = (*setp >> 3) & CURRENT_MASK; \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-locale.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-locale.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -Fixes - -In file included from strcoll.c:101: -../locale/weight.h: In function 'strcoll': -../locale/weight.h:23: error: invalid storage class for function 'findidx' -make[2]: *** [/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-glibc/string/strcoll.o] Error 1 -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5/string' -make[1]: *** [string/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - -Discussed here -http://sources.redhat.com/ml/libc-hacker/2004-09/msg00015.html -the fix checked in to cvs seems to be -http://sources.redhat.com/ml/glibc-cvs/2004-q3/msg01071.html -but that fix doesn't support older gcc's, so I can't use it directly. - -Here's a fix the does work with older versions of gcc: - ---- glibc-2.2.5/locale/weight.h.old 2001-07-05 21:55:33.000000000 -0700 -+++ glibc-2.2.5/locale/weight.h 2005-03-10 16:07:46.669579888 -0800 -@@ -18,7 +18,12 @@ - 02111-1307 USA. */ - - /* Find index of weight. */ -+#if __GNUC__ >= 4 -+auto inline int32_t -+__attribute ((always_inline)) -+#else - static inline int32_t -+#endif - findidx (const unsigned char **cpp) - { - int_fast32_t i = table[*(*cpp)++]; ---- glibc-2.2.5/locale/weightwc.h.old 2001-08-06 21:26:15.000000000 -0700 -+++ glibc-2.2.5/locale/weightwc.h 2005-03-10 16:13:08.651631176 -0800 -@@ -18,7 +18,12 @@ - 02111-1307 USA. */ - - /* Find index of weight. */ -+#if __GNUC__ >= 4 -+auto inline int32_t -+__attribute ((always_inline)) -+#else - static inline int32_t -+#endif - findidx (const wint_t **cpp) - { - int32_t i; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-malloc.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-malloc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -Fixes -programs/ld-collate.c: In function 'obstack_int32_grow': -programs/ld-collate.c:48: error: invalid lvalue in increment -programs/ld-collate.c: In function 'obstack_int32_grow_fast': -programs/ld-collate.c:57: error: invalid lvalue in increment - -Change taken by eyeball from version 1.20 at -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/malloc/obstack.h?cvsroot=glibc - ---- /home/dank/downloads/glibc-2.2.5/malloc/obstack.h 2001-07-05 21:55:35.000000000 -0700 -+++ glibc-2.2.5/malloc/obstack.h 2005-03-11 16:12:16.175812224 -0800 -@@ -423,22 +423,29 @@ - ({ struct obstack *__o = (OBSTACK); \ - if (__o->next_free + sizeof (void *) > __o->chunk_limit) \ - _obstack_newchunk (__o, sizeof (void *)); \ -- *((void **)__o->next_free)++ = (datum); \ -- (void) 0; }) -+ obstack_ptr_grow_fast (__o, datum); }) - - # define obstack_int_grow(OBSTACK,datum) \ - __extension__ \ - ({ struct obstack *__o = (OBSTACK); \ - if (__o->next_free + sizeof (int) > __o->chunk_limit) \ - _obstack_newchunk (__o, sizeof (int)); \ -- *((int *)__o->next_free)++ = (datum); \ -+ obstack_int_grow_fast (__o, datum); }) -+ -+# define obstack_ptr_grow_fast(OBSTACK,aptr) \ -+__extension__ \ -+({ struct obstack *__o1 = (OBSTACK); \ -+ *(const void **) __o1->next_free = (aptr); \ -+ __o1->next_free += sizeof (const void *); \ - (void) 0; }) - --# define obstack_ptr_grow_fast(h,aptr) \ -- (*((void **) (h)->next_free)++ = (aptr)) -+# define obstack_int_grow_fast(OBSTACK,aint) \ -+__extension__ \ -+({ struct obstack *__o1 = (OBSTACK); \ -+ *(int *) __o1->next_free = (aint); \ -+ __o1->next_free += sizeof (int); \ -+ (void) 0; }) - --# define obstack_int_grow_fast(h,aint) \ -- (*((int *) (h)->next_free)++ = (aint)) - - # define obstack_blank(OBSTACK,length) \ - __extension__ \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-mipsel.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-mipsel.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -Message-ID: <424A8F67.7060307@kaear.co.uk> -Date: Wed, 30 Mar 2005 12:37:11 +0100 -From: Piete Sartain -To: crossgcc@sources.redhat.com -Subject: [Patch] CT 0.3 - glibc-2.2.5-allow-gcc-4.0-mipsel - - -I copied the relevant sections out of -http://kegel.com/crosstool/crosstool-0.29/patches/glibc-2.3-20050307/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch -for a mipsel target. - -The build still fails, but now with an assembler error at crtbegin.o. - -[---dank: judging from my old buildlogs, this should fix: - -In file included from dynamic-link.h:21, - from dl-reloc.c:153: -../sysdeps/mips/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/mips/dl-machine.h:477: error: invalid storage class for function 'elf_machine_rel' -../sysdeps/mips/dl-machine.h:539: error: invalid storage class for function 'elf_machine_rel_relative' -../sysdeps/mips/dl-machine.h:546: error: invalid storage class for function 'elf_machine_lazy_rel' -../sysdeps/mips/dl-machine.h:554: error: invalid storage class for function 'elf_machine_got_rel' -../sysdeps/mips/dl-machine.h:641: error: invalid storage class for function 'elf_machine_runtime_setup' -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-0.30/build/mipsel-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5/elf' -make[2]: *** [/home/dank/queue/jobdir.fast2/crosstool-0.30/build/mipsel-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-glibc/elf/dl-reloc.o] Error 1 -make[1]: *** [elf/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-0.30/build/mipsel-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 ----] - - ---- glibc-2.2.5/sysdeps/mips/dl-machine.h.old 2005-03-28 18:19:56.000000000 +0100 -+++ glibc-2.2.5/sysdeps/mips/dl-machine.h 2005-03-28 18:25:15.000000000 +0100 -@@ -534,14 +534,28 @@ - } - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, - ElfW(Addr) *const reloc_addr) - { - /* XXX Nothing to do. There is no relative relocation, right? */ - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - ElfW(Addr) l_addr, const ElfW(Rel) *reloc) - { -@@ -550,7 +564,14 @@ - - #ifndef RTLD_BOOTSTRAP - /* Relocate GOT. */ --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_got_rel (struct link_map *map, int lazy) - { - ElfW(Addr) *got; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-msort.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-msort.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -Fixes - -msort.c: In function 'msort_with_tmp': -msort.c:59: error: invalid lvalue in increment -msort.c:59: error: invalid lvalue in increment -msort.c:64: error: invalid lvalue in increment -msort.c:64: error: invalid lvalue in increment -make[2]: *** [/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-glibc/stdlib/msort.o] Error 1 -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5/stdlib' -make[1]: *** [stdlib/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - -when building glibc-2.2.5 with gcc-3.4. - -Taken from ../glibc-2.3.2/glibc-2.3.2-allow-gcc-3.5-msort.patch -and rediffed. - ---- glibc-2.2.5/stdlib/msort.c.old 2001-07-05 21:55:41.000000000 -0700 -+++ glibc-2.2.5/stdlib/msort.c 2005-03-10 08:24:24.152204976 -0800 -@@ -1,6 +1,6 @@ - /* An alternative to qsort, with an identical interface. - This file is part of the GNU C Library. -- Copyright (C) 1992, 1995-1997, 1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1992, 1995-1997, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. - Written by Mike Haertel, September 1988. - - The GNU C Library is free software; you can redistribute it and/or -@@ -56,12 +56,16 @@ - if ((*cmp) (b1, b2) <= 0) - { - --n1; -- *((op_t *) tmp)++ = *((op_t *) b1)++; -+ *((op_t *) tmp) = *((op_t *) b1); -+ tmp += sizeof (op_t); -+ b1 += sizeof (op_t); - } - else - { - --n2; -- *((op_t *) tmp)++ = *((op_t *) b2)++; -+ *((op_t *) tmp) = *((op_t *) b2); -+ tmp += sizeof (op_t); -+ b2 += sizeof (op_t); - } - } - else diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-powerpc-procfs.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-powerpc-procfs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -(See similar patch for glibc-2.3.3) - -This fix discussed here: -http://gcc.gnu.org/ml/gcc/2005-01/msg00509.html - -Fixes - -In file included from ../linuxthreads_db/proc_service.h:20, - from ../linuxthreads_db/thread_dbP.h:6, - from internals.h:36, - from attr.c:23: -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:53: error: syntax error before 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:53: warning: type defaults to 'int' in declaration of 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:53: warning: data definition has no type or storage class -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:54: error: syntax error before 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:54: warning: type defaults to 'int' in declaration of 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:54: warning: data definition has no type or storage class -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-0.30/build/powerpc-405-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/glibc-2.2.5/linuxthreads' -make[2]: *** [/home/dank/queue/jobdir.fast2/crosstool-0.30/build/powerpc-405-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-glibc/linuxthreads/attr.o] Error 1 - -From: Martin Egholm Nielsen martin at egholm-nielsen dot dk -To: crossgcc at sources dot redhat dot com -Date: Thu, 24 Mar 2005 18:40:27 +0100 -Subject: [Patch] CT 0.29 - glibc-2.2.5-allow-gcc-4.0-powerpc-procfs - -Hi Dan, - -I had to add the following patch in order to make CT 0.29 and glibc -2.2.5 compile with gcc 4.0 (20050305) and Kernel 2.4.20... - -// Martin - ---- glibc-2.2.5/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h.old 2005-03-24 13:11:39.746062400 +0100 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2005-03-24 13:15:11.810996800 +0100 -@@ -42,15 +42,10 @@ - typedef double elf_fpreg_t; - typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; - --/* gcc 3.1 and newer support __uint128_t. */ --#if !__GNUC_PREREQ(3,1) --typedef struct { -- unsigned long u[4]; --} __attribute((aligned(16))) __uint128_t; --#endif -- - /* Altivec registers */ --typedef __uint128_t elf_vrreg_t; -+typedef struct { -+ unsigned int u[4]; -+} __attribute__ ((aligned (16))) elf_vrreg_t; - typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; - - struct elf_siginfo - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-powerpc.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-powerpc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -In file included from dynamic-link.h:21, - from dl-reloc.c:153: -../sysdeps/powerpc/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/powerpc/dl-machine.h:399: error: invalid storage class for function 'elf_machine_rela_relative' -make[2]: *** [/home/dank/queue/jobdir.dual2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.2.5/build-glibc/elf/dl-reloc.o] Error 1 ---- glibc-2.2.5/sysdeps/powerpc/dl-machine.h.old Thu Mar 17 13:28:17 2005 -+++ glibc-2.2.5/sysdeps/powerpc/dl-machine.h Thu Mar 17 13:29:03 2005 -@@ -393,7 +393,14 @@ - reloc_addr, finaladdr, rinfo); - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - Elf32_Addr *const reloc_addr) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-sunrpc.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-allow-gcc-4.0-sunrpc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,221 +0,0 @@ -[Taken from ../glibc-2.3.2/glibc-2.3.2-allow-gcc-3.4-sunrpc.patch, -rediffed, and with a fix for sunrpc/auth_none.c that was -inexplicably not included in the original patch.] - -Fixes - -auth_none.c: In function 'authnone_create': -auth_none.c:83: error: invalid lvalue in assignment -clnt_perr.c: In function '_buf': -clnt_perr.c:68: error: invalid lvalue in assignment -clnt_raw.c: In function 'clntraw_create': -clnt_raw.c:103: error: invalid lvalue in assignment -clnt_simp.c: In function 'callrpc': -clnt_simp.c:78: error: invalid lvalue in assignment -etc. - -building glibc-2.2.5 with gcc-4.0. - ---- - -http://sources.redhat.com/ml/libc-hacker/2004-02/msg00005.html -[Also in CVS, but the original patch is easier to get.] - -Fixes errors like - -clnt_perr.c: In function `_buf': -clnt_perr.c:67: error: invalid lvalue in assignment - -when building with gcc-3.5. - -To: libc-hacker at sources dot redhat dot com -Subject: Fix cast as lvalue in sunrpc -From: Andreas Schwab -X-Yow: SHHHH!! I hear SIX TATTOOED TRUCK-DRIVERS tossing ENGINE BLOCKS - into empty OIL DRUMS dot dot -Date: Sun, 08 Feb 2004 17:38:31 +0100 -Message-ID: - -This fixes the uses of casts as lvalue in the sunrpc code. - -Andreas. - -2004-02-08 Andreas Schwab - - * include/rpc/rpc.h: Declare thread variables with their correct - type. - * sunrpc/clnt_perr.c: Don't cast thread variables. - * sunrpc/clnt_raw.c: Likewise. - * sunrpc/clnt_simp.c: Likewise. - * sunrpc/key_call.c: Likewise. - * sunrpc/svcauth_des.c: Likewise. - * sunrpc/svc.c: Likewise. - * sunrpc/svc_raw.c: Likewise. - * sunrpc/svc_simple.c: Likewise. - -diff -ur glibc-2.2.5/include/rpc/rpc.h glibc-2.2.5-patched/include/rpc/rpc.h ---- glibc-2.2.5/include/rpc/rpc.h 2001-03-25 21:11:32.000000000 -0800 -+++ glibc-2.2.5-patched/include/rpc/rpc.h 2005-03-11 13:18:29.810860624 -0800 -@@ -18,24 +18,24 @@ - - void *authnone_private_s; /* auth_none.c */ - -- void *clnt_perr_buf_s; /* clnt_perr.c */ -+ char *clnt_perr_buf_s; /* clnt_perr.c */ - -- void *clntraw_private_s; /* clnt_raw.c */ -+ struct clntraw_private_s *clntraw_private_s; /* clnt_raw.c */ - -- void *callrpc_private_s; /* clnt_simp.c */ -+ struct callrpc_private_s *callrpc_private_s; /* clnt_simp.c */ - -- void *key_call_private_s; /* key_call.c */ -+ struct key_call_private *key_call_private_s; /* key_call.c */ - -- void *authdes_cache_s; /* svcauth_des.c */ -- void *authdes_lru_s; /* svcauth_des.c */ -+ struct cache_entry *authdes_cache_s; /* svcauth_des.c */ -+ int *authdes_lru_s; /* svcauth_des.c */ - -- void *svc_xports_s; /* svc.c */ -- void *svc_head_s; /* svc.c */ -+ SVCXPRT **svc_xports_s; /* svc.c */ -+ struct svc_callout *svc_head_s; /* svc.c */ - -- void *svcraw_private_s; /* svc_raw.c */ -+ struct svcraw_private_s *svcraw_private_s; /* svc_raw.c */ - -- void *svcsimple_proglst_s; /* svc_simple.c */ -- void *svcsimple_transp_s; /* svc_simple.c */ -+ struct proglst_ *svcsimple_proglst_s; /* svc_simple.c */ -+ SVCXPRT *svcsimple_transp_s; /* svc_simple.c */ - }; - - extern struct rpc_thread_variables *__rpc_thread_variables(void) ---- glibc-2.2.5/sunrpc/auth_none.c.old 2005-03-10 16:26:53.874178280 -0800 -+++ glibc-2.2.5/sunrpc/auth_none.c 2005-03-10 16:34:24.551664888 -0800 -@@ -62,7 +62,7 @@ - u_int mcnt; - }; - #ifdef _RPC_THREAD_SAFE_ --#define authnone_private ((struct authnone_private_s *)RPC_THREAD_VARIABLE(authnone_private_s)) -+#define authnone_private RPC_THREAD_VARIABLE(authnone_private_s) - #else - static struct authnone_private_s *authnone_private; - #endif -diff -ur glibc-2.2.5/sunrpc/clnt_perr.c glibc-2.2.5-patched/sunrpc/clnt_perr.c ---- glibc-2.2.5/sunrpc/clnt_perr.c 2001-08-16 21:48:31.000000000 -0700 -+++ glibc-2.2.5-patched/sunrpc/clnt_perr.c 2005-03-11 13:18:29.812860320 -0800 -@@ -56,7 +56,7 @@ - * buf variable in a few functions. Overriding a global variable - * with a local variable of the same name is a bad idea, anyway. - */ --#define buf ((char *)RPC_THREAD_VARIABLE(clnt_perr_buf_s)) -+#define buf RPC_THREAD_VARIABLE(clnt_perr_buf_s) - #else - static char *buf; - #endif -diff -ur glibc-2.2.5/sunrpc/clnt_raw.c glibc-2.2.5-patched/sunrpc/clnt_raw.c ---- glibc-2.2.5/sunrpc/clnt_raw.c 2001-03-20 10:34:22.000000000 -0800 -+++ glibc-2.2.5-patched/sunrpc/clnt_raw.c 2005-03-11 13:18:29.813860168 -0800 -@@ -61,7 +61,7 @@ - u_int mcnt; - }; - #ifdef _RPC_THREAD_SAFE_ --#define clntraw_private ((struct clntraw_private_s *)RPC_THREAD_VARIABLE(clntraw_private_s)) -+#define clntraw_private RPC_THREAD_VARIABLE(clntraw_private_s) - #else - static struct clntraw_private_s *clntraw_private; - #endif -diff -ur glibc-2.2.5/sunrpc/clnt_simp.c glibc-2.2.5-patched/sunrpc/clnt_simp.c ---- glibc-2.2.5/sunrpc/clnt_simp.c 2001-08-19 23:28:21.000000000 -0700 -+++ glibc-2.2.5-patched/sunrpc/clnt_simp.c 2005-03-11 13:18:29.814860016 -0800 -@@ -55,7 +55,7 @@ - char *oldhost; - }; - #ifdef _RPC_THREAD_SAFE_ --#define callrpc_private ((struct callrpc_private_s *)RPC_THREAD_VARIABLE(callrpc_private_s)) -+#define callrpc_private RPC_THREAD_VARIABLE(callrpc_private_s) - #else - static struct callrpc_private_s *callrpc_private; - #endif -diff -ur glibc-2.2.5/sunrpc/key_call.c glibc-2.2.5-patched/sunrpc/key_call.c ---- glibc-2.2.5/sunrpc/key_call.c 2001-03-20 10:34:22.000000000 -0800 -+++ glibc-2.2.5-patched/sunrpc/key_call.c 2005-03-11 13:18:29.816859712 -0800 -@@ -360,7 +360,7 @@ - uid_t uid; /* user-id at last authorization */ - }; - #ifdef _RPC_THREAD_SAFE_ --#define key_call_private_main ((struct key_call_private *)RPC_THREAD_VARIABLE(key_call_private_s)) -+#define key_call_private_main RPC_THREAD_VARIABLE(key_call_private_s) - #else - static struct key_call_private *key_call_private_main; - #endif -diff -ur glibc-2.2.5/sunrpc/svcauth_des.c glibc-2.2.5-patched/sunrpc/svcauth_des.c ---- glibc-2.2.5/sunrpc/svcauth_des.c 2001-08-19 23:37:09.000000000 -0700 -+++ glibc-2.2.5-patched/sunrpc/svcauth_des.c 2005-03-11 13:18:29.821858952 -0800 -@@ -72,8 +72,8 @@ - char *localcred; /* generic local credential */ - }; - #ifdef _RPC_THREAD_SAFE_ --#define authdes_cache ((struct cache_entry *)RPC_THREAD_VARIABLE(authdes_cache_s)) --#define authdes_lru ((int *)RPC_THREAD_VARIABLE(authdes_lru_s)) -+#define authdes_cache RPC_THREAD_VARIABLE(authdes_cache_s) -+#define authdes_lru RPC_THREAD_VARIABLE(authdes_lru_s) - #else - static struct cache_entry *authdes_cache; - static int *authdes_lru; -diff -ur glibc-2.2.5/sunrpc/svc.c glibc-2.2.5-patched/sunrpc/svc.c ---- glibc-2.2.5/sunrpc/svc.c 2001-03-20 10:34:22.000000000 -0800 -+++ glibc-2.2.5-patched/sunrpc/svc.c 2005-03-11 13:18:29.817859560 -0800 -@@ -44,7 +44,7 @@ - #include - - #ifdef _RPC_THREAD_SAFE_ --#define xports ((SVCXPRT **)RPC_THREAD_VARIABLE(svc_xports_s)) -+#define xports RPC_THREAD_VARIABLE(svc_xports_s) - #else - static SVCXPRT **xports; - #endif -@@ -63,7 +63,7 @@ - void (*sc_dispatch) (struct svc_req *, SVCXPRT *); - }; - #ifdef _RPC_THREAD_SAFE_ --#define svc_head ((struct svc_callout *)RPC_THREAD_VARIABLE(svc_head_s)) -+#define svc_head RPC_THREAD_VARIABLE(svc_head_s) - #else - static struct svc_callout *svc_head; - #endif -diff -ur glibc-2.2.5/sunrpc/svc_raw.c glibc-2.2.5-patched/sunrpc/svc_raw.c ---- glibc-2.2.5/sunrpc/svc_raw.c 2001-03-20 10:34:22.000000000 -0800 -+++ glibc-2.2.5-patched/sunrpc/svc_raw.c 2005-03-11 13:18:29.818859408 -0800 -@@ -54,7 +54,7 @@ - char verf_body[MAX_AUTH_BYTES]; - }; - #ifdef _RPC_THREAD_SAFE_ --#define svcraw_private ((struct svcraw_private_s *)RPC_THREAD_VARIABLE(svcraw_private_s)) -+#define svcraw_private RPC_THREAD_VARIABLE(svcraw_private_s) - #else - static struct svcraw_private_s *svcraw_private; - #endif -diff -ur glibc-2.2.5/sunrpc/svc_simple.c glibc-2.2.5-patched/sunrpc/svc_simple.c ---- glibc-2.2.5/sunrpc/svc_simple.c 2001-08-17 00:16:04.000000000 -0700 -+++ glibc-2.2.5-patched/sunrpc/svc_simple.c 2005-03-11 13:18:29.820859104 -0800 -@@ -62,7 +62,7 @@ - struct proglst_ *p_nxt; - }; - #ifdef _RPC_THREAD_SAFE_ --#define proglst ((struct proglst_ *)RPC_THREAD_VARIABLE(svcsimple_proglst_s)) -+#define proglst RPC_THREAD_VARIABLE(svcsimple_proglst_s) - #else - static struct proglst_ *proglst; - #endif -@@ -70,7 +70,7 @@ - - static void universal (struct svc_req *rqstp, SVCXPRT *transp_s); - #ifdef _RPC_THREAD_SAFE_ --#define transp ((SVCXPRT *)RPC_THREAD_VARIABLE(svcsimple_transp_s)) -+#define transp RPC_THREAD_VARIABLE(svcsimple_transp_s) - #else - static SVCXPRT *transp; - #endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-alpha-pwrite64.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-alpha-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -Fix for this error: - -../sysdeps/unix/sysv/linux/pread.c: In function `__libc_pread': -../sysdeps/unix/sysv/linux/pread.c:52: error: `__NR_pread' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/pread.c:52: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/pread.c:52: error: for each function it appears in.) -make[2]: *** [/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/build-glibc/posix/pread.o] Error 1 -make[2]: Leaving directory `/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5/posix' -make[1]: *** [posix/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/crosstool-0.28/build/alpha-unknown-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - -[ Same as glibc-2.3.2-alpha-pwrite.patch except for copyright date ] - -extracted from GLIBC CVS by Dan Kegel -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.14&r2=1.15&cvsroot=glibc' -(to match context of...) -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.16&r2=1.17&cvsroot=glibc' -and rediffed. - -cf. -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00038.html - -Originally thought we needed this hunk, too: -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00037.html -but it seems the sysdep.h change is sufficient, and works better -when compiling against linux-2.4. - -=================================================================== ---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h.old 2004-05-24 22:21:44.000000000 -0700 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h 2004-05-24 22:22:48.000000000 -0700 -@@ -1,3 +1,3 @@ --/* Copyright (C) 1992, 1993, 1995, 1996, 1997 Free Software Foundation, Inc. -+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, , August 1995. -@@ -60,6 +60,21 @@ - #define __NR_osf_getsysinfo 256 - #define __NR_osf_setsysinfo 257 - -+/* Help old kernel headers where particular syscalls are not available. */ -+#ifndef __NR_semtimedop -+# define __NR_semtimedop 423 -+#endif -+ -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - /* - * In order to get the hidden arguments for rt_sigaction set up - * properly, we need to call the assembly version. Detect this in the diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-arm-pwrite64.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-arm-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Should fix - -../sysdeps/unix/sysv/linux/pread.c: In function `__libc_pread': -../sysdeps/unix/sysv/linux/pread.c:52: error: `__NR_pread' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/pread.c:52: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/pread.c:52: error: for each function it appears in.) -make[2]: *** [/home/dank/crosstool-0.28/build/arm-9tdmi-linux-gnu/gcc-3.4.1-glibc-2.2.5/build-glibc/posix/pread.o] Error 1 -make[2]: Leaving directory `/home/dank/crosstool-0.28/build/arm-9tdmi-linux-gnu/gcc-3.4.1-glibc-2.2.5/glibc-2.2.5/posix' -make[1]: *** [posix/subdir_lib] Error 2 - -Copied from similar patch for alpha. - ---- glibc-2.2.5-orig/sysdeps/unix/sysv/linux/arm/sysdep.h 2001-07-05 21:56:13.000000000 -0700 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/arm/sysdep.h 2004-08-07 10:45:26.000000000 -0700 -@@ -32,6 +32,15 @@ - #define SWI_BASE (0x900000) - #define SYS_ify(syscall_name) (__NR_##syscall_name) - -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif - - #ifdef __ASSEMBLER__ - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-crosstest.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-crosstest.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -Fixes errors like - /build-glibc/dlfcn/glrefmain: cannot load `glreflib1.so' -in glibc regression test - ---- glibc-2.2.5/dlfcn/Makefile.old Thu Jul 24 16:30:20 2003 -+++ glibc-2.2.5/dlfcn/Makefile Thu Jul 24 17:25:01 2003 -@@ -60,6 +60,8 @@ - test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names))) - $(test-modules): $(objpfx)%.so: $(objpfx)%.os - $(build-module) -+# without following rule, test-modules don't get built when cross-compiling -+tests: $(test-modules) - - $(objpfx)glrefmain: $(libdl) - $(objpfx)glrefmain.out: $(objpfx)glrefmain \ ---- glibc-2.2.5/elf/Makefile.old Thu Jul 24 18:17:12 2003 -+++ glibc-2.2.5/elf/Makefile Thu Jul 24 18:18:58 2003 -@@ -263,6 +263,9 @@ - test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names)))) - generated += $(addsuffix .so,$(strip $(modules-names))) - -+# without following rule, test-modules don't get built when cross-compiling -+tests: $(test-modules) -+ - ifeq (yes,$(build-shared)) - ifeq ($(cross-compiling),no) - tests: $(objpfx)tst-pathopt.out diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-crossyes.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-crossyes.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- glibc-2.2.5/configure.old 2003-05-30 21:51:13.000000000 -0700 -+++ glibc-2.2.5/configure 2003-05-30 21:51:23.000000000 -0700 -@@ -1738,7 +1738,7 @@ - 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 -+ ac_cv_prog_cc_cross=yes - else - ac_cv_prog_cc_cross=yes - fi diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-cygwin.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.3.2 on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -forward ported to glibc-2.3.2. -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - - -diff -Naur from-cvs/Makeconfig patched/Makeconfig ---- from-cvs/Makeconfig Fri Jan 11 14:40:35 2002 -+++ patched/Makeconfig Fri Jan 11 15:07:30 2002 -@@ -439,13 +439,13 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # This is how to find at build-time things that will be installed there. - rpath-dirs = math elf dlfcn nss nis rt resolv crypt - else - ifneq (,$(findstring aix,$(config-os))) - link-libc = $(common-objpfx)libc.a \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - rpath-dirs = math dlfcn nss nis rt resolv crypt - endif - endif -@@ -649,7 +649,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -703,14 +703,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -+libtype.oST = lib%_nonshared.a - endif - - -diff -Naur from-cvs/Makerules patched/Makerules ---- from-cvs/Makerules Fri Jan 11 14:40:42 2002 -+++ patched/Makerules Fri Jan 11 15:06:00 2002 -@@ -361,7 +361,7 @@ - # Bounded pointer thunks are only built for *.ob - elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) \ - $(elide-bp-thunks) - elide-routines.os += $(static-only-routines) $(elide-bp-thunks) -@@ -842,14 +842,14 @@ - # of the files are taken by the linker. - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ - echo ' Use the shared library, but some functions are only in';\ - echo ' the static library, so try that secondarily. */';\ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-hhl-powerpc-fpu.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1134 +0,0 @@ -# See http://sources.redhat.com/ml/crossgcc/2002-05/msg00132.html -# This patch is taken directly from the Montavista Hard Hat Linux 2.0 source RPMs, -# but has been rediffed against glibc-2.2.5 - -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Dist glibc-2.2.5/sysdeps/powerpc/Dist ---- glibc-2.2.5.old/sysdeps/powerpc/Dist Fri Jun 30 23:30:21 2000 -+++ glibc-2.2.5/sysdeps/powerpc/Dist Thu Jul 10 11:43:17 2003 -@@ -1,9 +1,6 @@ - dl-machine.c - dl-start.S - ppc-mcount.S --fe_nomask.c --fprrest.S --fprsave.S - gprsave1.S - gprsave0.S - gprrest1.S -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Makefile glibc-2.2.5/sysdeps/powerpc/Makefile ---- glibc-2.2.5.old/sysdeps/powerpc/Makefile Mon Nov 27 15:32:47 2000 -+++ glibc-2.2.5/sysdeps/powerpc/Makefile Thu Jul 10 11:43:17 2003 -@@ -3,16 +3,12 @@ - +cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc - asm-CPPFLAGS += -Wa,-mppc - --ifeq ($(subdir),math) --libm-support += fenv_const fe_nomask --endif -- - ifeq ($(subdir),gmon) - sysdep_routines += ppc-mcount - endif - - ifeq ($(subdir),misc) --sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 fprsave fprrest -+sysdep_routines += gprsave0 gprrest0 gprsave1 gprrest1 - endif - - # On PPC, -fpic works until the GOT contains 2^15 bytes, and possibly -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/Versions glibc-2.2.5/sysdeps/powerpc/Versions ---- glibc-2.2.5.old/sysdeps/powerpc/Versions Mon Feb 28 13:27:57 2000 -+++ glibc-2.2.5/sysdeps/powerpc/Versions Thu Jul 10 11:43:17 2003 -@@ -1,8 +1,4 @@ - libm { -- GLIBC_2.1 { -- # symbols used in macros from sysdeps/powerpc/bits/fenv.h -- __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env; -- } - GLIBC_2.2 { - # Special functions to save and restore registers used by the - # runtime libraries. -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S glibc-2.2.5/sysdeps/powerpc/__longjmp.S ---- glibc-2.2.5.old/sysdeps/powerpc/__longjmp.S Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/__longjmp.S Thu Jul 10 11:43:17 2003 -@@ -24,6 +24,8 @@ - #include - #include - -+/* The FPU loads have been removed from this file - see fpu/__longjmp.S */ -+ - ENTRY (BP_SYM (__longjmp)) - CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE) - -@@ -31,44 +33,26 @@ - lwz r2,(JB_GPR2*4)(r3) - lwz r0,(JB_LR*4)(r3) - lwz r14,((JB_GPRS+0)*4)(r3) -- lfd fp14,((JB_FPRS+0*2)*4)(r3) - lwz r15,((JB_GPRS+1)*4)(r3) -- lfd fp15,((JB_FPRS+1*2)*4)(r3) - lwz r16,((JB_GPRS+2)*4)(r3) -- lfd fp16,((JB_FPRS+2*2)*4)(r3) - lwz r17,((JB_GPRS+3)*4)(r3) -- lfd fp17,((JB_FPRS+3*2)*4)(r3) - lwz r18,((JB_GPRS+4)*4)(r3) -- lfd fp18,((JB_FPRS+4*2)*4)(r3) - lwz r19,((JB_GPRS+5)*4)(r3) -- lfd fp19,((JB_FPRS+5*2)*4)(r3) - lwz r20,((JB_GPRS+6)*4)(r3) -- lfd fp20,((JB_FPRS+6*2)*4)(r3) - mtlr r0 - lwz r21,((JB_GPRS+7)*4)(r3) -- lfd fp21,((JB_FPRS+7*2)*4)(r3) - lwz r22,((JB_GPRS+8)*4)(r3) -- lfd fp22,((JB_FPRS+8*2)*4)(r3) - lwz r0,(JB_CR*4)(r3) - lwz r23,((JB_GPRS+9)*4)(r3) -- lfd fp23,((JB_FPRS+9*2)*4)(r3) - lwz r24,((JB_GPRS+10)*4)(r3) -- lfd fp24,((JB_FPRS+10*2)*4)(r3) - lwz r25,((JB_GPRS+11)*4)(r3) -- lfd fp25,((JB_FPRS+11*2)*4)(r3) - mtcrf 0xFF,r0 - lwz r26,((JB_GPRS+12)*4)(r3) -- lfd fp26,((JB_FPRS+12*2)*4)(r3) - lwz r27,((JB_GPRS+13)*4)(r3) -- lfd fp27,((JB_FPRS+13*2)*4)(r3) - lwz r28,((JB_GPRS+14)*4)(r3) -- lfd fp28,((JB_FPRS+14*2)*4)(r3) - lwz r29,((JB_GPRS+15)*4)(r3) -- lfd fp29,((JB_FPRS+15*2)*4)(r3) - lwz r30,((JB_GPRS+16)*4)(r3) -- lfd fp30,((JB_FPRS+16*2)*4)(r3) - lwz r31,((JB_GPRS+17)*4)(r3) -- lfd fp31,((JB_FPRS+17*2)*4)(r3) - mr r3,r4 - blr - END (BP_SYM (__longjmp)) -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h ---- glibc-2.2.5.old/sysdeps/powerpc/bits/setjmp.h Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/bits/setjmp.h Thu Jul 10 11:43:17 2003 -@@ -17,6 +17,7 @@ - 02111-1307 USA. */ - - /* Define the machine-dependent type `jmp_buf'. PowerPC version. */ -+/* For processors without floating point. */ - - #ifndef _SETJMP_H - # error "Never include directly; use instead." -@@ -33,12 +34,11 @@ - # define JB_LR 2 /* The address we will return to */ - # define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */ - # define JB_CR 21 /* Condition code registers. */ --# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */ --# define JB_SIZE (58*4) -+# define JB_SIZE (22*4) - #endif - - #ifndef _ASM --typedef long int __jmp_buf[58]; -+typedef long int __jmp_buf[22]; - #endif - - /* Test if longjmp to JMPBUF would unwind the frame -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c ---- glibc-2.2.5.old/sysdeps/powerpc/fclrexcpt.c Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/fclrexcpt.c Wed Dec 31 16:00:00 1969 -@@ -1,48 +0,0 @@ --/* Clear given exceptions in current floating-point environment. -- Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#include -- --#undef feclearexcept --int --__feclearexcept (int excepts) --{ -- fenv_union_t u; -- -- /* Get the current state. */ -- u.fenv = fegetenv_register (); -- -- /* Clear the relevant bits. */ -- u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID) -- | (excepts & FPSCR_STICKY_BITS)); -- -- /* Put the new state in effect. */ -- fesetenv_register (u.fenv); -- -- /* Success. */ -- return 0; --} -- --#include --#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) --strong_alias (__feclearexcept, __old_feclearexcept) --compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1); --#endif -- --versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2); -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fe_nomask.c ---- glibc-2.2.5.old/sysdeps/powerpc/fe_nomask.c Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/fe_nomask.c Wed Dec 31 16:00:00 1969 -@@ -1,32 +0,0 @@ --/* Procedure definition for FE_NOMASK_ENV. -- Copyright (C) 1997 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#include --#include -- --/* This is presently a stub, until it's decided how the kernels should -- support this. */ -- --const fenv_t * --__fe_nomask_env(void) --{ -- __set_errno (ENOSYS); -- return FE_ENABLED_ENV; --} --stub_warning (__fe_nomask_env) -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprrest.S glibc-2.2.5/sysdeps/powerpc/fprrest.S ---- glibc-2.2.5.old/sysdeps/powerpc/fprrest.S Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/fprrest.S Wed Dec 31 16:00:00 1969 -@@ -1,94 +0,0 @@ --/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --/* -- Floating Point Registers (FPRs) restore routine --*/ -- --#include -- --ENTRY(_restfpr_all) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14) --C_TEXT(_restf14): --C_TEXT(_restfpr_14): lfd fp14,-144(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15) --C_TEXT(_restf15): --C_TEXT(_restfpr_15): lfd fp15,-136(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16) --C_TEXT(_restf16): --C_TEXT(_restfpr_16): lfd fp16,-128(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17) --C_TEXT(_restf17): --C_TEXT(_restfpr_17): lfd fp17,-120(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18) --C_TEXT(_restf18): --C_TEXT(_restfpr_18): lfd fp18,-112(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19) --C_TEXT(_restf19): --C_TEXT(_restfpr_19): lfd fp19,-104(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20) --C_TEXT(_restf20): --C_TEXT(_restfpr_20): lfd fp20,-96(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21) --C_TEXT(_restf21): --C_TEXT(_restfpr_21): lfd fp21,-88(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22) --C_TEXT(_restf22): --C_TEXT(_restfpr_22): lfd fp22,-80(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23) --C_TEXT(_restf23): --C_TEXT(_restfpr_23): lfd fp23,-72(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24) --C_TEXT(_restf24): --C_TEXT(_restfpr_24): lfd fp24,-64(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25) --C_TEXT(_restf25): --C_TEXT(_restfpr_25): lfd fp25,-56(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26) --C_TEXT(_restf26): --C_TEXT(_restfpr_26): lfd fp26,-48(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27) --C_TEXT(_restf27): --C_TEXT(_restfpr_27): lfd fp27,-40(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28) --C_TEXT(_restf28): --C_TEXT(_restfpr_28): lfd fp28,-32(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29) --C_TEXT(_restf29): --C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame -- lfd fp29,-24(r1) #restore f29 -- mtlr r0 #move return address to LR -- lfd fp30,-16(r1) #restore f30 -- lfd fp31,-8(r1) #restore f31 -- blr #return -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fprsave.S glibc-2.2.5/sysdeps/powerpc/fprsave.S ---- glibc-2.2.5.old/sysdeps/powerpc/fprsave.S Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/fprsave.S Wed Dec 31 16:00:00 1969 -@@ -1,93 +0,0 @@ --/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --/* -- Floating Point Registers (FPRs) save routine --*/ -- --#include -- --ENTRY(_savefpr_all) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14) --C_TEXT(_savef14): --C_TEXT(_savefpr_14): stfd fp14,-144(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15) --C_TEXT(_savef15): --C_TEXT(_savefpr_15): stfd fp15,-136(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16) --C_TEXT(_savef16): --C_TEXT(_savefpr_16): stfd fp16,-128(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17) --C_TEXT(_savef17): --C_TEXT(_savefpr_17): stfd fp17,-120(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18) --C_TEXT(_savef18): --C_TEXT(_savefpr_18): stfd fp18,-112(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19) --C_TEXT(_savef19): --C_TEXT(_savefpr_19): stfd fp19,-104(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20) --C_TEXT(_savef20): --C_TEXT(_savefpr_20): stfd fp20,-96(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21) --C_TEXT(_savef21): --C_TEXT(_savefpr_21): stfd fp21,-88(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22) --C_TEXT(_savef22): --C_TEXT(_savefpr_22): stfd fp22,-80(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23) --C_TEXT(_savef23): --C_TEXT(_savefpr_23): stfd fp23,-72(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24) --C_TEXT(_savef24): --C_TEXT(_savefpr_24): stfd fp24,-64(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25) --C_TEXT(_savef25): --C_TEXT(_savefpr_25): stfd fp25,-56(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26) --C_TEXT(_savef26): --C_TEXT(_savefpr_26): stfd fp26,-48(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27) --C_TEXT(_savef27): --C_TEXT(_savefpr_27): stfd fp27,-40(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28) --C_TEXT(_savef28): --C_TEXT(_savefpr_28): stfd fp28,-32(r1) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29) -- ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29) --C_TEXT(_savef29): --C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29 -- stfd fp30,-16(r1) #save f30 -- stfd fp31,-8(r1) #save f31 -- stw r0,8(r1) #save LR in callers frame -- blr #return -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist glibc-2.2.5/sysdeps/powerpc/fpu/Dist ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/Dist Wed Jan 26 17:48:02 2000 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/Dist Thu Jul 10 11:43:17 2003 -@@ -1,3 +1,6 @@ -+fe_nomask.c -+fprrest.S -+fprsave.S - fenv_const.c - fenv_libc.h - t_sqrt.c -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile glibc-2.2.5/sysdeps/powerpc/fpu/Makefile ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/Makefile Mon Oct 11 15:29:00 1999 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/Makefile Thu Jul 10 11:43:17 2003 -@@ -1,3 +1,7 @@ - ifeq ($(subdir),math) - libm-support += fenv_const fe_nomask t_sqrt - endif -+ -+ifeq ($(subdir),misc) -+sysdep_routines += fprsave fprrest -+endif -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions glibc-2.2.5/sysdeps/powerpc/fpu/Versions ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/Versions Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/Versions Thu Jul 10 11:43:17 2003 -@@ -0,0 +1,6 @@ -+libm { -+ GLIBC_2.1 { -+ # symbols used in macros from sysdeps/powerpc/bits/fenv.h -+ __fe_dfl_env; __fe_enabled_env; __fe_nonieee_env; __fe_nomask_env; -+ } -+} -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/__longjmp.S Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/__longjmp.S Thu Jul 10 11:43:17 2003 -@@ -0,0 +1,74 @@ -+/* longjmp for PowerPC. -+ Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+#include -+#define _ASM -+#define _SETJMP_H -+#include -+#include -+#include -+ -+ENTRY (BP_SYM (__longjmp)) -+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE) -+ -+ lwz r1,(JB_GPR1*4)(r3) -+ lwz r2,(JB_GPR2*4)(r3) -+ lwz r0,(JB_LR*4)(r3) -+ lwz r14,((JB_GPRS+0)*4)(r3) -+ lfd fp14,((JB_FPRS+0*2)*4)(r3) -+ lwz r15,((JB_GPRS+1)*4)(r3) -+ lfd fp15,((JB_FPRS+1*2)*4)(r3) -+ lwz r16,((JB_GPRS+2)*4)(r3) -+ lfd fp16,((JB_FPRS+2*2)*4)(r3) -+ lwz r17,((JB_GPRS+3)*4)(r3) -+ lfd fp17,((JB_FPRS+3*2)*4)(r3) -+ lwz r18,((JB_GPRS+4)*4)(r3) -+ lfd fp18,((JB_FPRS+4*2)*4)(r3) -+ lwz r19,((JB_GPRS+5)*4)(r3) -+ lfd fp19,((JB_FPRS+5*2)*4)(r3) -+ lwz r20,((JB_GPRS+6)*4)(r3) -+ lfd fp20,((JB_FPRS+6*2)*4)(r3) -+ mtlr r0 -+ lwz r21,((JB_GPRS+7)*4)(r3) -+ lfd fp21,((JB_FPRS+7*2)*4)(r3) -+ lwz r22,((JB_GPRS+8)*4)(r3) -+ lfd fp22,((JB_FPRS+8*2)*4)(r3) -+ lwz r0,(JB_CR*4)(r3) -+ lwz r23,((JB_GPRS+9)*4)(r3) -+ lfd fp23,((JB_FPRS+9*2)*4)(r3) -+ lwz r24,((JB_GPRS+10)*4)(r3) -+ lfd fp24,((JB_FPRS+10*2)*4)(r3) -+ lwz r25,((JB_GPRS+11)*4)(r3) -+ lfd fp25,((JB_FPRS+11*2)*4)(r3) -+ mtcrf 0xFF,r0 -+ lwz r26,((JB_GPRS+12)*4)(r3) -+ lfd fp26,((JB_FPRS+12*2)*4)(r3) -+ lwz r27,((JB_GPRS+13)*4)(r3) -+ lfd fp27,((JB_FPRS+13*2)*4)(r3) -+ lwz r28,((JB_GPRS+14)*4)(r3) -+ lfd fp28,((JB_FPRS+14*2)*4)(r3) -+ lwz r29,((JB_GPRS+15)*4)(r3) -+ lfd fp29,((JB_FPRS+15*2)*4)(r3) -+ lwz r30,((JB_GPRS+16)*4)(r3) -+ lfd fp30,((JB_FPRS+16*2)*4)(r3) -+ lwz r31,((JB_GPRS+17)*4)(r3) -+ lfd fp31,((JB_FPRS+17*2)*4)(r3) -+ mr r3,r4 -+ blr -+END (BP_SYM (__longjmp)) -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/bits/setjmp.h glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/bits/setjmp.h Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/bits/setjmp.h Thu Jul 10 11:43:17 2003 -@@ -0,0 +1,47 @@ -+/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+/* Define the machine-dependent type `jmp_buf'. PowerPC version. */ -+ -+#ifndef _SETJMP_H -+# error "Never include directly; use instead." -+#endif -+ -+/* The previous bits/setjmp.h had __jmp_buf defined as a structure. -+ We use an array of 'long int' instead, to make writing the -+ assembler easier. Naturally, user code should not depend on -+ either representation. */ -+ -+#if defined __USE_MISC || defined _ASM -+# define JB_GPR1 0 /* Also known as the stack pointer */ -+# define JB_GPR2 1 -+# define JB_LR 2 /* The address we will return to */ -+# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */ -+# define JB_CR 21 /* Condition code registers. */ -+# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */ -+# define JB_SIZE (58*4) -+#endif -+ -+#ifndef _ASM -+typedef long int __jmp_buf[58]; -+#endif -+ -+/* Test if longjmp to JMPBUF would unwind the frame -+ containing a local variable at ADDRESS. */ -+#define _JMPBUF_UNWINDS(jmpbuf, address) \ -+ ((void *) (address) < (void *) (jmpbuf)[JB_GPR1]) -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/fclrexcpt.c Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/fclrexcpt.c Thu Jul 5 21:56:01 2001 -@@ -0,0 +1,48 @@ -+/* Clear given exceptions in current floating-point environment. -+ Copyright (C) 1997,99,2000,01 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+ -+#undef feclearexcept -+int -+__feclearexcept (int excepts) -+{ -+ fenv_union_t u; -+ -+ /* Get the current state. */ -+ u.fenv = fegetenv_register (); -+ -+ /* Clear the relevant bits. */ -+ u.l[1] = u.l[1] & ~((-(excepts >> (31 - FPSCR_VX) & 1) & FE_ALL_INVALID) -+ | (excepts & FPSCR_STICKY_BITS)); -+ -+ /* Put the new state in effect. */ -+ fesetenv_register (u.fenv); -+ -+ /* Success. */ -+ return 0; -+} -+ -+#include -+#if SHLIB_COMPAT (libm, GLIBC_2_1, GLIBC_2_2) -+strong_alias (__feclearexcept, __old_feclearexcept) -+compat_symbol (libm, __old_feclearexcept, feclearexcept, GLIBC_2_1); -+#endif -+ -+versioned_symbol (libm, __feclearexcept, feclearexcept, GLIBC_2_2); -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fe_nomask.c glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/fe_nomask.c Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/fe_nomask.c Thu Jul 5 21:56:01 2001 -@@ -0,0 +1,32 @@ -+/* Procedure definition for FE_NOMASK_ENV. -+ Copyright (C) 1997 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+ -+/* This is presently a stub, until it's decided how the kernels should -+ support this. */ -+ -+const fenv_t * -+__fe_nomask_env(void) -+{ -+ __set_errno (ENOSYS); -+ return FE_ENABLED_ENV; -+} -+stub_warning (__fe_nomask_env) -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fprrest.S glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprrest.S Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprrest.S Thu Jul 5 21:56:01 2001 -@@ -0,0 +1,94 @@ -+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+/* -+ Floating Point Registers (FPRs) restore routine -+*/ -+ -+#include -+ -+ENTRY(_restfpr_all) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf14) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_14) -+C_TEXT(_restf14): -+C_TEXT(_restfpr_14): lfd fp14,-144(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf15) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_15) -+C_TEXT(_restf15): -+C_TEXT(_restfpr_15): lfd fp15,-136(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf16) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_16) -+C_TEXT(_restf16): -+C_TEXT(_restfpr_16): lfd fp16,-128(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf17) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_17) -+C_TEXT(_restf17): -+C_TEXT(_restfpr_17): lfd fp17,-120(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf18) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_18) -+C_TEXT(_restf18): -+C_TEXT(_restfpr_18): lfd fp18,-112(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf19) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_19) -+C_TEXT(_restf19): -+C_TEXT(_restfpr_19): lfd fp19,-104(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf20) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_20) -+C_TEXT(_restf20): -+C_TEXT(_restfpr_20): lfd fp20,-96(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf21) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_21) -+C_TEXT(_restf21): -+C_TEXT(_restfpr_21): lfd fp21,-88(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf22) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_22) -+C_TEXT(_restf22): -+C_TEXT(_restfpr_22): lfd fp22,-80(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf23) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_23) -+C_TEXT(_restf23): -+C_TEXT(_restfpr_23): lfd fp23,-72(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf24) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_24) -+C_TEXT(_restf24): -+C_TEXT(_restfpr_24): lfd fp24,-64(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf25) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_25) -+C_TEXT(_restf25): -+C_TEXT(_restfpr_25): lfd fp25,-56(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf26) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_26) -+C_TEXT(_restf26): -+C_TEXT(_restfpr_26): lfd fp26,-48(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf27) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_27) -+C_TEXT(_restf27): -+C_TEXT(_restfpr_27): lfd fp27,-40(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf28) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_28) -+C_TEXT(_restf28): -+C_TEXT(_restfpr_28): lfd fp28,-32(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restf29) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_restfpr_29) -+C_TEXT(_restf29): -+C_TEXT(_restfpr_29): lwz r0,8(r1) #get return address from frame -+ lfd fp29,-24(r1) #restore f29 -+ mtlr r0 #move return address to LR -+ lfd fp30,-16(r1) #restore f30 -+ lfd fp31,-8(r1) #restore f31 -+ blr #return -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fprsave.S glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/fprsave.S Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/fprsave.S Thu Jul 5 21:56:01 2001 -@@ -0,0 +1,93 @@ -+/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+/* -+ Floating Point Registers (FPRs) save routine -+*/ -+ -+#include -+ -+ENTRY(_savefpr_all) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef14) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14) -+C_TEXT(_savef14): -+C_TEXT(_savefpr_14): stfd fp14,-144(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15) -+C_TEXT(_savef15): -+C_TEXT(_savefpr_15): stfd fp15,-136(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16) -+C_TEXT(_savef16): -+C_TEXT(_savefpr_16): stfd fp16,-128(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17) -+C_TEXT(_savef17): -+C_TEXT(_savefpr_17): stfd fp17,-120(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18) -+C_TEXT(_savef18): -+C_TEXT(_savefpr_18): stfd fp18,-112(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19) -+C_TEXT(_savef19): -+C_TEXT(_savefpr_19): stfd fp19,-104(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20) -+C_TEXT(_savef20): -+C_TEXT(_savefpr_20): stfd fp20,-96(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21) -+C_TEXT(_savef21): -+C_TEXT(_savefpr_21): stfd fp21,-88(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22) -+C_TEXT(_savef22): -+C_TEXT(_savefpr_22): stfd fp22,-80(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23) -+C_TEXT(_savef23): -+C_TEXT(_savefpr_23): stfd fp23,-72(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24) -+C_TEXT(_savef24): -+C_TEXT(_savefpr_24): stfd fp24,-64(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25) -+C_TEXT(_savef25): -+C_TEXT(_savefpr_25): stfd fp25,-56(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26) -+C_TEXT(_savef26): -+C_TEXT(_savefpr_26): stfd fp26,-48(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27) -+C_TEXT(_savef27): -+C_TEXT(_savefpr_27): stfd fp27,-40(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28) -+C_TEXT(_savef28): -+C_TEXT(_savefpr_28): stfd fp28,-32(r1) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29) -+ ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29) -+C_TEXT(_savef29): -+C_TEXT(_savefpr_29): stfd fp29,-24(r1) #save f29 -+ stfd fp30,-16(r1) #save f30 -+ stfd fp31,-8(r1) #save f31 -+ stw r0,8(r1) #save LR in callers frame -+ blr #return -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/fpu_control.h Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/fpu_control.h Thu Jul 5 21:56:01 2001 -@@ -0,0 +1,67 @@ -+/* FPU control word definitions. PowerPC version. -+ Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _FPU_CONTROL_H -+#define _FPU_CONTROL_H -+ -+/* rounding control */ -+#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */ -+#define _FPU_RC_DOWN 0x03 -+#define _FPU_RC_UP 0x02 -+#define _FPU_RC_ZERO 0x01 -+ -+#define _FPU_MASK_NI 0x04 /* non-ieee mode */ -+ -+/* masking of interrupts */ -+#define _FPU_MASK_ZM 0x10 /* zero divide */ -+#define _FPU_MASK_OM 0x40 /* overflow */ -+#define _FPU_MASK_UM 0x20 /* underflow */ -+#define _FPU_MASK_XM 0x08 /* inexact */ -+#define _FPU_MASK_IM 0x80 /* invalid operation */ -+ -+#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */ -+ -+/* The fdlibm code requires no interrupts for exceptions. */ -+#define _FPU_DEFAULT 0x00000000 /* Default value. */ -+ -+/* IEEE: same as above, but (some) exceptions; -+ we leave the 'inexact' exception off. -+ */ -+#define _FPU_IEEE 0x000000f0 -+ -+/* Type of the control word. */ -+typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__))); -+ -+/* Macros for accessing the hardware control word. */ -+#define _FPU_GETCW(cw) ( { \ -+ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \ -+ __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \ -+ (cw)=tmp.cw[1]; \ -+ tmp.cw[1]; } ) -+#define _FPU_SETCW(cw) { \ -+ union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \ -+ tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \ -+ tmp.cw[1] = cw; \ -+ __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \ -+} -+ -+/* Default control word set at startup. */ -+extern fpu_control_t __fpu_control; -+ -+#endif /* _FPU_CONTROL_H */ -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S ---- glibc-2.2.5.old/sysdeps/powerpc/fpu/setjmp.S Wed Dec 31 16:00:00 1969 -+++ glibc-2.2.5/sysdeps/powerpc/fpu/setjmp.S Thu Jul 10 11:43:44 2003 -@@ -0,0 +1,73 @@ -+/* setjmp for PowerPC. -+ Copyright (C) 1995, 1996, 1997, 1999, 2000 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Library General Public License as -+ published by the Free Software Foundation; either version 2 of the -+ License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Library General Public License for more details. -+ -+ You should have received a copy of the GNU Library General Public -+ License along with the GNU C Library; see the file COPYING.LIB. If not, -+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -+ Boston, MA 02111-1307, USA. */ -+ -+#include -+#define _ASM -+#define _SETJMP_H -+#include -+#include -+#include -+ -+ENTRY (BP_SYM (__sigsetjmp)) -+ CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE) -+ -+ stw r1,(JB_GPR1*4)(3) -+ mflr r0 -+ stw r2,(JB_GPR2*4)(3) -+ stw r14,((JB_GPRS+0)*4)(3) -+ stfd fp14,((JB_FPRS+0*2)*4)(3) -+ stw r0,(JB_LR*4)(3) -+ stw r15,((JB_GPRS+1)*4)(3) -+ stfd fp15,((JB_FPRS+1*2)*4)(3) -+ mfcr r0 -+ stw r16,((JB_GPRS+2)*4)(3) -+ stfd fp16,((JB_FPRS+2*2)*4)(3) -+ stw r0,(JB_CR*4)(3) -+ stw r17,((JB_GPRS+3)*4)(3) -+ stfd fp17,((JB_FPRS+3*2)*4)(3) -+ stw r18,((JB_GPRS+4)*4)(3) -+ stfd fp18,((JB_FPRS+4*2)*4)(3) -+ stw r19,((JB_GPRS+5)*4)(3) -+ stfd fp19,((JB_FPRS+5*2)*4)(3) -+ stw r20,((JB_GPRS+6)*4)(3) -+ stfd fp20,((JB_FPRS+6*2)*4)(3) -+ stw r21,((JB_GPRS+7)*4)(3) -+ stfd fp21,((JB_FPRS+7*2)*4)(3) -+ stw r22,((JB_GPRS+8)*4)(3) -+ stfd fp22,((JB_FPRS+8*2)*4)(3) -+ stw r23,((JB_GPRS+9)*4)(3) -+ stfd fp23,((JB_FPRS+9*2)*4)(3) -+ stw r24,((JB_GPRS+10)*4)(3) -+ stfd fp24,((JB_FPRS+10*2)*4)(3) -+ stw r25,((JB_GPRS+11)*4)(3) -+ stfd fp25,((JB_FPRS+11*2)*4)(3) -+ stw r26,((JB_GPRS+12)*4)(3) -+ stfd fp26,((JB_FPRS+12*2)*4)(3) -+ stw r27,((JB_GPRS+13)*4)(3) -+ stfd fp27,((JB_FPRS+13*2)*4)(3) -+ stw r28,((JB_GPRS+14)*4)(3) -+ stfd fp28,((JB_FPRS+14*2)*4)(3) -+ stw r29,((JB_GPRS+15)*4)(3) -+ stfd fp29,((JB_FPRS+15*2)*4)(3) -+ stw r30,((JB_GPRS+16)*4)(3) -+ stfd fp30,((JB_FPRS+16*2)*4)(3) -+ stw r31,((JB_GPRS+17)*4)(3) -+ stfd fp31,((JB_FPRS+17*2)*4)(3) -+ b JUMPTARGET (BP_SYM (__sigjmp_save)) -+END (BP_SYM (__sigsetjmp)) -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h glibc-2.2.5/sysdeps/powerpc/fpu_control.h ---- glibc-2.2.5.old/sysdeps/powerpc/fpu_control.h Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/fpu_control.h Wed Dec 31 16:00:00 1969 -@@ -1,67 +0,0 @@ --/* FPU control word definitions. PowerPC version. -- Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _FPU_CONTROL_H --#define _FPU_CONTROL_H -- --/* rounding control */ --#define _FPU_RC_NEAREST 0x00 /* RECOMMENDED */ --#define _FPU_RC_DOWN 0x03 --#define _FPU_RC_UP 0x02 --#define _FPU_RC_ZERO 0x01 -- --#define _FPU_MASK_NI 0x04 /* non-ieee mode */ -- --/* masking of interrupts */ --#define _FPU_MASK_ZM 0x10 /* zero divide */ --#define _FPU_MASK_OM 0x40 /* overflow */ --#define _FPU_MASK_UM 0x20 /* underflow */ --#define _FPU_MASK_XM 0x08 /* inexact */ --#define _FPU_MASK_IM 0x80 /* invalid operation */ -- --#define _FPU_RESERVED 0xffffff00 /* These bits are reserved are not changed. */ -- --/* The fdlibm code requires no interrupts for exceptions. */ --#define _FPU_DEFAULT 0x00000000 /* Default value. */ -- --/* IEEE: same as above, but (some) exceptions; -- we leave the 'inexact' exception off. -- */ --#define _FPU_IEEE 0x000000f0 -- --/* Type of the control word. */ --typedef unsigned int fpu_control_t __attribute__ ((__mode__ (__SI__))); -- --/* Macros for accessing the hardware control word. */ --#define _FPU_GETCW(cw) ( { \ -- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \ -- __asm__ ("mffs 0; stfd%U0 0,%0" : "=m" (tmp.d) : : "fr0"); \ -- (cw)=tmp.cw[1]; \ -- tmp.cw[1]; } ) --#define _FPU_SETCW(cw) { \ -- union { double d; fpu_control_t cw[2]; } tmp __attribute__ ((__aligned__(8))); \ -- tmp.cw[0] = 0xFFF80000; /* More-or-less arbitrary; this is a QNaN. */ \ -- tmp.cw[1] = cw; \ -- __asm__ ("lfd%U0 0,%0; mtfsf 255,0" : : "m" (tmp.d) : "fr0"); \ --} -- --/* Default control word set at startup. */ --extern fpu_control_t __fpu_control; -- --#endif /* _FPU_CONTROL_H */ -diff -Naur glibc-2.2.5.old/sysdeps/powerpc/setjmp.S glibc-2.2.5/sysdeps/powerpc/setjmp.S ---- glibc-2.2.5.old/sysdeps/powerpc/setjmp.S Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/setjmp.S Thu Jul 10 11:43:44 2003 -@@ -24,6 +24,8 @@ - #include - #include - -+/* The FPU stores have been removed from this file - see fpu/setjmp.S */ -+ - ENTRY (BP_SYM (__sigsetjmp)) - CHECK_BOUNDS_BOTH_WIDE_LIT (r3, r8, r9, JB_SIZE) - -@@ -31,43 +33,25 @@ - mflr r0 - stw r2,(JB_GPR2*4)(3) - stw r14,((JB_GPRS+0)*4)(3) -- stfd fp14,((JB_FPRS+0*2)*4)(3) - stw r0,(JB_LR*4)(3) - stw r15,((JB_GPRS+1)*4)(3) -- stfd fp15,((JB_FPRS+1*2)*4)(3) - mfcr r0 - stw r16,((JB_GPRS+2)*4)(3) -- stfd fp16,((JB_FPRS+2*2)*4)(3) - stw r0,(JB_CR*4)(3) - stw r17,((JB_GPRS+3)*4)(3) -- stfd fp17,((JB_FPRS+3*2)*4)(3) - stw r18,((JB_GPRS+4)*4)(3) -- stfd fp18,((JB_FPRS+4*2)*4)(3) - stw r19,((JB_GPRS+5)*4)(3) -- stfd fp19,((JB_FPRS+5*2)*4)(3) - stw r20,((JB_GPRS+6)*4)(3) -- stfd fp20,((JB_FPRS+6*2)*4)(3) - stw r21,((JB_GPRS+7)*4)(3) -- stfd fp21,((JB_FPRS+7*2)*4)(3) - stw r22,((JB_GPRS+8)*4)(3) -- stfd fp22,((JB_FPRS+8*2)*4)(3) - stw r23,((JB_GPRS+9)*4)(3) -- stfd fp23,((JB_FPRS+9*2)*4)(3) - stw r24,((JB_GPRS+10)*4)(3) -- stfd fp24,((JB_FPRS+10*2)*4)(3) - stw r25,((JB_GPRS+11)*4)(3) -- stfd fp25,((JB_FPRS+11*2)*4)(3) - stw r26,((JB_GPRS+12)*4)(3) -- stfd fp26,((JB_FPRS+12*2)*4)(3) - stw r27,((JB_GPRS+13)*4)(3) -- stfd fp27,((JB_FPRS+13*2)*4)(3) - stw r28,((JB_GPRS+14)*4)(3) -- stfd fp28,((JB_FPRS+14*2)*4)(3) - stw r29,((JB_GPRS+15)*4)(3) -- stfd fp29,((JB_FPRS+15*2)*4)(3) - stw r30,((JB_GPRS+16)*4)(3) -- stfd fp30,((JB_FPRS+16*2)*4)(3) - stw r31,((JB_GPRS+17)*4)(3) -- stfd fp31,((JB_FPRS+17*2)*4)(3) - b JUMPTARGET (BP_SYM (__sigjmp_save)) - END (BP_SYM (__sigsetjmp)) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-i386-pwrite64.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-i386-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -diff -urN glibc-2.2.5-orig/sysdeps/unix/sysv/linux/i386/sysdep.h glibc-2.2.5/sysdeps/unix/sysv/linux/i386/sysdep.h ---- glibc-2.2.5-orig/sysdeps/unix/sysv/linux/i386/sysdep.h 2001-07-06 06:56:16.000000000 +0200 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/i386/sysdep.h 2004-09-03 12:35:44.000000000 +0200 -@@ -36,6 +36,16 @@ - #undef L - #define L(name) .L##name - -+/* This is a kludge to make syscalls.list find these under the names -+ * pread and pwrite, since some kernel headers define those names -+ * and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - #ifdef __ASSEMBLER__ - - /* Linux uses a negative return value to indicate syscall errors, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-m68k-pwrite.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-m68k-pwrite.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -Copied from similar patch for other architectures. - -Should fix this error: -../sysdeps/unix/sysv/linux/pread.c: In function `__libc_pread': -../sysdeps/unix/sysv/linux/pread.c:53: `__NR_pread' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/pread.c:53: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/pread.c:53: for each function it appears in.) -make[2]: *** [/home/dank/wk/crosstool-0.28-rc37/build/m68k-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.5/build-glibc/posix/pread.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc37/build/m68k-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.5/glibc-2.2.5/posix' -make[1]: *** [posix/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc37/build/m68k-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - ---- glibc-2.2.5/sysdeps/unix/sysv/linux/m68k/sysdep.h.old 2004-10-05 08:37:37.000000000 -0700 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/m68k/sysdep.h 2004-10-05 08:38:22.000000000 -0700 -@@ -32,6 +32,16 @@ - # define SYS_ify(syscall_name) __NR_/**/syscall_name - #endif - -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - #ifdef __ASSEMBLER__ - - /* Linux uses a negative return value to indicate syscall errors, unlike diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-mips-build-gmon.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-mips-build-gmon.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -From http://www.ltc.com/~brad/mips/glibc-2.2.5-mips-build-gmon.diff -See http://www.ltc.com/~brad/mips/mips-cross-toolchain.html - ---- glibc-2.2.5/sysdeps/mips/machine-gmon.h 2001-08-13 04:42:44.000000000 -0400 -+++ glibc-2.2.5/sysdeps/mips/machine-gmon.h 2002-09-25 17:10:59.000000000 -0400 -@@ -17,42 +17,52 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - --#define _MCOUNT_DECL static void __mcount -+#define _MCOUNT_DECL(frompc,selfpc) \ -+static void __attribute_used__ __mcount (u_long frompc, u_long selfpc) - - /* Call __mcount with our the return PC for our caller, - and the return PC our caller will return to. */ - #ifdef __PIC__ - #define CPLOAD ".cpload $25;" -+#define CPRESTORE ".cprestore 44\n\t" - #else - #define CPLOAD -+#define CPRESTORE - #endif - - #define MCOUNT asm(\ -- ".globl _mcount;" \ -- ".align 2;" \ -- ".type _mcount,@function;" \ -- "_mcount:;" \ -- ".set noreorder;" \ -- ".set noat;" \ -+ ".globl _mcount;\n\t" \ -+ ".align 2;\n\t" \ -+ ".type _mcount,@function;\n\t" \ -+ ".ent _mcount\n\t" \ -+ "_mcount:\n\t" \ -+ ".frame $sp,44,$31\n\t" \ -+ ".set noreorder;\n\t" \ -+ ".set noat;\n\t" \ - CPLOAD \ -- "sw $4,8($29);" \ -- "sw $5,12($29);" \ -- "sw $6,16($29);" \ -- "sw $7,20($29);" \ -- "sw $1,0($29);" \ -- "sw $31,4($29);" \ -- "move $5,$31;" \ -- "move $4,$1;" \ -- "jal __mcount;" \ -- "nop;" \ -- "lw $4,8($29);" \ -- "lw $5,12($29);" \ -- "lw $6,16($29);" \ -- "lw $7,20($29);" \ -- "lw $31,4($29);" \ -- "lw $1,0($29);" \ -- "addu $29,$29,8;" \ -- "j $31;" \ -- "move $31,$1;" \ -- ".set reorder;" \ -- ".set at"); -+ "subu $29,$29,48;\n\t" \ -+ CPRESTORE \ -+ "sw $4,24($29);\n\t" \ -+ "sw $5,28($29);\n\t" \ -+ "sw $6,32($29);\n\t" \ -+ "sw $7,36($29);\n\t" \ -+ "sw $2,40($29);\n\t" \ -+ "sw $1,16($29);\n\t" \ -+ "sw $31,20($29);\n\t" \ -+ "move $5,$31;\n\t" \ -+ "move $4,$1;\n\t" \ -+ "jal __mcount;\n\t" \ -+ "nop;\n\t" \ -+ "lw $4,24($29);\n\t" \ -+ "lw $5,28($29);\n\t" \ -+ "lw $6,32($29);\n\t" \ -+ "lw $7,36($29);\n\t" \ -+ "lw $2,40($29);\n\t" \ -+ "lw $31,20($29);\n\t" \ -+ "lw $1,16($29);\n\t" \ -+ "addu $29,$29,56;\n\t" \ -+ "j $31;\n\t" \ -+ "move $31,$1;\n\t" \ -+ ".set reorder;\n\t" \ -+ ".set at\n\t" \ -+ ".end _mcount"); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-mips-clone-local-label.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-mips-clone-local-label.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -This is a workaround for - -mipsel-unknown-linux-gnu-gcc ../sysdeps/unix/sysv/linux/mips/clone.S -c -I../include -I. -I/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc -I.. -I../libio -I/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc -I../sysdeps/mips/elf -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/mips -I../sysdeps/unix/sysv/linux/mips -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/mips -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/mips/mipsel -I../sysdeps/mips/fpu -I../sysdeps/mips -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /home3/dank/crosstool-0.7/result/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/lib/gcc-lib/mipsel-unknown-linux-gnu/3.2.3/include -isystem /home3/dank/crosstool-0.7/result/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/mipsel-unknown-linux-gnu/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DASSEMBLER -o /home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc/clone.o -../sysdeps/unix/sysv/linux/mips/clone.S: Assembler messages: -../sysdeps/unix/sysv/linux/mips/clone.S:66: Error: Can not represent BFD_RELOC_16_PCREL_S2 relocation in this object file format -make[2]: *** [/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc/clone.o] Error 1 - -which was using h.j.lu's binutils-2.13.90.0.18. - - -But see http://lists.debian.org/debian-mips/2003/debian-mips-200305/msg00011.html -which says -"A newer version of binutils (CVS post 2003-03-12) fixes it without -the need of changing perfectly legal code." -So presumably this can be ditched sooner or later. - -From http://honk.physik.uni-konstanz.de/~agx/linux-mips/glibc/patches/applied/clone-local-label.diff - -2003-03-13 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local label - .Lthread_start since current binutils don't allow branches to globally - visible symbols. - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/clone.S,v -retrieving revision 1.10 -diff -u -r1.10 clone.S ---- glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 12 Mar 2003 01:04:51 -0000 1.10 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 12 Mar 2003 19:04:39 -0000 -@@ -63,7 +63,7 @@ - syscall - - bnez a3,error -- beqz v0,__thread_start -+ beqz v0,.Lthread_start - - /* Successful return from the parent */ - addiu sp,32 -@@ -85,6 +85,7 @@ - debug info. */ - - ENTRY(__thread_start) -+.Lthread_start: - /* cp is already loaded. */ - .cprestore 16 - /* The stackframe has been created on entry of clone(). */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.56.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.56.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -wget http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/mips/dl-machine.h.diff?r1=1.55&r2=1.56&cvsroot=glibc - -Changelog: - (__dl_runtime_resolve): Remove `const' from `got'. - -Fixes error - -dl-runtime.c: In function `__dl_runtime_resolve': -dl-runtime.c:235: error: assignment of read-only location -make[2]: *** [/home/dank/crosstool-0.28-rc32/build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/build-glibc/elf/dl-runtime.o] Error 1 - -when building mipsel-gcc-3.4.0-glibc-2.2.5 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/mips/dl-machine.h,v -retrieving revision 1.55 -retrieving revision 1.56 -diff -u -r1.55 -r1.56 ---- libc/sysdeps/mips/dl-machine.h 2001/09/08 17:16:44 1.55 -+++ libc/sysdeps/mips/dl-machine.h 2002/01/17 23:21:33 1.56 -@@ -276,8 +276,8 @@ - = (const void *) D_PTR (l, l_info[DT_SYMTAB]); \ - const char *strtab \ - = (const void *) D_PTR (l, l_info[DT_STRTAB]); \ -- const ElfW(Addr) *got \ -- = (const ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \ -+ ElfW(Addr) *got \ -+ = (ElfW(Addr) *) D_PTR (l, l_info[DT_PLTGOT]); \ - const ElfW(Word) local_gotno \ - = (const ElfW(Word)) l->l_info[DT_MIPS (LOCAL_GOTNO)]->d_un.d_val; \ - const ElfW(Word) gotsym \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.57.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.57.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/mips/dl-machine.h.diff?r1=1.57&r2=1.58&cvsroot=glibc' - -ChangeLog: - (ELF_MACHINE_BEFORE_RTLD_RELOC): Don't use label at end of compound statement. - -Fixes error - -rtld.c: In function `_dl_start': -rtld.c:183: error: label at end of compound statement -make[2]: *** [/home/dank/wk/crosstool-0.28-rc32/build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/build-glibc/elf/rtld.os] Error 1 - - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/mips/dl-machine.h,v -retrieving revision 1.56 -retrieving revision 1.57 -diff -u -r1.56 -r1.57 ---- libc/sysdeps/mips/dl-machine.h 2002/01/17 23:21:33 1.56 -+++ libc/sysdeps/mips/dl-machine.h 2002/01/29 02:58:00 1.57 -@@ -1,5 +1,5 @@ - /* Machine-dependent ELF dynamic relocation inline functions. MIPS version. -- Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. -+ Copyright (C) 1996-2001, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Kazumoto Kojima . - -@@ -132,7 +132,7 @@ - got = (ElfW(Addr) *) D_PTR (map, l_info[DT_PLTGOT]); \ - \ - if (__builtin_expect (map->l_addr == 0, 1)) \ -- goto done; \ -+ break; \ - \ - /* got[0] is reserved. got[1] is also reserved for the dynamic object \ - generated by gnu ld. Skip these reserved entries from \ -@@ -169,7 +169,6 @@ - got++; \ - sym++; \ - } \ --done: \ - } while(0) - - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.59-kinda.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.59-kinda.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -Fixes error - -In file included from dynamic-link.h:21, - from dl-load.c:32: -../sysdeps/mips/dl-machine.h:454: error: parse error before "$29" -../sysdeps/mips/dl-machine.h:454: warning: type defaults to `int' in declaration of `$29' -../sysdeps/mips/dl-machine.h:454: error: stray '\' in program -../sysdeps/mips/dl-machine.h:454: error: syntax error at '#' token -../sysdeps/mips/dl-machine.h:454: error: stray '\' in program -../sysdeps/mips/dl-machine.h:454: error: stray '\' in program -../sysdeps/mips/dl-machine.h:454: error: syntax error at '#' token -../sysdeps/mips/dl-machine.h:454: error: stray '\' in program -../sysdeps/mips/dl-machine.h:454: error: stray '\' in program -../sysdeps/mips/dl-machine.h:454: error: stray '\' in program -../sysdeps/mips/dl-machine.h:454: error: stray '\' in program -../sysdeps/mips/dl-machine.h:454: error: missing terminating " character -... -make[2]: *** [/home/dank/wk/crosstool-0.28-rc24/build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/build-glibc/elf/dl-load.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc24/build/mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/glibc-2.2.5/elf' - -See also http://sources.redhat.com/ml/crossgcc/2003-12/msg00014.html - -=================================================================== -diff -u -r1.58 -r1.59 ---- libc/sysdeps/mips/dl-machine.h 2002/02/01 01:31:55 1.58 -+++ libc/sysdeps/mips/dl-machine.h 2002/02/03 00:29:15 1.59 -@@ -449,7 +449,7 @@ - addu $7, $7, 4\n\ - subu $29, 16\n\ - # Call the function to run the initializers.\n\ -- jal _dl_init -+ jal _dl_init\n\ - addiu $29, 16\n\ - # Pass our finalizer function to the user in $2 as per ELF ABI.\n\ - la $2, _dl_fini\n\ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.60.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-mips-dl-machine-1.60.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -Message-ID: <20040926095115.9204.qmail@webmail-2-5.mesa1.secureserver.net> -Date: Sun, 26 Sep 2004 02:51:15 -0700 -From: ml@bitbash.net -Subject: RE: crosstool-0.28-rc36: ld.so.1 undefined reference -To: Dan Kegel -cc: crossgcc@sources.redhat.com - -gcc-3.4.0-glibc-2.2.5 barfs with a few undefined refereces and multiple -definitions. The follwing patch seems to take care of the undefined -reference of __dl_runtime_resolve symbol. - -Filename: patches/glibc-2.2.5/glibc-2.2.5-mips-dl-machine-1.60.patch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Retrieved with -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/mips/dl-machine.h.diff?r1=1.59&r2=1.60&cvsroot=glibc' -See http://sources.redhat.com/ml/libc-alpha/2002-02/msg00091.html -See also glibc-2.2.5-mips-build-gmon.patch, which takes care of the other part of this for mips. - -ChangeLog: - sysdeps/mips/dl-machine.h (elf_machine_matches_host): Use - __attribute_used__. - (__dl_runtime_resolve): Likewise. - -Fixes error - -/home/cross/crosstool-0.28-rc36/build/mips-unknown-linux-gnu/gcc-3.4.0-glibc-2.2.5/build-glibc/elf/ld.so.1: -undefined reference to `__dl_runtime_resolve' - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/mips/dl-machine.h,v -retrieving revision 1.59 -retrieving revision 1.60 -diff -u -r1.59 -r1.60 ---- libc/sysdeps/mips/dl-machine.h 2002/02/03 00:29:15 1.59 -+++ libc/sysdeps/mips/dl-machine.h 2002/02/08 18:56:57 1.60 -@@ -69,7 +69,7 @@ - } while (0) - - /* Return nonzero iff ELF header is compatible with the running host. */ --static inline int __attribute__ ((unused)) -+static inline int __attribute_used__ - elf_machine_matches_host (const ElfW(Ehdr) *ehdr) - { - switch (ehdr->e_machine) -@@ -262,7 +262,7 @@ - /* This is called from assembly stubs below which the compiler can't see. */ \ - static ElfW(Addr) \ - __dl_runtime_resolve (ElfW(Word), ElfW(Word), ElfW(Addr), ElfW(Addr)) \ -- __attribute__ ((unused)); \ -+ __attribute_used__; \ - \ - static ElfW(Addr) \ - __dl_runtime_resolve (ElfW(Word) sym_index, \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-powerpc-as.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-powerpc-as.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -Based on glibc-2.3.2/glibc-2.3.2-powerpc-as.patch - -Fixes the following errors when building glibc for ppc7450: - -/tmp/ccwlHdbl.s: Assembler messages: -/tmp/ccwlHdbl.s:73: Error: Unrecognized opcode: `stvx' -/tmp/ccwlHdbl.s:74: Error: Unrecognized opcode: `mfvrsave' -/tmp/ccwlHdbl.s:300: Error: Unrecognized opcode: `lvx' -/tmp/ccwlHdbl.s:302: Error: Unrecognized opcode: `mtvrsave' -make[2]: *** [/usr/local/src/crosstool-0.28-rc34/build/powerpc-7450-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libio/iopopen.o] Error 1 -make[2]: Leaving directory `/home/local/src/crosstool-0.28-rc34/build/powerpc-7450-linux-gnu/gcc-3.2.3-glibc-2.2.5/glibc-2.2.5/libio' -make[1]: *** [libio/subdir_lib] Error 2 -make[1]: Leaving directory `/home/local/src/crosstool-0.28-rc34/build/powerpc-7450-linux-gnu/gcc-3.2.3-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - -Contributed by Tom Warzeka - -=================================================================== ---- glibc-2.2.5/sysdeps/powerpc/Makefile~ 2004-08-31 14:59:15.000000000 -0400 -+++ glibc-2.2.5/sysdeps/powerpc/Makefile 2004-09-02 19:47:21.000000000 -0400 -@@ -1,7 +1,6 @@ - # We always want to use the new mnemonic syntax even if we are on a RS6000 - # machine. --+cflags += -mnew-mnemonics -Wa,-mppc -mpowerpc --asm-CPPFLAGS += -Wa,-mppc -++cflags += -mnew-mnemonics - - ifeq ($(subdir),gmon) - sysdep_routines += ppc-mcount diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.2.5-ppc405erratum77.patch --- a/patches/glibc/2.2.5/glibc-2.2.5-ppc405erratum77.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -# see http://bugs.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&pr=4155 -# and http://www.kegel.com/xgcc3/ppc405erratum77.html -# See also matching patch for linuxthreads - -diff -aur glibc-2.2.5.orig/sysdeps/powerpc/atomicity.h glibc-2.2.5/sysdeps/powerpc/atomicity.h ---- glibc-2.2.5.orig/sysdeps/powerpc/atomicity.h Thu Jul 5 21:56:01 2001 -+++ glibc-2.2.5/sysdeps/powerpc/atomicity.h Tue Jul 23 05:39:38 2002 -@@ -28,6 +28,17 @@ - # define __ATOMICITY_INLINE inline - #endif - -+#ifdef __PPC405__ -+/* workaround for PPC405 erratum #77 - Mark Hatle, dank. References: -+ http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf -+ http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489 -+ http://www.kegel.com/xgcc3/ppc405erratum77.html -+ FIXME: using dbct instead of sync would be faster */ -+#define __LIBC_PPC405_ERR77_SYNC "sync \n\t" -+#else -+#define __LIBC_PPC405_ERR77_SYNC -+#endif -+ - static __ATOMICITY_INLINE int - __attribute__ ((unused)) - exchange_and_add (volatile uint32_t *mem, int val) -@@ -36,6 +47,7 @@ - __asm__ ("\n\ - 0: lwarx %0,0,%2 \n\ - add%I3 %1,%0,%3 \n\ -+ " __LIBC_PPC405_ERR77_SYNC "\n\ - stwcx. %1,0,%2 \n\ - bne- 0b \n\ - " : "=&b"(result), "=&r"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory"); -@@ -50,6 +62,7 @@ - __asm__ ("\n\ - 0: lwarx %0,0,%1 \n\ - add%I2 %0,%0,%2 \n\ -+ " __LIBC_PPC405_ERR77_SYNC "\n\ - stwcx. %0,0,%1 \n\ - bne- 0b \n\ - " : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory"); -@@ -65,6 +78,7 @@ - sub%I2c. %0,%0,%2 \n\ - cntlzw %0,%0 \n\ - bne- 1f \n\ -+ " __LIBC_PPC405_ERR77_SYNC "\n\ - stwcx. %3,0,%1 \n\ - bne- 0b \n\ - 1: \n\ -@@ -79,6 +93,7 @@ - long int result; - __asm__ ("\n\ - 0: lwarx %0,0,%1 \n\ -+ " __LIBC_PPC405_ERR77_SYNC "\n\ - stwcx. %2,0,%1 \n\ - bne- 0b \n\ - " : "=&r"(result) : "r"(p), "r"(newval) : "cr0", "memory"); -@@ -94,6 +109,7 @@ - 0: lwarx %0,0,%1 \n\ - cmpwi %0,0 \n\ - bne- 1f \n\ -+ " __LIBC_PPC405_ERR77_SYNC "\n\ - stwcx. %2,0,%1 \n\ - bne- 0b \n\ - 1: \n\ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-2.3.2-allow-gcc-3.5-xdr.patch --- a/patches/glibc/2.2.5/glibc-2.3.2-allow-gcc-3.5-xdr.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sunrpc/rpc/xdr.h.diff?r1=1.27&r2=1.28&cvsroot=glibc -(but see also http://sources.redhat.com/ml/libc-alpha/2004-03/msg00267.html -and http://gcc.gnu.org/ml/gcc-patches/2004-03/msg02056.html) - -Fixes errors - -rpc_cmsg.c: In function `xdr_callmsg': -rpc_cmsg.c:70: error: invalid lvalue in increment -rpc_cmsg.c:71: error: invalid lvalue in increment -rpc_cmsg.c:74: error: invalid lvalue in increment -rpc_cmsg.c:77: error: invalid lvalue in increment -rpc_cmsg.c:78: error: invalid lvalue in increment -rpc_cmsg.c:79: error: invalid lvalue in increment -rpc_cmsg.c:81: error: invalid lvalue in increment -rpc_cmsg.c:89: error: invalid lvalue in increment -rpc_cmsg.c:106: error: invalid lvalue in increment -rpc_cmsg.c:107: error: invalid lvalue in increment -rpc_cmsg.c:112: error: invalid lvalue in increment -rpc_cmsg.c:117: error: invalid lvalue in increment -rpc_cmsg.c:118: error: invalid lvalue in increment -rpc_cmsg.c:119: error: invalid lvalue in increment -rpc_cmsg.c:121: error: invalid lvalue in increment -rpc_cmsg.c:160: error: invalid lvalue in increment - -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/rpc/xdr.h,v -retrieving revision 1.27 -retrieving revision 1.28 -diff -u -r1.27 -r1.28 ---- libc/sunrpc/rpc/xdr.h 2002/12/16 02:05:49 1.27 -+++ libc/sunrpc/rpc/xdr.h 2004/03/22 10:52:33 1.28 -@@ -262,10 +262,8 @@ - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ --#define IXDR_GET_LONG(buf) \ -- ((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++)) --#define IXDR_PUT_LONG(buf, v) \ -- (*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v))) -+#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -+#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) - #define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) - #define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-drow-sh.patch --- a/patches/glibc/2.2.5/glibc-drow-sh.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -[pread changes deleted, since those seem to be specific to glibc-2.3.2] - -Date: Thu, 19 Jun 2003 20:02:07 -0400 -From: Daniel Jacobowitz -Subject: [linux-sh:02808] Patch needed for CVS glibc on SH -To: linux-sh@m17n.org, libc-alpha@sources.redhat.com -Message-Id: <20030620000207.GA19907@nevyn.them.org> -X-ML-Name: linux-sh -X-Mail-Count: 02808 -X-MLServer: fml [fml 4.0.1]; post only (only members can post) -X-ML-Info: If you have a question, send e-mail with the body - "help" (without quotes) to the address linux-sh-ctl@m17n.org; - help= -Mail-Followup-To: linux-sh@m17n.org, libc-alpha@sources.redhat.com -Content-Disposition: inline -User-Agent: Mutt/1.5.1i -Mime-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Precedence: bulk -Lines: 74 -List-Software: fml [fml 4.0.1] -List-Post: -List-Owner: -List-Help: -List-Unsubscribe: -List-Id: linux-sh.m17n.org - -I believe this flushes my current patches to make glibc work on SH. Issues: - - MIPS pread functions have some wackiness in them for the MIPS calling - conventions, which align long longs to even register pairs; it appears - that SH does not do this. This fixes pread64/pwrite64. - - st_ino is _NOT_ 64-bit in the latest SH kernel trees, or at least it - wasn't when I checked in April. --enable-kernel=2.4.x breaks terribly - without this patch; the errors are along the lines of "version GLIBC_2.3 - not found", because that's the first consequence of a messed up inode - field - ld.so compares by inodes at some point. - --- -Daniel Jacobowitz -MontaVista Software Debian GNU/Linux Developer - -2003-06-19 Daniel Jacobowitz - - * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features - for the SH architecture. - * sysdeps/unix/sysv/linux/sh/pread.c: Use generic Linux version - instead of the MIPS version. - * sysdeps/unix/sysv/linux/sh/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/sh/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise. - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h.org 2003-04-21 10:57:55.000000000 -0400 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h 2003-04-21 11:16:47.000000000 -0400 -@@ -151,11 +151,20 @@ - - /* The changed st_ino field appeared in 2.4.0-test6. But we cannot - distinguish this version from other 2.4.0 releases. Therefore play -- save and assume it available is for 2.4.1 and up. */ --#if __LINUX_KERNEL_VERSION >= 132097 -+ save and assume it available is for 2.4.1 and up. However, SH is lame, -+ and still does not have a 64-bit inode field. */ -+#if __LINUX_KERNEL_VERSION >= 132097 \ -+ && !defined __sh__ - # define __ASSUME_ST_INO_64_BIT 1 - #endif - -+/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */ -+#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__ -+# define __ASSUME_TRUNCATE64_SYSCALL 1 -+# define __ASSUME_MMAP2_SYSCALL 1 -+# define __ASSUME_STAT64_SYSCALL 1 -+#endif -+ - /* To support locking of large files a new fcntl() syscall was introduced - in 2.4.0-test7. We test for 2.4.1 for the earliest version we know - the syscall is available. */ - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/glibc-test-lowram.patch --- a/patches/glibc/2.2.5/glibc-test-lowram.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ ---- glibc-2.2.5/malloc/tst-calloc.c.old Sun Aug 3 16:17:58 2003 -+++ glibc-2.2.5/malloc/tst-calloc.c Sun Aug 3 16:20:01 2003 -@@ -24,9 +24,8 @@ - #include - - --/* Number of samples per size. */ --#define N 50000 -- -+/* Number of samples per size. This is also the maximum memory consumption in kilobytes. */ -+#define N 8000 - - static void - fixed_test (int size) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/initfini-alpha.patch --- a/patches/glibc/2.2.5/initfini-alpha.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -Trivial fix to allow compiling with gcc3.3. - ---- glibc-2.2.5/sysdeps/alpha/elf/initfini.c.old Fri Jun 6 17:59:45 2003 -+++ glibc-2.2.5/sysdeps/alpha/elf/initfini.c Fri Jun 6 18:00:20 2003 -@@ -37,62 +37,62 @@ - files, all of which may have different GP values. So we must reload - the GP value from crti.o in crtn.o. */ - --__asm__ (" -- --#include \"defs.h\" -- --/*@HEADER_ENDS*/ -- --/*@_init_PROLOG_BEGINS*/ -- .section .init, \"ax\", @progbits -- .globl _init -- .ent _init --_init: -- ldgp $29, 0($27) -- subq $30, 16, $30 -- lda $27, __gmon_start__ -- stq $26, 0($30) -- stq $29, 8($30) -- .prologue 1 -- beq $27, 1f -- jsr $26, ($27), __gmon_start__ -- ldq $29, 8($30) --1: -- .align 3 -- .end _init -- .size _init, 0 --/*@_init_PROLOG_ENDS*/ -- --/*@_init_EPILOG_BEGINS*/ -- .section .init, \"ax\", @progbits -- ldq $26, 0($30) -- ldq $29, 8($30) -- addq $30, 16, $30 -- ret --/*@_init_EPILOG_ENDS*/ -- --/*@_fini_PROLOG_BEGINS*/ -- .section .fini, \"ax\", @progbits -- .globl _fini -- .ent _fini --_fini: -- ldgp $29, 0($27) -- subq $30, 16, $30 -- stq $26, 0($30) -- stq $29, 8($30) -- .prologue 1 -- .align 3 -- .end _fini -- .size _fini, 0 --/*@_fini_PROLOG_ENDS*/ -- --/*@_fini_EPILOG_BEGINS*/ -- .section .fini, \"ax\", @progbits -- ldq $26, 0($30) -- ldq $29, 8($30) -- addq $30, 16, $30 -- ret --/*@_fini_EPILOG_ENDS*/ -- --/*@TRAILER_BEGINS*/ -+__asm__ ("\n\ -+\n\ -+#include \"defs.h\"\n\ -+\n\ -+/*@HEADER_ENDS*/\n\ -+\n\ -+/*@_init_PROLOG_BEGINS*/\n\ -+ .section .init, \"ax\", @progbits\n\ -+ .globl _init\n\ -+ .ent _init\n\ -+_init:\n\ -+ ldgp $29, 0($27)\n\ -+ subq $30, 16, $30\n\ -+ lda $27, __gmon_start__\n\ -+ stq $26, 0($30)\n\ -+ stq $29, 8($30)\n\ -+ .prologue 1\n\ -+ beq $27, 1f\n\ -+ jsr $26, ($27), __gmon_start__\n\ -+ ldq $29, 8($30)\n\ -+1:\n\ -+ .align 3\n\ -+ .end _init\n\ -+ .size _init, 0\n\ -+/*@_init_PROLOG_ENDS*/\n\ -+\n\ -+/*@_init_EPILOG_BEGINS*/\n\ -+ .section .init, \"ax\", @progbits\n\ -+ ldq $26, 0($30)\n\ -+ ldq $29, 8($30)\n\ -+ addq $30, 16, $30\n\ -+ ret\n\ -+/*@_init_EPILOG_ENDS*/\n\ -+\n\ -+/*@_fini_PROLOG_BEGINS*/\n\ -+ .section .fini, \"ax\", @progbits\n\ -+ .globl _fini\n\ -+ .ent _fini\n\ -+_fini:\n\ -+ ldgp $29, 0($27)\n\ -+ subq $30, 16, $30\n\ -+ stq $26, 0($30)\n\ -+ stq $29, 8($30)\n\ -+ .prologue 1\n\ -+ .align 3\n\ -+ .end _fini\n\ -+ .size _fini, 0\n\ -+/*@_fini_PROLOG_ENDS*/\n\ -+\n\ -+/*@_fini_EPILOG_BEGINS*/\n\ -+ .section .fini, \"ax\", @progbits\n\ -+ ldq $26, 0($30)\n\ -+ ldq $29, 8($30)\n\ -+ addq $30, 16, $30\n\ -+ ret\n\ -+/*@_fini_EPILOG_ENDS*/\n\ -+\n\ -+/*@TRAILER_BEGINS*/\n\ - "); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/initfini-ia64.patch --- a/patches/glibc/2.2.5/initfini-ia64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,219 +0,0 @@ -Retrieved with -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/ia64/elf/initfini.c.diff?r1=1.2&r2=1.3&cvsroot=glibc' - -Revision 1.3, Sun Aug 25 00:34:23 2002 UTC (2 years, 1 month ago) by drepper -Branch: MAIN -CVS Tags: glibc-2-3-1, glibc-2-3 -Changes since 1.2: +78 -78 lines - -(__asm__): Don't use newlines embedded in string. - -Fixes error - -../sysdeps/ia64/elf/initfini.c:30:10: missing terminating " character -../sysdeps/ia64/elf/initfini.c:32:10: #include expects "FILENAME" or -../sysdeps/ia64/elf/initfini.c:37: error: request for member `section' in something not a structure or union -../sysdeps/ia64/elf/initfini.c:38: error: parse error before numeric constant -../sysdeps/ia64/elf/initfini.c:39: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:40: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:46: error: syntax error at '@' token -../sysdeps/ia64/elf/initfini.c:46: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:48: error: parse error before "r15" -../sysdeps/ia64/elf/initfini.c:48: warning: type defaults to `int' in declaration of `r15' -../sysdeps/ia64/elf/initfini.c:50: error: parse error before '.' token -../sysdeps/ia64/elf/initfini.c:56: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:57: error: parse error before "r12" -../sysdeps/ia64/elf/initfini.c:57: warning: type defaults to `int' in declaration of `r12' -../sysdeps/ia64/elf/initfini.c:58: warning: type defaults to `int' in declaration of `r12' -../sysdeps/ia64/elf/initfini.c:58: warning: data definition has no type or storage class -../sysdeps/ia64/elf/initfini.c:59: error: parse error before "gp" -../sysdeps/ia64/elf/initfini.c:59: warning: type defaults to `int' in declaration of `gp' -../sysdeps/ia64/elf/initfini.c:63: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:74: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:80: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:81: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:89: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:92: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:96: error: parse error before '.' token -../sysdeps/ia64/elf/initfini.c:101: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:106: error: syntax error at '#' token -../sysdeps/ia64/elf/initfini.c:107:1: missing terminating " character -make[2]: *** [/home/dank/wk/crosstool-0.28-rc37/build/ia64-unknown-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/csu/initfini.s] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc37/build/ia64-unknown-linux-gnu/gcc-3.3.4-glibc-2.2.5/glibc-2.2.5/csu' -make[1]: *** [csu/subdir_lib] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc37/build/ia64-unknown-linux-gnu/gcc-3.3.4-glibc-2.2.5/glibc-2.2.5' -make: *** [all] Error 2 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/ia64/elf/initfini.c,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -r1.2 -r1.3 ---- libc/sysdeps/ia64/elf/initfini.c 2001/07/06 04:55:54 1.2 -+++ libc/sysdeps/ia64/elf/initfini.c 2002/08/25 00:34:23 1.3 -@@ -1,5 +1,5 @@ - /* Special .init and .fini section support for ia64. -- Copyright (C) 2000 Free Software Foundation, Inc. -+ Copyright (C) 2000, 2002 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -27,81 +27,81 @@ - * crtn.s puts the corresponding function epilogues - in the .init and .fini sections. */ - --__asm__ (" -- --#include \"defs.h\" -- --/*@HEADER_ENDS*/ -- --/*@_init_PROLOG_BEGINS*/ -- .section .init -- .align 16 -- .global _init# -- .proc _init# --_init: -- alloc r34 = ar.pfs, 0, 3, 0, 0 -- mov r32 = r12 -- mov r33 = b0 -- adds r12 = -16, r12 -- addl r14 = @ltoff(@fptr(__gmon_start__#)), gp -- ;; -- ld8 r15 = [r14] -- ;; -- cmp.eq p6, p7 = 0, r15 -- (p6) br.cond.dptk .L5 -- --/* we could use r35 to save gp, but we use the stack since that's what -- * all the other init routines will do --davidm 00/04/05 */ -- st8 [r12] = gp, -16 -- br.call.sptk.many b0 = __gmon_start__# ;; -- adds r12 = 16, r12 -- ;; -- ld8 gp = [r12] -- ;; --.L5: -- .align 16 -- .endp _init# -- --/*@_init_PROLOG_ENDS*/ -- --/*@_init_EPILOG_BEGINS*/ -- .section .init -- .regstk 0,2,0,0 -- mov r12 = r32 -- mov ar.pfs = r34 -- mov b0 = r33 -- br.ret.sptk.many b0 -- .endp _init# --/*@_init_EPILOG_ENDS*/ -- --/*@_fini_PROLOG_BEGINS*/ -- .section .fini -- .align 16 -- .global _fini# -- .proc _fini# --_fini: -- alloc r34 = ar.pfs, 0, 3, 0, 0 -- mov r32 = r12 -- mov r33 = b0 -- adds r12 = -16, r12 -- ;; -- .align 16 -- .endp _fini# -- --/*@_fini_PROLOG_ENDS*/ -- br.call.sptk.many b0 = i_am_not_a_leaf# ;; -- ;; -- --/*@_fini_EPILOG_BEGINS*/ -- .section .fini -- mov r12 = r32 -- mov ar.pfs = r34 -- mov b0 = r33 -- br.ret.sptk.many b0 -- .endp _fini# -- --/*@_fini_EPILOG_ENDS*/ -- --/*@TRAILER_BEGINS*/ -- .weak __gmon_start__# -+__asm__ ("\n\ -+\n\ -+#include \"defs.h\"\n\ -+\n\ -+/*@HEADER_ENDS*/\n\ -+\n\ -+/*@_init_PROLOG_BEGINS*/\n\ -+ .section .init\n\ -+ .align 16\n\ -+ .global _init#\n\ -+ .proc _init#\n\ -+_init:\n\ -+ alloc r34 = ar.pfs, 0, 3, 0, 0\n\ -+ mov r32 = r12\n\ -+ mov r33 = b0\n\ -+ adds r12 = -16, r12\n\ -+ addl r14 = @ltoff(@fptr(__gmon_start__#)), gp\n\ -+ ;;\n\ -+ ld8 r15 = [r14]\n\ -+ ;;\n\ -+ cmp.eq p6, p7 = 0, r15\n\ -+ (p6) br.cond.dptk .L5\n\ -+\n\ -+/* we could use r35 to save gp, but we use the stack since that's what\n\ -+ * all the other init routines will do --davidm 00/04/05 */\n\ -+ st8 [r12] = gp, -16\n\ -+ br.call.sptk.many b0 = __gmon_start__# ;;\n\ -+ adds r12 = 16, r12\n\ -+ ;;\n\ -+ ld8 gp = [r12]\n\ -+ ;;\n\ -+.L5:\n\ -+ .align 16\n\ -+ .endp _init#\n\ -+\n\ -+/*@_init_PROLOG_ENDS*/\n\ -+\n\ -+/*@_init_EPILOG_BEGINS*/\n\ -+ .section .init\n\ -+ .regstk 0,2,0,0\n\ -+ mov r12 = r32\n\ -+ mov ar.pfs = r34\n\ -+ mov b0 = r33\n\ -+ br.ret.sptk.many b0\n\ -+ .endp _init#\n\ -+/*@_init_EPILOG_ENDS*/\n\ -+\n\ -+/*@_fini_PROLOG_BEGINS*/\n\ -+ .section .fini\n\ -+ .align 16\n\ -+ .global _fini#\n\ -+ .proc _fini#\n\ -+_fini:\n\ -+ alloc r34 = ar.pfs, 0, 3, 0, 0\n\ -+ mov r32 = r12\n\ -+ mov r33 = b0\n\ -+ adds r12 = -16, r12\n\ -+ ;;\n\ -+ .align 16\n\ -+ .endp _fini#\n\ -+\n\ -+/*@_fini_PROLOG_ENDS*/\n\ -+ br.call.sptk.many b0 = i_am_not_a_leaf# ;;\n\ -+ ;;\n\ -+\n\ -+/*@_fini_EPILOG_BEGINS*/\n\ -+ .section .fini\n\ -+ mov r12 = r32\n\ -+ mov ar.pfs = r34\n\ -+ mov b0 = r33\n\ -+ br.ret.sptk.many b0\n\ -+ .endp _fini#\n\ -+\n\ -+/*@_fini_EPILOG_ENDS*/\n\ -+\n\ -+/*@TRAILER_BEGINS*/\n\ -+ .weak __gmon_start__#\n\ - "); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/initfini-sh.patch --- a/patches/glibc/2.2.5/initfini-sh.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,243 +0,0 @@ ---- glibc-2.2.5/sysdeps/sh/elf/initfini.c.orig Thu Jul 5 21:56:03 2001 -+++ glibc-2.2.5/sysdeps/sh/elf/initfini.c Wed May 28 08:45:08 2003 -@@ -27,122 +27,122 @@ - * crtn.s puts the corresponding function epilogues - in the .init and .fini sections. */ - --__asm__ (" -- --#include \"defs.h\" --#define SHARED -- --/*@HEADER_ENDS*/ -- --/*@TESTS_BEGIN*/ -- --/*@TESTS_END*/ -- --/*@_init_PROLOG_BEGINS*/ -- .section .init -- .align 5 -- .global _init -- .type _init,@function --_init: -- mov.l r12,@-r15 -- mov.l r14,@-r15 -- sts.l pr,@-r15 --#ifdef SHARED -- mova .L22,r0 -- mov.l .L22,r12 -- add r0,r12 -- mova .L23,r0 -- mov.l .L23,r1 -- add r0,r1 --#else -- mov.l .L23,r1 --#endif -- jsr @r1 -- mov r15,r14 -- bra 1f -- nop -- .align 2 --#ifdef SHARED --.L22: -- .long _GLOBAL_OFFSET_TABLE_ --.L23: -- .long __gmon_start__@PLT --#else --.L23: -- .long __gmon_start__ --#endif -- .data -- .global __fpscr_values --__fpscr_values: -- .long 0 -- .long 0x80000 -- .previous --1: -- ALIGN -- END_INIT -- -- --/*@_init_PROLOG_ENDS*/ -- --/*@_init_EPILOG_BEGINS*/ -- .section .init -- mov r14,r15 -- lds.l @r15+,pr -- mov.l @r15+,r14 -- rts -- mov.l @r15+,r12 -- END_INIT -- .section .text -- .align 5 -- .weak __gmon_start__ -- .type __gmon_start__,@function --__gmon_start__: -- mov.l r14,@-r15 -- mov r15,r14 -- mov r14,r15 -- rts -- mov.l @r15+,r14 -- --/*@_init_EPILOG_ENDS*/ -- --/*@_fini_PROLOG_BEGINS*/ -- .section .fini -- .align 5 -- .global _fini -- .type _fini,@function --_fini: -- mov.l r12,@-r15 -- mov.l r14,@-r15 -- sts.l pr,@-r15 --#ifdef SHARED -- mova .L27,r0 -- mov.l .L27,r12 -- add r0,r12 --#endif -- mov r15,r14 -- ALIGN -- END_FINI --#ifdef SHARED -- bra 1f -- nop -- .align 2 --.L27: -- .long _GLOBAL_OFFSET_TABLE_ --#endif --1: --/*@_fini_PROLOG_ENDS*/ -- --/*@_fini_EPILOG_BEGINS*/ -- .section .fini -- mov r14,r15 -- lds.l @r15+,pr -- mov.l @r15+,r14 -- rts -- mov.l @r15+,r12 -- -- END_FINI -- --/*@_fini_EPILOG_ENDS*/ -- --/*@TRAILER_BEGINS*/ -+__asm__ ("\n\ -+\n\ -+#include \"defs.h\"\n\ -+#define SHARED\n\ -+\n\ -+/*@HEADER_ENDS*/\n\ -+\n\ -+/*@TESTS_BEGIN*/\n\ -+\n\ -+/*@TESTS_END*/\n\ -+\n\ -+/*@_init_PROLOG_BEGINS*/\n\ -+ .section .init\n\ -+ .align 5\n\ -+ .global _init\n\ -+ .type _init,@function\n\ -+_init:\n\ -+ mov.l r12,@-r15\n\ -+ mov.l r14,@-r15\n\ -+ sts.l pr,@-r15\n\ -+#ifdef SHARED\n\ -+ mova .L22,r0\n\ -+ mov.l .L22,r12\n\ -+ add r0,r12\n\ -+ mova .L23,r0\n\ -+ mov.l .L23,r1\n\ -+ add r0,r1\n\ -+#else\n\ -+ mov.l .L23,r1\n\ -+#endif\n\ -+ jsr @r1\n\ -+ mov r15,r14\n\ -+ bra 1f\n\ -+ nop\n\ -+ .align 2\n\ -+#ifdef SHARED\n\ -+.L22:\n\ -+ .long _GLOBAL_OFFSET_TABLE_\n\ -+.L23:\n\ -+ .long __gmon_start__@PLT\n\ -+#else\n\ -+.L23:\n\ -+ .long __gmon_start__\n\ -+#endif\n\ -+ .data\n\ -+ .global __fpscr_values\n\ -+__fpscr_values:\n\ -+ .long 0\n\ -+ .long 0x80000\n\ -+ .previous\n\ -+1:\n\ -+ ALIGN\n\ -+ END_INIT\n\ -+\n\ -+ \n\ -+/*@_init_PROLOG_ENDS*/\n\ -+\n\ -+/*@_init_EPILOG_BEGINS*/\n\ -+ .section .init\n\ -+ mov r14,r15\n\ -+ lds.l @r15+,pr\n\ -+ mov.l @r15+,r14\n\ -+ rts \n\ -+ mov.l @r15+,r12\n\ -+ END_INIT\n\ -+ .section .text\n\ -+ .align 5\n\ -+ .weak __gmon_start__\n\ -+ .type __gmon_start__,@function\n\ -+__gmon_start__:\n\ -+ mov.l r14,@-r15\n\ -+ mov r15,r14\n\ -+ mov r14,r15\n\ -+ rts \n\ -+ mov.l @r15+,r14\n\ -+ \n\ -+/*@_init_EPILOG_ENDS*/\n\ -+\n\ -+/*@_fini_PROLOG_BEGINS*/\n\ -+ .section .fini\n\ -+ .align 5\n\ -+ .global _fini\n\ -+ .type _fini,@function\n\ -+_fini:\n\ -+ mov.l r12,@-r15\n\ -+ mov.l r14,@-r15\n\ -+ sts.l pr,@-r15\n\ -+#ifdef SHARED\n\ -+ mova .L27,r0\n\ -+ mov.l .L27,r12\n\ -+ add r0,r12\n\ -+#endif\n\ -+ mov r15,r14\n\ -+ ALIGN\n\ -+ END_FINI\n\ -+#ifdef SHARED\n\ -+ bra 1f\n\ -+ nop\n\ -+ .align 2\n\ -+.L27:\n\ -+ .long _GLOBAL_OFFSET_TABLE_\n\ -+#endif\n\ -+1:\n\ -+/*@_fini_PROLOG_ENDS*/\n\ -+\n\ -+/*@_fini_EPILOG_BEGINS*/\n\ -+ .section .fini\n\ -+ mov r14,r15\n\ -+ lds.l @r15+,pr\n\ -+ mov.l @r15+,r14\n\ -+ rts \n\ -+ mov.l @r15+,r12\n\ -+\n\ -+ END_FINI\n\ -+ \n\ -+/*@_fini_EPILOG_ENDS*/\n\ -+\n\ -+/*@TRAILER_BEGINS*/\n\ - "); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/longjmp-sparc.patch --- a/patches/glibc/2.2.5/longjmp-sparc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -From libc-alpha-return-8354-listarch-libc-alpha=sourceware dot cygnus dot com at sources dot redhat dot com Mon Jul 01 11:18:29 2002 -Return-Path: -Delivered-To: listarch-libc-alpha at sourceware dot cygnus dot com -Received: (qmail 10698 invoked by alias); 1 Jul 2002 11:18:28 -0000 -Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm -Precedence: bulk -List-Subscribe: -List-Archive: -List-Post: -List-Help: , -Sender: libc-alpha-owner at sources dot redhat dot com -Delivered-To: mailing list libc-alpha at sources dot redhat dot com -Received: (qmail 10659 invoked from network); 1 Jul 2002 11:18:27 -0000 -Received: from unknown (HELO sceaux.ilog.fr) (193.55.64.10) - by sources dot redhat dot com with SMTP; 1 Jul 2002 11:18:27 -0000 -Received: from ftp.ilog.fr (ftp.ilog.fr [193.55.64.11]) - by sceaux dot ilog dot fr (8 dot 11 dot 6/8 dot 11 dot 6) with SMTP id g61BFDi08003 - for ; Mon, 1 Jul 2002 13:15:18 +0200 (MET DST) -Received: from laposte.ilog.fr ([193.55.64.67]) - by ftp dot ilog dot fr (NAVGW 2 dot 5 dot 1 dot 16) with SMTP id M2002070113180506608 - for ; Mon, 01 Jul 2002 13:18:05 +0200 -Received: from honolulu.ilog.fr ([172.17.4.43]) - by laposte dot ilog dot fr (8 dot 11 dot 6/8 dot 11 dot 5) with ESMTP id g61BI2w29996; - Mon, 1 Jul 2002 13:18:02 +0200 (MET DST) -Received: (from haible@localhost) - by honolulu dot ilog dot fr (8 dot 9 dot 3/8 dot 9 dot 3/SuSE Linux 8 dot 9 dot 3-0 dot 1) id NAA01763; - Mon, 1 Jul 2002 13:12:40 +0200 -MIME-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Content-Transfer-Encoding: base64 -Message-ID: <15648.14632.526690.249866@honolulu.ilog.fr> -Date: Mon, 1 Jul 2002 13:12:40 +0200 (CEST) -From: Bruno Haible -To: libc-alpha at sources dot redhat dot com -Subject: sparc32/sysdep.h and gcc-3.1 - -Hi, - -When building glibc-2.2.5 for sparc with gcc-3.1 I get a build error - -sparc-linux-gcc ../sysdeps/sparc/sparc32/__longjmp.S -c -I../include -I. -I/backup/cross-build/build-glibc-sparc/setjmp -I.. -I../libio -I/backup/cross-build/build-glibc-sparc -I../sysdeps/sparc/sparc32/elf -I../linuxthreads/sysdeps/unix/sysv/linux/sparc -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/sparc/sparc32 -I../linuxthreads/sysdeps/sparc -I../sysdeps/unix/sysv/linux/sparc/sparc32 -I../sysdeps/unix/sysv/linux/sparc -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/sparc -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/sparc/sparc32/fpu -I../sysdeps/sparc/sparc32 -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/sparc/sparc32/soft-fp -I../sysdeps/sparc/fpu -I../sysdeps/sparc -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /cross/sparc-linux-tools/lib/gcc-lib/sparc-linux/3.1/include -isystem /cross/sparc-linux/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DASSEMBLER -D__ASSEMBLY__ -o /backup/cross-build/build-glibc-sparc/setjmp/__longjmp.o -../sysdeps/sparc/sparc32/__longjmp.S: Assembler messages: -../sysdeps/sparc/sparc32/__longjmp.S:41: Error: Illegal operands -../sysdeps/sparc/sparc32/__longjmp.S:43: Error: Illegal operands -../sysdeps/sparc/sparc32/__longjmp.S:48: Error: unknown pseudo-op: `.' -../sysdeps/sparc/sparc32/__longjmp.S:50: Error: Illegal operands -../sysdeps/sparc/sparc32/__longjmp.S:52: Error: Illegal operands -../sysdeps/sparc/sparc32/__longjmp.S:55: Error: unknown pseudo-op: `.' -../sysdeps/sparc/sparc32/__longjmp.S:72: Error: unknown pseudo-op: `.' -../sysdeps/sparc/sparc32/__longjmp.S:76: Error: unknown pseudo-op: `.' -make[2]: *** [/backup/cross-build/build-glibc-sparc/setjmp/__longjmp.o] Fehler 1 -make[2]: Leaving directory `/packages2/glibc-2.2.5/setjmp' - -Apparently "cpp0 -lang-asm" now leaves spaces around ## in place, if the token -on the left or right of it is a lone dot (not a valid C identifier). Hard to -say that it's a bug in the gcc-3.1 cpp, because -lang-asm is a gcc extension. -The fix is just to remove the spaces. - - -2002-06-05 Bruno Haible - - * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h (LOC): Remove spaces. - ---- glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h.bak 2001-07-06 06:56:21.000000000 +0200 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2002-06-05 23:14:40.000000000 +0200 -@@ -48,7 +48,7 @@ - #define END(name) \ - .size name, . - name - --#define LOC(name) . ## L ## name -+#define LOC(name) .##L##name - - #ifdef PIC - #define SYSCALL_ERROR_HANDLER \ - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/sh-setjmp-fix.patch --- a/patches/glibc/2.2.5/sh-setjmp-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -Fixes glibc 'make tests' failure running isomac - -make[2]: *** [/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.15/build/sh4-unknown-linux-gnu/gcc-ss-3_3-20030714-glibc-2.2.5/build-glibc/stdlib/isomac.out] Error 2 - -isomac.out contains: -... -setjmp.h -#define JB_SIZE (4 * 15) - -See http://sources.redhat.com/ml/libc-hacker/2002-11/msg00009.html -and http://www.schweikhardt.net/isomac.c.html - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/sh/bits/setjmp.h,v -retrieving revision 1.4 -retrieving revision 1.5 -diff -u -r1.4 -r1.5 ---- libc/sysdeps/sh/bits/setjmp.h 2001/07/06 04:56:03 1.4 -+++ libc/sysdeps/sh/bits/setjmp.h 2002/11/06 00:08:30 1.5 -@@ -42,7 +42,9 @@ - } __jmp_buf[1]; - #endif - -+#if defined __USE_MISC || defined _ASM - #define JB_SIZE (4 * 15) -+#endif - - /* Test if longjmp to JMPBUF would unwind the frame - containing a local variable at ADDRESS. */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/sprintf-prototype.patch --- a/patches/glibc/2.2.5/sprintf-prototype.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ ---- glibc-2.2.5/stdio-common/sprintf.c.old Wed May 28 08:59:11 2003 -+++ glibc-2.2.5/stdio-common/sprintf.c Wed May 28 08:59:45 2003 -@@ -27,9 +27,7 @@ - /* Write formatted output into S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --sprintf (s, format) -- char *s; -- const char *format; -+sprintf (char *s, const char *format, ...) - { - va_list arg; - int done; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/sscanf.patch --- a/patches/glibc/2.2.5/sscanf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -[dank] Modified very slightly to apply to 2.2.5. - -2003-03-05 Roland McGrath - - * stdio-common/sscanf.c: Use prototype defn with ... syntax. - * libio/swscanf.c: Likewise. - * libio/swprintf.c: Likewise. - -=================================================================== -RCS file: /cvs/glibc/libc/stdio-common/sscanf.c,v -retrieving revision 1.8 -retrieving revision 1.9 -diff -u -r1.8 -r1.9 ---- libc/stdio-common/sscanf.c 2002/08/10 09:24:42 1.8 -+++ libc/stdio-common/sscanf.c 2003/03/05 19:58:03 1.9 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc. -+/* Copyright (C) 1991,1995,1996,1998,2002,2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -27,9 +27,7 @@ - /* Read formatted input from S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --sscanf (s, format) -- const char *s; -- const char *format; -+sscanf (const char *s, const char *format, ...) - { - va_list arg; - int done; -=================================================================== -RCS file: /cvs/glibc/libc/libio/swprintf.c,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/libio/swprintf.c 2001/07/06 04:55:32 1.3 -+++ libc/libio/swprintf.c 2003/03/05 19:58:03 1.4 -@@ -1,4 +1,5 @@ --/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc. -+/* Copyright (C) 1991,1995,1997,1998,1999,2000,2003 -+ Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -22,10 +23,7 @@ - /* Write formatted output into S, according to the format string FORMAT. */ - /* VARARGS3 */ - int --swprintf (s, n, format) -- wchar_t *s; -- size_t n; -- const wchar_t *format; -+swprintf (wchar_t *s, size_t n, const wchar_t *format, ...) - { - va_list arg; - int done; -=================================================================== -RCS file: /cvs/glibc/libc/libio/swscanf.c,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -r1.2 -r1.3 ---- libc/libio/swscanf.c 2001/07/06 04:55:32 1.2 -+++ libc/libio/swscanf.c 2003/03/05 19:58:03 1.3 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc. -+/* Copyright (C) 1991,1995,1996,1998,1999,2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -22,9 +22,7 @@ - /* Read formatted input from S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --swscanf (s, format) -- const wchar_t *s; -- const wchar_t *format; -+swscanf (const wchar_t *s, const wchar_t *format, ...) - { - va_list arg; - int done; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.2.5/unwind-arm.patch --- a/patches/glibc/2.2.5/unwind-arm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -# See http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2002-September/011508.html -# Fixes error -# arm-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libc.so.6: undefined reference to `size_of_encoded_value' -# arm-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/libc.so.6: undefined reference to `read_encoded_value_with_base' -# make[2]: *** [arm-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/iconv/iconvconfig] Error 1 - ---- glibc-2.2.5/sysdeps/unix/sysv/linux/configure.old Sun Jan 20 19:27:33 2002 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/configure Sun Jun 8 03:33:03 2003 -@@ -56,6 +56,10 @@ - arch_minimum_kernel=2.1.100 - libc_cv_gcc_unwind_find_fde=yes - ;; -+ arm*) -+ libc_cv_gcc_unwind_find_fde=yes -+ arch_minimum_kernel=2.0.10 -+ ;; - i386*) - libc_cv_gcc_unwind_find_fde=yes - arch_minimum_kernel=2.0.10 diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/README-hppa --- a/patches/glibc/2.3.2/README-hppa Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -[See also http://parisc-linux.org/toolchain - One of these days I'll have a look at what they've - got there, and incorporate their patches.] - -------- - -The error - -../linuxthreads/sysdeps/pthread/errno-loc.c: In function `__errno_location': -../linuxthreads/sysdeps/pthread/errno-loc.c:39: `pthread_descr' undeclared (first use in this function) -../linuxthreads/sysdeps/pthread/errno-loc.c:39: (Each undeclared identifier is reported only once -../linuxthreads/sysdeps/pthread/errno-loc.c:39: for each function it appears in.) -../linuxthreads/sysdeps/pthread/errno-loc.c:39: syntax error before "self" -../linuxthreads/sysdeps/pthread/errno-loc.c:40: warning: implicit declaration of function `LIBC_THREAD_GETMEM' -../linuxthreads/sysdeps/pthread/errno-loc.c:40: `self' undeclared (first use in this function) -../linuxthreads/sysdeps/pthread/errno-loc.c:40: `p_errnop' undeclared (first use in this function) -../linuxthreads/sysdeps/pthread/errno-loc.c:40: warning: return makes pointer from integer without a cast -make[2]: *** [/home/gotom/glibc/glibc-2.3.2/build/csu/errno-loc.o] Error 1 -make[2]: Leaving directory `/home/gotom/glibc/glibc-2.3.2/glibc-2.3.2/csu' -make[1]: *** [csu/subdir_lib] Error 2 - -means that hppa does not yet have the proper stuff for linuxthreads. - -See -http://groups.google.com/groups?selm=20030322165012%247208%40gated-at.bofh.it -http://lists.debian.org/debian-glibc/2003/debian-glibc-200303/msg00472.html - -A set of experimental patches is at -http://www.baldric.uwo.ca/~carlos/glibc-2.3.2-patches.tar.gz -but since they touch generic code, I'm not comfortable using them in general yet. -Go ahead and grab them if you want to build for hppa before hppa -support is merged into glibc. diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/arm-asm-clobber.patch --- a/patches/glibc/2.3.2/arm-asm-clobber.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -http://gcc.gnu.org/PR11103 -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/arm/sysdep.h.diff?r1=1.22&r2=1.23&cvsroot=glibc -http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-July/005826.html - -Error: -../sysdeps/unix/sysv/linux/arm/sigaction.c: In function `__libc_sigaction': -../sysdeps/unix/sysv/linux/arm/sigaction.c:100: error: asm-specifier for variable `_a1' conflicts with asm clobber list -../sysdeps/unix/sysv/linux/arm/sigaction.c:139: error: asm-specifier for variable `_a1' conflicts with asm clobber list -make[2]: *** [build-glibc/signal/sigaction.o] Error 1 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/arm/sysdep.h,v -retrieving revision 1.22 -retrieving revision 1.23 -diff -u -r1.22 -r1.23 ---- libc/sysdeps/unix/sysv/linux/arm/sysdep.h 2003/03/23 19:42:22 1.22 -+++ libc/sysdeps/unix/sysv/linux/arm/sysdep.h 2003/03/24 19:00:28 1.23 -@@ -174,7 +174,7 @@ - asm volatile ("swi %1 @ syscall " #name \ - : "=r" (_a1) \ - : "i" (SYS_ify(name)) ASM_ARGS_##nr \ -- : "a1", "memory"); \ -+ : "memory"); \ - _sys_result = _a1; \ - } \ - (int) _sys_result; }) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/arm-ctl_bus_isa.patch --- a/patches/glibc/2.3.2/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/arm-mcount_internal.patch --- a/patches/glibc/2.3.2/arm-mcount_internal.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Submitted: -# -# Robert Schwebel, 2003-12-22 -# -# Error: -# -# ... undefined reference to mcount_internal ... -# -# Description: -# -# State: -# -# unknown -# - ---- glibc-2.3.2/sysdeps/arm/machine-gmon.h 2001-07-07 21:21:19.000000000 +0200 -+++ glibc-2.3.2-ptx/sysdeps/arm/machine-gmon.h 2003-12-21 23:58:26.000000000 +0100 -@@ -32,10 +32,8 @@ - weak_alias (_mcount, mcount) - #endif - --static void mcount_internal (u_long frompc, u_long selfpc); -- - #define _MCOUNT_DECL(frompc, selfpc) \ --static void mcount_internal (u_long frompc, u_long selfpc) -+void mcount_internal (u_long frompc, u_long selfpc) - - /* This macro/func MUST save r0, r1 because the compiler inserts - blind calls to _mount(), ignoring the fact that _mcount may diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/epoll-epollet.patch --- a/patches/glibc/2.3.2/epoll-epollet.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/sys/epoll.h.diff?r1=1.1&r2=1.2&cvsroot=glibc -Needed for modern sys_epoll. - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/sys/epoll.h,v -retrieving revision 1.1 -retrieving revision 1.2 -diff -u -r1.1 -r1.2 ---- libc/sysdeps/unix/sysv/linux/sys/epoll.h 2002/12/16 23:35:27 1.1 -+++ libc/sysdeps/unix/sysv/linux/sys/epoll.h 2003/03/24 23:50:25 1.2 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2002 Free Software Foundation, Inc. -+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -42,8 +42,10 @@ - #define EPOLLMSG EPOLLMSG - EPOLLERR = 0x008, - #define EPOLLERR EPOLLERR -- EPOLLHUP = 0x010 -+ EPOLLHUP = 0x010, - #define EPOLLHUP EPOLLHUP -+ EPOLLET = (1 << 31) -+#define EPOLLET EPOLLET - }; - - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/epoll-stdint.patch --- a/patches/glibc/2.3.2/epoll-stdint.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/sys/epoll.h.diff?r1=1.2&r2=1.3&cvsroot=glibc -Include . - -Fixes error -/foo/gcc-3.3.2-glibc-2.3.2/powerpc-750-linux-gnu/sys-include/sys/epoll.h:60: error: parse error before "uint32_t" -/foo/gcc-3.3.2-glibc-2.3.2/powerpc-750-linux-gnu/sys-include/sys/epoll.h:66: error: parse error before "uint32_t" - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/sys/epoll.h,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -r1.2 -r1.3 ---- libc/sysdeps/unix/sysv/linux/sys/epoll.h 2003/03/24 23:50:25 1.2 -+++ libc/sysdeps/unix/sysv/linux/sys/epoll.h 2003/06/13 19:49:50 1.3 -@@ -19,6 +19,7 @@ - #ifndef _SYS_EPOLL_H - #define _SYS_EPOLL_H 1 - -+#include - #include - - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/errlist-awk.patch --- a/patches/glibc/2.3.2/errlist-awk.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,11 +0,0 @@ ---- glibc-2.3.2/sysdeps/gnu/errlist.awk.old Tue May 27 18:10:37 2003 -+++ glibc-2.3.2/sysdeps/gnu/errlist.awk Tue May 27 18:10:47 2003 -@@ -39,7 +39,7 @@ - - print "/* This file is generated from errno.texi by errlist.awk. */" - print ""; -- print "#include "; -+ print "#include "; - print "#include "; - print ""; - print "#ifndef ERR_REMAP"; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/fixup.patch --- a/patches/glibc/2.3.2/fixup.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -Fixes -dl-runtime.c:56: error: conflicting types for 'fixup' -../sysdeps/i386/dl-machine.h:158: error: previous declaration of 'fixup' was here -when building with gcc-3.4.0 - -First hunk: -Define ARCH_FIXUP_ATTRIBUTE and use it in the fixup function declarations. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/dl-machine.h.diff?r1=1.124&r2=1.125&cvsroot=glibc - -Second hunk: -If ARCH_FIXUP_ATTRIBUTE is not defined, provide dummy definition. -Use macro in fixup function definitions. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/elf/dl-runtime.c.diff?r1=1.64&r2=1.65&cvsroot=glibc -[rediffed against glibc-2.3.2] - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/i386/dl-machine.h,v -retrieving revision 1.124 -retrieving revision 1.125 -diff -u -r1.124 -r1.125 ---- libc/sysdeps/i386/dl-machine.h 2004/03/05 10:14:49 1.124 -+++ libc/sysdeps/i386/dl-machine.h 2004/03/09 07:42:29 1.125 -@@ -154,11 +154,14 @@ - destroys the passed register information. */ - /* GKM FIXME: Fix trampoline to pass bounds so we can do - without the `__unbounded' qualifier. */ --static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset) -- __attribute__ ((regparm (2), unused)); -+#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused)) -+ -+static ElfW(Addr) fixup (struct link_map *__unbounded l, -+ ElfW(Word) reloc_offset) -+ ARCH_FIXUP_ATTRIBUTE; - static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset, - ElfW(Addr) retaddr) -- __attribute__ ((regparm (3), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - # endif - - /* This code is used in dl-runtime.c to call the `fixup' function -=================================================================== ---- /home/dank/downloads/glibc-2.3.2/elf/dl-runtime.c Fri Feb 7 11:41:12 2003 -+++ glibc-2.3.2/elf/dl-runtime.c Thu Apr 8 22:24:26 2004 -@@ -36,6 +36,12 @@ - # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym)) - #endif - -+/* The fixup functions might have need special attributes. If none -+ are provided define the macro as empty. */ -+#ifndef ARCH_FIXUP_ATTRIBUTE -+# define ARCH_FIXUP_ATTRIBUTE -+#endif -+ - - /* This function is called through a special trampoline from the PLT the - first time each PLT entry is called. We must perform the relocation -@@ -45,7 +51,7 @@ - function. */ - - #ifndef ELF_MACHINE_NO_PLT --static ElfW(Addr) __attribute_used__ -+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE - fixup ( - # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, -@@ -132,7 +138,7 @@ - - #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__ - --static ElfW(Addr) __attribute_used__ -+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE - profile_fixup ( - #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/gcc-pr-9552-workaround.patch --- a/patches/glibc/2.3.2/gcc-pr-9552-workaround.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -See http://gcc.gnu.org/PR9552 - -Works around gcc error - "soinit.c:25: internal compiler error: in named_section_flags, at varasm.c:412" -by fixing slightly incorrect code in glibc (the .eh_frame section used to -be read-write, but it's now readonly according to discussion in -http://sources.redhat.com/ml/binutils/2002-11/msg00592.html, -so it's arguably incorrect to continue to put variables in there that aren't const). - ---- glibc-2.3.2/elf/soinit.c 2001-11-16 00:09:20.000000000 +0100 -+++ glibc-2.3.2/elf/soinit.c 2003-08-12 09:13:34.000000000 +0200 -@@ -25,7 +25,7 @@ - } - - #ifdef HAVE_DWARF2_UNWIND_INFO --static char __EH_FRAME_BEGIN__[] -+const static char __EH_FRAME_BEGIN__[] - __attribute__ ((section (".eh_frame"))) - = { }; - # ifdef HAVE_DWARF2_UNWIND_INFO_STATIC diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.2.5-crosstest.patch --- a/patches/glibc/2.3.2/glibc-2.2.5-crosstest.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -Fixes errors like - /build-glibc/dlfcn/glrefmain: cannot load `glreflib1.so' -in glibc regression test - ---- glibc-2.2.5/dlfcn/Makefile.old Thu Jul 24 16:30:20 2003 -+++ glibc-2.2.5/dlfcn/Makefile Thu Jul 24 17:25:01 2003 -@@ -60,6 +60,8 @@ - test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names))) - $(test-modules): $(objpfx)%.so: $(objpfx)%.os - $(build-module) -+# without following rule, test-modules don't get built when cross-compiling -+tests: $(test-modules) - - $(objpfx)glrefmain: $(libdl) - $(objpfx)glrefmain.out: $(objpfx)glrefmain \ ---- glibc-2.2.5/elf/Makefile.old Thu Jul 24 18:17:12 2003 -+++ glibc-2.2.5/elf/Makefile Thu Jul 24 18:18:58 2003 -@@ -263,6 +263,9 @@ - test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(strip $(modules-names)))) - generated += $(addsuffix .so,$(strip $(modules-names))) - -+# without following rule, test-modules don't get built when cross-compiling -+tests: $(test-modules) -+ - ifeq (yes,$(build-shared)) - ifeq ($(cross-compiling),no) - tests: $(objpfx)tst-pathopt.out diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.2.5-mips-clone-local-label.patch --- a/patches/glibc/2.3.2/glibc-2.2.5-mips-clone-local-label.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -This is a workaround for - -mipsel-unknown-linux-gnu-gcc ../sysdeps/unix/sysv/linux/mips/clone.S -c -I../include -I. -I/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc -I.. -I../libio -I/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc -I../sysdeps/mips/elf -I../linuxthreads/sysdeps/unix/sysv/linux -I../linuxthreads/sysdeps/pthread -I../sysdeps/pthread -I../linuxthreads/sysdeps/unix/sysv -I../linuxthreads/sysdeps/unix -I../linuxthreads/sysdeps/mips -I../sysdeps/unix/sysv/linux/mips -I../sysdeps/unix/sysv/linux -I../sysdeps/gnu -I../sysdeps/unix/common -I../sysdeps/unix/mman -I../sysdeps/unix/inet -I../sysdeps/unix/sysv -I../sysdeps/unix/mips -I../sysdeps/unix -I../sysdeps/posix -I../sysdeps/mips/mipsel -I../sysdeps/mips/fpu -I../sysdeps/mips -I../sysdeps/wordsize-32 -I../sysdeps/ieee754/flt-32 -I../sysdeps/ieee754/dbl-64 -I../sysdeps/ieee754 -I../sysdeps/generic/elf -I../sysdeps/generic -nostdinc -isystem /home3/dank/crosstool-0.7/result/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/lib/gcc-lib/mipsel-unknown-linux-gnu/3.2.3/include -isystem /home3/dank/crosstool-0.7/result/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/mipsel-unknown-linux-gnu/include -D_LIBC_REENTRANT -include ../include/libc-symbols.h -DPIC -DASSEMBLER -o /home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc/clone.o -../sysdeps/unix/sysv/linux/mips/clone.S: Assembler messages: -../sysdeps/unix/sysv/linux/mips/clone.S:66: Error: Can not represent BFD_RELOC_16_PCREL_S2 relocation in this object file format -make[2]: *** [/home3/dank/crosstool-0.7/build/mipsel-unknown-linux-gnu/gcc-3.2.3-glibc-2.2.5/build-glibc/misc/clone.o] Error 1 - -which was using h.j.lu's binutils-2.13.90.0.18. - - -But see http://lists.debian.org/debian-mips/2003/debian-mips-200305/msg00011.html -which says -"A newer version of binutils (CVS post 2003-03-12) fixes it without -the need of changing perfectly legal code." -So presumably this can be ditched sooner or later. - -From http://honk.physik.uni-konstanz.de/~agx/linux-mips/glibc/patches/applied/clone-local-label.diff - -2003-03-13 Guido Guenther - - * sysdeps/unix/sysv/linux/mips/clone.S: introduce and use local label - .Lthread_start since current binutils don't allow branches to globally - visible symbols. - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/clone.S,v -retrieving revision 1.10 -diff -u -r1.10 clone.S ---- glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 12 Mar 2003 01:04:51 -0000 1.10 -+++ glibc-2.2.5/sysdeps/unix/sysv/linux/mips/clone.S 12 Mar 2003 19:04:39 -0000 -@@ -63,7 +63,7 @@ - syscall - - bnez a3,error -- beqz v0,__thread_start -+ beqz v0,.Lthread_start - - /* Successful return from the parent */ - addiu sp,32 -@@ -85,6 +85,7 @@ - debug info. */ - - ENTRY(__thread_start) -+.Lthread_start: - /* cp is already loaded. */ - .cprestore 16 - /* The stackframe has been created on entry of clone(). */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.4-inline.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.4-inline.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -Fixes -cc1: error: invalid parameter `max-inline-insns' -make[2]: *** [/home/dank/wk/crosstool-0.28-rc6/build/powerpc64-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/dl-load.o] Error 1 -when building with gcc-3.4.0, which no longer has a single ---max-inline-insns parameter. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/powerpc/powerpc64/Makefile.diff?r1=1.3&r2=1.4&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc64/Makefile,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/sysdeps/powerpc/powerpc64/Makefile 2003/10/22 21:30:03 1.3 -+++ libc/sysdeps/powerpc/powerpc64/Makefile 2004/02/20 05:43:52 1.4 -@@ -20,5 +20,5 @@ - - ifeq ($(subdir),elf) - # help gcc inline asm code from dl-machine.h --+cflags += --param max-inline-insns=2000 -++cflags += -finline-limit=2000 - endif - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.4-nounit.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.4-nounit.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,137 +0,0 @@ -Fixes errors like - -# gcc-3.4.0-glibc-2.3.2/build-glibc/csu/crtn.o(.text+0x0):mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/csu/crtn.S:20: multiple definition of `dummy' -# gcc-3.4.0-glibc-2.3.2/build-glibc/csu/crti.o(.text+0x0):mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/csu/crti.S:42: first defined here -# /gcc-3.4.0-glibc-2.3.2/build-glibc/csu/crti.o(.init+0x28):mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/csu/crti.S:58: undefined reference to `i_am_not_a_leaf' - -CVSROOT: /cvs/glibc -Module name: libc -Changes by: aj@sourceware.org 2003-12-02 07:37:29 - -Modified files: - . : configure.in configure config.make.in - csu : Makefile - locale : Makefile - linuxthreads : Makefile - linuxthreads/sysdeps/unix/sysv/linux/x86_64: Makefile - nptl : Makefile - nptl/sysdeps/unix/sysv/linux/x86_64: Makefile - -Log message: - * config.make.in (fno-unit-at-a-time): Define. - - * configure.in: Add test for -fno-unit-at-a-time. - Fix text for -fpie. - - * csu/Makefile (CFLAGS-initfini.s): Add $(fno_unit_at_a_time). - * locale/Makefile (CFLAGS-loadlocale.c): Likewise. - - For linuxthreads: - * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time). - * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s): - Likewise. - - For nptl: - * Makefile (CFLAGS-pt-initfini.s): Add $(fno_unit_at_a_time). - * sysdeps/unix/sysv/linux/x86_64/Makefile (CFLAGS-pt-initfini.s): - Likewise. - -Main glibc change retrieved with -wget -O foo.patch 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/config.make.in.diff?r1=1.98&r2=1.99&cvsroot=glibc' \ -'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/configure.diff?r1=1.393&r2=1.394&cvsroot=glibc' \ -'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/csu/Makefile.diff?r1=1.71&r2=1.72&cvsroot=glibc' \ -'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/locale/Makefile.diff?r1=1.71&r2=1.72&cvsroot=glibc' - -and then rediffed against glibc-2.3.2 -See also ../glibc-linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-allow-3.4.patch - -diff -aur glibc-2.3.2/config.make.in glibc-2.3.2-nounit/config.make.in ---- glibc-2.3.2/config.make.in 2002-11-14 14:53:32.000000000 -0800 -+++ glibc-2.3.2-nounit/config.make.in 2004-05-29 23:19:58.000000000 -0700 -@@ -50,6 +50,7 @@ - old-glibc-headers = @old_glibc_headers@ - unwind-find-fde = @libc_cv_gcc_unwind_find_fde@ - have-initfini-array = @libc_cv_initfinit_array@ -+fno-unit-at-a-time = @fno_unit_at_a_time@ - - static-libgcc = @libc_cv_gcc_static_libgcc@ - -diff -aur glibc-2.3.2/configure glibc-2.3.2-nounit/configure ---- glibc-2.3.2/configure 2003-02-26 01:20:48.000000000 -0800 -+++ glibc-2.3.2-nounit/configure 2004-05-30 06:22:31.000000000 -0700 -@@ -312,7 +312,7 @@ - # include - #endif" - --ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S PWD_P CC MAKE MSGFMT MAKEINFO SED AUTOCONF CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc libc_cv_have_initfini no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' -+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS with_fp with_cvs oldest_abi subdirs force_install all_warnings build build_cpu build_vendor build_os host host_cpu host_vendor host_os base_machine sysnames INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LN_S PWD_P CC MAKE MSGFMT MAKEINFO SED AUTOCONF CFLAGS LDFLAGS CPPFLAGS ac_ct_CC OBJEXT BUILD_CC cross_compiling CPP AR OBJDUMP RANLIB ac_ct_RANLIB MIG AS LD CCVERSION SYSINCLUDES libc_cv_gcc_static_libgcc BASH libc_cv_have_bash2 KSH libc_cv_have_ksh AWK PERL INSTALL_INFO OLD_DEBIAN_INSTALL_INFO BISON VERSIONING libc_cv_asm_protected_directive libc_cv_initfinit_array libc_cv_z_nodelete libc_cv_z_nodlopen libc_cv_z_initfirst libc_cv_Bgroup libc_cv_z_combreloc fno_unit_at_a_time libc_cv_have_initfini no_whole_archive exceptions LIBGD EGREP sizeof_long_double libc_cv_gcc_unwind_find_fde uname_sysname uname_release uname_version old_glibc_headers libc_cv_slibdir libc_cv_localedir libc_cv_sysconfdir libc_cv_rootsbindir use_ldconfig ldd_rewrite_script gnu_ld gnu_as elf xcoff static shared pic_default profile omitfp bounded static_nss nopic_initfini DEFINES linux_doors mach_interface_list VERSION RELEASE LIBOBJS LTLIBOBJS' - ac_subst_files='' - - # Initialize some variables set by options. -@@ -4984,6 +4984,35 @@ - fi - - -+echo "$as_me:$LINENO: checking for -fno-unit-at-a-time" >&5 -+echo $ECHO_N "checking for -fno-unit-at-a-time... $ECHO_C" >&6 -+if test "${libc_cv_fno_unit_at_a_time+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat > conftest.c <&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } -+then -+ libc_cv_fno_unit_at_a_time=yes -+else -+ libc_cv_fno_unit_at_a_time=no -+fi -+rm -f conftest* -+fi -+echo "$as_me:$LINENO: result: $libc_cv_fno_unit_at_a_time" >&5 -+echo "${ECHO_T}$libc_cv_fno_unit_at_a_time" >&6 -+if test $libc_cv_fno_unit_at_a_time = yes; then -+ fno_unit_at_a_time=-fno-unit-at-a-time -+fi -+ -+ - if test $elf != yes; then - echo "$as_me:$LINENO: checking for .init and .fini sections" >&5 - echo $ECHO_N "checking for .init and .fini sections... $ECHO_C" >&6 -@@ -7236,6 +7265,7 @@ - s,@libc_cv_z_initfirst@,$libc_cv_z_initfirst,;t t - s,@libc_cv_Bgroup@,$libc_cv_Bgroup,;t t - s,@libc_cv_z_combreloc@,$libc_cv_z_combreloc,;t t -+s,@fno_unit_at_a_time@,$fno_unit_at_a_time,;t t - s,@libc_cv_have_initfini@,$libc_cv_have_initfini,;t t - s,@no_whole_archive@,$no_whole_archive,;t t - s,@exceptions@,$exceptions,;t t -diff -aur glibc-2.3.2/csu/Makefile glibc-2.3.2-nounit/csu/Makefile ---- glibc-2.3.2/csu/Makefile 2002-12-31 14:24:37.000000000 -0800 -+++ glibc-2.3.2-nounit/csu/Makefile 2004-05-29 23:18:27.000000000 -0700 -@@ -99,7 +99,7 @@ - $(objpfx)crt%.o: $(objpfx)crt%.S $(objpfx)defs.h - $(compile.S) -g0 $(ASFLAGS-.os) -o $@ - --CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions -+CFLAGS-initfini.s = -g0 -fPIC -fno-inline-functions $(fno-unit-at-a-time) - - vpath initfini.c $(full_config_sysdirs) - -diff -aur glibc-2.3.2/locale/Makefile glibc-2.3.2-nounit/locale/Makefile ---- glibc-2.3.2/locale/Makefile 2002-10-17 10:05:53.000000000 -0700 -+++ glibc-2.3.2-nounit/locale/Makefile 2004-05-29 23:18:27.000000000 -0700 -@@ -100,6 +100,7 @@ - CFLAGS-charmap.c = -Wno-write-strings -Wno-char-subscripts - CFLAGS-locfile.c = -Wno-write-strings -Wno-char-subscripts - CFLAGS-charmap-dir.c = -Wno-write-strings -+CFLAGS-loadlocale.c = $(fno-unit-at-a-time) - - # This makes sure -DNOT_IN_libc is passed for all these modules. - cpp-srcs-left := $(addsuffix .c,$(localedef-modules) $(localedef-aux) \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-PR14096.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-PR14096.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ ---- glibc-2.3.2/stdlib/abs.c.old 2004-07-18 12:08:43.000000000 -0700 -+++ glibc-2.3.2/stdlib/abs.c 2004-07-18 12:09:18.000000000 -0700 -@@ -16,6 +16,8 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#define __NO_INLINE__ 1 /* avoid http://gcc.gnu.org/PR14096 */ -+ - #include - - #undef abs ---- glibc-2.3.2/stdlib/atoi.c.old 2004-07-18 12:08:17.000000000 -0700 -+++ glibc-2.3.2/stdlib/atoi.c 2004-07-18 12:08:27.000000000 -0700 -@@ -16,6 +16,8 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#define __NO_INLINE__ 1 /* avoid http://gcc.gnu.org/PR14096 */ -+ - #include - - #undef atoi ---- glibc-2.3.2/stdlib/atof.c.old 2004-07-18 12:06:09.000000000 -0700 -+++ glibc-2.3.2/stdlib/atof.c 2004-07-18 12:05:31.000000000 -0700 -@@ -16,6 +16,8 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#define __NO_INLINE__ 1 /* avoid http://gcc.gnu.org/PR14096 */ -+ - #include - - #undef atof ---- glibc-2.3.2/stdlib/atol.c.old 2004-07-18 12:08:49.000000000 -0700 -+++ glibc-2.3.2/stdlib/atol.c 2004-07-18 12:09:40.000000000 -0700 -@@ -16,6 +16,8 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#define __NO_INLINE__ 1 /* avoid http://gcc.gnu.org/PR14096 */ -+ - #include - - #undef atol ---- glibc-2.3.2/stdlib/atoll.c.old 2004-07-18 12:08:55.000000000 -0700 -+++ glibc-2.3.2/stdlib/atoll.c 2004-07-18 12:09:59.000000000 -0700 -@@ -16,6 +16,8 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#define __NO_INLINE__ 1 /* avoid http://gcc.gnu.org/PR14096 */ -+ - #include - - #undef atoll diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-elf.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-elf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/elf/dl-load.c.diff?r1=1.235&r2=1.236&cvsroot=glibc - -Fixes gcc-3.5 errors - -dl-load.c: In function `_dl_map_object_from_fd': -dl-load.c:1179: error: invalid lvalue in assignment -dl-load.c:1205: error: invalid lvalue in assignment - -=================================================================== -RCS file: /cvs/glibc/libc/elf/dl-load.c,v -retrieving revision 1.235 -retrieving revision 1.236 -diff -u -r1.235 -r1.236 ---- libc/elf/dl-load.c 2004/02/09 07:03:48 1.235 -+++ libc/elf/dl-load.c 2004/02/21 18:25:41 1.236 -@@ -1228,7 +1228,7 @@ - } - else - /* Adjust the PT_PHDR value by the runtime load address. */ -- (ElfW(Addr)) l->l_phdr += l->l_addr; -+ l->l_phdr = (ElfW(Phdr) *) ((ElfW(Addr)) l->l_phdr + l->l_addr); - } - - #ifdef USE_TLS -@@ -1254,7 +1254,7 @@ - } - } - else -- (ElfW(Addr)) l->l_ld += l->l_addr; -+ l->l_ld = (ElfW(Dyn) *) ((ElfW(Addr)) l->l_ld + l->l_addr); - - l->l_entry += l->l_addr; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-gconv.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-gconv.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -Fixes -gconv_open.c: In function `__gconv_open': -gconv_open.c:186: error: invalid lvalue in assignment -when building glibc-2.3.2 with gcc-3.5. - -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/iconv/gconv_simple.c.diff?r1=1.59&r2=1.63&cvsroot=glibc' - * (internal_ucs4_loop): Fix typo in last change. - - * (internal_ucs4le_loop): Remove cast used as lvalue. - - * Fix last commit. - - * iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as lvalue. - (internal_ucs4le_loop_single): Likewise. - (ucs4_internal_loop): Likewise. - (BODY): Likewise. - (internal_ucs4_loop_single): Likewise. - -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/iconv/gconv_open.c.diff?r1=1.32&r2=1.33&cvsroot=glibc' - * iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as lvalue. - (internal_ucs4le_loop_single): Likewise. - (ucs4_internal_loop): Likewise. - (BODY): Likewise. - (internal_ucs4_loop_single): Likewise. - - -=================================================================== -RCS file: /cvs/glibc/libc/iconv/gconv_open.c,v -retrieving revision 1.32 -retrieving revision 1.33 -diff -u -r1.32 -r1.33 ---- libc/iconv/gconv_open.c 2001/11/29 04:51:58 1.32 -+++ libc/iconv/gconv_open.c 2004/02/07 15:56:32 1.33 -@@ -1,5 +1,5 @@ - /* Find matching transformation algorithms and initialize steps. -- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - -@@ -182,8 +182,13 @@ - || __builtin_expect (__gconv_translit_find (runp), 0) == 0) - lastp = runp; - else -- /* This means we haven't found the module. Remove it. */ -- (lastp == NULL ? trans : lastp->next) = runp->next; -+ { -+ /* This means we haven't found the module. Remove it. */ -+ if (lastp == NULL) -+ trans = runp->next; -+ else -+ lastp->next = runp->next; -+ } - } - - /* Allocate room for handle. */ -=================================================================== -RCS file: /cvs/glibc/libc/iconv/gconv_simple.c,v -retrieving revision 1.59 -retrieving revision 1.63 -diff -u -r1.59 -r1.63 ---- libc/iconv/gconv_simple.c 2003/06/11 21:36:37 1.59 -+++ libc/iconv/gconv_simple.c 2004/03/09 10:00:31 1.63 -@@ -1,5 +1,5 @@ - /* Simple transformations functions. -- Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. -+ Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - -@@ -87,12 +87,13 @@ - #if __BYTE_ORDER == __LITTLE_ENDIAN - /* Sigh, we have to do some real work. */ - size_t cnt; -+ uint32_t *outptr32 = (uint32_t *) outptr; - - for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) -- *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); -+ *outptr32++ = bswap_32 (*(const uint32_t *) inptr); - - *inptrp = inptr; -- *outptrp = outptr; -+ *outptrp = (unsigned char *) outptr32; - #elif __BYTE_ORDER == __BIG_ENDIAN - /* Simply copy the data. */ - *inptrp = inptr + n_convert * 4; -@@ -192,13 +193,16 @@ - (*outptrp)[2] = state->__value.__wchb[1]; - (*outptrp)[3] = state->__value.__wchb[0]; - -- *outptrp += 4; - #elif __BYTE_ORDER == __BIG_ENDIAN - /* XXX unaligned */ -- *(*((uint32_t **) outptrp)++) = state->__value.__wch; -+ (*outptrp)[0] = state->__value.__wchb[0]; -+ (*outptrp)[1] = state->__value.__wchb[1]; -+ (*outptrp)[2] = state->__value.__wchb[2]; -+ (*outptrp)[3] = state->__value.__wchb[3]; - #else - # error "This endianess is not supported." - #endif -+ *outptrp += 4; - - /* Clear the state buffer. */ - state->__count &= ~7; -@@ -268,7 +272,8 @@ - return __GCONV_ILLEGAL_INPUT; - } - -- *((uint32_t *) outptr)++ = inval; -+ *((uint32_t *) outptr) = inval; -+ outptr += sizeof (uint32_t); - } - - *inptrp = inptr; -@@ -447,9 +452,11 @@ - #if __BYTE_ORDER == __BIG_ENDIAN - /* Sigh, we have to do some real work. */ - size_t cnt; -+ uint32_t *outptr32 = (uint32_t *) outptr; - - for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) -- *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); -+ *outptr32++ = bswap_32 (*(const uint32_t *) inptr); -+ outptr = (unsigned char *) outptr32; - - *inptrp = inptr; - *outptrp = outptr; -@@ -555,12 +562,17 @@ - (*outptrp)[2] = state->__value.__wchb[1]; - (*outptrp)[3] = state->__value.__wchb[0]; - -- *outptrp += 4; - #else - /* XXX unaligned */ -- *(*((uint32_t **) outptrp)++) = state->__value.__wch; -+ (*outptrp)[0] = state->__value.__wchb[0]; -+ (*outptrp)[1] = state->__value.__wchb[1]; -+ (*outptrp)[2] = state->__value.__wchb[2]; -+ (*outptrp)[3] = state->__value.__wchb[3]; -+ - #endif - -+ *outptrp += 4; -+ - /* Clear the state buffer. */ - state->__count &= ~7; - -@@ -626,7 +638,8 @@ - return __GCONV_ILLEGAL_INPUT; - } - -- *((uint32_t *) outptr)++ = inval; -+ *((uint32_t *) outptr) = inval; -+ outptr += sizeof (uint32_t); - } - - *inptrp = inptr; -@@ -808,7 +821,8 @@ - } \ - else \ - /* It's an one byte sequence. */ \ -- *((uint32_t *) outptr)++ = *inptr++; \ -+ *((uint32_t *) outptr) = *inptr++; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #include -@@ -838,7 +852,8 @@ - } \ - else \ - /* It's an one byte sequence. */ \ -- *outptr++ = *((const uint32_t *) inptr)++; \ -+ *outptr++ = *((const uint32_t *) inptr); \ -+ inptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #include -@@ -1032,7 +1047,8 @@ - } \ - \ - /* Now adjust the pointers and store the result. */ \ -- *((uint32_t *) outptr)++ = ch; \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - -@@ -1153,7 +1169,8 @@ - STANDARD_FROM_LOOP_ERR_HANDLER (2); \ - } \ - \ -- *((uint32_t *) outptr)++ = u1; \ -+ *((uint32_t *) outptr) = u1; \ -+ outptr += sizeof (uint32_t); \ - inptr += 2; \ - } - #define LOOP_NEED_FLAGS -@@ -1201,7 +1218,8 @@ - } \ - else \ - { \ -- *((uint16_t *) outptr)++ = val; \ -+ *((uint16_t *) outptr) = val; \ -+ outptr += sizeof (uint16_t); \ - inptr += 4; \ - } \ - } -@@ -1242,7 +1260,8 @@ - continue; \ - } \ - \ -- *((uint32_t *) outptr)++ = u1; \ -+ *((uint32_t *) outptr) = u1; \ -+ outptr += sizeof (uint32_t); \ - inptr += 2; \ - } - #define LOOP_NEED_FLAGS -@@ -1291,7 +1310,8 @@ - } \ - else \ - { \ -- *((uint16_t *) outptr)++ = bswap_16 (val); \ -+ *((uint16_t *) outptr) = bswap_16 (val); \ -+ outptr += sizeof (uint16_t); \ - inptr += 4; \ - } \ - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-msort.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-msort.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/stdlib/msort.c.diff?r1=1.20&r2=1.21&cvsroot=glibc - -Fixes - -msort.c: In function `msort_with_tmp': -msort.c:59: error: invalid lvalue in increment -msort.c:59: error: invalid lvalue in increment -msort.c:64: error: invalid lvalue in increment -msort.c:64: error: invalid lvalue in increment - -when building with gcc-3.5. - -=================================================================== -RCS file: /cvs/glibc/libc/stdlib/msort.c,v -retrieving revision 1.20 -retrieving revision 1.21 -diff -u -r1.20 -r1.21 ---- libc/stdlib/msort.c 2002/09/24 04:20:57 1.20 -+++ libc/stdlib/msort.c 2004/02/07 15:57:34 1.21 -@@ -1,6 +1,6 @@ - /* An alternative to qsort, with an identical interface. - This file is part of the GNU C Library. -- Copyright (C) 1992,95-97,99,2000,01,02 Free Software Foundation, Inc. -+ Copyright (C) 1992,95-97,99,2000,01,02,04 Free Software Foundation, Inc. - Written by Mike Haertel, September 1988. - - The GNU C Library is free software; you can redistribute it and/or -@@ -56,12 +56,16 @@ - if ((*cmp) (b1, b2) <= 0) - { - --n1; -- *((op_t *) tmp)++ = *((op_t *) b1)++; -+ *((op_t *) tmp) = *((op_t *) b1); -+ tmp += sizeof (op_t); -+ b1 += sizeof (op_t); - } - else - { - --n2; -- *((op_t *) tmp)++ = *((op_t *) b2)++; -+ *((op_t *) tmp) = *((op_t *) b2); -+ tmp += sizeof (op_t); -+ b2 += sizeof (op_t); - } - } - else diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-sunrpc.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-sunrpc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,233 +0,0 @@ -http://sources.redhat.com/ml/libc-hacker/2004-02/msg00005.html -[Also in CVS, but the original patch is easier to get.] - -Fixes errors like - -clnt_perr.c: In function `_buf': -clnt_perr.c:67: error: invalid lvalue in assignment - -when building with gcc-3.5. - -To: libc-hacker at sources dot redhat dot com -Subject: Fix cast as lvalue in sunrpc -From: Andreas Schwab -X-Yow: SHHHH!! I hear SIX TATTOOED TRUCK-DRIVERS tossing ENGINE BLOCKS - into empty OIL DRUMS dot dot -Date: Sun, 08 Feb 2004 17:38:31 +0100 -Message-ID: - -This fixes the uses of casts as lvalue in the sunrpc code. - -Andreas. - -2004-02-08 Andreas Schwab - - * include/rpc/rpc.h: Declare thread variables with their correct - type. - * sunrpc/clnt_perr.c: Don't cast thread variables. - * sunrpc/clnt_raw.c: Likewise. - * sunrpc/clnt_simp.c: Likewise. - * sunrpc/key_call.c: Likewise. - * sunrpc/svcauth_des.c: Likewise. - * sunrpc/svc.c: Likewise. - * sunrpc/svc_raw.c: Likewise. - * sunrpc/svc_simple.c: Likewise. - -Index: include/rpc/rpc.h -=================================================================== -RCS file: /cvs/glibc/libc/include/rpc/rpc.h,v -retrieving revision 1.8 -diff -u -p -a -r1.8 rpc.h ---- glibc/include/rpc/rpc.h 5 Aug 2002 22:10:59 -0000 1.8 -+++ glibc/include/rpc/rpc.h 8 Feb 2004 14:19:14 -0000 -@@ -17,24 +17,24 @@ struct rpc_thread_variables { - struct pollfd *svc_pollfd_s; /* Global, rpc_common.c */ - int svc_max_pollfd_s; /* Global, rpc_common.c */ - -- void *clnt_perr_buf_s; /* clnt_perr.c */ -+ char *clnt_perr_buf_s; /* clnt_perr.c */ - -- void *clntraw_private_s; /* clnt_raw.c */ -+ struct clntraw_private_s *clntraw_private_s; /* clnt_raw.c */ - -- void *callrpc_private_s; /* clnt_simp.c */ -+ struct callrpc_private_s *callrpc_private_s; /* clnt_simp.c */ - -- void *key_call_private_s; /* key_call.c */ -+ struct key_call_private *key_call_private_s; /* key_call.c */ - -- void *authdes_cache_s; /* svcauth_des.c */ -- void *authdes_lru_s; /* svcauth_des.c */ -+ struct cache_entry *authdes_cache_s; /* svcauth_des.c */ -+ int *authdes_lru_s; /* svcauth_des.c */ - -- void *svc_xports_s; /* svc.c */ -- void *svc_head_s; /* svc.c */ -+ SVCXPRT **svc_xports_s; /* svc.c */ -+ struct svc_callout *svc_head_s; /* svc.c */ - -- void *svcraw_private_s; /* svc_raw.c */ -+ struct svcraw_private_s *svcraw_private_s; /* svc_raw.c */ - -- void *svcsimple_proglst_s; /* svc_simple.c */ -- void *svcsimple_transp_s; /* svc_simple.c */ -+ struct proglst_ *svcsimple_proglst_s; /* svc_simple.c */ -+ SVCXPRT *svcsimple_transp_s; /* svc_simple.c */ - }; - - extern struct rpc_thread_variables *__rpc_thread_variables(void) -Index: sunrpc/clnt_perr.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/clnt_perr.c,v -retrieving revision 1.19 -diff -u -p -a -r1.19 clnt_perr.c ---- glibc/sunrpc/clnt_perr.c 1 Nov 2002 20:43:54 -0000 1.19 -+++ glibc/sunrpc/clnt_perr.c 8 Feb 2004 14:19:14 -0000 -@@ -55,7 +55,7 @@ static char *auth_errmsg (enum auth_stat - * buf variable in a few functions. Overriding a global variable - * with a local variable of the same name is a bad idea, anyway. - */ --#define buf ((char *)RPC_THREAD_VARIABLE(clnt_perr_buf_s)) -+#define buf RPC_THREAD_VARIABLE(clnt_perr_buf_s) - #else - static char *buf; - #endif -Index: sunrpc/clnt_raw.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/clnt_raw.c,v -retrieving revision 1.10 -diff -u -p -a -r1.10 clnt_raw.c ---- glibc/sunrpc/clnt_raw.c 15 May 2002 00:21:00 -0000 1.10 -+++ glibc/sunrpc/clnt_raw.c 8 Feb 2004 14:19:14 -0000 -@@ -61,7 +61,7 @@ struct clntraw_private_s - u_int mcnt; - }; - #ifdef _RPC_THREAD_SAFE_ --#define clntraw_private ((struct clntraw_private_s *)RPC_THREAD_VARIABLE(clntraw_private_s)) -+#define clntraw_private RPC_THREAD_VARIABLE(clntraw_private_s) - #else - static struct clntraw_private_s *clntraw_private; - #endif -Index: sunrpc/clnt_simp.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/clnt_simp.c,v -retrieving revision 1.14 -diff -u -p -a -r1.14 clnt_simp.c ---- glibc/sunrpc/clnt_simp.c 15 May 2002 00:21:00 -0000 1.14 -+++ glibc/sunrpc/clnt_simp.c 8 Feb 2004 14:19:14 -0000 -@@ -55,7 +55,7 @@ struct callrpc_private_s - char *oldhost; - }; - #ifdef _RPC_THREAD_SAFE_ --#define callrpc_private ((struct callrpc_private_s *)RPC_THREAD_VARIABLE(callrpc_private_s)) -+#define callrpc_private RPC_THREAD_VARIABLE(callrpc_private_s) - #else - static struct callrpc_private_s *callrpc_private; - #endif -Index: sunrpc/key_call.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/key_call.c,v -retrieving revision 1.16 -diff -u -p -a -r1.16 key_call.c ---- glibc/sunrpc/key_call.c 6 Aug 2002 06:08:50 -0000 1.16 -+++ glibc/sunrpc/key_call.c 8 Feb 2004 14:19:14 -0000 -@@ -370,7 +370,7 @@ struct key_call_private { - uid_t uid; /* user-id at last authorization */ - }; - #ifdef _RPC_THREAD_SAFE_ --#define key_call_private_main ((struct key_call_private *)RPC_THREAD_VARIABLE(key_call_private_s)) -+#define key_call_private_main RPC_THREAD_VARIABLE(key_call_private_s) - #else - static struct key_call_private *key_call_private_main; - #endif -Index: sunrpc/svc.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svc.c,v -retrieving revision 1.17 -diff -u -p -a -r1.17 svc.c ---- glibc/sunrpc/svc.c 29 Aug 2003 07:45:18 -0000 1.17 -+++ glibc/sunrpc/svc.c 8 Feb 2004 14:19:14 -0000 -@@ -44,7 +44,7 @@ - #include - - #ifdef _RPC_THREAD_SAFE_ --#define xports ((SVCXPRT **)RPC_THREAD_VARIABLE(svc_xports_s)) -+#define xports RPC_THREAD_VARIABLE(svc_xports_s) - #else - static SVCXPRT **xports; - #endif -@@ -63,7 +63,7 @@ struct svc_callout { - void (*sc_dispatch) (struct svc_req *, SVCXPRT *); - }; - #ifdef _RPC_THREAD_SAFE_ --#define svc_head ((struct svc_callout *)RPC_THREAD_VARIABLE(svc_head_s)) -+#define svc_head RPC_THREAD_VARIABLE(svc_head_s) - #else - static struct svc_callout *svc_head; - #endif -Index: sunrpc/svc_raw.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svc_raw.c,v -retrieving revision 1.5 -diff -u -p -a -r1.5 svc_raw.c ---- glibc/sunrpc/svc_raw.c 26 Feb 2002 01:43:56 -0000 1.5 -+++ glibc/sunrpc/svc_raw.c 8 Feb 2004 14:19:14 -0000 -@@ -54,7 +54,7 @@ struct svcraw_private_s - char verf_body[MAX_AUTH_BYTES]; - }; - #ifdef _RPC_THREAD_SAFE_ --#define svcraw_private ((struct svcraw_private_s *)RPC_THREAD_VARIABLE(svcraw_private_s)) -+#define svcraw_private RPC_THREAD_VARIABLE(svcraw_private_s) - #else - static struct svcraw_private_s *svcraw_private; - #endif -Index: sunrpc/svc_simple.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svc_simple.c,v -retrieving revision 1.16 -diff -u -p -a -r1.16 svc_simple.c ---- glibc/sunrpc/svc_simple.c 6 Aug 2002 05:10:30 -0000 1.16 -+++ glibc/sunrpc/svc_simple.c 8 Feb 2004 14:19:14 -0000 -@@ -61,7 +61,7 @@ struct proglst_ - struct proglst_ *p_nxt; - }; - #ifdef _RPC_THREAD_SAFE_ --#define proglst ((struct proglst_ *)RPC_THREAD_VARIABLE(svcsimple_proglst_s)) -+#define proglst RPC_THREAD_VARIABLE(svcsimple_proglst_s) - #else - static struct proglst_ *proglst; - #endif -@@ -69,7 +69,7 @@ static struct proglst_ *proglst; - - static void universal (struct svc_req *rqstp, SVCXPRT *transp_s); - #ifdef _RPC_THREAD_SAFE_ --#define transp ((SVCXPRT *)RPC_THREAD_VARIABLE(svcsimple_transp_s)) -+#define transp RPC_THREAD_VARIABLE(svcsimple_transp_s) - #else - static SVCXPRT *transp; - #endif -Index: sunrpc/svcauth_des.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svcauth_des.c,v -retrieving revision 1.8 -diff -u -p -a -r1.8 svcauth_des.c ---- glibc/sunrpc/svcauth_des.c 20 Aug 2001 06:37:09 -0000 1.8 -+++ glibc/sunrpc/svcauth_des.c 8 Feb 2004 14:19:14 -0000 -@@ -72,8 +72,8 @@ struct cache_entry - char *localcred; /* generic local credential */ - }; - #ifdef _RPC_THREAD_SAFE_ --#define authdes_cache ((struct cache_entry *)RPC_THREAD_VARIABLE(authdes_cache_s)) --#define authdes_lru ((int *)RPC_THREAD_VARIABLE(authdes_lru_s)) -+#define authdes_cache RPC_THREAD_VARIABLE(authdes_cache_s) -+#define authdes_lru RPC_THREAD_VARIABLE(authdes_lru_s) - #else - static struct cache_entry *authdes_cache; - static int *authdes_lru; - --- -Andreas Schwab, SuSE Labs, schwab@suse.de -SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany -Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 -"And now for something completely different." - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-xdr.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-allow-gcc-3.5-xdr.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sunrpc/rpc/xdr.h.diff?r1=1.27&r2=1.28&cvsroot=glibc -(but see also http://sources.redhat.com/ml/libc-alpha/2004-03/msg00267.html -and http://gcc.gnu.org/ml/gcc-patches/2004-03/msg02056.html) - -Fixes errors - -rpc_cmsg.c: In function `xdr_callmsg': -rpc_cmsg.c:70: error: invalid lvalue in increment -rpc_cmsg.c:71: error: invalid lvalue in increment -rpc_cmsg.c:74: error: invalid lvalue in increment -rpc_cmsg.c:77: error: invalid lvalue in increment -rpc_cmsg.c:78: error: invalid lvalue in increment -rpc_cmsg.c:79: error: invalid lvalue in increment -rpc_cmsg.c:81: error: invalid lvalue in increment -rpc_cmsg.c:89: error: invalid lvalue in increment -rpc_cmsg.c:106: error: invalid lvalue in increment -rpc_cmsg.c:107: error: invalid lvalue in increment -rpc_cmsg.c:112: error: invalid lvalue in increment -rpc_cmsg.c:117: error: invalid lvalue in increment -rpc_cmsg.c:118: error: invalid lvalue in increment -rpc_cmsg.c:119: error: invalid lvalue in increment -rpc_cmsg.c:121: error: invalid lvalue in increment -rpc_cmsg.c:160: error: invalid lvalue in increment - -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/rpc/xdr.h,v -retrieving revision 1.27 -retrieving revision 1.28 -diff -u -r1.27 -r1.28 ---- libc/sunrpc/rpc/xdr.h 2002/12/16 02:05:49 1.27 -+++ libc/sunrpc/rpc/xdr.h 2004/03/22 10:52:33 1.28 -@@ -262,10 +262,8 @@ - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ --#define IXDR_GET_LONG(buf) \ -- ((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++)) --#define IXDR_PUT_LONG(buf, v) \ -- (*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v))) -+#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -+#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) - #define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) - #define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-alpha-pwrite64.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-alpha-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -Fix for this error: - -crosstool-0.28-rc19/build/alpha-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/libc_pic.os(.text+0xd9b2c): In function `posix_fallocate64': -: undefined reference to `__GI___pwrite64' -collect2: ld returned 1 exit status -make[1]: *** [crosstool-0.28-rc19/build/alpha-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/libc.so] Error 1 -make[1]: Leaving directory `crosstool-0.28-rc19/build/alpha-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2' -make: *** [all] Error 2 - -extracted from GLIBC CVS by Dan Kegel -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.14&r2=1.15&cvsroot=glibc' -(to match context of...) -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.16&r2=1.17&cvsroot=glibc' -and rediffed. - -cf. -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00038.html - -Originally thought we needed this hunk, too: -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00037.html -but it seems the sysdep.h change is sufficient, and works better -when compiling against linux-2.4. - -=================================================================== ---- glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h.old 2004-05-24 22:21:44.000000000 -0700 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/alpha/sysdep.h 2004-05-24 22:22:48.000000000 -0700 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003 -+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003, 2004 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, , August 1995. -@@ -60,6 +60,21 @@ - #define __NR_osf_getsysinfo 256 - #define __NR_osf_setsysinfo 257 - -+/* Help old kernel headers where particular syscalls are not available. */ -+#ifndef __NR_semtimedop -+# define __NR_semtimedop 423 -+#endif -+ -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - /* - * In order to get the hidden arguments for rt_sigaction set up - * properly, we need to call the assembly version. Detect this in the diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-arm-fix-strlen.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-arm-fix-strlen.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -See also -http://lists.gnu.org/archive/html/bug-glibc/2002-12/msg00056.html -http://lists.arm.linux.org.uk/pipermail/linux-arm-toolchain/2004-June/000016.html - -2002-12-12 Andreas Schwab - * sysdeps/arm/strlen.S: Fix last word check for big endian. - -To: libc-alpha at sources dot redhat dot com -Subject: [PATCH] REPOST: ARM big-endian strlen() fix -References: -From: Krzysztof Halasa -Date: Thu, 10 Jun 2004 13:41:44 +0200 -Message-ID: -MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="=-=-=" - ---=-=-= - -The attached patch fixes strlen() on big-endian ARM. Please apply. -Thanks. --- -Krzysztof Halasa, B*FH - ---=-=-= -Content-Type: text/x-patch -Content-Disposition: inline; filename=glibc-strlen.patch - ---- glibc-2.3.3.old/sysdeps/arm/strlen.S 2003-04-30 00:47:20.000000000 +0200 -+++ glibc-2.3.3/sysdeps/arm/strlen.S 2004-06-06 03:21:48.351931240 +0200 -@@ -53,12 +53,21 @@ - ldrne r2, [r1], $4 @ and we continue to the next word - bne Laligned @ - Llastword: @ drop through to here once we find a -+#ifdef __ARMEB__ -+ tst r2, $0xff000000 @ word that has a zero byte in it -+ addne r0, r0, $1 @ -+ tstne r2, $0x00ff0000 @ and add up to 3 bytes on to it -+ addne r0, r0, $1 @ -+ tstne r2, $0x0000ff00 @ (if first three all non-zero, 4th -+ addne r0, r0, $1 @ must be zero) -+#else - tst r2, $0x000000ff @ word that has a zero byte in it - addne r0, r0, $1 @ - tstne r2, $0x0000ff00 @ and add up to 3 bytes on to it - addne r0, r0, $1 @ - tstne r2, $0x00ff0000 @ (if first three all non-zero, 4th - addne r0, r0, $1 @ must be zero) -+#endif - RETINSTR(mov,pc,lr) - END(strlen) - libc_hidden_builtin_def (strlen) - ---=-=-=-- - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-cross-2.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-cross-2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -When configuring canadian cross toolchain and you're unlucky enough to be -using a build and host that are different, but that config.sub thinks mean the same thing, -you might end up without BUILD_CC being defined as 'cc' or 'gcc', -which might cause $CC to be used instead, which would be wrong... - -Dan Kegel - ---- glibc-2.3.2/configure.old 2004-05-26 19:46:43.000000000 -0700 -+++ glibc-2.3.2/configure 2004-05-26 19:52:47.000000000 -0700 -@@ -3323,7 +3323,7 @@ - ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' - ac_compiler_gnu=$ac_cv_c_compiler_gnu - --if test $host != $build; then -+if test "$cross_compiling" = yes; then - for ac_prog in gcc cc - do - # Extract the first word of "$ac_prog", so it can be a program name with args. diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-cross.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-cross.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/resolv/Makefile.diff?r1=1.41&r2=1.42&cvsroot=glibc - -Fixes -/bin/sh: /crosstool-0.15/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.3.2/build-glibc/elf/ld.so.1: cannot execute binary file -make[2]: *** [/crosstool-0.15/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.3.2/build-glibc/resolv/tst-leaks.out] Error 126 - -2003-03-01 Andreas Schwab - - * resolv/Makefile (tests): Don't depend on - $(objpfx)mtrace-tst-leaks when cross compiling. - -=================================================================== -RCS file: /cvs/glibc/libc/resolv/Makefile,v -retrieving revision 1.41 -retrieving revision 1.42 -diff -u -r1.41 -r1.42 ---- libc/resolv/Makefile 2003/02/23 03:35:39 1.41 -+++ libc/resolv/Makefile 2003/03/01 22:15:00 1.42 -@@ -93,6 +93,8 @@ - tst-leaks-ENV = MALLOC_TRACE=$(objpfx)tst-leaks.mtrace - $(objpfx)mtrace-tst-leaks: $(objpfx)tst-leaks.out - $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks.mtrace > $@ -+ifeq (no,$(cross-compiling)) - ifneq (no,$(PERL)) - tests: $(objpfx)mtrace-tst-leaks - endif -+endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-cygwin.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.3.2 on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - -glibc-linuxthreads-2.3.2 also requires a patch, see -../glibc-linuxthreads-2.3.2/glibc-linuxthreads-2.3.2-cygwin.patch - - ---- glibc-2.3.2/Makeconfig.orig 2003-01-05 21:31:36.000000000 -0800 -+++ glibc-2.3.2/Makeconfig 2004-03-13 23:42:03.781250000 -0800 -@@ -433,13 +433,13 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # This is how to find at build-time things that will be installed there. - rpath-dirs = math elf dlfcn nss nis rt resolv crypt - else - ifneq (,$(filter aix aix%,$(config-os))) - link-libc = $(common-objpfx)libc.a \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - rpath-dirs = math dlfcn nss nis rt resolv crypt - endif - endif -@@ -652,7 +652,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -706,14 +706,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 -+libtype.oST = lib%_nonshared.a - endif - - ---- glibc-2.3.2/Makerules.orig 2003-02-22 15:23:31.000000000 -0800 -+++ glibc-2.3.2/Makerules 2004-03-13 23:43:40.984375000 -0800 -@@ -446,7 +446,7 @@ - # Bounded pointer thunks are only built for *.ob - elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) \ - $(elide-bp-thunks) - elide-routines.os += $(static-only-routines) $(elide-bp-thunks) -@@ -958,7 +958,7 @@ - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -966,7 +966,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-mips-user.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-mips-user.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,588 +0,0 @@ -Retrieved from -http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2003-04&msgid=orfzoof4j0.fsf%40free.redhat.lsd.ic.unicamp.br -paths adjusted, and rediffed against glibc-2.3.2 -(i.e. to compensate for fact that -http://sources.redhat.com/ml/glibc-cvs/2003-q1/msg01155.html -is not present) - -Should fix - -In file included from ../sysdeps/unix/sysv/linux/mips/sys/procfs.h:29, - from ../linuxthreads_db/proc_service.h:20, - from ../linuxthreads_db/thread_dbP.h:7, - from ../linuxthreads/descr.h:43, - from ../linuxthreads/internals.h:29, - from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, - from ../sysdeps/generic/ldsodefs.h:38, - from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, - from ../sysdeps/mips/elf/ldsodefs.h:25, - from ../sysdeps/unix/sysv/linux/init-first.c:30: -../sysdeps/unix/sysv/linux/mips/sys/user.h:26:21: asm/reg.h: No such file or directory -In file included from ../sysdeps/unix/sysv/linux/mips/sys/procfs.h:29, - from ../linuxthreads_db/proc_service.h:20, - from ../linuxthreads_db/thread_dbP.h:7, - from ../linuxthreads/descr.h:43, - from ../linuxthreads/internals.h:29, - from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, - from ../sysdeps/generic/ldsodefs.h:38, - from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, - from ../sysdeps/mips/elf/ldsodefs.h:25, - from ../sysdeps/unix/sysv/linux/init-first.c:30: -../sysdeps/unix/sysv/linux/mips/sys/user.h:30: error: `EF_SIZE' undeclared here (not in a function) -make[2]: *** [mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/csu/init-first.o] Error 1 -make[2]: Leaving directory `mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/csu' -make[1]: *** [csu/subdir_lib] Error 2 -make[1]: Leaving directory `mipsel-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2' -make: *** [all] Error 2 - -From libc-alpha-return-12105-listarch-libc-alpha=sources dot redhat dot com at sources dot redhat dot com Sat Apr 12 09:28:56 2003 -Return-Path: -Delivered-To: listarch-libc-alpha at sources dot redhat dot com -Received: (qmail 2802 invoked by alias); 12 Apr 2003 09:28:56 -0000 -Mailing-List: contact libc-alpha-help at sources dot redhat dot com; run by ezmlm -Precedence: bulk -List-Subscribe: -List-Archive: -List-Post: -List-Help: , -Sender: libc-alpha-owner at sources dot redhat dot com -Delivered-To: mailing list libc-alpha at sources dot redhat dot com -Received: (qmail 2795 invoked from network); 12 Apr 2003 09:28:55 -0000 -Received: from unknown (HELO lacrosse.corp.redhat.com) (66.187.233.200) - by sources dot redhat dot com with SMTP; 12 Apr 2003 09:28:55 -0000 -Received: from free.redhat.lsd.ic.unicamp.br (aoliva.cipe.redhat.com [10.0.1.10]) - by lacrosse dot corp dot redhat dot com (8 dot 11 dot 6/8 dot 9 dot 3) with ESMTP id h3C9SqV01131 - for ; Sat, 12 Apr 2003 05:28:52 -0400 -Received: from free.redhat.lsd.ic.unicamp.br (free.redhat.lsd.ic.unicamp.br [127.0.0.1]) - by free dot redhat dot lsd dot ic dot unicamp dot br (8 dot 12 dot 8/8 dot 12 dot 8) with ESMTP id h3C9SpVT028734 - for ; Sat, 12 Apr 2003 06:28:51 -0300 -Received: (from aoliva@localhost) - by free dot redhat dot lsd dot ic dot unicamp dot br (8 dot 12 dot 8/8 dot 12 dot 8/Submit) id h3C9SpFb028730; - Sat, 12 Apr 2003 06:28:51 -0300 -To: libc-alpha at sources dot redhat dot com -Subject: signal-handling tweaks for mips/mips64 -From: Alexandre Oliva -Organization: GCC Team, Red Hat -Date: 12 Apr 2003 06:28:51 -0300 -Message-ID: -Lines: 49 -User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 -MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="=-=-=" - ---=-=-= - -It was reported to me that ucontext is utterly broken, even in o32 -with a stable 32-bit mips kernel. Indeed, it doesn't match the -ucontext structure defined by the kernel at all. This means that -programs taking real-time signals in o32 won't be able to extract -correct information from the mcontext_t, since the kernel puts data in -there that's in an entirely different format. - -I've looked for any ways in which the current data structures could -possibly be useful, and didn't find any. gdb and rda thought they -were using the register arrays, but it turned out they were using the -arrays in procps instead. makecontext(), [sg]etcontext() et al aren't -implemented on mips, so any uses thereof will just return ENOSYS, -without messing with the given data structure. So, I believe it is -not too late for us to fix it such that it matches the kernel data -structures. - -While at that, I fixed a number of incompatibilities introduced by -either differences between kernel headers that we used to include, -whose contents are different depending on whether asm points to -asm-mips or asm-mips64. - -With this patch, after some pending kernel patches are checked in, one -will be able to obtain the correct information from signal handlers in -all mips ABIs. With n64, this is already true. With o32, it works -with the 32-bit mips kernel, but the mips64 kernel needs a patch to -implement the proper sigcontext ABI. n32 still a patch to be -developed for it to be possible for ucontext to be POSIX-compliant. -Currently, the kernel uses the same ucontext for n32 and n64, but this -doesn't work in n32 because uc_link must be a pointer and stack_t must -contain a pointer and a size_t, whose sizes differ between n32 and -n64. I believe Ralf is working on a patch for the kernel to generate -n32-compliant ucontext when invoking signal handlers in n32 processes. -The only uncertainty is whether uc_flags will be a 32- or 64-bit value -in n32; I left it as the latter, just because I already had that in -place; if it changes, a (simplifying) follow-up patch will be posted. -However, I wanted to circulate the idea of fixing ucontext_t for o32 -as soon as possible, so I didn't wait for a decision on the exact n32 -ABI. - -Ok to install? - - ---=-=-= -Content-Type: text/x-patch -Content-Disposition: inline; filename=mips-sigstuff.patch - -Index: ChangeLog -from Alexandre Oliva - - * sysdeps/unix/sysv/linux/mips/profil-counter: New. - * sysdeps/unix/sysv/linux/mips/sigcontextinfo.h: Port to n32/n64. - * sysdeps/unix/sysv/linux/mips/bits/sigcontext.h: New. - * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Port to n32/n64. - (mcontext_t): Make it match the 32-bit mips kernel in o32. - * sysdeps/unix/sysv/linux/mips/sys/user.h: Bring in constants from - the mips and mips64 headers. - (struct user): Port to n32/n64. - -Index: sysdeps/unix/sysv/linux/mips/profil-counter.h -=================================================================== -RCS file: sysdeps/unix/sysv/linux/mips/profil-counter.h -diff -N sysdeps/unix/sysv/linux/mips/profil-counter.h ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ libc/sysdeps/unix/sysv/linux/mips/profil-counter.h 12 Apr 2003 09:13:13 -0000 -@@ -0,0 +1,2 @@ -+/* We can use the ix86 version. */ -+#include -Index: sysdeps/unix/sysv/linux/mips/sigcontextinfo.h -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h,v -retrieving revision 1.6 -diff -u -p -r1.6 sigcontextinfo.h ---- libc/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h 6 Jul 2001 04:56:18 -0000 1.6 -+++ libc/sysdeps/unix/sysv/linux/mips/sigcontextinfo.h 12 Apr 2003 09:13:13 -0000 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. -+/* Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Andreas Jaeger , 2000. - -@@ -18,6 +18,8 @@ - 02111-1307 USA. */ - - -+#if _MIPS_SIM == _MIPS_SIM_ABI32 -+ - #define SIGCONTEXT unsigned long _code, struct sigcontext * - #define SIGCONTEXT_EXTRA_ARGS _code, - #define GET_PC(ctx) ((void *) ctx->sc_pc) -@@ -25,3 +27,15 @@ - #define GET_STACK(ctx) ((void *) ctx->sc_regs[29]) - #define CALL_SIGHANDLER(handler, signo, ctx) \ - (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) -+ -+#else -+ -+#define SIGCONTEXT unsigned long _code, ucontext_t * -+#define SIGCONTEXT_EXTRA_ARGS _code, -+#define GET_PC(ctx) ((void *) ctx->uc_mcontext.pc) -+#define GET_FRAME(ctx) ((void *) ctx->uc_mcontext.gregs[30]) -+#define GET_STACK(ctx) ((void *) ctx->uc_mcontext.gregs[29]) -+#define CALL_SIGHANDLER(handler, signo, ctx) \ -+ (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx)) -+ -+#endif -Index: sysdeps/unix/sysv/linux/mips/bits/sigcontext.h -=================================================================== -RCS file: sysdeps/unix/sysv/linux/mips/bits/sigcontext.h -diff -N sysdeps/unix/sysv/linux/mips/bits/sigcontext.h ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ libc/sysdeps/unix/sysv/linux/mips/bits/sigcontext.h 12 Apr 2003 09:13:13 -0000 -@@ -0,0 +1,103 @@ -+/* Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H -+# error "Never use directly; include instead." -+#endif -+ -+#ifndef sigcontext_struct -+/* Kernel headers before 2.1.1 define a struct sigcontext_struct, but -+ we need sigcontext. */ -+# define sigcontext_struct sigcontext -+ -+/* # include */ -+/* Instead of including the kernel header, that will vary depending on -+ whether the 32- or the 64-bit kernel is installed, we paste the -+ contents here. In case you're wondering about the different -+ licenses, the fact that the file is pasted, instead of included, -+ doesn't really make any difference for the program that includes -+ this header. */ -+#if _MIPS_SIM == _MIPS_SIM_ABI32 -+/* -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ * Copyright (C) 1996, 1997, 2000 by Ralf Baechle -+ */ -+#ifndef _ASM_SIGCONTEXT_H -+#define _ASM_SIGCONTEXT_H -+ -+/* -+ * Keep this struct definition in sync with the sigcontext fragment -+ * in arch/mips/tools/offset.c -+ */ -+struct sigcontext { -+ unsigned int sc_regmask; /* Unused */ -+ unsigned int sc_status; -+ unsigned long long sc_pc; -+ unsigned long long sc_regs[32]; -+ unsigned long long sc_fpregs[32]; -+ unsigned int sc_ownedfp; /* Unused */ -+ unsigned int sc_fpc_csr; -+ unsigned int sc_fpc_eir; /* Unused */ -+ unsigned int sc_used_math; -+ unsigned int sc_ssflags; /* Unused */ -+ unsigned long long sc_mdhi; -+ unsigned long long sc_mdlo; -+ -+ unsigned int sc_cause; /* Unused */ -+ unsigned int sc_badvaddr; /* Unused */ -+ -+ unsigned long sc_sigset[4]; /* kernel's sigset_t */ -+}; -+ -+#endif /* _ASM_SIGCONTEXT_H */ -+#else /* _MIPS_SIM != _MIPS_SIM_ABI32 */ -+/* -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ * Copyright (C) 1996, 1997, 1999 by Ralf Baechle -+ * Copyright (C) 1999 Silicon Graphics, Inc. -+ */ -+#ifndef _ASM_SIGCONTEXT_H -+#define _ASM_SIGCONTEXT_H -+ -+/* -+ * Keep this struct definition in sync with the sigcontext fragment -+ * in arch/mips/tools/offset.c -+ */ -+struct sigcontext { -+ unsigned long long sc_regs[32]; -+ unsigned long long sc_fpregs[32]; -+ unsigned long long sc_mdhi; -+ unsigned long long sc_mdlo; -+ unsigned long long sc_pc; -+ unsigned int sc_status; -+ unsigned int sc_fpc_csr; -+ unsigned int sc_fpc_eir; -+ unsigned int sc_used_math; -+ unsigned int sc_cause; -+ unsigned int sc_badvaddr; -+}; -+ -+#endif /* _ASM_SIGCONTEXT_H */ -+#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */ -+#endif -[hunk deleted, see below] -Index: sysdeps/unix/sysv/linux/mips/sys/user.h -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/mips/sys/user.h,v -retrieving revision 1.1 -diff -u -p -r1.1 user.h ---- libc/sysdeps/unix/sysv/linux/mips/sys/user.h 8 Feb 2002 16:21:00 -0000 1.1 -+++ libc/sysdeps/unix/sysv/linux/mips/sys/user.h 12 Apr 2003 09:13:13 -0000 -@@ -1,4 +1,4 @@ --/* Copyright (C) 2002 Free Software Foundation, Inc. -+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -23,7 +23,154 @@ - too much into it. Don't use it for anything other than GDB unless - you know what you are doing. */ - --#include -+/* #include */ -+/* Instead of including the kernel header, that will vary depending on -+ whether the 32- or the 64-bit kernel is installed, we paste its -+ contents here. Note that the fact that the file is inline here, -+ instead of included separately, doesn't change in any way the -+ licensing status of a program that includes user.h. Since this is -+ for gdb alone, and gdb is GPLed, no surprises here. */ -+#if _MIPS_SIM == _MIPS_SIM_ABI32 -+/* -+ * Various register offset definitions for debuggers, core file -+ * examiners and whatnot. -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ * Copyright (C) 1995, 1999 by Ralf Baechle -+ */ -+#ifndef __ASM_MIPS_REG_H -+#define __ASM_MIPS_REG_H -+ -+/* -+ * This defines/structures correspond to the register layout on stack - -+ * if the order here is changed, it needs to be updated in -+ * include/asm-mips/stackframe.h -+ */ -+#define EF_REG0 6 -+#define EF_REG1 7 -+#define EF_REG2 8 -+#define EF_REG3 9 -+#define EF_REG4 10 -+#define EF_REG5 11 -+#define EF_REG6 12 -+#define EF_REG7 13 -+#define EF_REG8 14 -+#define EF_REG9 15 -+#define EF_REG10 16 -+#define EF_REG11 17 -+#define EF_REG12 18 -+#define EF_REG13 19 -+#define EF_REG14 20 -+#define EF_REG15 21 -+#define EF_REG16 22 -+#define EF_REG17 23 -+#define EF_REG18 24 -+#define EF_REG19 25 -+#define EF_REG20 26 -+#define EF_REG21 27 -+#define EF_REG22 28 -+#define EF_REG23 29 -+#define EF_REG24 30 -+#define EF_REG25 31 -+/* -+ * k0/k1 unsaved -+ */ -+#define EF_REG28 34 -+#define EF_REG29 35 -+#define EF_REG30 36 -+#define EF_REG31 37 -+ -+/* -+ * Saved special registers -+ */ -+#define EF_LO 38 -+#define EF_HI 39 -+ -+#define EF_CP0_EPC 40 -+#define EF_CP0_BADVADDR 41 -+#define EF_CP0_STATUS 42 -+#define EF_CP0_CAUSE 43 -+ -+#define EF_SIZE 180 /* size in bytes */ -+ -+#endif /* __ASM_MIPS_REG_H */ -+ -+#else /* _MIPS_SIM != _MIPS_SIM_ABI32 */ -+ -+/* -+ * Various register offset definitions for debuggers, core file -+ * examiners and whatnot. -+ * -+ * This file is subject to the terms and conditions of the GNU General Public -+ * License. See the file "COPYING" in the main directory of this archive -+ * for more details. -+ * -+ * Copyright (C) 1995, 1999 Ralf Baechle -+ * Copyright (C) 1995, 1999 Silicon Graphics -+ */ -+#ifndef _ASM_REG_H -+#define _ASM_REG_H -+ -+/* -+ * This defines/structures correspond to the register layout on stack - -+ * if the order here is changed, it needs to be updated in -+ * include/asm-mips/stackframe.h -+ */ -+#define EF_REG0 0 -+#define EF_REG1 1 -+#define EF_REG2 2 -+#define EF_REG3 3 -+#define EF_REG4 4 -+#define EF_REG5 5 -+#define EF_REG6 6 -+#define EF_REG7 7 -+#define EF_REG8 8 -+#define EF_REG9 9 -+#define EF_REG10 10 -+#define EF_REG11 11 -+#define EF_REG12 12 -+#define EF_REG13 13 -+#define EF_REG14 14 -+#define EF_REG15 15 -+#define EF_REG16 16 -+#define EF_REG17 17 -+#define EF_REG18 18 -+#define EF_REG19 19 -+#define EF_REG20 20 -+#define EF_REG21 21 -+#define EF_REG22 22 -+#define EF_REG23 23 -+#define EF_REG24 24 -+#define EF_REG25 25 -+/* -+ * k0/k1 unsaved -+ */ -+#define EF_REG28 28 -+#define EF_REG29 29 -+#define EF_REG30 30 -+#define EF_REG31 31 -+ -+/* -+ * Saved special registers -+ */ -+#define EF_LO 32 -+#define EF_HI 33 -+ -+#define EF_CP0_EPC 34 -+#define EF_CP0_BADVADDR 35 -+#define EF_CP0_STATUS 36 -+#define EF_CP0_CAUSE 37 -+ -+#define EF_SIZE 304 /* size in bytes */ -+ -+#endif /* _ASM_REG_H */ -+ -+#endif /* _MIPS_SIM != _MIPS_SIM_ABI32 */ -+ -+#if _MIPS_SIM == _MIPS_SIM_ABI32 - - struct user - { -@@ -39,6 +186,24 @@ struct user - unsigned long magic; /* identifies a core file */ - char u_comm[32]; /* user command name */ - }; -+ -+#else -+ -+struct user { -+ __extension__ unsigned long regs[EF_SIZE/8+64]; /* integer and fp regs */ -+ __extension__ unsigned long u_tsize; /* text size (pages) */ -+ __extension__ unsigned long u_dsize; /* data size (pages) */ -+ __extension__ unsigned long u_ssize; /* stack size (pages) */ -+ __extension__ unsigned long long start_code; /* text starting address */ -+ __extension__ unsigned long long start_data; /* data starting address */ -+ __extension__ unsigned long long start_stack; /* stack starting address */ -+ __extension__ long long signal; /* signal causing core dump */ -+ __extension__ unsigned long long u_ar0; /* help gdb find registers */ -+ __extension__ unsigned long long magic; /* identifies a core file */ -+ char u_comm[32]; /* user command name */ -+}; -+ -+#endif - - #define PAGE_SHIFT 12 - #define PAGE_SIZE (1UL << PAGE_SHIFT) - ---=-=-= - - --- -Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/ -Red Hat GCC Developer aoliva@{redhat.com, gcc.gnu.org} -CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org} -Free Software Evangelist Professional serial bug killer - ---=-=-=-- - -And the rediffed hunk: - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h.old 2004-05-30 07:23:32.000000000 -0700 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/sys/ucontext.h 2004-05-30 07:22:56.000000000 -0700 -@@ -29,43 +29,72 @@ - #include - - --/* Type for general register. */ --typedef unsigned long int greg_t; -+/* Type for general register. Even in o32 we assume 64-bit registers, -+ like the kernel. */ -+__extension__ typedef unsigned long long int greg_t; - - /* Number of general registers. */ --#define NGREG 37 --#define NFPREG 33 -+#define NGREG 32 -+#define NFPREG 32 - - /* Container for all general registers. */ --/* gregset_t must be an array. The below declared array corresponds to: --typedef struct gregset { -- greg_t g_regs[32]; -- greg_t g_hi; -- greg_t g_lo; -- greg_t g_pad[3]; --} gregset_t; */ - typedef greg_t gregset_t[NGREG]; - - /* Container for all FPU registers. */ - typedef struct fpregset { - union { -- double fp_dregs[32]; -+ double fp_dregs[NFPREG]; - struct { - float _fp_fregs; - unsigned int _fp_pad; -- } fp_fregs[32]; -+ } fp_fregs[NFPREG]; - } fp_r; -- unsigned int fp_csr; -- unsigned int fp_pad; - } fpregset_t; - - - /* Context to describe whole processor state. */ -+#if _MIPS_SIM == _MIPS_SIM_ABI32 -+/* Earlier versions of glibc for mips had an entirely different -+ definition of mcontext_t, that didn't even resemble the -+ corresponding kernel data structure. Since all legitimate uses of -+ ucontext_t in glibc mustn't have accessed anything beyond -+ uc_mcontext and, even then, taking a pointer to it, casting it to -+ sigcontext_t, and accessing it as such, which is what it has always -+ been, this can still be rectified. Fortunately, makecontext, -+ [gs]etcontext et all have never been implemented. */ - typedef struct - { -+ unsigned int regmask; -+ unsigned int status; -+ greg_t pc; - gregset_t gregs; - fpregset_t fpregs; -+ unsigned int fp_owned; -+ unsigned int fpc_csr; -+ unsigned int fpc_eir; -+ unsigned int used_math; -+ unsigned int ssflags; -+ greg_t mdhi; -+ greg_t mdlo; -+ unsigned int cause; -+ unsigned int badvaddr; - } mcontext_t; -+#else -+typedef struct -+ { -+ gregset_t gregs; -+ fpregset_t fpregs; -+ greg_t mdhi; -+ greg_t mdlo; -+ greg_t pc; -+ unsigned int status; -+ unsigned int fpc_csr; -+ unsigned int fpc_eir; -+ unsigned int used_math; -+ unsigned int cause; -+ unsigned int badvaddr; -+ } mcontext_t; -+#endif - - /* Userlevel context. */ - typedef struct ucontext diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-mips.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-mips.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -From Bill Gatliff, who said: -"Attached is a glibc-2.3.2 patchfile I use for MIPS. Versions prior to and including glibc-2.3.2 won't build without it." - -diff -bBurN glibc-2.3.2.orig/elf/dl-conflict.c glibc-2.3.2/elf/dl-conflict.c ---- glibc-2.3.2.orig/elf/dl-conflict.c 2003-06-12 21:07:54.000000000 -0500 -+++ glibc-2.3.2/elf/dl-conflict.c 2003-06-12 21:09:12.000000000 -0500 -@@ -33,6 +33,7 @@ - _dl_resolve_conflicts (struct link_map *l, ElfW(Rela) *conflict, - ElfW(Rela) *conflictend) - { -+#ifndef _DL_HAVE_NO_ELF_MACHINE_RELA - if (__builtin_expect (GL(dl_debug_mask) & DL_DEBUG_RELOC, 0)) - _dl_printf ("\nconflict processing: %s\n", - l->l_name[0] ? l->l_name : rtld_progname); -@@ -64,4 +65,5 @@ - for (; conflict < conflictend; ++conflict) - elf_machine_rela (l, conflict, NULL, NULL, (void *) conflict->r_offset); - } -+#endif - } -diff -bBurN glibc-2.3.2.orig/sysdeps/mips/dl-machine.h glibc-2.3.2/sysdeps/mips/dl-machine.h ---- glibc-2.3.2.orig/sysdeps/mips/dl-machine.h 2003-06-12 21:07:49.000000000 -0500 -+++ glibc-2.3.2/sysdeps/mips/dl-machine.h 2003-06-12 21:11:10.000000000 -0500 -@@ -56,6 +56,10 @@ - #define ELF_MACHINE_JMP_SLOT R_MIPS_REL32 - #define elf_machine_type_class(type) ELF_RTYPE_CLASS_PLT - -+/* MIPS doesn't support RELA; see: -+ http://lists.debian.org/debian-mips/2002/debian-mips-200209/msg00020.html */ -+#define _DL_HAVE_NO_ELF_MACHINE_RELA -+ - /* Translate a processor specific dynamic tag to the index - in l_info array. */ - #define DT_MIPS(x) (DT_MIPS_##x - DT_LOPROC + DT_NUM) -diff -bBurN glibc-2.3.2.orig/sysdeps/mips/Makefile glibc-2.3.2/sysdeps/mips/Makefile ---- glibc-2.3.2.orig/sysdeps/mips/Makefile 2003-06-12 21:07:48.000000000 -0500 -+++ glibc-2.3.2/sysdeps/mips/Makefile 2003-06-12 21:10:14.000000000 -0500 -@@ -6,3 +6,11 @@ - ifeq ($(subdir),setjmp) - sysdep_routines += setjmp_aux - endif -+ -+ifeq ($(subdir),csu) -+ifeq (yes,$(build-shared)) -+# Compatibility -+sysdep_routines += divdi3 -+shared-only-routines += divdi3 -+endif -+endif -diff -bBurN glibc-2.3.2.orig/sysdeps/unix/sysv/linux/mips/syscalls.list glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list ---- glibc-2.3.2.orig/sysdeps/unix/sysv/linux/mips/syscalls.list 2003-06-12 21:07:53.000000000 -0500 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/mips/syscalls.list 2003-06-12 21:12:30.000000000 -0500 -@@ -41,6 +41,7 @@ - sys_mknod xmknod mknod i:sii __syscall_mknod - - # System calls with wrappers. -+s_readahead EXTRA readahead i:iipi __syscall_readahead - rt_sigaction - rt_sigaction i:ippi __syscall_rt_sigaction - rt_sigpending - rt_sigpending i:pi __syscall_rt_sigpending - rt_sigprocmask - rt_sigprocmask i:ippi __syscall_rt_sigprocmask diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-override.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-override.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -The error - -make[2]: *** [.../gcc-3.3.3-glibc-2.1.3/i686-unknown-linux-gnu/share/zoneinfo/Africa/Algiers] Segmentation fault -make[2]: Leaving directory `.../gcc-3.3.3-glibc-2.1.3/glibc-2.1.3/timezone' -make[1]: *** [timezone/subdir_install] Error 2 - -is caused by glibc trying to run something it just compiled. -A crude workaround for this was posted at -http://lists.scratchbox.org/pipermail/scratchbox-users/2004-February/000018.html -but the following patch lets you optionally override these programs at -make time by setting Make variables - localedef_FOR_BUILD rpcgen_FOR_BUILD zic_FOR_BUILD -and maybe a few others to point to versions of those programs -that can run on the build machine. -Thanks to http://groups.google.com/groups?selm=9012160052.AA23106%40kaos.ksr.com -for pointing out the idiom for inline $(ifdef ...) in GNU Make. - -Dan Kegel 2004-05-17 -[rediffed for glibc-2.3.2] -[typos corrected - those are make variables, not environment variables, - and it's $(built-program-override-name), not $(build-program-override-name)] - ---- glibc-2.3.2/Makeconfig.old 2004-05-17 13:53:46.000000000 -0700 -+++ glibc-2.3.2/Makeconfig 2004-05-17 14:09:59.000000000 -0700 -@@ -534,9 +534,12 @@ - run-program-prefix = - endif - # Never use $(run-program-prefix) for the statically-linked %-bp test programs --built-program-cmd = $(patsubst %,$(run-program-prefix),\ -+built-program-real = $(patsubst %,$(run-program-prefix),\ - $(filter-out %-bp,$(built-program-file))) \ - $(built-program-file) -+# If user set foo_FOR_BUILD, use that instead of actually running the program we just linked. -+built-program-override-name = $(notdir $(word 2,$^))_FOR_BUILD -+built-program-cmd = $(if $(findstring undefined,$(origin $(built-program-override-name))),$(built-program-real),$($(built-program-override-name))) - - ifndef LD - LD := ld -X diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-powerpc-as.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-powerpc-as.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -Retrieved from - http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/powerpc/powerpc32/Makefile.diff?r1=1.4&r2=1.5&cvsroot=glibc - http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/powerpc/powerpc64/Makefile.diff?r1=1.2&r2=1.3&cvsroot=glibc -Fixes - /tmp/ccEVhqgD.s:279: Error: Unrecognized opcode: `stvx' - /tmp/ccEVhqgD.s:288: Error: Unrecognized opcode: `lvx' - make[2]: *** [powerpc-7450-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/dlfcn/eval.os] Error 1 - make[2]: Leaving directory `powerpc-7450-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/dlfcn' - make[1]: *** [dlfcn/others] Error 2 - make[1]: Leaving directory `powerpc-7450-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2' - make: *** [all] Error 2 - - -Revision 1.5 Wed Oct 22 21:30:02 2003 UTC (7 months, 1 week ago) by roland -Branch: MAIN -CVS Tags: HEAD -Changes since 1.4: +0 -3 lines -Diff to previous 1.4 (colored) - -2003-10-22 Steven Munroe - - * sysdeps/powerpc/powerpc32/Makefile (+cflags, asm-CPPFLAGS): Don't - append options to these. - * sysdeps/powerpc/powerpc64/Makefile (+cflags, asm-CPPFLAGS): Likewise. - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc32/Makefile,v -retrieving revision 1.4 -retrieving revision 1.5 -diff -u -r1.4 -r1.5 ---- libc/sysdeps/powerpc/powerpc32/Makefile 2003/01/27 21:02:01 1.4 -+++ libc/sysdeps/powerpc/powerpc32/Makefile 2003/10/22 21:30:02 1.5 -@@ -1,8 +1,5 @@ - # Powerpc32 specific build options. - --+cflags += -Wa,-mppc -mpowerpc --asm-CPPFLAGS += -Wa,-mppc -- - ifeq ($(with-fp),no) - +cflags += -msoft-float - sysdep-LDFLAGS += -msoft-float -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc64/Makefile,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -r1.2 -r1.3 ---- libc/sysdeps/powerpc/powerpc64/Makefile 2002/09/27 19:44:16 1.2 -+++ libc/sysdeps/powerpc/powerpc64/Makefile 2003/10/22 21:30:03 1.3 -@@ -1,9 +1,6 @@ - # Powerpc64 specific build options. - # this is ./sysdeps/powerpc/powerpc64/Makefile - --+cflags += -Wa,-mppc64 -mpowerpc64 --asm-CPPFLAGS += -Wa,-mppc64 -- - # Each TOC entry takes 8 bytes and the TOC holds up to 2^16 bytes, - # or 8192 entries. - # If -fpic is not specified, the latest gcc-3.2.1 now generates diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-pr139-fix.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-pr139-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -2004-04-29 Jakub Jelinek - - * sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c (_Qp_qtoi): Use %f31 - for single precision register, add it to __asm clobbers [BZ #139]. - * sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c (_Qp_qtoui): Use %f31 - for single precision register, add it to __asm clobbers. - * sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c (_Qp_qtoux): Use fqtox - instead of fqtoi in QP_HANDLE_EXCEPTIONS. - * sysdeps/sparc/sparc64/soft-fp/qp_qtox.c (_Qp_qtox): Likewise. - Reported by M. H. VanLeeuwen . - -See http://sources.redhat.com/bugzilla/show_bug.cgi?id=139 -Fixes error -qp_qtoi.s:261: Error: Illegal operands: There are only 32 single precision f registers; [0-31] -plus a couple other things vanl noticed. - -diff -ur orig/qp_qtoi.c new/qp_qtoi.c ---- orig/qp_qtoi.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (int)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,9 +38,9 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" --" st %%f60, [%0]\n" --" " : : "r" (&rx), "r" (a) : QP_CLOBBER); -+" fqtoi %%f52, %%f31\n" -+" st %%f31, [%0]\n" -+" " : : "r" (&rx), "r" (a) : QP_CLOBBER, "f31"); - r = rx); - - return r; -diff -ur orig/qp_qtoui.c new/qp_qtoui.c ---- orig/qp_qtoui.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (unsigned int)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,9 +38,9 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" --" st %%f60, [%0]\n" --" " : : "r" (&rx), "r" (a) : QP_CLOBBER); -+" fqtoi %%f52, %%f31\n" -+" st %%f31, [%0]\n" -+" " : : "r" (&rx), "r" (a) : QP_CLOBBER, "f31"); - r = rx); - - return r; -diff -ur orig/qp_qtoux.c new/qp_qtoux.c ---- orig/qp_qtoux.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (unsigned long)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,7 +38,7 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" -+" fqtox %%f52, %%f60\n" - " std %%f60, [%0]\n" - " " : : "r" (&rx), "r" (a) : QP_CLOBBER); - r = rx); -diff -ur orig/qp_qtox.c new/qp_qtox.c ---- orig/qp_qtox.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtox.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (long)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,7 +38,7 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" -+" fqtox %%f52, %%f60\n" - " std %%f60, [%0]\n" - " " : : "r" (&rx), "r" (a) : QP_CLOBBER); - r = rx); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-sh4-socket.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-sh4-socket.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/sh/socket.S.diff?r1=1.5&r2=1.6&cvsroot=glibc - -Ankur Sheth said: -"The problem that I ran into was that multi-threaded apps would crash with a -seg fault when they invoked some of the socket calls (sendto() in my case. -This happened only on the sh4. Turns out that a certain register (PR) was -not being saved and restored properly before and after invoking the system -call. This patch fixes it. It applies cleanly on glibc 2.3.2. -[Thanks to Kaz for helping us find this.]" - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/sh/socket.S,v -retrieving revision 1.5 -retrieving revision 1.6 -diff -u -r1.5 -r1.6 ---- libc/sysdeps/unix/sysv/linux/sh/socket.S 2003/01/05 11:07:44 1.5 -+++ libc/sysdeps/unix/sysv/linux/sh/socket.S 2003/07/12 01:25:53 1.6 -@@ -94,7 +94,9 @@ - #if defined NEED_CANCELLATION && defined CENABLE - .Lsocket_cancel: - /* Enable asynchronous cancellation. */ -+ sts.l pr,@-r15 - CENABLE -+ lds.l @r15+,pr - - /* Do the system call trap. */ - mov #+P(SOCKOP_,socket), r4 -@@ -102,9 +104,11 @@ - mov.l .L1,r3 - trapa #0x12 - -+ sts.l pr,@-r15 - mov.l r0,@-r15 - CDISABLE - mov.l @r15+,r0 -+ lds.l @r15+,pr - - /* Pop args off the stack */ - P(POPARGS_,NARGS) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-sh4-trapa.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-sh4-trapa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/sh/sysdep.h.diff?r1=1.9&r2=1.10&cvsroot=glibc - -Ankur Sheth said: - -"This is actually a workaround for a bug in the sh4. The actual bug is -documented here : -http://documentation.renesas.com/eng/products/mpumcu/tu/tnsh7456ae.pdf -Basically the cache & TLB should not be accessed for 4 (or was it 5?) cycles -after isssuing a TRAPA instruction. I didn't run into any specific problem -because of this bug, but it seems useful to have and the patch itself seems -pretty harmless." - - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/sh/sysdep.h,v -retrieving revision 1.9 -retrieving revision 1.10 -diff -u -r1.9 -r1.10 ---- libc/sysdeps/unix/sysv/linux/sh/sysdep.h 2003/09/01 04:05:21 1.9 -+++ libc/sysdeps/unix/sysv/linux/sh/sysdep.h 2003/10/15 04:36:32 1.10 -@@ -183,6 +183,13 @@ - # endif /* _LIBC_REENTRANT */ - #endif /* PIC */ - -+# ifdef NEED_SYSCALL_INST_PAD -+# define SYSCALL_INST_PAD \ -+ or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0 -+# else -+# define SYSCALL_INST_PAD -+# endif -+ - #define SYSCALL_INST0 trapa #0x10 - #define SYSCALL_INST1 trapa #0x11 - #define SYSCALL_INST2 trapa #0x12 -@@ -195,19 +202,13 @@ - #define DO_CALL(syscall_name, args) \ - mov.l 1f,r3; \ - SYSCALL_INST##args; \ -+ SYSCALL_INST_PAD; \ - bra 2f; \ - nop; \ - .align 2; \ - 1: .long SYS_ify (syscall_name); \ - 2: - --# ifdef NEED_SYSCALL_INST_PAD --# define SYSCALL_INST_PAD \ -- or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0 --# else --# define SYSCALL_INST_PAD --# endif -- - #else /* not __ASSEMBLER__ */ - - #define SYSCALL_INST_STR0 "trapa #0x10\n\t" diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-sparc32-sysdep.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-sparc32-sysdep.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -Fixes the error - -: Assembler messages: -:2: Error: junk at end of line, first unrecognized character is `1' ... -:2: Error: Illegal operands: PC-relative operand can't be a constant -make[4]: *** [/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/io/rtld-open.os] Error 1 -make[4]: Leaving directory `/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/io' -make[3]: *** [/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/io/rtld-xstat64.os] Error 2 -make[3]: Leaving directory `/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/elf' -make[2]: *** [/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/rtld-libc.a] Error 2 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/elf' -make[1]: *** [elf/subdir_lib] Error 2 - -when building glibc-2.3.2 with gcc-3.4.0 for sparc32. - -The .s file left behind by -save-temps contains the big long line - -.text; .global __libc_open; .align 4; __libc_open:; .type __libc_open,@function;; mov 5, %g1; ta 0x10; bcs __syscall_error_handler; nop; .section .gnu.linkonce.t. 1 .get_pic.l7,"ax",@progbits; .globl 1 .get_pic.l7; .hidden 1 .get_pic.l7; .type 1 .get_pic.l7,@function; 1 .get_pic.l7: retl; add %o7, %l7, %l7; .previous; .subsection 3; __syscall_error_handler: save %sp,-96,%sp; sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; call 1 .get_pic.l7; add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; ld [%l7 + errno], %l0; st %i0, [%l0]; jmpl %i7+8, %g0; restore %g0, -1, %o0; .previous; - retl; nop - -The error messages appear to refer to the '1 .get_pic.17', e.g. - .globl 1 .get_pic.l7; .hidden 1 .get_pic.l7; -which seems to come from -glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h -where it appears originally as - .globl __sparc.get_pic.l7; \ - .hidden __sparc.get_pic.l7; \ - -Note that __sparc is a predefined symbol on Solaris and some other environments; -it's not surprising to see it predefined on Linux, too. - - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h.old 2004-05-15 10:23:11.000000000 -0700 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2004-05-15 10:24:12.000000000 -0700 -@@ -39,6 +39,11 @@ - #undef END - #undef LOC - -+/* gcc-3.4.0 seems to expand __sparc as a predefined preprocessor symbol, which we don't want here */ -+#ifdef __sparc -+#undef __sparc -+#endif -+ - #define ENTRY(name) \ - .global C_SYMBOL_NAME(name); \ - .align 4;\ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-sparc64-dl-machine.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-sparc64-dl-machine.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -See http://gcc.gnu.org/PR15345 - -Quick kludge by H.J.Lu -Works around gcc-3.4.0 error which shows up when building glibc-2.3.2 for sparc64: - -.../sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/libc.a(dl-reloc.o)(.text+0x4b4): In function `elf_machine_load_address.3': -: undefined reference to `_DYNAMIC' -collect2: ld returned 1 exit status -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/sln] Error 1 - - ---- glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h.orig Sat May 8 20:54:26 2004 -+++ glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h Sat May 8 17:18:04 2004 -@@ -65,6 +65,7 @@ - } - - /* Return the run-time load address of the shared object. */ -+#ifdef IS_IN_rtld - static inline Elf64_Addr - elf_machine_load_address (void) - { -@@ -84,6 +85,7 @@ - pc[3]*4 is l_addr + _GLOBAL_OFFSET_TABLE_ - (long)pc - 12 */ - return (Elf64_Addr) got - *got + (Elf32_Sword) ((pc[2] - pc[3]) * 4) - 4; - } -+#endif - - /* We have 4 cases to handle. And we code different code sequences - for each one. I love V9 code models... */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-sparc64-pause.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-sparc64-pause.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -From: "M.H.VanLeeuwen" -Subject: crosstool, sparc64, linux 2.6.4, gcc 3.3.3, glibc 2.3.2 success -Date: Mon, 15 Mar 2004 00:23:04 -0600 -To: crossgcc@sources.redhat.com -Message-ID: <40554BC8.749A5EC3@megsinet.net> -... - -backported from GLIBC CVS - -Fixes: -../sysdeps/unix/sysv/linux/sparc/sparc64/pause.c:1:39: sysdeps/unix/common/pause.c: No such file or directory -make[2]: *** [/cross/build/sparc64-unknown-linux-gnu/gcc-3.3.2-glibc-2.3.2/build-glibc/posix/pause.o] Error 1 -make[2]: Leaving directory `/cross/build/sparc64-unknown-linux-gnu/gcc-3.3.2-glibc-2.3.2/glibc-2.3.2/posix' -make[1]: *** [posix/subdir_lib] Error 2 -make: *** [all] Error 2 - -========================================================================================================================= ---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c.orig Sun Mar 7 08:51:20 2004 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/pause.c Sun Mar 7 08:51:29 2004 -@@ -1 +1 @@ --#include -+#include diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-sparc64-pwrite64.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-sparc64-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -Fix for this error: - -/cross/crosstool-0.27/build/sparc64-unknown-linux-gnu/gcc-3.3.3-glibc-2.3.2/build-glibc/libc_pic.os(.text+0xc4d28): In function `posix_fallocate64': -: undefined reference to `__GI___pwrite64' -collect2: ld returned 1 exit status -make[1]: *** [/cross/crosstool-0.27/build/sparc64-unknown-linux-gnu/gcc-3.3.3-glibc-2.3.2/build-glibc/libc.so] Error 1 - -extracted from GLIBC CVS by M.H.VanLeeuwen - -cf. -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00038.html - -Originally thought we needed this hunk, too: -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00037.html -but it seems the sysdep.h change is sufficient, and works better -when compiling against linux-2.4. - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h.orig Sat Mar 13 02:01:51 2004 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h Sat Mar 13 02:02:20 2004 -@@ -29,6 +29,16 @@ - #undef SYS_ify - #define SYS_ify(syscall_name) __NR_##syscall_name - -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - #ifdef __ASSEMBLER__ - - #define LOADSYSCALL(x) mov __NR_##x, %g1 diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.2-without-fp.patch --- a/patches/glibc/2.3.2/glibc-2.3.2-without-fp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -Sender: libc-alpha-owner@sources.redhat.com -Date: Tue, 29 Jul 2003 17:49:47 -0400 -From: Daniel Jacobowitz -To: GNU C Library -Subject: Re: __sim_exceptions undefined when linking glibc-2.3.2's libm.so with --without-fp -Message-ID: <20030729214947.GA29932@nevyn.them.org> - -On Tue, Jul 29, 2003 at 02:53:33PM -0700, Dan Kegel wrote: -> On ppc405, I'm getting the following when linking glibc's libm: -> /gcc-3.3-glibc-2.3.2/build-glibc/math/libm_pic.a(fclrexcpt.os)(.text+0x1a): -> In function `feclearexcept@GLIBC_2.1': -> : undefined reference to `__sim_exceptions' -> -> That symbol seems to be present in libc.so. nm shows - ---without-fp doesn't work. Try this. Make up a changelog entry if it -works. - -Date: Tue, 29 Jul 2003 14:56:50 -0700 -Message-Id: <200307292156.h6TLuol24356@magilla.sf.frob.com> -From: Roland McGrath -To: Daniel Jacobowitz -Cc: GNU C Library -Subject: Re: __sim_exceptions undefined when linking glibc-2.3.2's libm.so with --without-fp -In-Reply-To: Daniel Jacobowitz's message of Tuesday, 29 July 2003 17:49:47 -0400 <20030729214947.GA29932@nevyn.them.org> - -> +int __sim_exceptions __attribute__ ((section(".bss"))); - -Use __attribute__ ((nocommon)) instead (and please watch the standard -whitespace conventions, i.e. ``section (''). - -diff -purN glibc-2.3.2.orig/sysdeps/powerpc/nofpu/sim-full.c glibc-2.3.2/sysdeps/powerpc/nofpu/sim-full.c ---- glibc-2.3.2.orig/sysdeps/powerpc/nofpu/sim-full.c 2002-10-19 16:06:29.000000000 -0400 -+++ glibc-2.3.2/sysdeps/powerpc/nofpu/sim-full.c 2003-05-14 15:10:42.000000000 -0400 -@@ -24,11 +24,14 @@ - - /* Global to store sticky exceptions. */ --int __sim_exceptions; -+int __sim_exceptions __attribute__ ((nocommon)); -+libc_hidden_data_def (__sim_exceptions); - - /* By default, no exceptions should trap. */ - int __sim_disabled_exceptions = 0xffffffff; -+libc_hidden_data_def (__sim_disabled_exceptions); - --int __sim_round_mode; -+int __sim_round_mode __attribute__ ((nocommon)); -+libc_hidden_data_def (__sim_round_mode); - - void - __simulate_exceptions (int x) -diff -purN glibc-2.3.2.orig/sysdeps/powerpc/nofpu/soft-supp.h glibc-2.3.2/sysdeps/powerpc/nofpu/soft-supp.h ---- glibc-2.3.2.orig/sysdeps/powerpc/nofpu/soft-supp.h 2002-10-19 16:06:29.000000000 -0400 -+++ glibc-2.3.2/sysdeps/powerpc/nofpu/soft-supp.h 2003-05-14 15:09:53.000000000 -0400 -@@ -27,7 +27,11 @@ typedef union - } fenv_union_t; - - --extern int __sim_exceptions attribute_hidden; --extern int __sim_disabled_exceptions attribute_hidden; --extern int __sim_round_mode attribute_hidden; -+extern int __sim_exceptions; -+libc_hidden_proto (__sim_exceptions); -+extern int __sim_disabled_exceptions; -+libc_hidden_proto (__sim_disabled_exceptions); -+extern int __sim_round_mode; -+libc_hidden_proto (__sim_round_mode); -+ - extern void __simulate_exceptions (int x) attribute_hidden; -diff -urp glibc-2.3.2.orig/sysdeps/powerpc/soft-fp/sfp-machine.h glibc-2.3.2/sysdeps/powerpc/soft-fp/sfp-machine.h ---- glibc-2.3.2.orig/sysdeps/powerpc/soft-fp/sfp-machine.h 2002-10-17 18:36:14.000000000 -0400 -+++ glibc-2.3.2/sysdeps/powerpc/soft-fp/sfp-machine.h 2003-05-14 16:48:13.000000000 -0400 -@@ -52,7 +52,11 @@ - #define FP_HANDLE_EXCEPTIONS __simulate_exceptions (_fex) - #define FP_ROUNDMODE __sim_round_mode - --extern int __sim_exceptions attribute_hidden; --extern int __sim_disabled_exceptions attribute_hidden; --extern int __sim_round_mode attribute_hidden; -+extern int __sim_exceptions; -+libc_hidden_proto (__sim_exceptions); -+extern int __sim_disabled_exceptions; -+libc_hidden_proto (__sim_disabled_exceptions); -+extern int __sim_round_mode; -+libc_hidden_proto (__sim_round_mode); -+ - extern void __simulate_exceptions (int x) attribute_hidden; - - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.3-allow-gcc-4.0-configure.patch --- a/patches/glibc/2.3.2/glibc-2.3.3-allow-gcc-4.0-configure.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Fixes following problem building glibc-2.3.3 with gcc-4.0: - -checking version of i686-unknown-linux-gnu-gcc ... 4.0.0, bad -checking for gnumake... no -checking for gmake... gmake -checking version of gmake... 3.79.1, ok -checking for gnumsgfmt... no -checking for gmsgfmt... no -checking for msgfmt... msgfmt -checking version of msgfmt... 0.11.4, ok -checking for makeinfo... makeinfo -checking version of makeinfo... 4.3, ok -checking for sed... sed -checking version of sed... 4.0.5, ok -checking for autoconf... autoconf -checking whether autoconf works... yes -configure: error: -*** These critical programs are missing or too old: gcc - ---- glibc-2.3.3/configure.old Mon Mar 14 12:01:10 2005 -+++ glibc-2.3.3/configure Mon Mar 14 12:02:03 2005 -@@ -3899,7 +3899,7 @@ - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 3.[2-9]*) -+ 3.[2-9]*|4.[01]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-2.3.3-allow-gcc-4.0-powerpc-procfs.patch --- a/patches/glibc/2.3.2/glibc-2.3.3-allow-gcc-4.0-powerpc-procfs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -(Combined with earlier fix old/glibc-2.3.2-powerpc-procfs.patch -from http://sources.redhat.com/ml/libc-alpha/2003-12/msg00101.html) - -This fix discussed here: -http://gcc.gnu.org/ml/gcc/2005-01/msg00509.html - -Revision 1.12, Wed Mar 2 20:11:38 2005 UTC by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050303T1335, HEAD -Changes since 1.11: +3 -8 lines -Diff to previous 1.11 (colored) - -2005-02-21 Alan Modra - - * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h (elf_vrreg_t): Don't - use __uint128_t. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h?cvsroot=glibc -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h.diff?r1=1.11&r2=1.12&cvsroot=glibc - -Fixes - -In file included from ../linuxthreads_db/proc_service.h:20, - from ../linuxthreads_db/thread_dbP.h:7, - from ../linuxthreads/descr.h:44, - from ../linuxthreads/internals.h:30, - from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, - from ../sysdeps/generic/ldsodefs.h:38, - from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, - from :2: -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: error: syntax error before 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: type defaults to 'int' in declaration of 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: data definition has no type or storage class -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: error: syntax error before 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: type defaults to 'int' in declaration of 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: data definition has no type or storage class -make[2]: make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/csu' - -Rediffed against glibc-2.3.3 - ---- glibc-2.3.3.orig/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h Sun Jan 12 00:24:23 2003 -+++ glibc-2.3.3.new/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h Fri Mar 18 11:20:58 2005 -@@ -45,18 +45,13 @@ - - typedef double elf_fpreg_t; - typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; --#endif -- --/* gcc 3.1 and newer support __uint128_t. */ --#if !__GNUC_PREREQ(3,1) --typedef struct { -- unsigned long u[4]; --} __attribute((aligned(16))) __uint128_t; --#endif - - /* Altivec registers */ --typedef __uint128_t elf_vrreg_t; -+typedef struct { -+ unsigned int u[4]; -+} __attribute__ ((aligned (16))) elf_vrreg_t; - typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; -+#endif - - struct elf_siginfo - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-configure-apple-as.patch --- a/patches/glibc/2.3.2/glibc-configure-apple-as.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -http://in3www.epfl.ch/~schaffne/glibc-configure-apple-as.patch -http://sources.redhat.com/ml/crossgcc/2004-02/msg00151.html - -The following makes it possible to configure glibc-2.3.2 on Mac OS X, -where the assembler but doesn't understand the --version flag. - -Fixes the symptom -checking whether ld is GNU ld... no -checking for /usr/libexec/gcc/darwin/ppc/as... /usr/libexec/gcc/darwin/ppc/as -checking version of /usr/libexec/gcc/darwin/ppc/as... - - ---- glibc-2.3.2/configure~ Wed Feb 26 09:20:48 2003 -+++ glibc-2.3.2/configure Fri Feb 27 13:12:53 2004 -@@ -3789,7 +3789,7 @@ - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $AS" >&5 - echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 -- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ ac_prog_version=`$AS -v &1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 2.1[3-9]*) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-drow-sh.patch --- a/patches/glibc/2.3.2/glibc-drow-sh.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -[pread changes deleted, since those seem to be specific to glibc-2.3.2] - -Date: Thu, 19 Jun 2003 20:02:07 -0400 -From: Daniel Jacobowitz -Subject: [linux-sh:02808] Patch needed for CVS glibc on SH -To: linux-sh@m17n.org, libc-alpha@sources.redhat.com -Message-Id: <20030620000207.GA19907@nevyn.them.org> -X-ML-Name: linux-sh -X-Mail-Count: 02808 -X-MLServer: fml [fml 4.0.1]; post only (only members can post) -X-ML-Info: If you have a question, send e-mail with the body - "help" (without quotes) to the address linux-sh-ctl@m17n.org; - help= -Mail-Followup-To: linux-sh@m17n.org, libc-alpha@sources.redhat.com -Content-Disposition: inline -User-Agent: Mutt/1.5.1i -Mime-Version: 1.0 -Content-Type: text/plain; charset=us-ascii -Precedence: bulk -Lines: 74 -List-Software: fml [fml 4.0.1] -List-Post: -List-Owner: -List-Help: -List-Unsubscribe: -List-Id: linux-sh.m17n.org - -I believe this flushes my current patches to make glibc work on SH. Issues: - - MIPS pread functions have some wackiness in them for the MIPS calling - conventions, which align long longs to even register pairs; it appears - that SH does not do this. This fixes pread64/pwrite64. - - st_ino is _NOT_ 64-bit in the latest SH kernel trees, or at least it - wasn't when I checked in April. --enable-kernel=2.4.x breaks terribly - without this patch; the errors are along the lines of "version GLIBC_2.3 - not found", because that's the first consequence of a messed up inode - field - ld.so compares by inodes at some point. - --- -Daniel Jacobowitz -MontaVista Software Debian GNU/Linux Developer - -2003-06-19 Daniel Jacobowitz - - * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features - for the SH architecture. - * sysdeps/unix/sysv/linux/sh/pread.c: Use generic Linux version - instead of the MIPS version. - * sysdeps/unix/sysv/linux/sh/pread64.c: Likewise. - * sysdeps/unix/sysv/linux/sh/pwrite.c: Likewise. - * sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise. - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h.org 2003-04-21 10:57:55.000000000 -0400 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h 2003-04-21 11:16:47.000000000 -0400 -@@ -151,11 +151,20 @@ - - /* The changed st_ino field appeared in 2.4.0-test6. But we cannot - distinguish this version from other 2.4.0 releases. Therefore play -- save and assume it available is for 2.4.1 and up. */ --#if __LINUX_KERNEL_VERSION >= 132097 -+ save and assume it available is for 2.4.1 and up. However, SH is lame, -+ and still does not have a 64-bit inode field. */ -+#if __LINUX_KERNEL_VERSION >= 132097 \ -+ && !defined __sh__ - # define __ASSUME_ST_INO_64_BIT 1 - #endif - -+/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */ -+#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__ -+# define __ASSUME_TRUNCATE64_SYSCALL 1 -+# define __ASSUME_MMAP2_SYSCALL 1 -+# define __ASSUME_STAT64_SYSCALL 1 -+#endif -+ - /* To support locking of large files a new fcntl() syscall was introduced - in 2.4.0-test7. We test for 2.4.1 for the earliest version we know - the syscall is available. */ - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-fp-byteorder.patch --- a/patches/glibc/2.3.2/glibc-fp-byteorder.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -Taken from http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html -Author: addsub@eyou.com -Target: ARM - -Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c -and makes printf("%f", 1.0) work. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00115.html : - It ... fixes the 'printf("%f\n", 0.5); prints 0.000000' and general 'floating point - is broken' on my big-endian hardfloat FPA ARM platform. ... - It's definitely needed for hardfloat. So I'd think it's needed for - big-endian systems in any case, and for VFP on little-endian systems - too. Someone would have to verify that though. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00123.html - I just had a look at glibc-20040830, and [this patch] is still needed and useful - for this version. glibc-20040830 out-of-the-box still contains the - following wrong assumptions: - - sysdeps/arm/bits/endian.h: float word order is big endian (which it is - not on vfp systems) - - sysdeps/arm/gmp-mparam.h: IEEE doubles are mixed endian (which they - are not on big endian systems, neither on vfp systems) - - sysdeps/arm/ieee754.h: IEEE doubles are in little endian byte order - (which they are not on big endian systems) - [This patch] seems the right solution for all of these issues. - -Dimitry Andric wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00132.html : - It's even needed for glibc CVS, AFAICS. - The patch hunk which modifies glibc.new/sysdeps/arm/bits/endian.h - (currently at version 1.4) is only needed for proper VFP operation. - But the hunk which modifies sysdeps/arm/gmp-mparam.h, and the hunk - that deletes sysdeps/arm/ieee754.h (yes, this IS correct), are needed - for proper operation of *any* FP model on big endian ARM. - -See also discussion in followups to -http://sources.redhat.com/ml/crossgcc/2004-05/msg00245.html) - -Message-ID: <276985760.37584@eyou.com> -Received: from unknown (HELO eyou.com) (172.16.2.2) - by 0.0.0.0 with SMTP; Tue, 17 Feb 2004 10:42:40 +0800 -Received: (qmail 8238 invoked by uid 65534); 17 Feb 2004 10:42:38 +0800 -Date: 17 Feb 2004 10:42:38 +0800 -Message-ID: <20040217104238.8237.qmail@eyou.com> -From: "add" -To: dank@kegel.com -Reply-To: "add" -Subject: Re:   problem while building arm vfp softfloat gcc ` - -Hi, Dan, This is a patch I applied to my glibc-2.3.2, then my softfloat -toolchain can printf("%f\n",1.0). So you may have a try of this - - -diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h ---- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400 -+++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500 -@@ -9,4 +9,9 @@ - #else - #define __BYTE_ORDER __LITTLE_ENDIAN - #endif -+ -+#ifdef __VFP_FP__ -+#define __FLOAT_WORD_ORDER __BYTE_ORDER -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN -+#endif -diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h ---- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500 -@@ -26,5 +26,13 @@ MA 02111-1307, USA. */ - #define BITS_PER_SHORTINT 16 - #define BITS_PER_CHAR 8 - --#define IEEE_DOUBLE_BIG_ENDIAN 0 --#define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#if defined(__ARMEB__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__VFP_FP__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+#else -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+# define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#endif -diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h ---- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500 -@@ -1,115 +0,0 @@ --/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _IEEE754_H -- --#define _IEEE754_H 1 --#include -- --#include -- --__BEGIN_DECLS -- --union ieee754_float -- { -- float f; -- -- /* This is the IEEE 754 single-precision format. */ -- struct -- { -- unsigned int mantissa:23; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa:22; -- unsigned int quiet_nan:1; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee_nan; -- }; -- --#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ -- -- --union ieee754_double -- { -- double d; -- -- /* This is the IEEE 754 double-precision format. */ -- struct -- { -- unsigned int mantissa0:20; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa0:19; -- unsigned int quiet_nan:1; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee_nan; -- }; -- --#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ -- -- --/* The following two structures are correct for `new' floating point systems but -- wrong for the old FPPC. The only solution seems to be to avoid their use on -- old hardware. */ -- --union ieee854_long_double -- { -- long double d; -- -- /* This is the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:32; -- } ieee; -- -- /* This is for NaNs in the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:30; -- unsigned int quiet_nan:1; -- unsigned int one:1; -- } ieee_nan; -- }; -- --#define IEEE854_LONG_DOUBLE_BIAS 0x3fff -- --__END_DECLS -- --#endif /* ieee754.h */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/glibc-test-lowram.patch --- a/patches/glibc/2.3.2/glibc-test-lowram.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ ---- glibc-2.2.5/malloc/tst-calloc.c.old Sun Aug 3 16:17:58 2003 -+++ glibc-2.2.5/malloc/tst-calloc.c Sun Aug 3 16:20:01 2003 -@@ -24,9 +24,8 @@ - #include - - --/* Number of samples per size. */ --#define N 50000 -- -+/* Number of samples per size. This is also the maximum memory consumption in kilobytes. */ -+#define N 8000 - - static void - fixed_test (int size) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/nobits.patch --- a/patches/glibc/2.3.2/nobits.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -Fix build on architectures (like arm) where gas accepts @ as comment. - -First reported here: -http://sources.redhat.com/ml/libc-alpha/2003-04/msg00265.html - -In use here: -http://www.netwinder.org/autobuild/nw-9/patches/glibc-2.3.2-nobits.patch - -Committed to cvs: -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/include/libc-symbols.h.diff?r1=1.52&r2=1.53&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/include/libc-symbols.h,v -retrieving revision 1.52 -retrieving revision 1.53 -diff -u -r1.52 -r1.53 ---- libc/include/libc-symbols.h 2003/04/30 04:18:03 1.52 -+++ libc/include/libc-symbols.h 2003/05/02 02:20:48 1.53 -@@ -247,7 +247,7 @@ - __attribute__ ((unused, section (".gnu.warning." #symbol __sec_comment))) \ - = msg; - # define libc_freeres_ptr(decl) \ -- __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", @nobits") \ -+ __make_section_unallocated ("__libc_freeres_ptrs, \"aw\", %nobits") \ - decl __attribute__ ((section ("__libc_freeres_ptrs" __sec_comment))) - # define __libc_freeres_fn_section \ - __attribute__ ((section ("__libc_freeres_fn"))) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/old/glibc-2.3.2-powerpc-procfs.patch --- a/patches/glibc/2.3.2/old/glibc-2.3.2-powerpc-procfs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -See http://sources.redhat.com/ml/libc-alpha/2003-12/msg00101.html -Fixes -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: error: conflicting types for 'elf_vrreg_t' -when building glibc-2.3.2 for powerpc64 and linux-2.6.x - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h,v -retrieving revision 1.10 -retrieving revision 1.11 -diff -u -r1.10 -r1.11 ---- libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2003/01/12 08:24:23 1.10 -+++ libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2003/12/17 23:09:34 1.11 -@@ -45,7 +45,6 @@ - - typedef double elf_fpreg_t; - typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; --#endif - - /* gcc 3.1 and newer support __uint128_t. */ - #if !__GNUC_PREREQ(3,1) -@@ -57,6 +56,7 @@ - /* Altivec registers */ - typedef __uint128_t elf_vrreg_t; - typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; -+#endif - - struct elf_siginfo - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/sscanf.patch --- a/patches/glibc/2.3.2/sscanf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -2003-03-05 Roland McGrath - - * stdio-common/sscanf.c: Use prototype defn with ... syntax. - * libio/swscanf.c: Likewise. - * libio/swprintf.c: Likewise. - -=================================================================== -RCS file: /cvs/glibc/libc/stdio-common/sscanf.c,v -retrieving revision 1.8 -retrieving revision 1.9 -diff -u -r1.8 -r1.9 ---- libc/stdio-common/sscanf.c 2002/08/10 09:24:42 1.8 -+++ libc/stdio-common/sscanf.c 2003/03/05 19:58:03 1.9 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991,95,96,98,2002 Free Software Foundation, Inc. -+/* Copyright (C) 1991,1995,1996,1998,2002,2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -27,9 +27,7 @@ - /* Read formatted input from S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --sscanf (s, format) -- const char *s; -- const char *format; -+sscanf (const char *s, const char *format, ...) - { - va_list arg; - int done; -=================================================================== -RCS file: /cvs/glibc/libc/libio/swprintf.c,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/libio/swprintf.c 2001/07/06 04:55:32 1.3 -+++ libc/libio/swprintf.c 2003/03/05 19:58:03 1.4 -@@ -1,4 +1,5 @@ --/* Copyright (C) 1991,1995,1997,1998,1999,2000 Free Software Foundation, Inc. -+/* Copyright (C) 1991,1995,1997,1998,1999,2000,2003 -+ Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -22,10 +23,7 @@ - /* Write formatted output into S, according to the format string FORMAT. */ - /* VARARGS3 */ - int --swprintf (s, n, format) -- wchar_t *s; -- size_t n; -- const wchar_t *format; -+swprintf (wchar_t *s, size_t n, const wchar_t *format, ...) - { - va_list arg; - int done; -=================================================================== -RCS file: /cvs/glibc/libc/libio/swscanf.c,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -r1.2 -r1.3 ---- libc/libio/swscanf.c 2001/07/06 04:55:32 1.2 -+++ libc/libio/swscanf.c 2003/03/05 19:58:03 1.3 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc. -+/* Copyright (C) 1991,1995,1996,1998,1999,2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -22,9 +22,7 @@ - /* Read formatted input from S, according to the format string FORMAT. */ - /* VARARGS2 */ - int --swscanf (s, format) -- const wchar_t *s; -- const wchar_t *format; -+swscanf (const wchar_t *s, const wchar_t *format, ...) - { - va_list arg; - int done; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.2/string2-typedef.patch --- a/patches/glibc/2.3.2/string2-typedef.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -See http://gcc.gnu.org/ml/gcc/2003-08/msg00959.html - -Compiling glibc-2.3.2 with a gcc-3.4 snapshot, I'm seeing -a whole bunch of warnings like this: - -../string/bits/string2.h:80: warning: `packed' attribute ignored -../string/bits/string2.h:81: warning: `packed' attribute ignored -... - -Looks like it was bad code that was silently ignored by previous compilers. -Ulrich fixed it as follows: - -=================================================================== -RCS file: /cvs/glibc/libc/string/bits/string2.h,v -retrieving revision 1.68 -retrieving revision 1.69 -diff -u -r1.68 -r1.69 ---- libc/string/bits/string2.h 2002/05/25 06:10:18 1.68 -+++ libc/string/bits/string2.h 2003/08/20 00:07:37 1.69 -@@ -1,5 +1,5 @@ - /* Machine-independant string function optimizations. -- Copyright (C) 1997,1998,1999,2000,2001,2002 Free Software Foundation, Inc. -+ Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - -@@ -76,7 +76,7 @@ - use unaligned memory accesses. */ - # define __STRING2_COPY_TYPE(N) \ - typedef struct { unsigned char __arr[N]; } \ -- __STRING2_COPY_ARR##N __attribute__ ((packed)) -+ __attribute__ ((__packed__)) __STRING2_COPY_ARR##N - __STRING2_COPY_TYPE (2); - __STRING2_COPY_TYPE (3); - __STRING2_COPY_TYPE (4); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/arm-ctl_bus_isa.patch --- a/patches/glibc/2.3.3/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/bad/glibc-2.3.3-alpha-pwrite64.patch --- a/patches/glibc/2.3.3/bad/glibc-2.3.3-alpha-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Attempted fix for this error: - - -crosstool-0.30/build/alpha-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.3/build-glibc/libc_pic.os(.text+0xc8bd0): In function `__posix_fallocate64_l64': -: undefined reference to `__GI___pwrite64' -collect2: ld returned 1 exit status -make[1]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-0.30/build/alpha-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.3/glibc-2.3.3' -make[1]: *** [/home/dank/queue/jobdir.fast2/crosstool-0.30/build/alpha-unknown-linux-gnu/gcc-3.3.4-glibc-2.3.3/build-glibc/libc.so] Error 1 -make: *** [all] Error 2 - -extracted from GLIBC CVS by Dan Kegel -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.14&r2=1.15&cvsroot=glibc' -(to match context of...) -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.16&r2=1.17&cvsroot=glibc' -and rediffed. - -cf. -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00038.html - -Originally thought we needed this hunk, too: -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00037.html -but it seems the sysdep.h change is sufficient, and works better -when compiling against linux-2.4. - -And then rediffed again against glibc-2.3.3 - ---- glibc-2.3.3.orig/sysdeps/unix/sysv/linux/alpha/sysdep.h Fri Jun 20 09:24:36 2003 -+++ glibc-2.3.3/sysdeps/unix/sysv/linux/alpha/sysdep.h Wed Mar 23 23:59:58 2005 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003 -+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003, 2004 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, , August 1995. -@@ -63,6 +63,16 @@ - /* Help old kernel headers where particular syscalls are not available. */ - #ifndef __NR_semtimedop - # define __NR_semtimedop 423 -+#endif -+ -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 - #endif - - /* diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/fixup.patch --- a/patches/glibc/2.3.3/fixup.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -Fixes -dl-runtime.c:56: error: conflicting types for 'fixup' -../sysdeps/i386/dl-machine.h:158: error: previous declaration of 'fixup' was here -when building with gcc-3.4.0 - -First hunk: -Define ARCH_FIXUP_ATTRIBUTE and use it in the fixup function declarations. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/dl-machine.h.diff?r1=1.124&r2=1.125&cvsroot=glibc - -Second hunk: -If ARCH_FIXUP_ATTRIBUTE is not defined, provide dummy definition. -Use macro in fixup function definitions. -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/elf/dl-runtime.c.diff?r1=1.64&r2=1.65&cvsroot=glibc -[rediffed against glibc-2.3.2] - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/i386/dl-machine.h,v -retrieving revision 1.124 -retrieving revision 1.125 -diff -u -r1.124 -r1.125 ---- libc/sysdeps/i386/dl-machine.h 2004/03/05 10:14:49 1.124 -+++ libc/sysdeps/i386/dl-machine.h 2004/03/09 07:42:29 1.125 -@@ -154,11 +154,14 @@ - destroys the passed register information. */ - /* GKM FIXME: Fix trampoline to pass bounds so we can do - without the `__unbounded' qualifier. */ --static ElfW(Addr) fixup (struct link_map *__unbounded l, ElfW(Word) reloc_offset) -- __attribute__ ((regparm (2), unused)); -+#define ARCH_FIXUP_ATTRIBUTE __attribute__ ((regparm (3), unused)) -+ -+static ElfW(Addr) fixup (struct link_map *__unbounded l, -+ ElfW(Word) reloc_offset) -+ ARCH_FIXUP_ATTRIBUTE; - static ElfW(Addr) profile_fixup (struct link_map *l, ElfW(Word) reloc_offset, - ElfW(Addr) retaddr) -- __attribute__ ((regparm (3), unused)); -+ ARCH_FIXUP_ATTRIBUTE; - # endif - - /* This code is used in dl-runtime.c to call the `fixup' function -=================================================================== ---- /home/dank/downloads/glibc-2.3.2/elf/dl-runtime.c Fri Feb 7 11:41:12 2003 -+++ glibc-2.3.2/elf/dl-runtime.c Thu Apr 8 22:24:26 2004 -@@ -36,6 +36,12 @@ - # define VERSYMIDX(sym) (DT_NUM + DT_THISPROCNUM + DT_VERSIONTAGIDX (sym)) - #endif - -+/* The fixup functions might have need special attributes. If none -+ are provided define the macro as empty. */ -+#ifndef ARCH_FIXUP_ATTRIBUTE -+# define ARCH_FIXUP_ATTRIBUTE -+#endif -+ - - /* This function is called through a special trampoline from the PLT the - first time each PLT entry is called. We must perform the relocation -@@ -45,7 +51,7 @@ - function. */ - - #ifndef ELF_MACHINE_NO_PLT --static ElfW(Addr) __attribute_used__ -+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE - fixup ( - # ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, -@@ -132,7 +138,7 @@ - - #if !defined PROF && !defined ELF_MACHINE_NO_PLT && !__BOUNDED_POINTERS__ - --static ElfW(Addr) __attribute_used__ -+static ElfW(Addr) __attribute_used__ ARCH_FIXUP_ATTRIBUTE - profile_fixup ( - #ifdef ELF_MACHINE_RUNTIME_FIXUP_ARGS - ELF_MACHINE_RUNTIME_FIXUP_ARGS, diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.2.5-allow-gcc-4.0-malloc.patch --- a/patches/glibc/2.3.3/glibc-2.2.5-allow-gcc-4.0-malloc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -Fixes -programs/ld-collate.c: In function 'obstack_int32_grow': -programs/ld-collate.c:48: error: invalid lvalue in increment -programs/ld-collate.c: In function 'obstack_int32_grow_fast': -programs/ld-collate.c:57: error: invalid lvalue in increment - -Change taken by eyeball from version 1.20 at -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/malloc/obstack.h?cvsroot=glibc - ---- /home/dank/downloads/glibc-2.2.5/malloc/obstack.h 2001-07-05 21:55:35.000000000 -0700 -+++ glibc-2.2.5/malloc/obstack.h 2005-03-11 16:12:16.175812224 -0800 -@@ -423,22 +423,29 @@ - ({ struct obstack *__o = (OBSTACK); \ - if (__o->next_free + sizeof (void *) > __o->chunk_limit) \ - _obstack_newchunk (__o, sizeof (void *)); \ -- *((void **)__o->next_free)++ = (datum); \ -- (void) 0; }) -+ obstack_ptr_grow_fast (__o, datum); }) - - # define obstack_int_grow(OBSTACK,datum) \ - __extension__ \ - ({ struct obstack *__o = (OBSTACK); \ - if (__o->next_free + sizeof (int) > __o->chunk_limit) \ - _obstack_newchunk (__o, sizeof (int)); \ -- *((int *)__o->next_free)++ = (datum); \ -+ obstack_int_grow_fast (__o, datum); }) -+ -+# define obstack_ptr_grow_fast(OBSTACK,aptr) \ -+__extension__ \ -+({ struct obstack *__o1 = (OBSTACK); \ -+ *(const void **) __o1->next_free = (aptr); \ -+ __o1->next_free += sizeof (const void *); \ - (void) 0; }) - --# define obstack_ptr_grow_fast(h,aptr) \ -- (*((void **) (h)->next_free)++ = (aptr)) -+# define obstack_int_grow_fast(OBSTACK,aint) \ -+__extension__ \ -+({ struct obstack *__o1 = (OBSTACK); \ -+ *(int *) __o1->next_free = (aint); \ -+ __o1->next_free += sizeof (int); \ -+ (void) 0; }) - --# define obstack_int_grow_fast(h,aint) \ -- (*((int *) (h)->next_free)++ = (aint)) - - # define obstack_blank(OBSTACK,length) \ - __extension__ \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.4-inline.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.4-inline.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -Fixes -cc1: error: invalid parameter `max-inline-insns' -make[2]: *** [/home/dank/wk/crosstool-0.28-rc6/build/powerpc64-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/dl-load.o] Error 1 -when building with gcc-3.4.0, which no longer has a single ---max-inline-insns parameter. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/powerpc/powerpc64/Makefile.diff?r1=1.3&r2=1.4&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/powerpc/powerpc64/Makefile,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/sysdeps/powerpc/powerpc64/Makefile 2003/10/22 21:30:03 1.3 -+++ libc/sysdeps/powerpc/powerpc64/Makefile 2004/02/20 05:43:52 1.4 -@@ -20,5 +20,5 @@ - - ifeq ($(subdir),elf) - # help gcc inline asm code from dl-machine.h --+cflags += --param max-inline-insns=2000 -++cflags += -finline-limit=2000 - endif - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-elf.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-elf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/elf/dl-load.c.diff?r1=1.235&r2=1.236&cvsroot=glibc - -Fixes gcc-3.5 errors - -dl-load.c: In function `_dl_map_object_from_fd': -dl-load.c:1179: error: invalid lvalue in assignment -dl-load.c:1205: error: invalid lvalue in assignment - -=================================================================== -RCS file: /cvs/glibc/libc/elf/dl-load.c,v -retrieving revision 1.235 -retrieving revision 1.236 -diff -u -r1.235 -r1.236 ---- libc/elf/dl-load.c 2004/02/09 07:03:48 1.235 -+++ libc/elf/dl-load.c 2004/02/21 18:25:41 1.236 -@@ -1228,7 +1228,7 @@ - } - else - /* Adjust the PT_PHDR value by the runtime load address. */ -- (ElfW(Addr)) l->l_phdr += l->l_addr; -+ l->l_phdr = (ElfW(Phdr) *) ((ElfW(Addr)) l->l_phdr + l->l_addr); - } - - #ifdef USE_TLS -@@ -1254,7 +1254,7 @@ - } - } - else -- (ElfW(Addr)) l->l_ld += l->l_addr; -+ l->l_ld = (ElfW(Dyn) *) ((ElfW(Addr)) l->l_ld + l->l_addr); - - l->l_entry += l->l_addr; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-gconv.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-gconv.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,228 +0,0 @@ -Fixes -gconv_open.c: In function `__gconv_open': -gconv_open.c:186: error: invalid lvalue in assignment -when building glibc-2.3.2 with gcc-3.5. - -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/iconv/gconv_simple.c.diff?r1=1.59&r2=1.63&cvsroot=glibc' - * (internal_ucs4_loop): Fix typo in last change. - - * (internal_ucs4le_loop): Remove cast used as lvalue. - - * Fix last commit. - - * iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as lvalue. - (internal_ucs4le_loop_single): Likewise. - (ucs4_internal_loop): Likewise. - (BODY): Likewise. - (internal_ucs4_loop_single): Likewise. - -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/iconv/gconv_open.c.diff?r1=1.32&r2=1.33&cvsroot=glibc' - * iconv/gconv_simple.c (ucs4le_internal_loop): Remove cast used as lvalue. - (internal_ucs4le_loop_single): Likewise. - (ucs4_internal_loop): Likewise. - (BODY): Likewise. - (internal_ucs4_loop_single): Likewise. - - -=================================================================== -RCS file: /cvs/glibc/libc/iconv/gconv_open.c,v -retrieving revision 1.32 -retrieving revision 1.33 -diff -u -r1.32 -r1.33 ---- libc/iconv/gconv_open.c 2001/11/29 04:51:58 1.32 -+++ libc/iconv/gconv_open.c 2004/02/07 15:56:32 1.33 -@@ -1,5 +1,5 @@ - /* Find matching transformation algorithms and initialize steps. -- Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - -@@ -182,8 +182,13 @@ - || __builtin_expect (__gconv_translit_find (runp), 0) == 0) - lastp = runp; - else -- /* This means we haven't found the module. Remove it. */ -- (lastp == NULL ? trans : lastp->next) = runp->next; -+ { -+ /* This means we haven't found the module. Remove it. */ -+ if (lastp == NULL) -+ trans = runp->next; -+ else -+ lastp->next = runp->next; -+ } - } - - /* Allocate room for handle. */ -=================================================================== -RCS file: /cvs/glibc/libc/iconv/gconv_simple.c,v -retrieving revision 1.59 -retrieving revision 1.63 -diff -u -r1.59 -r1.63 ---- libc/iconv/gconv_simple.c 2003/06/11 21:36:37 1.59 -+++ libc/iconv/gconv_simple.c 2004/03/09 10:00:31 1.63 -@@ -1,5 +1,5 @@ - /* Simple transformations functions. -- Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. -+ Copyright (C) 1997-2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 1997. - -@@ -87,12 +87,13 @@ - #if __BYTE_ORDER == __LITTLE_ENDIAN - /* Sigh, we have to do some real work. */ - size_t cnt; -+ uint32_t *outptr32 = (uint32_t *) outptr; - - for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) -- *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); -+ *outptr32++ = bswap_32 (*(const uint32_t *) inptr); - - *inptrp = inptr; -- *outptrp = outptr; -+ *outptrp = (unsigned char *) outptr32; - #elif __BYTE_ORDER == __BIG_ENDIAN - /* Simply copy the data. */ - *inptrp = inptr + n_convert * 4; -@@ -192,13 +193,16 @@ - (*outptrp)[2] = state->__value.__wchb[1]; - (*outptrp)[3] = state->__value.__wchb[0]; - -- *outptrp += 4; - #elif __BYTE_ORDER == __BIG_ENDIAN - /* XXX unaligned */ -- *(*((uint32_t **) outptrp)++) = state->__value.__wch; -+ (*outptrp)[0] = state->__value.__wchb[0]; -+ (*outptrp)[1] = state->__value.__wchb[1]; -+ (*outptrp)[2] = state->__value.__wchb[2]; -+ (*outptrp)[3] = state->__value.__wchb[3]; - #else - # error "This endianess is not supported." - #endif -+ *outptrp += 4; - - /* Clear the state buffer. */ - state->__count &= ~7; -@@ -268,7 +272,8 @@ - return __GCONV_ILLEGAL_INPUT; - } - -- *((uint32_t *) outptr)++ = inval; -+ *((uint32_t *) outptr) = inval; -+ outptr += sizeof (uint32_t); - } - - *inptrp = inptr; -@@ -447,9 +452,11 @@ - #if __BYTE_ORDER == __BIG_ENDIAN - /* Sigh, we have to do some real work. */ - size_t cnt; -+ uint32_t *outptr32 = (uint32_t *) outptr; - - for (cnt = 0; cnt < n_convert; ++cnt, inptr += 4) -- *((uint32_t *) outptr)++ = bswap_32 (*(const uint32_t *) inptr); -+ *outptr32++ = bswap_32 (*(const uint32_t *) inptr); -+ outptr = (unsigned char *) outptr32; - - *inptrp = inptr; - *outptrp = outptr; -@@ -555,12 +562,17 @@ - (*outptrp)[2] = state->__value.__wchb[1]; - (*outptrp)[3] = state->__value.__wchb[0]; - -- *outptrp += 4; - #else - /* XXX unaligned */ -- *(*((uint32_t **) outptrp)++) = state->__value.__wch; -+ (*outptrp)[0] = state->__value.__wchb[0]; -+ (*outptrp)[1] = state->__value.__wchb[1]; -+ (*outptrp)[2] = state->__value.__wchb[2]; -+ (*outptrp)[3] = state->__value.__wchb[3]; -+ - #endif - -+ *outptrp += 4; -+ - /* Clear the state buffer. */ - state->__count &= ~7; - -@@ -626,7 +638,8 @@ - return __GCONV_ILLEGAL_INPUT; - } - -- *((uint32_t *) outptr)++ = inval; -+ *((uint32_t *) outptr) = inval; -+ outptr += sizeof (uint32_t); - } - - *inptrp = inptr; -@@ -808,7 +821,8 @@ - } \ - else \ - /* It's an one byte sequence. */ \ -- *((uint32_t *) outptr)++ = *inptr++; \ -+ *((uint32_t *) outptr) = *inptr++; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #include -@@ -838,7 +852,8 @@ - } \ - else \ - /* It's an one byte sequence. */ \ -- *outptr++ = *((const uint32_t *) inptr)++; \ -+ *outptr++ = *((const uint32_t *) inptr); \ -+ inptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #include -@@ -1032,7 +1047,8 @@ - } \ - \ - /* Now adjust the pointers and store the result. */ \ -- *((uint32_t *) outptr)++ = ch; \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - -@@ -1153,7 +1169,8 @@ - STANDARD_FROM_LOOP_ERR_HANDLER (2); \ - } \ - \ -- *((uint32_t *) outptr)++ = u1; \ -+ *((uint32_t *) outptr) = u1; \ -+ outptr += sizeof (uint32_t); \ - inptr += 2; \ - } - #define LOOP_NEED_FLAGS -@@ -1201,7 +1218,8 @@ - } \ - else \ - { \ -- *((uint16_t *) outptr)++ = val; \ -+ *((uint16_t *) outptr) = val; \ -+ outptr += sizeof (uint16_t); \ - inptr += 4; \ - } \ - } -@@ -1242,7 +1260,8 @@ - continue; \ - } \ - \ -- *((uint32_t *) outptr)++ = u1; \ -+ *((uint32_t *) outptr) = u1; \ -+ outptr += sizeof (uint32_t); \ - inptr += 2; \ - } - #define LOOP_NEED_FLAGS -@@ -1291,7 +1310,8 @@ - } \ - else \ - { \ -- *((uint16_t *) outptr)++ = bswap_16 (val); \ -+ *((uint16_t *) outptr) = bswap_16 (val); \ -+ outptr += sizeof (uint16_t); \ - inptr += 4; \ - } \ - } diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-msort.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-msort.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/stdlib/msort.c.diff?r1=1.20&r2=1.21&cvsroot=glibc - -Fixes - -msort.c: In function `msort_with_tmp': -msort.c:59: error: invalid lvalue in increment -msort.c:59: error: invalid lvalue in increment -msort.c:64: error: invalid lvalue in increment -msort.c:64: error: invalid lvalue in increment - -when building with gcc-3.5. - -=================================================================== -RCS file: /cvs/glibc/libc/stdlib/msort.c,v -retrieving revision 1.20 -retrieving revision 1.21 -diff -u -r1.20 -r1.21 ---- libc/stdlib/msort.c 2002/09/24 04:20:57 1.20 -+++ libc/stdlib/msort.c 2004/02/07 15:57:34 1.21 -@@ -1,6 +1,6 @@ - /* An alternative to qsort, with an identical interface. - This file is part of the GNU C Library. -- Copyright (C) 1992,95-97,99,2000,01,02 Free Software Foundation, Inc. -+ Copyright (C) 1992,95-97,99,2000,01,02,04 Free Software Foundation, Inc. - Written by Mike Haertel, September 1988. - - The GNU C Library is free software; you can redistribute it and/or -@@ -56,12 +56,16 @@ - if ((*cmp) (b1, b2) <= 0) - { - --n1; -- *((op_t *) tmp)++ = *((op_t *) b1)++; -+ *((op_t *) tmp) = *((op_t *) b1); -+ tmp += sizeof (op_t); -+ b1 += sizeof (op_t); - } - else - { - --n2; -- *((op_t *) tmp)++ = *((op_t *) b2)++; -+ *((op_t *) tmp) = *((op_t *) b2); -+ tmp += sizeof (op_t); -+ b2 += sizeof (op_t); - } - } - else diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-sunrpc.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-sunrpc.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,233 +0,0 @@ -http://sources.redhat.com/ml/libc-hacker/2004-02/msg00005.html -[Also in CVS, but the original patch is easier to get.] - -Fixes errors like - -clnt_perr.c: In function `_buf': -clnt_perr.c:67: error: invalid lvalue in assignment - -when building with gcc-3.5. - -To: libc-hacker at sources dot redhat dot com -Subject: Fix cast as lvalue in sunrpc -From: Andreas Schwab -X-Yow: SHHHH!! I hear SIX TATTOOED TRUCK-DRIVERS tossing ENGINE BLOCKS - into empty OIL DRUMS dot dot -Date: Sun, 08 Feb 2004 17:38:31 +0100 -Message-ID: - -This fixes the uses of casts as lvalue in the sunrpc code. - -Andreas. - -2004-02-08 Andreas Schwab - - * include/rpc/rpc.h: Declare thread variables with their correct - type. - * sunrpc/clnt_perr.c: Don't cast thread variables. - * sunrpc/clnt_raw.c: Likewise. - * sunrpc/clnt_simp.c: Likewise. - * sunrpc/key_call.c: Likewise. - * sunrpc/svcauth_des.c: Likewise. - * sunrpc/svc.c: Likewise. - * sunrpc/svc_raw.c: Likewise. - * sunrpc/svc_simple.c: Likewise. - -Index: include/rpc/rpc.h -=================================================================== -RCS file: /cvs/glibc/libc/include/rpc/rpc.h,v -retrieving revision 1.8 -diff -u -p -a -r1.8 rpc.h ---- glibc/include/rpc/rpc.h 5 Aug 2002 22:10:59 -0000 1.8 -+++ glibc/include/rpc/rpc.h 8 Feb 2004 14:19:14 -0000 -@@ -17,24 +17,24 @@ struct rpc_thread_variables { - struct pollfd *svc_pollfd_s; /* Global, rpc_common.c */ - int svc_max_pollfd_s; /* Global, rpc_common.c */ - -- void *clnt_perr_buf_s; /* clnt_perr.c */ -+ char *clnt_perr_buf_s; /* clnt_perr.c */ - -- void *clntraw_private_s; /* clnt_raw.c */ -+ struct clntraw_private_s *clntraw_private_s; /* clnt_raw.c */ - -- void *callrpc_private_s; /* clnt_simp.c */ -+ struct callrpc_private_s *callrpc_private_s; /* clnt_simp.c */ - -- void *key_call_private_s; /* key_call.c */ -+ struct key_call_private *key_call_private_s; /* key_call.c */ - -- void *authdes_cache_s; /* svcauth_des.c */ -- void *authdes_lru_s; /* svcauth_des.c */ -+ struct cache_entry *authdes_cache_s; /* svcauth_des.c */ -+ int *authdes_lru_s; /* svcauth_des.c */ - -- void *svc_xports_s; /* svc.c */ -- void *svc_head_s; /* svc.c */ -+ SVCXPRT **svc_xports_s; /* svc.c */ -+ struct svc_callout *svc_head_s; /* svc.c */ - -- void *svcraw_private_s; /* svc_raw.c */ -+ struct svcraw_private_s *svcraw_private_s; /* svc_raw.c */ - -- void *svcsimple_proglst_s; /* svc_simple.c */ -- void *svcsimple_transp_s; /* svc_simple.c */ -+ struct proglst_ *svcsimple_proglst_s; /* svc_simple.c */ -+ SVCXPRT *svcsimple_transp_s; /* svc_simple.c */ - }; - - extern struct rpc_thread_variables *__rpc_thread_variables(void) -Index: sunrpc/clnt_perr.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/clnt_perr.c,v -retrieving revision 1.19 -diff -u -p -a -r1.19 clnt_perr.c ---- glibc/sunrpc/clnt_perr.c 1 Nov 2002 20:43:54 -0000 1.19 -+++ glibc/sunrpc/clnt_perr.c 8 Feb 2004 14:19:14 -0000 -@@ -55,7 +55,7 @@ static char *auth_errmsg (enum auth_stat - * buf variable in a few functions. Overriding a global variable - * with a local variable of the same name is a bad idea, anyway. - */ --#define buf ((char *)RPC_THREAD_VARIABLE(clnt_perr_buf_s)) -+#define buf RPC_THREAD_VARIABLE(clnt_perr_buf_s) - #else - static char *buf; - #endif -Index: sunrpc/clnt_raw.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/clnt_raw.c,v -retrieving revision 1.10 -diff -u -p -a -r1.10 clnt_raw.c ---- glibc/sunrpc/clnt_raw.c 15 May 2002 00:21:00 -0000 1.10 -+++ glibc/sunrpc/clnt_raw.c 8 Feb 2004 14:19:14 -0000 -@@ -61,7 +61,7 @@ struct clntraw_private_s - u_int mcnt; - }; - #ifdef _RPC_THREAD_SAFE_ --#define clntraw_private ((struct clntraw_private_s *)RPC_THREAD_VARIABLE(clntraw_private_s)) -+#define clntraw_private RPC_THREAD_VARIABLE(clntraw_private_s) - #else - static struct clntraw_private_s *clntraw_private; - #endif -Index: sunrpc/clnt_simp.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/clnt_simp.c,v -retrieving revision 1.14 -diff -u -p -a -r1.14 clnt_simp.c ---- glibc/sunrpc/clnt_simp.c 15 May 2002 00:21:00 -0000 1.14 -+++ glibc/sunrpc/clnt_simp.c 8 Feb 2004 14:19:14 -0000 -@@ -55,7 +55,7 @@ struct callrpc_private_s - char *oldhost; - }; - #ifdef _RPC_THREAD_SAFE_ --#define callrpc_private ((struct callrpc_private_s *)RPC_THREAD_VARIABLE(callrpc_private_s)) -+#define callrpc_private RPC_THREAD_VARIABLE(callrpc_private_s) - #else - static struct callrpc_private_s *callrpc_private; - #endif -Index: sunrpc/key_call.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/key_call.c,v -retrieving revision 1.16 -diff -u -p -a -r1.16 key_call.c ---- glibc/sunrpc/key_call.c 6 Aug 2002 06:08:50 -0000 1.16 -+++ glibc/sunrpc/key_call.c 8 Feb 2004 14:19:14 -0000 -@@ -370,7 +370,7 @@ struct key_call_private { - uid_t uid; /* user-id at last authorization */ - }; - #ifdef _RPC_THREAD_SAFE_ --#define key_call_private_main ((struct key_call_private *)RPC_THREAD_VARIABLE(key_call_private_s)) -+#define key_call_private_main RPC_THREAD_VARIABLE(key_call_private_s) - #else - static struct key_call_private *key_call_private_main; - #endif -Index: sunrpc/svc.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svc.c,v -retrieving revision 1.17 -diff -u -p -a -r1.17 svc.c ---- glibc/sunrpc/svc.c 29 Aug 2003 07:45:18 -0000 1.17 -+++ glibc/sunrpc/svc.c 8 Feb 2004 14:19:14 -0000 -@@ -44,7 +44,7 @@ - #include - - #ifdef _RPC_THREAD_SAFE_ --#define xports ((SVCXPRT **)RPC_THREAD_VARIABLE(svc_xports_s)) -+#define xports RPC_THREAD_VARIABLE(svc_xports_s) - #else - static SVCXPRT **xports; - #endif -@@ -63,7 +63,7 @@ struct svc_callout { - void (*sc_dispatch) (struct svc_req *, SVCXPRT *); - }; - #ifdef _RPC_THREAD_SAFE_ --#define svc_head ((struct svc_callout *)RPC_THREAD_VARIABLE(svc_head_s)) -+#define svc_head RPC_THREAD_VARIABLE(svc_head_s) - #else - static struct svc_callout *svc_head; - #endif -Index: sunrpc/svc_raw.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svc_raw.c,v -retrieving revision 1.5 -diff -u -p -a -r1.5 svc_raw.c ---- glibc/sunrpc/svc_raw.c 26 Feb 2002 01:43:56 -0000 1.5 -+++ glibc/sunrpc/svc_raw.c 8 Feb 2004 14:19:14 -0000 -@@ -54,7 +54,7 @@ struct svcraw_private_s - char verf_body[MAX_AUTH_BYTES]; - }; - #ifdef _RPC_THREAD_SAFE_ --#define svcraw_private ((struct svcraw_private_s *)RPC_THREAD_VARIABLE(svcraw_private_s)) -+#define svcraw_private RPC_THREAD_VARIABLE(svcraw_private_s) - #else - static struct svcraw_private_s *svcraw_private; - #endif -Index: sunrpc/svc_simple.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svc_simple.c,v -retrieving revision 1.16 -diff -u -p -a -r1.16 svc_simple.c ---- glibc/sunrpc/svc_simple.c 6 Aug 2002 05:10:30 -0000 1.16 -+++ glibc/sunrpc/svc_simple.c 8 Feb 2004 14:19:14 -0000 -@@ -61,7 +61,7 @@ struct proglst_ - struct proglst_ *p_nxt; - }; - #ifdef _RPC_THREAD_SAFE_ --#define proglst ((struct proglst_ *)RPC_THREAD_VARIABLE(svcsimple_proglst_s)) -+#define proglst RPC_THREAD_VARIABLE(svcsimple_proglst_s) - #else - static struct proglst_ *proglst; - #endif -@@ -69,7 +69,7 @@ static struct proglst_ *proglst; - - static void universal (struct svc_req *rqstp, SVCXPRT *transp_s); - #ifdef _RPC_THREAD_SAFE_ --#define transp ((SVCXPRT *)RPC_THREAD_VARIABLE(svcsimple_transp_s)) -+#define transp RPC_THREAD_VARIABLE(svcsimple_transp_s) - #else - static SVCXPRT *transp; - #endif -Index: sunrpc/svcauth_des.c -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/svcauth_des.c,v -retrieving revision 1.8 -diff -u -p -a -r1.8 svcauth_des.c ---- glibc/sunrpc/svcauth_des.c 20 Aug 2001 06:37:09 -0000 1.8 -+++ glibc/sunrpc/svcauth_des.c 8 Feb 2004 14:19:14 -0000 -@@ -72,8 +72,8 @@ struct cache_entry - char *localcred; /* generic local credential */ - }; - #ifdef _RPC_THREAD_SAFE_ --#define authdes_cache ((struct cache_entry *)RPC_THREAD_VARIABLE(authdes_cache_s)) --#define authdes_lru ((int *)RPC_THREAD_VARIABLE(authdes_lru_s)) -+#define authdes_cache RPC_THREAD_VARIABLE(authdes_cache_s) -+#define authdes_lru RPC_THREAD_VARIABLE(authdes_lru_s) - #else - static struct cache_entry *authdes_cache; - static int *authdes_lru; - --- -Andreas Schwab, SuSE Labs, schwab@suse.de -SuSE Linux AG, Maxfeldstraße 5, 90409 Nürnberg, Germany -Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 -"And now for something completely different." - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-xdr.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-allow-gcc-3.5-xdr.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sunrpc/rpc/xdr.h.diff?r1=1.27&r2=1.28&cvsroot=glibc -(but see also http://sources.redhat.com/ml/libc-alpha/2004-03/msg00267.html -and http://gcc.gnu.org/ml/gcc-patches/2004-03/msg02056.html) - -Fixes errors - -rpc_cmsg.c: In function `xdr_callmsg': -rpc_cmsg.c:70: error: invalid lvalue in increment -rpc_cmsg.c:71: error: invalid lvalue in increment -rpc_cmsg.c:74: error: invalid lvalue in increment -rpc_cmsg.c:77: error: invalid lvalue in increment -rpc_cmsg.c:78: error: invalid lvalue in increment -rpc_cmsg.c:79: error: invalid lvalue in increment -rpc_cmsg.c:81: error: invalid lvalue in increment -rpc_cmsg.c:89: error: invalid lvalue in increment -rpc_cmsg.c:106: error: invalid lvalue in increment -rpc_cmsg.c:107: error: invalid lvalue in increment -rpc_cmsg.c:112: error: invalid lvalue in increment -rpc_cmsg.c:117: error: invalid lvalue in increment -rpc_cmsg.c:118: error: invalid lvalue in increment -rpc_cmsg.c:119: error: invalid lvalue in increment -rpc_cmsg.c:121: error: invalid lvalue in increment -rpc_cmsg.c:160: error: invalid lvalue in increment - -=================================================================== -RCS file: /cvs/glibc/libc/sunrpc/rpc/xdr.h,v -retrieving revision 1.27 -retrieving revision 1.28 -diff -u -r1.27 -r1.28 ---- libc/sunrpc/rpc/xdr.h 2002/12/16 02:05:49 1.27 -+++ libc/sunrpc/rpc/xdr.h 2004/03/22 10:52:33 1.28 -@@ -262,10 +262,8 @@ - * and shouldn't be used any longer. Code which use this defines or longs - * in the RPC code will not work on 64bit Solaris platforms ! - */ --#define IXDR_GET_LONG(buf) \ -- ((long)ntohl((u_long)*__extension__((u_int32_t*)(buf))++)) --#define IXDR_PUT_LONG(buf, v) \ -- (*__extension__((u_int32_t*)(buf))++ = (long)htonl((u_long)(v))) -+#define IXDR_GET_LONG(buf) ((long)IXDR_GET_U_INT32(buf)) -+#define IXDR_PUT_LONG(buf, v) ((long)IXDR_PUT_INT32(buf, (long)(v))) - #define IXDR_GET_U_LONG(buf) ((u_long)IXDR_GET_LONG(buf)) - #define IXDR_PUT_U_LONG(buf, v) IXDR_PUT_LONG(buf, (long)(v)) - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-arm-fix-strlen.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-arm-fix-strlen.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -See also -http://lists.gnu.org/archive/html/bug-glibc/2002-12/msg00056.html -http://lists.arm.linux.org.uk/pipermail/linux-arm-toolchain/2004-June/000016.html - -2002-12-12 Andreas Schwab - * sysdeps/arm/strlen.S: Fix last word check for big endian. - -To: libc-alpha at sources dot redhat dot com -Subject: [PATCH] REPOST: ARM big-endian strlen() fix -References: -From: Krzysztof Halasa -Date: Thu, 10 Jun 2004 13:41:44 +0200 -Message-ID: -MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="=-=-=" - ---=-=-= - -The attached patch fixes strlen() on big-endian ARM. Please apply. -Thanks. --- -Krzysztof Halasa, B*FH - ---=-=-= -Content-Type: text/x-patch -Content-Disposition: inline; filename=glibc-strlen.patch - ---- glibc-2.3.3.old/sysdeps/arm/strlen.S 2003-04-30 00:47:20.000000000 +0200 -+++ glibc-2.3.3/sysdeps/arm/strlen.S 2004-06-06 03:21:48.351931240 +0200 -@@ -53,12 +53,21 @@ - ldrne r2, [r1], $4 @ and we continue to the next word - bne Laligned @ - Llastword: @ drop through to here once we find a -+#ifdef __ARMEB__ -+ tst r2, $0xff000000 @ word that has a zero byte in it -+ addne r0, r0, $1 @ -+ tstne r2, $0x00ff0000 @ and add up to 3 bytes on to it -+ addne r0, r0, $1 @ -+ tstne r2, $0x0000ff00 @ (if first three all non-zero, 4th -+ addne r0, r0, $1 @ must be zero) -+#else - tst r2, $0x000000ff @ word that has a zero byte in it - addne r0, r0, $1 @ - tstne r2, $0x0000ff00 @ and add up to 3 bytes on to it - addne r0, r0, $1 @ - tstne r2, $0x00ff0000 @ (if first three all non-zero, 4th - addne r0, r0, $1 @ must be zero) -+#endif - RETINSTR(mov,pc,lr) - END(strlen) - libc_hidden_builtin_def (strlen) - ---=-=-=-- - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-pr139-fix.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-pr139-fix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -2004-04-29 Jakub Jelinek - - * sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c (_Qp_qtoi): Use %f31 - for single precision register, add it to __asm clobbers [BZ #139]. - * sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c (_Qp_qtoui): Use %f31 - for single precision register, add it to __asm clobbers. - * sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c (_Qp_qtoux): Use fqtox - instead of fqtoi in QP_HANDLE_EXCEPTIONS. - * sysdeps/sparc/sparc64/soft-fp/qp_qtox.c (_Qp_qtox): Likewise. - Reported by M. H. VanLeeuwen . - -See http://sources.redhat.com/bugzilla/show_bug.cgi?id=139 -Fixes error -qp_qtoi.s:261: Error: Illegal operands: There are only 32 single precision f registers; [0-31] -plus a couple other things vanl noticed. - -diff -ur orig/qp_qtoi.c new/qp_qtoi.c ---- orig/qp_qtoi.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtoi.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (int)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,9 +38,9 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" --" st %%f60, [%0]\n" --" " : : "r" (&rx), "r" (a) : QP_CLOBBER); -+" fqtoi %%f52, %%f31\n" -+" st %%f31, [%0]\n" -+" " : : "r" (&rx), "r" (a) : QP_CLOBBER, "f31"); - r = rx); - - return r; -diff -ur orig/qp_qtoui.c new/qp_qtoui.c ---- orig/qp_qtoui.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtoui.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (unsigned int)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,9 +38,9 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" --" st %%f60, [%0]\n" --" " : : "r" (&rx), "r" (a) : QP_CLOBBER); -+" fqtoi %%f52, %%f31\n" -+" st %%f31, [%0]\n" -+" " : : "r" (&rx), "r" (a) : QP_CLOBBER, "f31"); - r = rx); - - return r; -diff -ur orig/qp_qtoux.c new/qp_qtoux.c ---- orig/qp_qtoux.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtoux.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (unsigned long)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,7 +38,7 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" -+" fqtox %%f52, %%f60\n" - " std %%f60, [%0]\n" - " " : : "r" (&rx), "r" (a) : QP_CLOBBER); - r = rx); -diff -ur orig/qp_qtox.c new/qp_qtox.c ---- orig/qp_qtox.c Sat May 1 00:40:06 2004 -+++ libc/sysdeps/sparc/sparc64/soft-fp/qp_qtox.c Sat May 1 00:39:40 2004 -@@ -1,6 +1,6 @@ - /* Software floating-point emulation. - Return (long)(*a) -- Copyright (C) 1997,1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1999, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Richard Henderson (rth@cygnus.com) and - Jakub Jelinek (jj@ultra.linux.cz). -@@ -38,7 +38,7 @@ - __asm ( - " ldd [%1], %%f52\n" - " ldd [%1+8], %%f54\n" --" fqtoi %%f52, %%f60\n" -+" fqtox %%f52, %%f60\n" - " std %%f60, [%0]\n" - " " : : "r" (&rx), "r" (a) : QP_CLOBBER); - r = rx); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-sparc32-sysdep.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-sparc32-sysdep.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -Fixes the error - -: Assembler messages: -:2: Error: junk at end of line, first unrecognized character is `1' ... -:2: Error: Illegal operands: PC-relative operand can't be a constant -make[4]: *** [/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/io/rtld-open.os] Error 1 -make[4]: Leaving directory `/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/io' -make[3]: *** [/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/io/rtld-xstat64.os] Error 2 -make[3]: Leaving directory `/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/elf' -make[2]: *** [/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/rtld-libc.a] Error 2 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc13/build/sparc-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/glibc-2.3.2/elf' -make[1]: *** [elf/subdir_lib] Error 2 - -when building glibc-2.3.2 with gcc-3.4.0 for sparc32. - -The .s file left behind by -save-temps contains the big long line - -.text; .global __libc_open; .align 4; __libc_open:; .type __libc_open,@function;; mov 5, %g1; ta 0x10; bcs __syscall_error_handler; nop; .section .gnu.linkonce.t. 1 .get_pic.l7,"ax",@progbits; .globl 1 .get_pic.l7; .hidden 1 .get_pic.l7; .type 1 .get_pic.l7,@function; 1 .get_pic.l7: retl; add %o7, %l7, %l7; .previous; .subsection 3; __syscall_error_handler: save %sp,-96,%sp; sethi %hi(_GLOBAL_OFFSET_TABLE_-4), %l7; call 1 .get_pic.l7; add %l7, %lo(_GLOBAL_OFFSET_TABLE_+4), %l7; ld [%l7 + errno], %l0; st %i0, [%l0]; jmpl %i7+8, %g0; restore %g0, -1, %o0; .previous; - retl; nop - -The error messages appear to refer to the '1 .get_pic.17', e.g. - .globl 1 .get_pic.l7; .hidden 1 .get_pic.l7; -which seems to come from -glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h -where it appears originally as - .globl __sparc.get_pic.l7; \ - .hidden __sparc.get_pic.l7; \ - -Note that __sparc is a predefined symbol on Solaris and some other environments; -it's not surprising to see it predefined on Linux, too. - - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h.old 2004-05-15 10:23:11.000000000 -0700 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h 2004-05-15 10:24:12.000000000 -0700 -@@ -39,6 +39,11 @@ - #undef END - #undef LOC - -+/* gcc-3.4.0 seems to expand __sparc as a predefined preprocessor symbol, which we don't want here */ -+#ifdef __sparc -+#undef __sparc -+#endif -+ - #define ENTRY(name) \ - .global C_SYMBOL_NAME(name); \ - .align 4;\ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-sparc64-dl-machine.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-sparc64-dl-machine.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -See http://gcc.gnu.org/PR15345 - -Quick kludge by H.J.Lu -Works around gcc-3.4.0 error which shows up when building glibc-2.3.2 for sparc64: - -.../sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/libc.a(dl-reloc.o)(.text+0x4b4): In function `elf_machine_load_address.3': -: undefined reference to `_DYNAMIC' -collect2: ld returned 1 exit status -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/sln] Error 1 - - ---- glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h.orig Sat May 8 20:54:26 2004 -+++ glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h Sat May 8 17:18:04 2004 -@@ -65,6 +65,7 @@ - } - - /* Return the run-time load address of the shared object. */ -+#ifdef IS_IN_rtld - static inline Elf64_Addr - elf_machine_load_address (void) - { -@@ -84,6 +85,7 @@ - pc[3]*4 is l_addr + _GLOBAL_OFFSET_TABLE_ - (long)pc - 12 */ - return (Elf64_Addr) got - *got + (Elf32_Sword) ((pc[2] - pc[3]) * 4) - 4; - } -+#endif - - /* We have 4 cases to handle. And we code different code sequences - for each one. I love V9 code models... */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.2-without-fp.patch --- a/patches/glibc/2.3.3/glibc-2.3.2-without-fp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ -Sender: libc-alpha-owner@sources.redhat.com -Date: Tue, 29 Jul 2003 17:49:47 -0400 -From: Daniel Jacobowitz -To: GNU C Library -Subject: Re: __sim_exceptions undefined when linking glibc-2.3.2's libm.so with --without-fp -Message-ID: <20030729214947.GA29932@nevyn.them.org> - -On Tue, Jul 29, 2003 at 02:53:33PM -0700, Dan Kegel wrote: -> On ppc405, I'm getting the following when linking glibc's libm: -> /gcc-3.3-glibc-2.3.2/build-glibc/math/libm_pic.a(fclrexcpt.os)(.text+0x1a): -> In function `feclearexcept@GLIBC_2.1': -> : undefined reference to `__sim_exceptions' -> -> That symbol seems to be present in libc.so. nm shows - ---without-fp doesn't work. Try this. Make up a changelog entry if it -works. - -Date: Tue, 29 Jul 2003 14:56:50 -0700 -Message-Id: <200307292156.h6TLuol24356@magilla.sf.frob.com> -From: Roland McGrath -To: Daniel Jacobowitz -Cc: GNU C Library -Subject: Re: __sim_exceptions undefined when linking glibc-2.3.2's libm.so with --without-fp -In-Reply-To: Daniel Jacobowitz's message of Tuesday, 29 July 2003 17:49:47 -0400 <20030729214947.GA29932@nevyn.them.org> - -> +int __sim_exceptions __attribute__ ((section(".bss"))); - -Use __attribute__ ((nocommon)) instead (and please watch the standard -whitespace conventions, i.e. ``section (''). - -diff -purN glibc-2.3.2.orig/sysdeps/powerpc/nofpu/sim-full.c glibc-2.3.2/sysdeps/powerpc/nofpu/sim-full.c ---- glibc-2.3.2.orig/sysdeps/powerpc/nofpu/sim-full.c 2002-10-19 16:06:29.000000000 -0400 -+++ glibc-2.3.2/sysdeps/powerpc/nofpu/sim-full.c 2003-05-14 15:10:42.000000000 -0400 -@@ -24,11 +24,14 @@ - - /* Global to store sticky exceptions. */ --int __sim_exceptions; -+int __sim_exceptions __attribute__ ((nocommon)); -+libc_hidden_data_def (__sim_exceptions); - - /* By default, no exceptions should trap. */ - int __sim_disabled_exceptions = 0xffffffff; -+libc_hidden_data_def (__sim_disabled_exceptions); - --int __sim_round_mode; -+int __sim_round_mode __attribute__ ((nocommon)); -+libc_hidden_data_def (__sim_round_mode); - - void - __simulate_exceptions (int x) -diff -purN glibc-2.3.2.orig/sysdeps/powerpc/nofpu/soft-supp.h glibc-2.3.2/sysdeps/powerpc/nofpu/soft-supp.h ---- glibc-2.3.2.orig/sysdeps/powerpc/nofpu/soft-supp.h 2002-10-19 16:06:29.000000000 -0400 -+++ glibc-2.3.2/sysdeps/powerpc/nofpu/soft-supp.h 2003-05-14 15:09:53.000000000 -0400 -@@ -27,7 +27,11 @@ typedef union - } fenv_union_t; - - --extern int __sim_exceptions attribute_hidden; --extern int __sim_disabled_exceptions attribute_hidden; --extern int __sim_round_mode attribute_hidden; -+extern int __sim_exceptions; -+libc_hidden_proto (__sim_exceptions); -+extern int __sim_disabled_exceptions; -+libc_hidden_proto (__sim_disabled_exceptions); -+extern int __sim_round_mode; -+libc_hidden_proto (__sim_round_mode); -+ - extern void __simulate_exceptions (int x) attribute_hidden; -diff -urp glibc-2.3.2.orig/sysdeps/powerpc/soft-fp/sfp-machine.h glibc-2.3.2/sysdeps/powerpc/soft-fp/sfp-machine.h ---- glibc-2.3.2.orig/sysdeps/powerpc/soft-fp/sfp-machine.h 2002-10-17 18:36:14.000000000 -0400 -+++ glibc-2.3.2/sysdeps/powerpc/soft-fp/sfp-machine.h 2003-05-14 16:48:13.000000000 -0400 -@@ -52,7 +52,11 @@ - #define FP_HANDLE_EXCEPTIONS __simulate_exceptions (_fex) - #define FP_ROUNDMODE __sim_round_mode - --extern int __sim_exceptions attribute_hidden; --extern int __sim_disabled_exceptions attribute_hidden; --extern int __sim_round_mode attribute_hidden; -+extern int __sim_exceptions; -+libc_hidden_proto (__sim_exceptions); -+extern int __sim_disabled_exceptions; -+libc_hidden_proto (__sim_disabled_exceptions); -+extern int __sim_round_mode; -+libc_hidden_proto (__sim_round_mode); -+ - extern void __simulate_exceptions (int x) attribute_hidden; - - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-configure.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-configure.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -Fixes following problem building glibc-2.3.3 with gcc-4.0: - -checking version of i686-unknown-linux-gnu-gcc ... 4.0.0, bad -checking for gnumake... no -checking for gmake... gmake -checking version of gmake... 3.79.1, ok -checking for gnumsgfmt... no -checking for gmsgfmt... no -checking for msgfmt... msgfmt -checking version of msgfmt... 0.11.4, ok -checking for makeinfo... makeinfo -checking version of makeinfo... 4.3, ok -checking for sed... sed -checking version of sed... 4.0.5, ok -checking for autoconf... autoconf -checking whether autoconf works... yes -configure: error: -*** These critical programs are missing or too old: gcc - ---- glibc-2.3.3/configure.old Mon Mar 14 12:01:10 2005 -+++ glibc-2.3.3/configure Mon Mar 14 12:02:03 2005 -@@ -3899,7 +3899,7 @@ - ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version \([egcygnustpi-]*[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -- 3.[2-9]*) -+ 3.[2-9]*|4.[01]*) - ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; - *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-elf-2.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-elf-2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -Fixes - -In file included from dynamic-link.h:310, - from dl-reloc.c:265: -do-rel.h:56: error: invalid storage class for function 'elf_dynamic_do_rela' -In file included from dl-reloc.c:265: -dynamic-link.h: In function '_dl_relocate_object': -dynamic-link.h:33: error: invalid storage class for function 'elf_get_dynamic_info' - -when building glibc-2.3.3 with gcc-4.0 -2nd hunk is like http://sourceware.org/cgi-bin/cvsweb.cgi/libc/elf/dynamic-link.h.diff?r1=1.50&r2=1.51&cvsroot=glibc -but works with older compilers, too - ---- glibc-2.3.3/elf/do-rel.h.old 2005-03-16 13:09:37.000000000 -0800 -+++ glibc-2.3.3/elf/do-rel.h 2005-03-16 13:10:50.000000000 -0800 -@@ -49,7 +49,14 @@ - relocations; they should be set up to call _dl_runtime_resolve, rather - than fully resolved now. */ - --static inline void __attribute__ ((always_inline)) -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_dynamic_do_rel (struct link_map *map, - ElfW(Addr) reladdr, ElfW(Addr) relsize, - int lazy) ---- glibc-2.3.3/elf/dynamic-link.h.old 2005-03-16 13:22:35.000000000 -0800 -+++ glibc-2.3.3/elf/dynamic-link.h 2005-03-16 13:26:23.000000000 -0800 -@@ -27,8 +27,17 @@ - - - /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */ -- --static inline void __attribute__ ((unused, always_inline)) -+#if !defined(RESOLVE) || __GNUC__ < 4 -+static -+#else -+auto -+#endif -+inline void -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute__ ((unused, always_inline)) -+#else -+ __attribute__ ((unused)) -+#endif - elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp) - { - ElfW(Dyn) *dyn = l->l_ld; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-elf-3.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-elf-3.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -Fixes -In file included from ldconfig.c:136: -../sysdeps/i386/dl-procinfo.c:53: error: static declaration of '_dl_x86_cap_flags' follows non-static declaration -../sysdeps/i386/dl-procinfo.c:61: error: previous declaration of '_dl_x86_cap_flags' was here -../sysdeps/i386/dl-procinfo.c:72: error: static declaration of '_dl_x86_platforms' follows non-static declaration -../sysdeps/i386/dl-procinfo.c:77: error: previous declaration of '_dl_x86_platforms' was here -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/glibc-2.3.3/elf' -when building with gcc-4.0. - -2004-07-10 Ulrich Drepper - - * elf/ldconfig.c: Define PROCINFO_CLASS as static before including - ldsodefs.h. - * sysdeps/generic/ldsodefs.h: Only define PROCINFO_CLASS if it is not - already defined. - * sysdeps/i386/dl-procinfo.c: Define PROCINFO_CALLS only if not - already defined. - -See -http://sources.redhat.com/ml/glibc-cvs/2004-q3/msg00093.html -http://sources.redhat.com/ml/glibc-cvs/2004-q3/msg00097.html -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/dl-procinfo.c.diff?cvsroot=glibc&r1=1.1&r2=1.2 - -rediffed against glibc-2.3.3 - -diff -ur glibc-2.3.3.orig/elf/ldconfig.c glibc-2.3.3/elf/ldconfig.c ---- glibc-2.3.3.orig/elf/ldconfig.c Tue Aug 26 01:07:19 2003 -+++ glibc-2.3.3/elf/ldconfig.c Sat Mar 19 12:02:08 2005 -@@ -17,6 +17,7 @@ - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -+#define PROCINFO_CLASS static - #include - #include - #include -diff -ur glibc-2.3.3.orig/sysdeps/generic/ldsodefs.h glibc-2.3.3/sysdeps/generic/ldsodefs.h ---- glibc-2.3.3.orig/sysdeps/generic/ldsodefs.h Mon Nov 24 14:56:07 2003 -+++ glibc-2.3.3/sysdeps/generic/ldsodefs.h Sat Mar 19 12:02:08 2005 -@@ -348,7 +348,9 @@ - - /* Get architecture specific definitions. */ - #define PROCINFO_DECL --#define PROCINFO_CLASS EXTERN -+#ifndef PROCINFO_CLASS -+# define PROCINFO_CLASS EXTERN -+#endif - #include - - /* Structure describing the dynamic linker itself. */ -Only in glibc-2.3.3/sysdeps/generic: ldsodefs.h~ -diff -ur glibc-2.3.3.orig/sysdeps/i386/dl-procinfo.c glibc-2.3.3/sysdeps/i386/dl-procinfo.c ---- glibc-2.3.3.orig/sysdeps/i386/dl-procinfo.c Wed Sep 24 20:54:54 2003 -+++ glibc-2.3.3/sysdeps/i386/dl-procinfo.c Sat Mar 19 12:02:08 2005 -@@ -1,5 +1,5 @@ - /* Data for i386 version of processor capability information. -- Copyright (C) 2001,2002,2003 Free Software Foundation, Inc. -+ Copyright (C) 2001,2002,2003, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2001. - -@@ -24,7 +24,7 @@ - If anything should be added here check whether the size of each string - is still ok with the given array size. - -- All the #ifdefs in the definitions ar equite irritating but -+ All the #ifdefs in the definitions are quite irritating but - necessary if we want to avoid duplicating the information. There - are three different modes: - -@@ -41,7 +41,7 @@ - */ - - #ifndef PROCINFO_CLASS --#define PROCINFO_CLASS -+# define PROCINFO_CLASS - #endif - - #if !defined PROCINFO_DECL && defined SHARED diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-i386.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-i386.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -Fixes - -In file included from dynamic-link.h:22, - from dl-reloc.c:265: -../sysdeps/i386/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/i386/dl-machine.h:395: error: invalid storage class for function 'elf_machine_rel' -../sysdeps/i386/dl-machine.h:539: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/i386/dl-machine.h:640: error: invalid storage class for function 'elf_machine_rel_relative' -../sysdeps/i386/dl-machine.h:650: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/i386/dl-machine.h:659: error: invalid storage class for function 'elf_machine_lazy_rel' -../sysdeps/i386/dl-machine.h:680: error: invalid storage class for function 'elf_machine_lazy_rela' -make[2]: *** [/home/dank/queue/jobdir.dual2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/build-glibc/elf/dl-reloc.o] Error 1 - ---- glibc-2.3.3/sysdeps/i386/dl-machine.h.old Wed Mar 16 22:24:09 2005 -+++ glibc-2.3.3/sysdeps/i386/dl-machine.h Thu Mar 17 01:30:09 2005 -@@ -385,7 +385,14 @@ - /* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -529,7 +536,14 @@ - } - - #ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -631,7 +645,14 @@ - } - #endif /* !RTLD_BOOTSTRAP */ - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, - void *const reloc_addr_arg) - { -@@ -641,7 +662,14 @@ - } - - #ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -650,7 +678,14 @@ - } - #endif /* !RTLD_BOOTSTRAP */ - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rel *reloc) - { -@@ -671,7 +706,14 @@ - - #ifndef RTLD_BOOTSTRAP - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rela (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconv.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconv.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -Fixes -iconvconfig.c: In function 'write_output': -iconvconfig.c:1014: error: invalid storage class for function 'name_insert' -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/x86_64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/glibc-2.3.3/iconv' - -Like http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/iconv/iconvconfig.c.diff?r1=1.19&r2=1.20&cvsroot=glibc -but works with older compilers - ---- glibc-2.3.3/iconv/iconvconfig.c.old Thu Mar 17 01:23:04 2005 -+++ glibc-2.3.3/iconv/iconvconfig.c Thu Mar 17 01:24:56 2005 -@@ -1010,7 +1010,12 @@ - char finalname[prefix_len + sizeof (GCONV_MODULES_CACHE)]; - - /* Function to insert the names. */ -- static void name_insert (const void *nodep, VISIT value, int level) -+#if __GNUC__ >= 4 -+ auto void -+#else -+ static void -+#endif -+ name_insert (const void *nodep, VISIT value, int level) - { - struct name *name; - unsigned int idx; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconvdata-2.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconvdata-2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -To: Glibc hackers -Subject: iconvdata: Get rid of lvalue casts -From: Andreas Jaeger -Date: Sun, 07 Mar 2004 08:29:47 +0100 -Message-ID: - -Here's one more patch to get rid of lvalues to make GCC 3.5 happy. It -generates the same code as before on my machine and passes the -testsuite. - -Ok to commit? - -Andreas - -2004-03-07 Andreas Jaeger - - * iconvdata/iso-2022-cn-ext.c (BODY): Remove cast used as lvalue. - * iconvdata/tcvn5712-1.c (EMIT_SHIFT_TO_INIT): Likewise. - * iconvdata/euc-jisx0213.c (EMIT_SHIFT_TO_INIT): Likewise. - * iconvdata/shift_jisx0213.c (EMIT_SHIFT_TO_INIT): Likewise. - * iconvdata/tscii.c (EMIT_SHIFT_TO_INIT): Likewise. - -[rediffed to make crosstool happy] - -diff -ur glibc-2.3.3.orig/iconvdata/euc-jisx0213.c glibc-2.3.3.new/iconvdata/euc-jisx0213.c ---- glibc-2.3.3.orig/iconvdata/euc-jisx0213.c Mon Dec 2 14:07:54 2002 -+++ glibc-2.3.3.new/iconvdata/euc-jisx0213.c Fri Mar 18 09:29:22 2005 -@@ -1,5 +1,5 @@ - /* Conversion from and to EUC-JISX0213. -- Copyright (C) 2002 Free Software Foundation, Inc. -+ Copyright (C) 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible , 2002. - -@@ -83,7 +83,8 @@ - if (__builtin_expect (outbuf + 4 <= outend, 1)) \ - { \ - /* Write out the last character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ -+ outbuf += sizeof (uint32_t); \ - data->__statep->__count = 0; \ - } \ - else \ -diff -ur glibc-2.3.3.orig/iconvdata/iso-2022-cn-ext.c glibc-2.3.3.new/iconvdata/iso-2022-cn-ext.c ---- glibc-2.3.3.orig/iconvdata/iso-2022-cn-ext.c Fri Jun 28 14:13:14 2002 -+++ glibc-2.3.3.new/iconvdata/iso-2022-cn-ext.c Fri Mar 18 09:29:22 2005 -@@ -1,5 +1,5 @@ - /* Conversion module for ISO-2022-CN-EXT. -- Copyright (C) 2000-2002 Free Software Foundation, Inc. -+ Copyright (C) 2000-2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2000. - -@@ -377,7 +377,8 @@ - } \ - } \ - \ -- *((uint32_t *) outptr)++ = ch; \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ - } - #define EXTRA_LOOP_DECLS , int *setp - #define INIT_PARAMS int set = (*setp >> 3) & CURRENT_MASK; \ -diff -ur glibc-2.3.3.orig/iconvdata/shift_jisx0213.c glibc-2.3.3.new/iconvdata/shift_jisx0213.c ---- glibc-2.3.3.orig/iconvdata/shift_jisx0213.c Mon Dec 2 14:07:56 2002 -+++ glibc-2.3.3.new/iconvdata/shift_jisx0213.c Fri Mar 18 09:29:22 2005 -@@ -1,5 +1,5 @@ - /* Conversion from and to Shift_JISX0213. -- Copyright (C) 2002 Free Software Foundation, Inc. -+ Copyright (C) 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible , 2002. - -@@ -83,7 +83,8 @@ - if (__builtin_expect (outbuf + 4 <= outend, 1)) \ - { \ - /* Write out the last character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ -+ outbuf += sizeof (uint32_t); \ - data->__statep->__count = 0; \ - } \ - else \ -diff -ur glibc-2.3.3.orig/iconvdata/tcvn5712-1.c glibc-2.3.3.new/iconvdata/tcvn5712-1.c ---- glibc-2.3.3.orig/iconvdata/tcvn5712-1.c Mon Dec 2 14:07:52 2002 -+++ glibc-2.3.3.new/iconvdata/tcvn5712-1.c Fri Mar 18 09:29:22 2005 -@@ -1,5 +1,5 @@ - /* Conversion to and from TCVN5712-1. -- Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+ Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper , 2001. - -@@ -68,7 +68,8 @@ - if (__builtin_expect (outbuf + 4 <= outend, 1)) \ - { \ - /* Write out the last character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ -+ outbuf += sizeof (uint32_t); \ - data->__statep->__count = 0; \ - } \ - else \ -diff -ur glibc-2.3.3.orig/iconvdata/tscii.c glibc-2.3.3.new/iconvdata/tscii.c ---- glibc-2.3.3.orig/iconvdata/tscii.c Mon Sep 23 20:39:45 2002 -+++ glibc-2.3.3.new/iconvdata/tscii.c Fri Mar 18 09:29:22 2005 -@@ -1,5 +1,5 @@ - /* Conversion from and to TSCII. -- Copyright (C) 2002 Free Software Foundation, Inc. -+ Copyright (C) 2002, 2004 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Bruno Haible , 2002. - -@@ -98,7 +98,8 @@ - break; \ - } \ - /* Write out the pending character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 8; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 8; \ -+ outbuf += sizeof (uint32_t); \ - /* Retrieve the successor state. */ \ - data->__statep->__count = \ - tscii_next_state[(data->__statep->__count >> 4) & 0x0f]; \ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconvdata.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-iconvdata.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ -Fixes - -In file included from jis0208.c:23: -jis0208.h:32: error: array type has incomplete element type -when building with gcc-4.0 - -In file included from cp1258.c:869: -../iconv/skeleton.c: In function 'gconv': -../iconv/skeleton.c:323: error: invalid lvalue in increment - -In file included from cp1255.c:550: -../iconv/skeleton.c: In function 'gconv': -../iconv/skeleton.c:323: error: invalid lvalue in increment - -In file included from gb18030.c:22114: -../iconv/loop.c: In function 'from_gb18030': -../iconv/loop.c:282: error: invalid lvalue in increment -../iconv/loop.c: In function 'from_gb18030_single': -../iconv/loop.c:384: error: invalid lvalue in increment - -In file included from iso8859-1.c:43: -../iconv/loop.c: In function 'from_iso8859_1': -../iconv/loop.c:311: error: invalid lvalue in increment - -Rediffed, updated for glibc-2.3.3, added: - -In file included from armscii-8.c:85: -../iconv/loop.c: In function 'from_armscii_8': -../iconv/loop.c:311: error: invalid lvalue in increment -../iconv/loop.c:311: error: invalid lvalue in increment - ---- glibc-2.3.3.orig/iconvdata/armscii-8.c Mon Dec 2 14:07:52 2002 -+++ glibc-2.3.3/iconvdata/armscii-8.c Thu Mar 17 16:01:23 2005 -@@ -57,11 +57,17 @@ - uint_fast8_t ch = *inptr; \ - \ - if (ch <= 0xa0) \ -- /* Upto and including 0xa0 the ARMSCII-8 corresponds to Unicode. */ \ -- *((uint32_t *) outptr)++ = ch; \ -+ { \ -+ /* Upto and including 0xa0 the ARMSCII-8 corresponds to Unicode. */ \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ -+ } \ - else if (ch >= 0xa2 && ch <= 0xfe) \ -- /* Use the table. */ \ -- *((uint32_t *) outptr)++ = map_from_armscii_8[ch - 0xa2]; \ -+ { \ -+ /* Use the table. */ \ -+ *((uint32_t *) outptr) = map_from_armscii_8[ch - 0xa2]; \ -+ outptr += sizeof (uint32_t); \ -+ } \ - else \ - { \ - /* This is an illegal character. */ \ -diff -ur glibc-2.3.3.orig/iconvdata/cp1255.c glibc-2.3.3/iconvdata/cp1255.c ---- glibc-2.3.3.orig/iconvdata/cp1255.c Mon Dec 2 14:07:52 2002 -+++ glibc-2.3.3/iconvdata/cp1255.c Thu Mar 17 08:20:13 2005 -@@ -69,7 +69,8 @@ - if (__builtin_expect (outbuf + 4 <= outend, 1)) \ - { \ - /* Write out the last character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ -+ outbuf += sizeof (uint32_t); \ - data->__statep->__count = 0; \ - } \ - else \ -diff -ur glibc-2.3.3.orig/iconvdata/cp1258.c glibc-2.3.3/iconvdata/cp1258.c ---- glibc-2.3.3.orig/iconvdata/cp1258.c Mon Dec 2 14:07:52 2002 -+++ glibc-2.3.3/iconvdata/cp1258.c Thu Mar 17 08:20:13 2005 -@@ -70,7 +70,8 @@ - if (__builtin_expect (outbuf + 4 <= outend, 1)) \ - { \ - /* Write out the last character. */ \ -- *((uint32_t *) outbuf)++ = data->__statep->__count >> 3; \ -+ *((uint32_t *) outbuf) = data->__statep->__count >> 3; \ -+ outbuf += sizeof (uint32_t); \ - data->__statep->__count = 0; \ - } \ - else \ -diff -ur glibc-2.3.3.orig/iconvdata/gb18030.c glibc-2.3.3/iconvdata/gb18030.c ---- glibc-2.3.3.orig/iconvdata/gb18030.c Mon Dec 2 14:07:54 2002 -+++ glibc-2.3.3/iconvdata/gb18030.c Thu Mar 17 08:20:13 2005 -@@ -25769,7 +25769,8 @@ - } \ - } \ - \ -- *((uint32_t *) outptr)++ = ch; \ -+ *((uint32_t *) outptr) = ch; \ -+ outptr += sizeof (uint32_t); \ - } - #define LOOP_NEED_FLAGS - #define ONEBYTE_BODY \ -diff -ur glibc-2.3.3.orig/iconvdata/iso8859-1.c glibc-2.3.3/iconvdata/iso8859-1.c ---- glibc-2.3.3.orig/iconvdata/iso8859-1.c Mon Dec 2 14:07:56 2002 -+++ glibc-2.3.3/iconvdata/iso8859-1.c Thu Mar 17 08:20:47 2005 -@@ -35,7 +35,8 @@ - #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO - #define LOOPFCT FROM_LOOP - #define BODY \ -- *((uint32_t *) outptr)++ = *inptr++; -+ *((uint32_t *) outptr) = *inptr++; \ -+ outptr += sizeof (uint32_t); - #define ONEBYTE_BODY \ - { \ - return c; \ -diff -ur glibc-2.3.3.orig/iconvdata/jis0208.h glibc-2.3.3/iconvdata/jis0208.h ---- glibc-2.3.3.orig/iconvdata/jis0208.h Wed Jun 11 14:40:42 2003 -+++ glibc-2.3.3/iconvdata/jis0208.h Thu Mar 17 08:20:13 2005 -@@ -24,15 +24,6 @@ - #include - #include - --/* Conversion table. */ --extern const uint16_t __jis0208_to_ucs[]; -- --extern const char __jisx0208_from_ucs4_lat1[256][2]; --extern const char __jisx0208_from_ucs4_greek[0xc1][2]; --extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; --extern const char __jisx0208_from_ucs_tab[][2]; -- -- - /* Struct for table with indeces in UCS mapping table. */ - struct jisx0208_ucs_idx - { -@@ -40,6 +31,15 @@ - uint16_t end; - uint16_t idx; - }; -+ -+ -+/* Conversion table. */ -+extern const uint16_t __jis0208_to_ucs[]; -+ -+extern const char __jisx0208_from_ucs4_lat1[256][2]; -+extern const char __jisx0208_from_ucs4_greek[0xc1][2]; -+extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; -+extern const char __jisx0208_from_ucs_tab[][2]; - - - static inline uint32_t diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-locale.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-locale.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ ---- glibc-2.3.3/locale/weight.h.old 2003-06-11 14:52:12.000000000 -0700 -+++ glibc-2.3.3/locale/weight.h 2005-03-15 12:05:37.000000000 -0800 -@@ -18,8 +18,14 @@ - 02111-1307 USA. */ - - /* Find index of weight. */ -+#if __GNUC__ >= 4 -+auto inline int32_t -+#else - static inline int32_t -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) - __attribute ((always_inline)) -+#endif - findidx (const unsigned char **cpp) - { - int_fast32_t i = table[*(*cpp)++]; ---- glibc-2.3.3/locale/weightwc.h.old 2003-06-13 13:44:58.000000000 -0700 -+++ glibc-2.3.3/locale/weightwc.h 2005-03-15 12:06:46.000000000 -0800 -@@ -18,8 +18,14 @@ - 02111-1307 USA. */ - - /* Find index of weight. */ -+#if __GNUC__ >= 4 -+auto inline int32_t -+#else - static inline int32_t -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) - __attribute ((always_inline)) -+#endif - findidx (const wint_t **cpp) - { - int32_t i; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-posix.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-posix.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -Fixes errors - -regcomp.c: In function 'parse_bracket_exp': -regcomp.c:2724: error: invalid storage class for function 'seek_collating_symbol_entry' -regcomp.c:2757: error: invalid storage class for function 'lookup_collation_sequence_value' -regcomp.c:2826: error: invalid storage class for function 'build_range_exp' -regcomp.c:2913: error: invalid storage class for function 'build_collating_symbol' -... -make[2]: *** [/home/dank/queue/jobdir.fast/crosstool-dev/build/x86_64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/build-glibc/posix/regex.o] Error 1 - -See also http://sources.redhat.com/ml/glibc-cvs/2004-q3/msg01071.html -That fix requires gcc-4.0, but the fix proposed here works with older compilers, too - ---- glibc-2.3.3/posix/regcomp.c.old 2005-03-16 11:40:55.000000000 -0800 -+++ glibc-2.3.3/posix/regcomp.c 2005-03-16 11:50:31.000000000 -0800 -@@ -2718,8 +2718,14 @@ - Seek the collating symbol entry correspondings to NAME. - Return the index of the symbol in the SYMB_TABLE. */ - -+#if __GNUC__ >= 4 -+ auto inline int32_t -+#else - static inline int32_t -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) - __attribute ((always_inline)) -+#endif - seek_collating_symbol_entry (name, name_len) - const unsigned char *name; - size_t name_len; -@@ -2751,8 +2757,14 @@ - Look up the collation sequence value of BR_ELEM. - Return the value if succeeded, UINT_MAX otherwise. */ - -+#if __GNUC__ >= 4 -+ auto inline unsigned int -+#else - static inline unsigned int -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) - __attribute ((always_inline)) -+#endif - lookup_collation_sequence_value (br_elem) - bracket_elem_t *br_elem; - { -@@ -2819,8 +2831,14 @@ - mbcset->range_ends, is a pointer argument sinse we may - update it. */ - -- static inline reg_errcode_t -+#if __GNUC__ >= 4 -+ auto inline reg_errcode_t -+#else -+ static inline reg_errcode_t -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) - __attribute ((always_inline)) -+#endif - # ifdef RE_ENABLE_I18N - build_range_exp (sbcset, mbcset, range_alloc, start_elem, end_elem) - re_charset_t *mbcset; -@@ -2906,8 +2924,14 @@ - COLL_SYM_ALLOC is the allocated size of mbcset->coll_sym, is a - pointer argument sinse we may update it. */ - -- static inline reg_errcode_t -+#if __GNUC__ >= 4 -+ auto inline reg_errcode_t -+#else -+ static inline reg_errcode_t -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) - __attribute ((always_inline)) -+#endif - # ifdef RE_ENABLE_I18N - build_collating_symbol (sbcset, mbcset, coll_sym_alloc, name) - re_charset_t *mbcset; diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-powerpc-procfs.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-powerpc-procfs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -(Combined with earlier fix old/glibc-2.3.2-powerpc-procfs.patch -from http://sources.redhat.com/ml/libc-alpha/2003-12/msg00101.html) - -This fix discussed here: -http://gcc.gnu.org/ml/gcc/2005-01/msg00509.html - -Revision 1.12, Wed Mar 2 20:11:38 2005 UTC by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050303T1335, HEAD -Changes since 1.11: +3 -8 lines -Diff to previous 1.11 (colored) - -2005-02-21 Alan Modra - - * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h (elf_vrreg_t): Don't - use __uint128_t. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h?cvsroot=glibc -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h.diff?r1=1.11&r2=1.12&cvsroot=glibc - -Fixes - -In file included from ../linuxthreads_db/proc_service.h:20, - from ../linuxthreads_db/thread_dbP.h:7, - from ../linuxthreads/descr.h:44, - from ../linuxthreads/internals.h:30, - from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, - from ../sysdeps/generic/ldsodefs.h:38, - from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, - from :2: -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: error: syntax error before 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: type defaults to 'int' in declaration of 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: data definition has no type or storage class -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: error: syntax error before 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: type defaults to 'int' in declaration of 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: data definition has no type or storage class -make[2]: make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/csu' - -Rediffed against glibc-2.3.3 - ---- glibc-2.3.3.orig/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h Sun Jan 12 00:24:23 2003 -+++ glibc-2.3.3.new/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h Fri Mar 18 11:20:58 2005 -@@ -45,18 +45,13 @@ - - typedef double elf_fpreg_t; - typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; --#endif -- --/* gcc 3.1 and newer support __uint128_t. */ --#if !__GNUC_PREREQ(3,1) --typedef struct { -- unsigned long u[4]; --} __attribute((aligned(16))) __uint128_t; --#endif - - /* Altivec registers */ --typedef __uint128_t elf_vrreg_t; -+typedef struct { -+ unsigned int u[4]; -+} __attribute__ ((aligned (16))) elf_vrreg_t; - typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; -+#endif - - struct elf_siginfo - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-x86_64.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-allow-gcc-4.0-x86_64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -Fixes - -In file included from dynamic-link.h:22, - from dl-reloc.c:265: -../sysdeps/x86_64/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/x86_64/dl-machine.h:361: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/x86_64/dl-machine.h:525: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/x86_64/dl-machine.h:534: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: *** [/home/dank/queue/jobdir.fast/crosstool-dev/build/x86_64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/build-glibc/elf/dl-reloc.o] Error 1 - ---- glibc-2.3.3/sysdeps/x86_64/dl-machine.h.old Wed Mar 16 16:19:15 2005 -+++ glibc-2.3.3/sysdeps/x86_64/dl-machine.h Wed Mar 16 16:22:09 2005 -@@ -354,7 +354,14 @@ - /* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc, - const Elf64_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -519,7 +526,14 @@ - } - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -528,7 +542,14 @@ - *reloc_addr = l_addr + reloc->r_addend; - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf64_Addr l_addr, const Elf64_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-alpha-pwrite64.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-alpha-pwrite64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ -Fix for this error: - -crosstool-0.32/build/alpha-unknown-linux-gnu/gcc-3.3.5-glibc-2.3.3/build-glibc/libc_pic.os(.text+0xc8bd0): In function `__posix_fallocate64_l64': -: undefined reference to `__GI___pwrite64' -collect2: ld returned 1 exit status -make[1]: *** [crosstool-0.32/build/alpha-unknown-linux-gnu/gcc-3.3.5-glibc-2.3.3/build-glibc/libc.so] Error 1 -make[1]: Leaving directory `crosstool-0.32/build/alpha-unknown-linux-gnu/gcc-3.3.5-glibc-2.3.3/glibc-2.3.3' -make: *** [all] Error 2 - -extracted from GLIBC CVS by Dan Kegel -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/alpha/sysdep.h.diff?r1=1.16&r2=1.17&cvsroot=glibc' - -cf. -http://sources.redhat.com/ml/libc-alpha/2003-10/msg00038.html - - ---- glibc-2.3.3/sysdeps/unix/sysv/linux/alpha/sysdep.h.old 2003-06-20 09:24:36.000000000 -0700 -+++ glibc-2.3.3/sysdeps/unix/sysv/linux/alpha/sysdep.h 2005-04-27 11:23:46.000000000 -0700 -@@ -1,4 +1,4 @@ --/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003 -+/* Copyright (C) 1992, 1993, 1995, 1996, 1997, 2002, 2003, 2004 - Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper, , August 1995. -@@ -65,6 +65,16 @@ - # define __NR_semtimedop 423 - #endif - -+/* This is a kludge to make syscalls.list find these under the names -+ pread and pwrite, since some kernel headers define those names -+ and some define the *64 names for the same system calls. */ -+#if !defined __NR_pread && defined __NR_pread64 -+# define __NR_pread __NR_pread64 -+#endif -+#if !defined __NR_pwrite && defined __NR_pwrite64 -+# define __NR_pwrite __NR_pwrite64 -+#endif -+ - /* - * In order to get the hidden arguments for rt_sigaction set up - * properly, we need to call the assembly version. This shouldn't diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-cygwin.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.3.3 on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - -glibc-linuxthreads-2.3.3 also requires a patch, see -../glibc-linuxthreads-2.3.3/glibc-linuxthreads-2.3.3-cygwin.patch - -[ Rediffed against glibc-2.3.3 ] - - -diff -aur glibc-2.3.3/Makeconfig glibc-2.3.3-cygwin/Makeconfig ---- glibc-2.3.3/Makeconfig 2003-09-17 01:36:10.000000000 -0700 -+++ glibc-2.3.3-cygwin/Makeconfig 2004-08-27 20:34:43.000000000 -0700 -@@ -439,13 +439,13 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # This is how to find at build-time things that will be installed there. - rpath-dirs = math elf dlfcn nss nis rt resolv crypt - else - ifneq (,$(filter aix aix%,$(config-os))) - link-libc = $(common-objpfx)libc.a \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - rpath-dirs = math dlfcn nss nis rt resolv crypt - endif - endif -@@ -658,7 +658,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -714,14 +714,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 -+libtype.oST = lib%_nonshared.a - endif - - # The assembler can generate debug information too. -diff -aur glibc-2.3.3/Makerules glibc-2.3.3-cygwin/Makerules ---- glibc-2.3.3/Makerules 2003-10-31 16:35:57.000000000 -0800 -+++ glibc-2.3.3-cygwin/Makerules 2004-08-27 20:33:47.000000000 -0700 -@@ -414,7 +414,7 @@ - # Bounded pointer thunks are only built for *.ob - elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) \ - $(elide-bp-thunks) - elide-routines.os += $(static-only-routines) $(elide-bp-thunks) -@@ -934,7 +934,7 @@ - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -942,7 +942,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ -diff -aur glibc-2.3.3/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.3-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile ---- glibc-2.3.3/sysdeps/sparc/sparc32/sparcv9/Makefile 2002-08-29 03:41:15.000000000 -0700 -+++ glibc-2.3.3-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-27 20:35:43.000000000 -0700 -@@ -10,4 +10,4 @@ - ASFLAGS-.op += -Wa,-Av9a - ASFLAGS-.og += -Wa,-Av9a - ASFLAGS-.ob += -Wa,-Av9a --ASFLAGS-.oS += -Wa,-Av9a -+ASFLAGS-.oST += -Wa,-Av9a diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-libeh-kludge.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-libeh-kludge.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ -wget "http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2003-09&msgid=20030911190500.GE12344%40sunsite.ms.mff.cuni.cz" -aka http://sources.redhat.com/ml/libc-alpha/2003-09/msg00104.html - -This seems to fix the error - gcc-3.4.1-glibc-2.3.3/lib/gcc/powerpc-7400-linux-gnu/3.4.1/../../../../powerpc-7400-linux-gnu/bin/ld: cannot find -lgcc_eh - make[1]: *** [build/powerpc-7400-linux-gnu/gcc-3.4.1-glibc-2.3.3/build-glibc/libc.so] Error 1 -but I assume it might cause trouble with nptl -FIXME: once we figure out why this patch is wrong, fix it right :-) - -Date: Thu, 11 Sep 2003 21:05:00 +0200 -From: Jakub Jelinek -To: libc-alpha at sources dot redhat dot com -Subject: Re: Another ugly bootstrapping patch for libgcc_eh -Message-ID: <20030911190500.GE12344@sunsite.ms.mff.cuni.cz> -Reply-To: Jakub Jelinek -References: <20030911194944.GA6104@nevyn.them.org> <20030911180703.GD12344@sunsite.ms.mff.cuni.cz> <20030911203621.GA31503@nevyn.them.org> -In-Reply-To: <20030911203621 dot GA31503 at nevyn dot them dot org> - -On Thu, Sep 11, 2003 at 04:36:21PM -0400, Daniel Jacobowitz wrote: -> > Why exactly do you need that? -> > What exact library needs the functions from libgcc_eh.a? -> > There shouldn't be any these days (__register_*/__frame_state_for etc. -> > functions should come from sysdeps/generic on arches which need them, -> > _Unwind_* come from unwind*.c). -> > IMHO both: -> > -> > # Force the backward compatibility EH functions to be linked. -> > LDFLAGS-c.so += -u __register_frame -> > -> > in Makerules and -lgcc_eh in Makeconfig should go. -> -> If you say so. That -lgcc_eh's been in and out quite a number of -> times. I was just assuming that it was necessary. - -I have been testing following patch on hammer. -linuxthreads built just fine and NPTL libraries too, -and in both cases libraries had the same exported symbols as without -the patch (though its .text slightly shrunk because it no longer contained -unneeded libgcc_eh routines (and also libc.so has fewer .plt slots). -Unfortunately, sln in NPTL build doesn't link, as libgcc_eh.a is needed -in this case. -So, IMHO we need my Makerules change and Daniel's patch. - -2003-09-11 Jakub Jelinek - - #* Makerules (LDFLAGS-c.so): Remove -u __register_frame. - * Makeconfig (gnulib): Remove -lgcc_eh. - -# Ulrich already applied this. -#--- libc/Makerules.jj 2003-07-23 03:56:16.000000000 -0400 -#+++ libc/Makerules 2003-09-11 16:22:44.000000000 -0400 -#@@ -572,8 +572,6 @@ LDFLAGS-c.so = -nostdlib -nostartfiles -# LDLIBS-c.so += $(gnulib) -# # Give libc.so an entry point and make it directly runnable itself. -# LDFLAGS-c.so += -e __libc_main -#-# Force the backward compatibility EH functions to be linked. -#-LDFLAGS-c.so += -u __register_frame -# # Pre-link the objects of libc_pic.a so that we can locally resolve -# # COMMON symbols before we link against ld.so. This is because ld.so -# # contains some of libc_pic.a already, which will prevent the COMMONs ---- libc/Makeconfig.jj 2003-07-22 08:25:32.000000000 -0400 -+++ libc/Makeconfig 2003-09-11 16:23:08.000000000 -0400 -@@ -505,7 +505,7 @@ link-libc-bounded = $(common-objpfx)libc - link-extra-libs-bounded = $(foreach lib,$(LDLIBS-$(@F:%-bp=%)),$(common-objpfx)$(lib)_b.a) - - ifndef gnulib --gnulib := -lgcc -lgcc_eh -+gnulib := -lgcc - endif - ifeq ($(elf),yes) - +preinit = $(addprefix $(csu-objpfx),crti.o) - - - Jakub - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-s390-fadvise64.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-s390-fadvise64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,128 +0,0 @@ -See http://sources.redhat.com/ml/libc-hacker/2003-12/msg00023.html -or http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c?cvsroot=glibc - -Should fix error - -../sysdeps/unix/sysv/linux/posix_fadvise64.c: In function `__posix_fadvise64_l64': -../sysdeps/unix/sysv/linux/posix_fadvise64.c:35: warning: implicit declaration of function `DECLARGS_6' -../sysdeps/unix/sysv/linux/posix_fadvise64.c:35: error: parse error before "register" -... -../sysdeps/unix/sysv/linux/posix_fadvise64.c:35: error: parse error before "ASMFMT_6" -make[2]: *** [crosstool-0.28-rc34/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-2.3.3/build-glibc/io/posix_fadvise64.o] Error 1 - - -From: Martin Schwidefsky -Organization: IBM Deutschland GmbH -To: libc-hacker at sources dot redhat dot com -Subject: fadvise64_64 for s390-32. -Date: Fri, 5 Dec 2003 18:46:33 +0100 - -Hi, -on s390* system calls can have up to 5 paramters. The generic linux -implemenation of fadvise64_64 for 32 bit systems needs 6 parameters, -so we need to have a s390-32 special version of posix_fadvise64.c. -For s390-64 we do not have the problem because there fadvise64_64 -has only 4 parameters. - -blue skies, - Martin. - -2003-12-05 Martin Schwidefsky - - * sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c: New file. - -diff -urN libc/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c ---- libc/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c 1970-01-01 01:00:00.000000000 +0100 -+++ libc-s390/sysdeps/unix/sysv/linux/s390/s390-32/posix_fadvise64.c 2003-11-13 15:31:40.000000000 +0100 -@@ -0,0 +1,90 @@ -+/* Copyright (C) 2003 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C 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 -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#include -+#include -+#include -+#include -+ -+int __posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise); -+int __posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise); -+ -+/* Advice the system about the expected behaviour of the application with -+ respect to the file associated with FD. */ -+ -+struct fadvise64_64_layout -+{ -+ int fd; -+ off64_t offset; -+ off64_t len; -+ int advise; -+}; -+ -+int -+__posix_fadvise64_l64 (int fd, off64_t offset, off64_t len, int advise) -+{ -+#ifdef __NR_fadvise64_64 -+ struct fadvise64_64_layout parameters; -+ INTERNAL_SYSCALL_DECL (err); -+ -+ parameters.fd = fd; -+ parameters.offset = offset; -+ parameters.len = len; -+ parameters.advise = advise; -+ int ret = INTERNAL_SYSCALL (fadvise64_64, err, 1, ¶meters); -+ if (!INTERNAL_SYSCALL_ERROR_P (ret, err)) -+ return 0; -+# ifndef __ASSUME_FADVISE64_64_SYSCALL -+ if (INTERNAL_SYSCALL_ERRNO (ret, err) != ENOSYS) -+# endif -+ return INTERNAL_SYSCALL_ERRNO (ret, err); -+#endif -+#ifndef __ASSUME_FADVISE64_64_SYSCALL -+# ifdef __NR_fadvise64 -+ if (len != (off_t) len) -+ return EOVERFLOW; -+ -+ INTERNAL_SYSCALL_DECL (err2); -+ int ret2 = INTERNAL_SYSCALL (fadvise64, err2, 5, fd, -+ __LONG_LONG_PAIR ((long) (offset >> 32), -+ (long) offset), -+ (off_t) len, advise); -+ if (!INTERNAL_SYSCALL_ERROR_P (ret2, err2)) -+ return 0; -+ return INTERNAL_SYSCALL_ERRNO (ret2, err2); -+# else -+ return ENOSYS; -+# endif -+#endif -+} -+ -+#include -+ -+#if SHLIB_COMPAT(libc, GLIBC_2_2, GLIBC_2_3_3) -+ -+int -+__posix_fadvise64_l32 (int fd, off64_t offset, size_t len, int advise) -+{ -+ return __posix_fadvise64_l64 (fd, offset, len, advise); -+} -+ -+versioned_symbol (libc, __posix_fadvise64_l64, posix_fadvise64, GLIBC_2_3_3); -+compat_symbol (libc, __posix_fadvise64_l32, posix_fadvise64, GLIBC_2_2); -+#else -+strong_alias (__posix_fadvise64_l64, posix_fadvise64); -+#endif - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.3-unwind-dw2.patch --- a/patches/glibc/2.3.3/glibc-2.3.3-unwind-dw2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -See http://sources.redhat.com/ml/libc-alpha/2004-02/msg00138.html -aka http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2004-02&msgid=20040220044155.GE22135%40baldric.uwo.ca - -In CVS as -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/generic/unwind-dw2.c.diff?r1=1.7&r2=1.8&cvsroot=glibc' - -Revision 1.8, Sat Feb 21 09:07:29 2004 UTC (5 months, 3 weeks ago) by drepper - - Allow sjlj enabled compilers to build the code by removing - __USING_SJLJ_EXCEPTIONS__ wrapper. - -plus -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/generic/framestate.c.diff?r1=1.3&r2=1.4&cvsroot=glibc' - -Revision 1.4, Sat Feb 21 09:07:05 2004 UTC (5 months, 3 weeks ago) by drepper - - [__USING_SJLJ_EXCEPTIONS__] (__frame_state_for): Set frame_State_for - to abort if the compiler is using sjlj. - -Fixes compile error - -../sysdeps/generic/framestate.c: In function `__frame_state_for': -../sysdeps/generic/framestate.c:44: error: `fallback_frame_state_for' undeclared (first use in this function) -../sysdeps/generic/framestate.c:44: error: (Each undeclared identifier is reported only once -../sysdeps/generic/framestate.c:44: error: for each function it appears in.) -make[2]: *** [crosstool-0.28-rc34/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-2.3.3/build-glibc/elf/framestate.os] Error 1 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/generic/unwind-dw2.c,v -retrieving revision 1.7 -retrieving revision 1.8 -diff -u -r1.7 -r1.8 ---- libc/sysdeps/generic/unwind-dw2.c 2003/07/22 23:55:55 1.7 -+++ libc/sysdeps/generic/unwind-dw2.c 2004/02/21 09:07:29 1.8 -@@ -39,7 +39,6 @@ - #endif - - --#ifndef __USING_SJLJ_EXCEPTIONS__ - - #ifndef STACK_GROWS_DOWNWARD - #define STACK_GROWS_DOWNWARD 0 -@@ -1287,4 +1286,3 @@ - #include "unwind.inc" - - #endif /* _LIBC */ --#endif /* !USING_SJLJ_EXCEPTIONS */ -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/generic/framestate.c,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/sysdeps/generic/framestate.c 2003/01/08 06:46:06 1.3 -+++ libc/sysdeps/generic/framestate.c 2004/02/21 09:07:05 1.4 -@@ -41,7 +41,11 @@ - if (handle == NULL - || (frame_state_for - = (framesf) __libc_dlsym (handle, "__frame_state_for")) == NULL) -+#ifndef __USING_SJLJ_EXCEPTIONS__ - frame_state_for = fallback_frame_state_for; -+#else -+ frame_state_for = abort; -+#endif - } - - return frame_state_for (pc, frame_state); diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-arm.patch --- a/patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-arm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -Fixes -In file included from dynamic-link.h:22, - from dl-reloc.c:265: -../sysdeps/arm/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/arm/dl-machine.h:371: error: invalid storage class for function 'fix_bad_pc24' -../sysdeps/arm/dl-machine.h:406: error: invalid storage class for function 'elf_machine_rel' -../sysdeps/arm/dl-machine.h:532: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/arm/dl-machine.h:612: error: invalid storage class for function 'elf_machine_rel_relative' -../sysdeps/arm/dl-machine.h:621: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/arm/dl-machine.h:630: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: Leaving directory `/home/dank/queue/jobdir.k8/crosstool-dev/build/arm-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/glibc-2.3.3/elf' - -when building glibc-2.3.[34] with gcc-4.0 - -Like -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.51&r2=1.52&cvsroot=glibc -but works with older compilers, and fixes fix_bad_pc24. - - ---- glibc-2.3.4/sysdeps/arm/dl-machine.h.old Sun Mar 20 17:54:37 2005 -+++ glibc-2.3.4/sysdeps/arm/dl-machine.h Sun Mar 20 17:57:32 2005 -@@ -359,7 +359,14 @@ - # endif - - /* Deal with an out-of-range PC24 reloc. */ --static Elf32_Addr -+#if __GNUC__ >= 4 -+ auto inline Elf32_Addr -+#else -+ static inline Elf32_Addr -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - fix_bad_pc24 (Elf32_Addr *const reloc_addr, Elf32_Addr value) - { - static void *fix_page; -@@ -392,7 +399,14 @@ - /* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -517,7 +531,14 @@ - } - - # ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -597,7 +618,14 @@ - } - # endif - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, - void *const reloc_addr_arg) - { -@@ -606,7 +634,14 @@ - } - - # ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -615,7 +650,14 @@ - } - # endif - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rel *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-elf.patch --- a/patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-elf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -From http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html -Fixes - rtld.c: In function '_dl_start': - dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined - dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined -when compiling glibc-2.3.4 with gcc-4.0 - -But see also -http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html -and -http://sources.redhat.com/ml/libc-hacker/2005-03/msg00008.html -which seem to propose less radical fixes? - -Aha. See also http://sources.redhat.com/bugzilla/show_bug.cgi?id=721 - ---- glibc-2.3-20050307/elf/dynamic-link.h.old 2005-03-12 18:12:37.000000000 -0800 -+++ glibc-2.3-20050307/elf/dynamic-link.h 2005-03-12 18:12:59.777820848 -0800 -@@ -19,43 +19,6 @@ - - #include - #include -- --#ifdef RESOLVE --/* We pass reloc_addr as a pointer to void, as opposed to a pointer to -- ElfW(Addr), because not all architectures can assume that the -- relocated address is properly aligned, whereas the compiler is -- entitled to assume that a pointer to a type is properly aligned for -- the type. Even if we cast the pointer back to some other type with -- less strict alignment requirements, the compiler might still -- remember that the pointer was originally more aligned, thereby -- optimizing away alignment tests or using word instructions for -- copying memory, breaking the very code written to handle the -- unaligned cases. */ --auto void __attribute__((always_inline)) --elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, -- const ElfW(Sym) *sym, const struct r_found_version *version, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, -- const ElfW(Sym) *sym, const struct r_found_version *version, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, -- void *const reloc_addr); --# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL --auto void __attribute__((always_inline)) --elf_machine_lazy_rel (struct link_map *map, -- ElfW(Addr) l_addr, const ElfW(Rel) *reloc); --# else --auto void __attribute__((always_inline)) --elf_machine_lazy_rel (struct link_map *map, -- ElfW(Addr) l_addr, const ElfW(Rela) *reloc); --# endif --#endif -- - #include - - #ifndef VERSYMIDX diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch --- a/patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -Fixes - -../sysdeps/powerpc/powerpc32/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/powerpc/powerpc32/dl-machine.h:461: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/powerpc/powerpc32/dl-machine.h:469: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: *** [/home/dank/queue/jobdir.dual2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/build-glibc/elf/dl-reloc.o] Error 1 - -diff -ur glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h ---- glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h Wed Jul 30 23:33:52 2003 -+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h Thu Mar 17 13:19:16 2005 -@@ -455,7 +455,14 @@ - } - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -463,7 +470,14 @@ - *reloc_addr = l_addr + reloc->r_addend; - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch --- a/patches/glibc/2.3.3/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -Fixes: - -In file included from dynamic-link.h:22, - from dl-reloc.c:269: -../sysdeps/powerpc/powerpc64/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/powerpc/powerpc64/dl-machine.h:573: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/powerpc/powerpc64/dl-machine.h:607: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/powerpc/powerpc64/dl-machine.h:889: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/elf' - ---- glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h.old Thu Mar 17 13:35:23 2005 -+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h Thu Mar 17 13:37:12 2005 -@@ -567,7 +567,14 @@ - const Elf64_Sym *refsym) - attribute_hidden; - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -598,7 +605,14 @@ - - /* Perform the relocation specified by RELOC and SYM (which is fully - resolved). MAP is the object containing the reloc. */ --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, - const Elf64_Rela *reloc, - const Elf64_Sym *sym, -@@ -883,7 +897,14 @@ - MODIFIED_CODE_NOQUEUE (reloc_addr); - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf64_Addr l_addr, const Elf64_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-configure-apple-as.patch --- a/patches/glibc/2.3.3/glibc-configure-apple-as.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -http://in3www.epfl.ch/~schaffne/glibc-configure-apple-as.patch -http://sources.redhat.com/ml/crossgcc/2004-02/msg00151.html - -The following makes it possible to configure glibc-2.3.2 on Mac OS X, -where the assembler but doesn't understand the --version flag. - -Fixes the symptom -checking whether ld is GNU ld... no -checking for /usr/libexec/gcc/darwin/ppc/as... /usr/libexec/gcc/darwin/ppc/as -checking version of /usr/libexec/gcc/darwin/ppc/as... - - ---- glibc-2.3.2/configure~ Wed Feb 26 09:20:48 2003 -+++ glibc-2.3.2/configure Fri Feb 27 13:12:53 2004 -@@ -3789,7 +3789,7 @@ - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $AS" >&5 - echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 -- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ ac_prog_version=`$AS -v &1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 2.1[3-9]*) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.3/glibc-fp-byteorder.patch --- a/patches/glibc/2.3.3/glibc-fp-byteorder.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -Taken from http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html -Author: addsub@eyou.com -Target: ARM - -Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c -and makes printf("%f", 1.0) work. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00115.html : - It ... fixes the 'printf("%f\n", 0.5); prints 0.000000' and general 'floating point - is broken' on my big-endian hardfloat FPA ARM platform. ... - It's definitely needed for hardfloat. So I'd think it's needed for - big-endian systems in any case, and for VFP on little-endian systems - too. Someone would have to verify that though. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00123.html - I just had a look at glibc-20040830, and [this patch] is still needed and useful - for this version. glibc-20040830 out-of-the-box still contains the - following wrong assumptions: - - sysdeps/arm/bits/endian.h: float word order is big endian (which it is - not on vfp systems) - - sysdeps/arm/gmp-mparam.h: IEEE doubles are mixed endian (which they - are not on big endian systems, neither on vfp systems) - - sysdeps/arm/ieee754.h: IEEE doubles are in little endian byte order - (which they are not on big endian systems) - [This patch] seems the right solution for all of these issues. - -Dimitry Andric wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00132.html : - It's even needed for glibc CVS, AFAICS. - The patch hunk which modifies glibc.new/sysdeps/arm/bits/endian.h - (currently at version 1.4) is only needed for proper VFP operation. - But the hunk which modifies sysdeps/arm/gmp-mparam.h, and the hunk - that deletes sysdeps/arm/ieee754.h (yes, this IS correct), are needed - for proper operation of *any* FP model on big endian ARM. - -See also discussion in followups to -http://sources.redhat.com/ml/crossgcc/2004-05/msg00245.html) - -Message-ID: <276985760.37584@eyou.com> -Received: from unknown (HELO eyou.com) (172.16.2.2) - by 0.0.0.0 with SMTP; Tue, 17 Feb 2004 10:42:40 +0800 -Received: (qmail 8238 invoked by uid 65534); 17 Feb 2004 10:42:38 +0800 -Date: 17 Feb 2004 10:42:38 +0800 -Message-ID: <20040217104238.8237.qmail@eyou.com> -From: "add" -To: dank@kegel.com -Reply-To: "add" -Subject: Re:   problem while building arm vfp softfloat gcc ` - -Hi, Dan, This is a patch I applied to my glibc-2.3.2, then my softfloat -toolchain can printf("%f\n",1.0). So you may have a try of this - - -diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h ---- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400 -+++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500 -@@ -9,4 +9,9 @@ - #else - #define __BYTE_ORDER __LITTLE_ENDIAN - #endif -+ -+#ifdef __VFP_FP__ -+#define __FLOAT_WORD_ORDER __BYTE_ORDER -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN -+#endif -diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h ---- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500 -@@ -26,5 +26,13 @@ MA 02111-1307, USA. */ - #define BITS_PER_SHORTINT 16 - #define BITS_PER_CHAR 8 - --#define IEEE_DOUBLE_BIG_ENDIAN 0 --#define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#if defined(__ARMEB__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__VFP_FP__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+#else -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+# define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#endif -diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h ---- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500 -@@ -1,115 +0,0 @@ --/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _IEEE754_H -- --#define _IEEE754_H 1 --#include -- --#include -- --__BEGIN_DECLS -- --union ieee754_float -- { -- float f; -- -- /* This is the IEEE 754 single-precision format. */ -- struct -- { -- unsigned int mantissa:23; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa:22; -- unsigned int quiet_nan:1; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee_nan; -- }; -- --#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ -- -- --union ieee754_double -- { -- double d; -- -- /* This is the IEEE 754 double-precision format. */ -- struct -- { -- unsigned int mantissa0:20; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa0:19; -- unsigned int quiet_nan:1; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee_nan; -- }; -- --#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ -- -- --/* The following two structures are correct for `new' floating point systems but -- wrong for the old FPPC. The only solution seems to be to avoid their use on -- old hardware. */ -- --union ieee854_long_double -- { -- long double d; -- -- /* This is the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:32; -- } ieee; -- -- /* This is for NaNs in the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:30; -- unsigned int quiet_nan:1; -- unsigned int one:1; -- } ieee_nan; -- }; -- --#define IEEE854_LONG_DOUBLE_BIAS 0x3fff -- --__END_DECLS -- --#endif /* ieee754.h */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/arm-ctl_bus_isa.patch --- a/patches/glibc/2.3.4/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/bad/glibc-2.3.4-cygwin.patch --- a/patches/glibc/2.3.4/bad/glibc-2.3.4-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.3.3 on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - -glibc-linuxthreads-2.3.3 also requires a patch, see -../glibc-linuxthreads-2.3.3/glibc-linuxthreads-2.3.3-cygwin.patch - -[ Rediffed against glibc-2.3.3 ] - - -diff -urN glibc-2.3.4-orig/Makeconfig glibc-2.3.4/Makeconfig ---- glibc-2.3.4-orig/Makeconfig 2004-12-15 19:51:47.000000000 +0100 -+++ glibc-2.3.4/Makeconfig 2005-03-13 18:54:58.000000000 +0100 -@@ -449,7 +449,7 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # This is how to find at build-time things that will be installed there. - rpath-dirs = math elf dlfcn nss nis rt resolv crypt - endif -@@ -667,7 +667,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -723,14 +723,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 -+libtype.oST = lib%_nonshared.a - endif - - # The assembler can generate debug information too. -diff -urN glibc-2.3.4-orig/Makerules glibc-2.3.4/Makerules ---- glibc-2.3.4-orig/Makerules 2004-12-15 19:52:39.000000000 +0100 -+++ glibc-2.3.4/Makerules 2005-03-13 18:50:09.000000000 +0100 -@@ -416,7 +416,7 @@ - # Bounded pointer thunks are only built for *.ob - elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) \ - $(elide-bp-thunks) - elide-routines.os += $(static-only-routines) $(elide-bp-thunks) -@@ -961,7 +961,7 @@ - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -969,7 +969,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ -diff -urN glibc-2.3.4-orig/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.4/sysdeps/sparc/sparc32/sparcv9/Makefile ---- glibc-2.3.4-orig/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-16 08:46:14.000000000 +0200 -+++ glibc-2.3.4/sysdeps/sparc/sparc32/sparcv9/Makefile 2005-03-13 18:50:09.000000000 +0100 -@@ -10,4 +10,4 @@ - ASFLAGS-.op += -Wa,-Av9a - ASFLAGS-.og += -Wa,-Av9a - ASFLAGS-.ob += -Wa,-Av9a --ASFLAGS-.oS += -Wa,-Av9a -+ASFLAGS-.oST += -Wa,-Av9a diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/fix-pr398.patch --- a/patches/glibc/2.3.4/fix-pr398.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -Fixes error - -dl-runtime.c:222: error: parse error before "CFI_STARTPROC" -make[2]: *** [crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/elf/dl-runtim -e.o] Error 1 -make[2]: Leaving directory `crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040 -822/elf' -make[1]: *** [elf/subdir_lib] Error 2 -make[1]: Leaving directory `crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040 -822' -make: *** [all] Error 2 - ------------------ - -See http://sources.redhat.com/bugzilla/show_bug.cgi?id=398 -http://sources.redhat.com/ml/libc-alpha/2004-07/msg00023.html - ------------------ - -CVSROOT: /cvs/glibc -Module name: libc -Branch: glibc-2_3-branch -Changes by: roland@sources.redhat.com 2006-02-23 22:36:51 - -Modified files: - sysdeps/s390/s390-64: dl-machine.h - sysdeps/s390/s390-32: dl-machine.h - -Log message: - 2004-07-10 GOTO Masanori - - [BZ #398] - * sysdeps/s390/s390-32/dl-machine.h: Include for CFI - directive. - * sysdeps/s390/s390-64/dl-machine.h: Likewise. - -Patches: -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/s390/s390-64/dl-machine.h.diff?cvsroot=glibc&only_with_tag=glibc-2_3-branch&r1=1.19.4.1&r2=1.19.4.2 -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/s390/s390-32/dl-machine.h.diff?cvsroot=glibc&only_with_tag=glibc-2_3-branch&r1=1.20.4.1&r2=1.20.4.2 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/s390/s390-64/dl-machine.h,v -retrieving revision 1.19.4.1 -retrieving revision 1.19.4.2 -diff -u -r1.19.4.1 -r1.19.4.2 ---- libc/sysdeps/s390/s390-64/dl-machine.h 2005/10/17 04:57:27 1.19.4.1 -+++ libc/sysdeps/s390/s390-64/dl-machine.h 2006/02/23 22:36:51 1.19.4.2 -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - - /* This is an older, now obsolete value. */ - #define EM_S390_OLD 0xA390 -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/s390/s390-32/dl-machine.h,v -retrieving revision 1.20.4.1 -retrieving revision 1.20.4.2 -diff -u -r1.20.4.1 -r1.20.4.2 ---- libc/sysdeps/s390/s390-32/dl-machine.h 2005/10/17 04:57:27 1.20.4.1 -+++ libc/sysdeps/s390/s390-32/dl-machine.h 2006/02/23 22:36:51 1.20.4.2 -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - - /* This is an older, now obsolete value. */ - #define EM_S390_OLD 0xA390 diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-arm.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-arm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -Fixes -In file included from dynamic-link.h:22, - from dl-reloc.c:265: -../sysdeps/arm/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/arm/dl-machine.h:371: error: invalid storage class for function 'fix_bad_pc24' -../sysdeps/arm/dl-machine.h:406: error: invalid storage class for function 'elf_machine_rel' -../sysdeps/arm/dl-machine.h:532: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/arm/dl-machine.h:612: error: invalid storage class for function 'elf_machine_rel_relative' -../sysdeps/arm/dl-machine.h:621: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/arm/dl-machine.h:630: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: Leaving directory `/home/dank/queue/jobdir.k8/crosstool-dev/build/arm-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/glibc-2.3.3/elf' - -when building glibc-2.3.[34] with gcc-4.0 - -Like -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.51&r2=1.52&cvsroot=glibc -but works with older compilers, and fixes fix_bad_pc24. - - ---- glibc-2.3.4/sysdeps/arm/dl-machine.h.old Sun Mar 20 17:54:37 2005 -+++ glibc-2.3.4/sysdeps/arm/dl-machine.h Sun Mar 20 17:57:32 2005 -@@ -359,7 +359,14 @@ - # endif - - /* Deal with an out-of-range PC24 reloc. */ --static Elf32_Addr -+#if __GNUC__ >= 4 -+ auto inline Elf32_Addr -+#else -+ static inline Elf32_Addr -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - fix_bad_pc24 (Elf32_Addr *const reloc_addr, Elf32_Addr value) - { - static void *fix_page; -@@ -392,7 +399,14 @@ - /* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -517,7 +531,14 @@ - } - - # ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -597,7 +618,14 @@ - } - # endif - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, - void *const reloc_addr_arg) - { -@@ -606,7 +634,14 @@ - } - - # ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -615,7 +650,14 @@ - } - # endif - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rel *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-elf.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-elf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -From http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html -Fixes - rtld.c: In function '_dl_start': - dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined - dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined -when compiling glibc-2.3.4 with gcc-4.0 - -But see also -http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html -and -http://sources.redhat.com/ml/libc-hacker/2005-03/msg00008.html -which seem to propose less radical fixes? - -Aha. See also http://sources.redhat.com/bugzilla/show_bug.cgi?id=721 - ---- glibc-2.3-20050307/elf/dynamic-link.h.old 2005-03-12 18:12:37.000000000 -0800 -+++ glibc-2.3-20050307/elf/dynamic-link.h 2005-03-12 18:12:59.777820848 -0800 -@@ -19,43 +19,6 @@ - - #include - #include -- --#ifdef RESOLVE --/* We pass reloc_addr as a pointer to void, as opposed to a pointer to -- ElfW(Addr), because not all architectures can assume that the -- relocated address is properly aligned, whereas the compiler is -- entitled to assume that a pointer to a type is properly aligned for -- the type. Even if we cast the pointer back to some other type with -- less strict alignment requirements, the compiler might still -- remember that the pointer was originally more aligned, thereby -- optimizing away alignment tests or using word instructions for -- copying memory, breaking the very code written to handle the -- unaligned cases. */ --auto void __attribute__((always_inline)) --elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, -- const ElfW(Sym) *sym, const struct r_found_version *version, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, -- const ElfW(Sym) *sym, const struct r_found_version *version, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, -- void *const reloc_addr); --# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL --auto void __attribute__((always_inline)) --elf_machine_lazy_rel (struct link_map *map, -- ElfW(Addr) l_addr, const ElfW(Rel) *reloc); --# else --auto void __attribute__((always_inline)) --elf_machine_lazy_rel (struct link_map *map, -- ElfW(Addr) l_addr, const ElfW(Rela) *reloc); --# endif --#endif -- - #include - - #ifndef VERSYMIDX diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -See http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html -and http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html - -Fixes - In file included from jis0208.c:23: - jis0208.h:32: error: array type has incomplete element type -when building glibc with gcc-4.0 -The bug has been present since at least glibc-2.2.5. -This patch applies cleanly to glibc-2.3.4 - ---- /home/dank/downloads/glibc-2.3-20050307/iconvdata/jis0208.h 2003-06-11 14:40:42.000000000 -0700 -+++ glibc-2.3-20050307/iconvdata/jis0208.h 2005-03-13 20:55:01.784054760 -0800 -@@ -24,15 +24,6 @@ - #include - #include - --/* Conversion table. */ --extern const uint16_t __jis0208_to_ucs[]; -- --extern const char __jisx0208_from_ucs4_lat1[256][2]; --extern const char __jisx0208_from_ucs4_greek[0xc1][2]; --extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; --extern const char __jisx0208_from_ucs_tab[][2]; -- -- - /* Struct for table with indeces in UCS mapping table. */ - struct jisx0208_ucs_idx - { -@@ -42,6 +33,15 @@ - }; - - -+/* Conversion table. */ -+extern const uint16_t __jis0208_to_ucs[]; -+ -+extern const char __jisx0208_from_ucs4_lat1[256][2]; -+extern const char __jisx0208_from_ucs4_greek[0xc1][2]; -+extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; -+extern const char __jisx0208_from_ucs_tab[][2]; -+ -+ - static inline uint32_t - __attribute ((always_inline)) - jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -First discussed here: -http://gcc.gnu.org/ml/gcc/2005-01/msg00509.html - -Revision 1.12, Wed Mar 2 20:11:38 2005 UTC by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050303T1335, HEAD -Changes since 1.11: +3 -8 lines -Diff to previous 1.11 (colored) - -2005-02-21 Alan Modra - - * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h (elf_vrreg_t): Don't - use __uint128_t. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h?cvsroot=glibc -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h.diff?r1=1.11&r2=1.12&cvsroot=glibc - -Fixes - -In file included from ../linuxthreads_db/proc_service.h:20, - from ../linuxthreads_db/thread_dbP.h:7, - from ../linuxthreads/descr.h:44, - from ../linuxthreads/internals.h:30, - from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, - from ../sysdeps/generic/ldsodefs.h:38, - from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, - from :2: -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: error: syntax error before 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: type defaults to 'int' in declaration of 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: data definition has no type or storage class -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: error: syntax error before 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: type defaults to 'int' in declaration of 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: data definition has no type or storage class -make[2]: make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/csu' - - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h,v -retrieving revision 1.11 -retrieving revision 1.12 -diff -u -r1.11 -r1.12 ---- libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2003/12/17 23:09:34 1.11 -+++ libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2005/03/02 20:11:38 1.12 -@@ -46,15 +46,10 @@ - typedef double elf_fpreg_t; - typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; - --/* gcc 3.1 and newer support __uint128_t. */ --#if !__GNUC_PREREQ(3,1) --typedef struct { -- unsigned long u[4]; --} __attribute((aligned(16))) __uint128_t; --#endif -- - /* Altivec registers */ --typedef __uint128_t elf_vrreg_t; -+typedef struct { -+ unsigned int u[4]; -+} __attribute__ ((aligned (16))) elf_vrreg_t; - typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; - #endif - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -Fixes - -../sysdeps/powerpc/powerpc32/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/powerpc/powerpc32/dl-machine.h:461: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/powerpc/powerpc32/dl-machine.h:469: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: *** [/home/dank/queue/jobdir.dual2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/build-glibc/elf/dl-reloc.o] Error 1 - -diff -ur glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h ---- glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h Wed Jul 30 23:33:52 2003 -+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h Thu Mar 17 13:19:16 2005 -@@ -455,7 +455,14 @@ - } - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -463,7 +470,14 @@ - *reloc_addr = l_addr + reloc->r_addend; - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -Fixes: - -In file included from dynamic-link.h:22, - from dl-reloc.c:269: -../sysdeps/powerpc/powerpc64/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/powerpc/powerpc64/dl-machine.h:573: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/powerpc/powerpc64/dl-machine.h:607: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/powerpc/powerpc64/dl-machine.h:889: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/elf' - ---- glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h.old Thu Mar 17 13:35:23 2005 -+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h Thu Mar 17 13:37:12 2005 -@@ -567,7 +567,14 @@ - const Elf64_Sym *refsym) - attribute_hidden; - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -598,7 +605,14 @@ - - /* Perform the relocation specified by RELOC and SYM (which is fully - resolved). MAP is the object containing the reloc. */ --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, - const Elf64_Rela *reloc, - const Elf64_Sym *sym, -@@ -883,7 +897,14 @@ - MODIFIED_CODE_NOQUEUE (reloc_addr); - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf64_Addr l_addr, const Elf64_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-cygwin.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.3.4 on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - -glibc-linuxthreads-2.3.4 also requires a patch, see -../glibc-linuxthreads-2.3.4/glibc-linuxthreads-2.3.4-cygwin.patch - -[ Ported to glibc-2.3.4 by steve@digidescorp.com ] - ---- glibc-2.3.4/Makeconfig.orig 2004-12-15 12:51:47.000000000 -0600 -+++ glibc-2.3.4/Makeconfig 2005-06-29 00:31:27.000000000 -0500 -@@ -449,7 +449,7 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # This is how to find at build-time things that will be installed there. - rpath-dirs = math elf dlfcn nss nis rt resolv crypt - endif -@@ -667,7 +667,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -723,14 +723,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 -+libtype.oST = lib%_nonshared.a - endif - - # The assembler can generate debug information too. ---- glibc-2.3.4/Makerules.orig 2005-06-28 20:57:52.562500000 -0500 -+++ glibc-2.3.4/Makerules 2005-06-29 00:27:21.328125000 -0500 -@@ -416,7 +416,7 @@ - # Bounded pointer thunks are only built for *.ob - elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) \ - $(elide-bp-thunks) - elide-routines.os += $(static-only-routines) $(elide-bp-thunks) -@@ -968,7 +968,7 @@ - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -976,7 +976,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ -diff -aur glibc-2.3.5/extra-lib.mk glibc-2.3.5-cygwin/extra-lib.mk ---- glibc-2.3.5/extra-lib.mk 2004-12-02 23:54:47.000000000 +0100 -+++ glibc-2.3.5-cygwin/extra-lib.mk 2005-05-11 08:27:28.156250000 +0200 -@@ -13,7 +13,7 @@ - - ifneq (,$($(lib)-static-only-routines)) - ifneq (,$(filter yesyes%,$(build-shared)$(elf)$($(lib).so-version))) --object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oS) -+object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oST) - endif - endif - -@@ -29,7 +29,7 @@ - - # Add each flavor of library to the lists of things to build and install. - install-lib += $(foreach o,$(object-suffixes-$(lib)),$(lib:lib%=$(libtype$o))) --extra-objs += $(foreach o,$(filter-out .os .oS,$(object-suffixes-$(lib))),\ -+extra-objs += $(foreach o,$(filter-out .os .oST,$(object-suffixes-$(lib))),\ - $(patsubst %,%$o,$(filter-out \ - $($(lib)-shared-only-routines),\ - $(all-$(lib)-routines)))) -@@ -57,7 +57,7 @@ - - - # Use o-iterator.mk to generate a rule for each flavor of library. --ifneq (,$(filter-out .os .oS,$(object-suffixes-$(lib)))) -+ifneq (,$(filter-out .os .oST,$(object-suffixes-$(lib)))) - define o-iterator-doit - $(objpfx)$(patsubst %,$(libtype$o),$(lib:lib%=%)): \ - $(patsubst %,$(objpfx)%$o,\ -@@ -65,7 +65,7 @@ - $(all-$(lib)-routines))); \ - $$(build-extra-lib) - endef --object-suffixes-left = $(filter-out .os .oS,$(object-suffixes-$(lib))) -+object-suffixes-left = $(filter-out .os .oST,$(object-suffixes-$(lib))) - include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left)) - endif - -@@ -77,9 +77,9 @@ - $(build-extra-lib) - endif - --ifneq (,$(filter .oS,$(object-suffixes-$(lib)))) --$(objpfx)$(patsubst %,$(libtype.oS),$(lib:lib%=%)): \ -- $(patsubst %,$(objpfx)%.oS,\ -+ifneq (,$(filter .oST,$(object-suffixes-$(lib)))) -+$(objpfx)$(patsubst %,$(libtype.oST),$(lib:lib%=%)): \ -+ $(patsubst %,$(objpfx)%.oST,\ - $(filter $($(lib)-static-only-routines),\ - $(all-$(lib)-routines))) - $(build-extra-lib) -diff -aur glibc-2.3.5/nptl/Makefile glibc-2.3.5-cygwin/nptl/Makefile ---- glibc-2.3.5/nptl/Makefile 2005-02-16 09:45:56.000000000 +0100 -+++ glibc-2.3.5-cygwin/nptl/Makefile 2005-05-11 08:26:01.812500000 +0200 -@@ -360,7 +360,7 @@ - - $(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \ - $(objpfx)libpthread.so$(libpthread.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)pthread) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -368,7 +368,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libpthread.so$(libpthread.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)pthread)'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)pthread)'\ - ')' \ - ) > $@.new - mv -f $@.new $@ -diff -aur glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile ---- glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-16 08:46:14.000000000 +0200 -+++ glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile 2005-05-11 08:26:25.937500000 +0200 -@@ -10,4 +10,4 @@ - ASFLAGS-.op += -Wa,-Av9a - ASFLAGS-.og += -Wa,-Av9a - ASFLAGS-.ob += -Wa,-Av9a --ASFLAGS-.oS += -Wa,-Av9a -+ASFLAGS-.oST += -Wa,-Av9a diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.4-memcmp.patch --- a/patches/glibc/2.3.4/glibc-2.3.4-memcmp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -Fixes - ../sysdeps/i386/i686/memcmp.S: Assembler messages: - ../sysdeps/i386/i686/memcmp.S:390: Error: can't resolve `.rodata' {.rodata section} - `memcmp' {.text section} -when building on macosx. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/i686/memcmp.S?cvsroot=glibc -Revision 1.4, Thu Apr 28 18:19:25 2005 UTC by drepper -Branch: MAIN -CVS Tags: fedora-glibc-20050503T0852 -Changes since 1.3: +2 -2 lines -Diff to previous 1.3 (colored) - -Move misplaced END. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/i686/memcmp.S.diff?r1=1.3&r2=1.4&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/i386/i686/memcmp.S,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/sysdeps/i386/i686/memcmp.S 2004/04/01 23:28:37 1.3 -+++ libc/sysdeps/i386/i686/memcmp.S 2005/04/28 18:19:25 1.4 -@@ -1,5 +1,5 @@ - /* Compare two memory blocks for differences in the first COUNT bytes. -- Copyright (C) 2004 Free Software Foundation, Inc. -+ Copyright (C) 2004, 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -350,6 +350,7 @@ - sbbl $-1, %eax - popl %esi - RETURN -+END (BP_SYM (memcmp)) - - .section .rodata - ALIGN (2) -@@ -387,7 +388,6 @@ - .long L(30bytes) - . + 0x78 - .long L(31bytes) - . + 0x7c - --END (BP_SYM (memcmp)) - - #undef bcmp - weak_alias (BP_SYM (memcmp), BP_SYM (bcmp)) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-string.patch --- a/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-string.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ - -Fixes? the following error when building with gcc-4.0.0: - -../string/strcoll.c:39: error: '__EI_strcoll' aliased to undefined symbol '__GI_strcoll' -make[2]: *** [/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/wcsmbs/wcscoll.os] Error 1 -make[2]: Leaving directory `/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4/wcsmbs' - - -Thu Mar 17 21:06:24 2005 UTC (3 weeks, 5 days ago) by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050405T2114, fedora-glibc-20050401T1444, fedora-glibc-20050324T0715, fedora-glibc-20050319T1907, HEAD - -2005-03-16 Richard Henderson - - * include/wchar.h (__wcscoll): Remove. - * wcsmbs/wcscoll.c: Define wcscoll directly instead of via __wcscoll. - * string/strcoll.c: Don't issue libc_hidden_def STRCOLL redefined. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/string/strcoll.c.diff?r1=1.33&r2=1.34&cvsroot=glibc -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/include/wchar.h.diff?r1=1.26&r2=1.27&cvsroot=glibc -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/wcsmbs/wcscoll.c.diff?r1=1.13&r2=1.14&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/string/strcoll.c,v -retrieving revision 1.33 -retrieving revision 1.34 -diff -u -r1.33 -r1.34 ---- libc/string/strcoll.c 2004/03/14 20:51:30 1.33 -+++ libc/string/strcoll.c 2005/03/17 21:06:24 1.34 -@@ -23,6 +23,7 @@ - # define STRING_TYPE char - # define STRCOLL strcoll - # define STRCOLL_L __strcoll_l -+# define USE_HIDDEN_DEF - #endif - - #include "../locale/localeinfo.h" -@@ -35,6 +36,7 @@ - { - return STRCOLL_L (s1, s2, _NL_CURRENT_LOCALE); - } --#if !defined WIDE_CHAR_VERSION --libc_hidden_def (strcoll) -+ -+#ifdef USE_HIDDEN_DEF -+libc_hidden_def (STRCOLL) - #endif -=================================================================== -RCS file: /cvs/glibc/libc/include/wchar.h,v -retrieving revision 1.26 -retrieving revision 1.27 -diff -u -r1.26 -r1.27 ---- libc/include/wchar.h 2004/03/14 20:45:10 1.26 -+++ libc/include/wchar.h 2005/03/17 21:06:24 1.27 -@@ -56,7 +56,6 @@ - extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, - size_t __n) - __attribute_pure__; --extern int __wcscoll (__const wchar_t *__s1, __const wchar_t *__s2); - extern size_t __wcslen (__const wchar_t *__s) __attribute_pure__; - extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen) - __attribute_pure__; -=================================================================== -RCS file: /cvs/glibc/libc/wcsmbs/wcscoll.c,v -retrieving revision 1.13 -retrieving revision 1.14 -diff -u -r1.13 -r1.14 ---- libc/wcsmbs/wcscoll.c 2004/03/14 21:05:48 1.13 -+++ libc/wcsmbs/wcscoll.c 2005/03/17 21:06:24 1.14 -@@ -22,12 +22,11 @@ - - #define STRING_TYPE wchar_t - #define USTRING_TYPE wint_t --#define STRCOLL __wcscoll -+#define STRCOLL wcscoll - #define STRCOLL_L __wcscoll_l - - #include "../string/strcoll.c" - - #ifndef USE_IN_EXTENDED_LOCALE_MODEL --weak_alias (__wcscoll, wcscoll) - libc_hidden_weak (wcscoll) - #endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-symbols.patch --- a/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-symbols.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -If I'm really lucky, this fixes the following error building with gcc-4.0.0: - -../sysdeps/ieee754/dbl-64/s_isinf.c:29: error: 'isinf' aliased to undefined symbol '__isinf' -make[2]: *** [/home/dank/queue/jobdir.fast/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/math/s_isinf.os] Error 1 -make[1]: *** [math/subdir_lib] Error 2 -make: *** [lib] Error 2 - ---- - - -Revision 1.71, Thu Mar 17 21:06:27 2005 UTC (3 weeks, 5 days ago) by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050405T2114, fedora-glibc-20050401T1444, fedora-glibc-20050324T0715, fedora-glibc-20050319T1907, HEAD -Changes since 1.70: +11 -66 lines -Diff to previous 1.70 (colored) - -2005-03-16 Richard Henderson - - * include/libc-symbols.h (__hidden_proto): Remove bogus declaration - of internal. - (__hidden_def1, __hidden_dot_def1): Remove. - (__hidden_def2, __hidden_def3): Remove. - (__hidden_ver1): New. - (hidden_ver, hidden_def, hidden_weak): Use it. - (hidden_data_ver, hidden_data_ver, hidden_data_weak): Use non-data - version of the macro. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/include/libc-symbols.h.diff?r1=1.70&r2=1.71&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/include/libc-symbols.h,v -retrieving revision 1.70 -retrieving revision 1.71 -diff -u -r1.70 -r1.71 ---- libc/include/libc-symbols.h 2005/02/11 00:29:46 1.70 -+++ libc/include/libc-symbols.h 2005/03/17 21:06:27 1.71 -@@ -583,78 +583,23 @@ - # define hidden_proto(name, attrs...) \ - __hidden_proto (name, __GI_##name, ##attrs) - # define __hidden_proto(name, internal, attrs...) \ -- extern __typeof (name) internal; \ - extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ - __hidden_proto_hiddenattr (attrs); - # define __hidden_asmname(name) \ - __hidden_asmname1 (__USER_LABEL_PREFIX__, name) - # define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) - # define __hidden_asmname2(prefix, name) #prefix name --# ifdef HAVE_ASM_SET_DIRECTIVE --# define __hidden_def1(original, alias) \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ -- .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ -- .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_def1(original, alias) --# endif --# else --# define __hidden_def1(original, alias) \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_def1(original, alias) --# endif --# endif --# define __hidden_def2(...) #__VA_ARGS__ --# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__) --# define hidden_def(name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \ -- __hidden_dot_def1 (__GI_##name, name))); --# define hidden_data_def(name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name))); --# define hidden_ver(local, name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \ -- __hidden_dot_def1 (local, __GI_##name))); --# define hidden_data_ver(local, name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name))); --# ifdef HAVE_WEAK_SYMBOLS --# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE --# define __hidden_weak1(original, alias) \ -- .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ -- .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_weak1(original, alias) --# endif --# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ --# define __hidden_weak1(original, alias) \ -- .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ -- .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_weak1(original, alias) --# endif --# endif --# define hidden_weak(name) \ -- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \ -- __hidden_dot_weak1 (__GI_##name, name))); --# define hidden_data_weak(name) \ -- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name))); --# else --# define hidden_weak(name) hidden_def (name) --# endif -+# define __hidden_ver1(local, internal, name) \ -+ extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ -+ extern __typeof (name) __EI_##name \ -+ __attribute__((alias (__hidden_asmname (#local)))) -+# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name); -+# define hidden_data_ver(local, name) hidden_ver(local, name) -+# define hidden_def(name) __hidden_ver1(__GI_##name, name, name); -+# define hidden_data_def(name) hidden_def(name) -+# define hidden_weak(name) \ -+ __hidden_ver1(__GI_##name, name, name) __attribute__((weak)); -+# define hidden_data_weak(name) hidden_weak(name) - # else - /* For assembly, we need to do the opposite of what we do in C: - in assembly gcc __REDIRECT stuff is not in place, so functions diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-wcstol_l.patch --- a/patches/glibc/2.3.4/glibc-2.3.5-allow-gcc4-wcstol_l.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -Fixes -../sysdeps/wordsize-64/wcstol_l.c:11: error: '____wcstoll_l_internal' aliased to undefined symbol '____wcstol_l_internal' -../sysdeps/wordsize-64/wcstol_l.c:12: error: '__wcstoll_l' aliased to undefined symbol '__wcstol_l' -../sysdeps/wordsize-64/wcstol_l.c:13: error: 'wcstoll_l' aliased to undefined symbol '__wcstol_l' -make[2]: *** [/home/dkegel/queue/jobdir.produser_cpsm10/crosstool-0.32/build/x86_64-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/wcsmbs/wcstoul_l.o] Error 1 - -https://www.redhat.com/archives/fedora-cvs-commits/2005-March/msg00408.html -%changelog -+* Fri Mar 25 2005 Jakub Jelinek 2.3.4-18 -+- fix build on 64-bit arches with new GCC - -Revision 1.4.2.1, Fri Mar 25 11:59:01 2005 UTC (3 weeks, 4 days ago) by jakub -Branch: fedora-branch -CVS Tags: fedora-glibc-2_3_4-18 -Changes since 1.4: +2 -0 lines -Diff to previous 1.4 (colored) - - * sysdeps/wordsize-64/strtol_l.c: Don't add aliases if UNSIGNED. - * sysdeps/wordsize-64/wcstol_l.c: Likewise. - - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/wordsize-64/strtol_l.c.diff?r1=1.4&r2=1.4.2.1&cvsroot=glibc -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/wordsize-64/wcstol_l.c.diff?r1=1.4&r2=1.4.2.1&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/strtol_l.c,v -retrieving revision 1.4 -retrieving revision 1.4.2.1 -diff -u -r1.4 -r1.4.2.1 ---- libc/sysdeps/wordsize-64/strtol_l.c 2003/03/03 09:45:12 1.4 -+++ libc/sysdeps/wordsize-64/strtol_l.c 2005/03/25 11:59:01 1.4.2.1 -@@ -8,7 +8,9 @@ - #undef ____strtoll_l_internal - #undef __strtoll_l - #undef strtoll_l -+#if !UNSIGNED - strong_alias (____strtol_l_internal, ____strtoll_l_internal) - libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal) - weak_alias (__strtol_l, __strtoll_l) - weak_alias (__strtol_l, strtoll_l) -+#endif -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/wcstol_l.c,v -retrieving revision 1.4 -retrieving revision 1.4.2.1 -diff -u -r1.4 -r1.4.2.1 ---- libc/sysdeps/wordsize-64/wcstol_l.c 2002/08/08 11:44:51 1.4 -+++ libc/sysdeps/wordsize-64/wcstol_l.c 2005/03/25 11:59:01 1.4.2.1 -@@ -8,6 +8,8 @@ - #undef ____wcstoll_l_internal - #undef __wcstoll_l - #undef wcstoll_l -+#if !UNSIGNED - strong_alias (____wcstol_l_internal, ____wcstoll_l_internal) - weak_alias (__wcstol_l, __wcstoll_l) - weak_alias (__wcstol_l, wcstoll_l) -+#endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-configure-apple-as.patch --- a/patches/glibc/2.3.4/glibc-configure-apple-as.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -http://in3www.epfl.ch/~schaffne/glibc-configure-apple-as.patch -http://sources.redhat.com/ml/crossgcc/2004-02/msg00151.html - -The following makes it possible to configure glibc-2.3.2 on Mac OS X, -where the assembler but doesn't understand the --version flag. - -Fixes the symptom -checking whether ld is GNU ld... no -checking for /usr/libexec/gcc/darwin/ppc/as... /usr/libexec/gcc/darwin/ppc/as -checking version of /usr/libexec/gcc/darwin/ppc/as... - - ---- glibc-2.3.2/configure~ Wed Feb 26 09:20:48 2003 -+++ glibc-2.3.2/configure Fri Feb 27 13:12:53 2004 -@@ -3789,7 +3789,7 @@ - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $AS" >&5 - echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 -- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ ac_prog_version=`$AS -v &1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 2.1[3-9]*) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/glibc-fp-byteorder.patch --- a/patches/glibc/2.3.4/glibc-fp-byteorder.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -Taken from http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html -Author: addsub@eyou.com -Target: ARM - -Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c -and makes printf("%f", 1.0) work. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00115.html : - It ... fixes the 'printf("%f\n", 0.5); prints 0.000000' and general 'floating point - is broken' on my big-endian hardfloat FPA ARM platform. ... - It's definitely needed for hardfloat. So I'd think it's needed for - big-endian systems in any case, and for VFP on little-endian systems - too. Someone would have to verify that though. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00123.html - I just had a look at glibc-20040830, and [this patch] is still needed and useful - for this version. glibc-20040830 out-of-the-box still contains the - following wrong assumptions: - - sysdeps/arm/bits/endian.h: float word order is big endian (which it is - not on vfp systems) - - sysdeps/arm/gmp-mparam.h: IEEE doubles are mixed endian (which they - are not on big endian systems, neither on vfp systems) - - sysdeps/arm/ieee754.h: IEEE doubles are in little endian byte order - (which they are not on big endian systems) - [This patch] seems the right solution for all of these issues. - -Dimitry Andric wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00132.html : - It's even needed for glibc CVS, AFAICS. - The patch hunk which modifies glibc.new/sysdeps/arm/bits/endian.h - (currently at version 1.4) is only needed for proper VFP operation. - But the hunk which modifies sysdeps/arm/gmp-mparam.h, and the hunk - that deletes sysdeps/arm/ieee754.h (yes, this IS correct), are needed - for proper operation of *any* FP model on big endian ARM. - -See also discussion in followups to -http://sources.redhat.com/ml/crossgcc/2004-05/msg00245.html) - -Message-ID: <276985760.37584@eyou.com> -Received: from unknown (HELO eyou.com) (172.16.2.2) - by 0.0.0.0 with SMTP; Tue, 17 Feb 2004 10:42:40 +0800 -Received: (qmail 8238 invoked by uid 65534); 17 Feb 2004 10:42:38 +0800 -Date: 17 Feb 2004 10:42:38 +0800 -Message-ID: <20040217104238.8237.qmail@eyou.com> -From: "add" -To: dank@kegel.com -Reply-To: "add" -Subject: Re:   problem while building arm vfp softfloat gcc ` - -Hi, Dan, This is a patch I applied to my glibc-2.3.2, then my softfloat -toolchain can printf("%f\n",1.0). So you may have a try of this - - -diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h ---- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400 -+++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500 -@@ -9,4 +9,9 @@ - #else - #define __BYTE_ORDER __LITTLE_ENDIAN - #endif -+ -+#ifdef __VFP_FP__ -+#define __FLOAT_WORD_ORDER __BYTE_ORDER -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN -+#endif -diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h ---- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500 -@@ -26,5 +26,13 @@ MA 02111-1307, USA. */ - #define BITS_PER_SHORTINT 16 - #define BITS_PER_CHAR 8 - --#define IEEE_DOUBLE_BIG_ENDIAN 0 --#define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#if defined(__ARMEB__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__VFP_FP__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+#else -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+# define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#endif -diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h ---- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500 -@@ -1,115 +0,0 @@ --/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _IEEE754_H -- --#define _IEEE754_H 1 --#include -- --#include -- --__BEGIN_DECLS -- --union ieee754_float -- { -- float f; -- -- /* This is the IEEE 754 single-precision format. */ -- struct -- { -- unsigned int mantissa:23; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa:22; -- unsigned int quiet_nan:1; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee_nan; -- }; -- --#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ -- -- --union ieee754_double -- { -- double d; -- -- /* This is the IEEE 754 double-precision format. */ -- struct -- { -- unsigned int mantissa0:20; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa0:19; -- unsigned int quiet_nan:1; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee_nan; -- }; -- --#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ -- -- --/* The following two structures are correct for `new' floating point systems but -- wrong for the old FPPC. The only solution seems to be to avoid their use on -- old hardware. */ -- --union ieee854_long_double -- { -- long double d; -- -- /* This is the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:32; -- } ieee; -- -- /* This is for NaNs in the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:30; -- unsigned int quiet_nan:1; -- unsigned int one:1; -- } ieee_nan; -- }; -- --#define IEEE854_LONG_DOUBLE_BIAS 0x3fff -- --__END_DECLS -- --#endif /* ieee754.h */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/make-install-lib-all.patch --- a/patches/glibc/2.3.4/make-install-lib-all.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -From http://svn.exactcode.de/t2/trunk/package/base/glibc32/make-install-lib-all.patch -Rule to install all needed libraries, not just the ones installed by install-lib, -yet not install programs. -Needed because we can't use the main install target, as we can't build programs before -we have the final gcc installed; linking fails because libeh.a is not present, -and glibc insists on linking programs with that library. - -diff -Naur glibc-2.3.4.orig/Makerules glibc-2.3.4/Makerules ---- glibc-2.3.4.orig/Makerules 2004-12-15 20:52:39.000000000 +0200 -+++ glibc-2.3.4/Makerules 2005-02-19 15:16:31.415125176 +0200 -@@ -844,6 +844,13 @@ - installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\ - $(inst_libdir)/$(patsubst %,$(libtype$o),\ - $(libprefix)$(libc-name))) -+ -+install-lib-all: $(inst_slibdir)/libc.so$(libc.so-version) \ -+ $(inst_slibdir)/libc-$(version).so \ -+ $(inst_libdir)/libc.so \ -+ $(inst_libdir)/libc.a \ -+ install-lib -+ - install: $(installed-libcs) - $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force) - $(make-target-directory) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.4/pr758.patch --- a/patches/glibc/2.3.4/pr758.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,256 +0,0 @@ -See http://sources.redhat.com/bugzilla/show_bug.cgi?id=758 - -Submitted By: Jim Gifford (patches at jg555 dot com) -Date: 2005-02-23 -Initial Package Version: 2.3.4 -Origin: Richard Sandiford -Upstream Status: Unknown -Description: Fixes Syscall.h generation - -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/Makefile glibc-2.3.4/sysdeps/unix/sysv/linux/mips/Makefile ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/Makefile 2004-11-24 04:38:15 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/Makefile 2005-02-23 18:21:54 +0000 -@@ -9,11 +9,73 @@ - - no_syscall_list_h = 1 - --# Generate the list of SYS_* macros for the system calls (__NR_* macros). --# We generate not only SYS_, pointing at SYS__ if --# it exists, but also define SYS__ for all ABIs. -+# A callable macro that expands to a shell command. Preprocess file $(1) -+# using ABI option $(2) and see which macros it defines. Print FOO for each -+# macro of the form __NR$(3)_FOO, filtering out ABI-specific __NR macros -+# that have a prefix other than $(3). -+mips_list_syscalls = $(filter-out -m%,$(CC)) -E -x c $(+includes) \ -+ $(sysincludes) -D_LIBC -dM -mabi=$(2) $(1) | \ -+ sed -n 's@^\#define __NR$(3)_\([^ ]*\) .*@\1@p' | \ -+ sed -e '/^[ON]32_/d' -e '/^N64_/d' -e '/^64_/d' | \ -+ LC_ALL=C sort -+ -+# Generate a list of SYS_* macros from the linux __NR macros. -+# -+# Before version 2.6, linux had separate 32-bit and 64-bit MIPS ports, -+# each with its own set of headers. The ports were merged for 2.6 and -+# this merged port defines the syscalls in a slightly different way. -+# There are therefore three sets of headers that we need to consider: -+# -+# (1) Headers from the separate 32-bit MIPS port. They just define -+# a single list of __NR macros. -+# -+# (2) Headers from the separate 64-bit MIPS port. They unconditionally -+# define syscalls for all three ABIs, with o32 syscalls prefixed -+# by __NR_O32, n32 syscalls prefixed by __NR_N32 and n64 syscalls -+# prefixed by plain __NR. -+# -+# (3) Headers from the combined port. They use the _MIPS_SIM macro to -+# define the right set of syscalls for the current ABI. The syscalls -+# themselves have no special ABI prefix, but the headers also define: -+# -+# __NR_O32_Linux{,_syscalls} -+# __NR_N32_Linux{,_syscalls} -+# __NR_64_Linux{,_syscalls} -+# -+# In case (1) we just want a simple list of SYS_* macros. In cases (2) -+# and (3) we want a file that will work for all three ABIs, regardless -+# of which ABI we are currently using. We also want the file to work -+# if the user later moves from (2) to (3). Thus the file we create -+# for (2) and (3) has the form: -+# -+# #if _MIPS_SIM == _MIPS_SIM_NABI32 -+# # ifdef __NR_N32_open -+# # define SYS_n32syscall1 __NR_N32_n32syscall1 -+# # ... -+# # else -+# # define SYS_n32syscall1 __NR_n32syscall1 -+# # ... -+# # endif -+# #elif _MIPS_SIM == _MIPS_SIM_ABI64 -+# # define SYS_n64syscall1 __NR_n64syscall1 -+# # ... -+# #else -+# # ifdef __NR_O32_open -+# # define SYS_o32syscall1 __NR_O32_o32syscall1 -+# # ... -+# # else -+# # define SYS_o32syscall1 __NR_o32syscall1 -+# # ... -+# # endif -+# #endif -+# -+# Here, __NR_N32_open and __NR_O32_open are used to detect case (2) -+# over case (3). The n64 SYS_* macros can always use the normal -+# ABI-less names. - $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h - $(make-target-directory) -+ $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC $< -MD -MP \ -+ -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' > /dev/null - { \ - echo '/* Generated at libc build time from kernel syscall list. */';\ - echo ''; \ -@@ -22,28 +84,38 @@ - echo '#endif'; \ - echo ''; \ - echo '#include '; \ -- rm -f $(@:.d=.h).newt; \ -- $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \ -- -x c $(+includes) $(sysincludes) $< -D_LIBC -dM | \ -- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' \ -- > $(@:.d=.h).newt; \ -- if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \ -+ rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \ -+ $(call mips_list_syscalls,$<,n32,_N32) > $(@:.d=.h).newn32; \ -+ if test -s $(@:.d=.h).newn32; then \ -+ if grep open $(@:.d=.h).newn32 > /dev/null; then \ -+ $(call mips_list_syscalls,$<,32,_O32) > $(@:.d=.h).new32; \ -+ $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \ -+ else \ -+ $(call mips_list_syscalls,$<,32,) > $(@:.d=.h).new32; \ -+ $(call mips_list_syscalls,$<,n32,) > $(@:.d=.h).newn32; \ -+ $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \ -+ fi; \ - echo '#if _MIPS_SIM == _ABIN32'; \ -- sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort; \ -+ echo '# ifdef __NR_N32_open'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_N32_\1@' < $(@:.d=.h).newn32; \ -+ echo '# else'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).newn32; \ -+ echo '# endif'; \ - echo '#elif _MIPS_SIM == _ABI64'; \ -- sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).new64; \ - echo '#else'; \ -- sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort; \ -+ echo '# ifdef __NR_O32_open'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_O32_\1@' < $(@:.d=.h).new32; \ -+ echo '# else'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).new32; \ -+ echo '# endif'; \ - echo '#endif'; \ -- sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort +1.8; \ - else \ -- cat $(@:.d=.h).newt; \ -+ $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC -dM $< | \ -+ sed -n 's@^\#define __NR_\([^ ]*\) .*@\#define SYS_\1 __NR_\1@p' | \ -+ LC_ALL=C sort; \ - fi; \ -- rm $(@:.d=.h).newt; \ -+ rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \ - } > $(@:.d=.h).new - mv -f $(@:.d=.h).new $(@:.d=.h) - ifneq (,$(objpfx)) -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure 2004-11-24 04:42:45 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure 2005-02-23 18:10:11 +0000 -@@ -18,7 +18,7 @@ - { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&5 - echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&2;} - echo '#include ' > asm-unistd.h -- else -+ elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then - # The point of this preprocessing is to turn __NR_ into - # __NR_N64_, as well as to define __NR_ to - # __NR__, if __NR__ is defined -@@ -68,6 +68,8 @@ - { - print; - }' -+ else -+ echo '#include ' > asm-unistd.h - fi ;; - mips*) - rm -f asm-unistd.h -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure.in glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure.in ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure.in 2004-11-24 04:38:31 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure.in 2005-02-23 18:10:11 +0000 -@@ -18,7 +18,7 @@ - if test ! -f "$asm_unistd_h"; then - AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed]) - echo '#include ' > asm-unistd.h -- else -+ elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then - # The point of this preprocessing is to turn __NR_ into - # __NR_N64_, as well as to define __NR_ to - # __NR__, if __NR__ is defined -@@ -68,6 +68,8 @@ - { - print; - }' -+ else -+ echo '#include ' > asm-unistd.h - fi ;; - mips*) - rm -f asm-unistd.h -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2003-03-29 08:15:29 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2005-02-23 18:10:11 +0000 -@@ -1,36 +0,0 @@ --/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H --#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1 -- --/* There is some commonality. */ --#include -- --/* For Linux we can use the system call table in the header file -- /usr/include/asm/unistd.h -- of the kernel. But these symbols do not follow the SYS_* syntax -- so we have to redefine the `SYS_ify' macro here. */ --#undef SYS_ify --#ifdef __STDC__ --# define SYS_ify(syscall_name) __NR_O32_##syscall_name --#else --# define SYS_ify(syscall_name) __NR_O32_/**/syscall_name --#endif -- --#endif /* linux/mips/mips32/kern64/sysdep.h */ -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2004-10-18 05:16:07 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2005-02-23 18:10:11 +0000 -@@ -28,9 +28,9 @@ - so we have to redefine the `SYS_ify' macro here. */ - #undef SYS_ify - #ifdef __STDC__ --# define SYS_ify(syscall_name) __NR_N32_##syscall_name -+# define SYS_ify(syscall_name) __NR_##syscall_name - #else --# define SYS_ify(syscall_name) __NR_N32_/**/syscall_name -+# define SYS_ify(syscall_name) __NR_/**/syscall_name - #endif - - #ifdef __ASSEMBLER__ -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2004-10-18 05:16:08 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2005-02-23 18:10:11 +0000 -@@ -28,9 +28,9 @@ - so we have to redefine the `SYS_ify' macro here. */ - #undef SYS_ify - #ifdef __STDC__ --# define SYS_ify(syscall_name) __NR_N64_##syscall_name -+# define SYS_ify(syscall_name) __NR_##syscall_name - #else --# define SYS_ify(syscall_name) __NR_N64_/**/syscall_name -+# define SYS_ify(syscall_name) __NR_/**/syscall_name - #endif - - #ifdef __ASSEMBLER__ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/arm-ctl_bus_isa.patch --- a/patches/glibc/2.3.5/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/fix-pr398.patch --- a/patches/glibc/2.3.5/fix-pr398.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -Fixes error - -dl-runtime.c:222: error: parse error before "CFI_STARTPROC" -make[2]: *** [crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/elf/dl-runtim -e.o] Error 1 -make[2]: Leaving directory `crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040 -822/elf' -make[1]: *** [elf/subdir_lib] Error 2 -make[1]: Leaving directory `crosstool-0.28-rc35/build/s390-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040 -822' -make: *** [all] Error 2 - ------------------ - -See http://sources.redhat.com/bugzilla/show_bug.cgi?id=398 -http://sources.redhat.com/ml/libc-alpha/2004-07/msg00023.html - ------------------ - -CVSROOT: /cvs/glibc -Module name: libc -Branch: glibc-2_3-branch -Changes by: roland@sources.redhat.com 2006-02-23 22:36:51 - -Modified files: - sysdeps/s390/s390-64: dl-machine.h - sysdeps/s390/s390-32: dl-machine.h - -Log message: - 2004-07-10 GOTO Masanori - - [BZ #398] - * sysdeps/s390/s390-32/dl-machine.h: Include for CFI - directive. - * sysdeps/s390/s390-64/dl-machine.h: Likewise. - -Patches: -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/s390/s390-64/dl-machine.h.diff?cvsroot=glibc&only_with_tag=glibc-2_3-branch&r1=1.19.4.1&r2=1.19.4.2 -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/s390/s390-32/dl-machine.h.diff?cvsroot=glibc&only_with_tag=glibc-2_3-branch&r1=1.20.4.1&r2=1.20.4.2 - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/s390/s390-64/dl-machine.h,v -retrieving revision 1.19.4.1 -retrieving revision 1.19.4.2 -diff -u -r1.19.4.1 -r1.19.4.2 ---- libc/sysdeps/s390/s390-64/dl-machine.h 2005/10/17 04:57:27 1.19.4.1 -+++ libc/sysdeps/s390/s390-64/dl-machine.h 2006/02/23 22:36:51 1.19.4.2 -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - - /* This is an older, now obsolete value. */ - #define EM_S390_OLD 0xA390 -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/s390/s390-32/dl-machine.h,v -retrieving revision 1.20.4.1 -retrieving revision 1.20.4.2 -diff -u -r1.20.4.1 -r1.20.4.2 ---- libc/sysdeps/s390/s390-32/dl-machine.h 2005/10/17 04:57:27 1.20.4.1 -+++ libc/sysdeps/s390/s390-32/dl-machine.h 2006/02/23 22:36:51 1.20.4.2 -@@ -27,6 +27,7 @@ - #include - #include - #include -+#include - - /* This is an older, now obsolete value. */ - #define EM_S390_OLD 0xA390 diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-arm.patch --- a/patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-arm.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -Fixes -In file included from dynamic-link.h:22, - from dl-reloc.c:265: -../sysdeps/arm/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/arm/dl-machine.h:371: error: invalid storage class for function 'fix_bad_pc24' -../sysdeps/arm/dl-machine.h:406: error: invalid storage class for function 'elf_machine_rel' -../sysdeps/arm/dl-machine.h:532: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/arm/dl-machine.h:612: error: invalid storage class for function 'elf_machine_rel_relative' -../sysdeps/arm/dl-machine.h:621: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/arm/dl-machine.h:630: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: Leaving directory `/home/dank/queue/jobdir.k8/crosstool-dev/build/arm-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3.3/glibc-2.3.3/elf' - -when building glibc-2.3.[34] with gcc-4.0 - -Like -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/arm/dl-machine.h.diff?r1=1.51&r2=1.52&cvsroot=glibc -but works with older compilers, and fixes fix_bad_pc24. - - ---- glibc-2.3.4/sysdeps/arm/dl-machine.h.old Sun Mar 20 17:54:37 2005 -+++ glibc-2.3.4/sysdeps/arm/dl-machine.h Sun Mar 20 17:57:32 2005 -@@ -359,7 +359,14 @@ - # endif - - /* Deal with an out-of-range PC24 reloc. */ --static Elf32_Addr -+#if __GNUC__ >= 4 -+ auto inline Elf32_Addr -+#else -+ static inline Elf32_Addr -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - fix_bad_pc24 (Elf32_Addr *const reloc_addr, Elf32_Addr value) - { - static void *fix_page; -@@ -392,7 +399,14 @@ - /* Perform the relocation specified by RELOC and SYM (which is fully resolved). - MAP is the object containing the reloc. */ - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -517,7 +531,14 @@ - } - - # ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc, - const Elf32_Sym *sym, const struct r_found_version *version, - void *const reloc_addr_arg) -@@ -597,7 +618,14 @@ - } - # endif - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc, - void *const reloc_addr_arg) - { -@@ -606,7 +634,14 @@ - } - - # ifndef RTLD_BOOTSTRAP --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -615,7 +650,14 @@ - } - # endif - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rel *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-elf.patch --- a/patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-elf.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -From http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html -Fixes - rtld.c: In function '_dl_start': - dynamic-link.h:47: error: nested function 'elf_machine_rela_relative' declared but never defined - dynamic-link.h:41: error: nested function 'elf_machine_rela' declared but never defined -when compiling glibc-2.3.4 with gcc-4.0 - -But see also -http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html -and -http://sources.redhat.com/ml/libc-hacker/2005-03/msg00008.html -which seem to propose less radical fixes? - -Aha. See also http://sources.redhat.com/bugzilla/show_bug.cgi?id=721 - ---- glibc-2.3-20050307/elf/dynamic-link.h.old 2005-03-12 18:12:37.000000000 -0800 -+++ glibc-2.3-20050307/elf/dynamic-link.h 2005-03-12 18:12:59.777820848 -0800 -@@ -19,43 +19,6 @@ - - #include - #include -- --#ifdef RESOLVE --/* We pass reloc_addr as a pointer to void, as opposed to a pointer to -- ElfW(Addr), because not all architectures can assume that the -- relocated address is properly aligned, whereas the compiler is -- entitled to assume that a pointer to a type is properly aligned for -- the type. Even if we cast the pointer back to some other type with -- less strict alignment requirements, the compiler might still -- remember that the pointer was originally more aligned, thereby -- optimizing away alignment tests or using word instructions for -- copying memory, breaking the very code written to handle the -- unaligned cases. */ --auto void __attribute__((always_inline)) --elf_machine_rel (struct link_map *map, const ElfW(Rel) *reloc, -- const ElfW(Sym) *sym, const struct r_found_version *version, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, -- const ElfW(Sym) *sym, const struct r_found_version *version, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rel_relative (ElfW(Addr) l_addr, const ElfW(Rel) *reloc, -- void *const reloc_addr); --auto void __attribute__((always_inline)) --elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc, -- void *const reloc_addr); --# if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL --auto void __attribute__((always_inline)) --elf_machine_lazy_rel (struct link_map *map, -- ElfW(Addr) l_addr, const ElfW(Rel) *reloc); --# else --auto void __attribute__((always_inline)) --elf_machine_lazy_rel (struct link_map *map, -- ElfW(Addr) l_addr, const ElfW(Rela) *reloc); --# endif --#endif -- - #include - - #ifndef VERSYMIDX diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch --- a/patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-iconvdata.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -See http://sources.redhat.com/ml/libc-hacker/2005-02/msg00000.html -and http://www.mail-archive.com/pld-cvs-commit@pld-linux.org/msg00229.html - -Fixes - In file included from jis0208.c:23: - jis0208.h:32: error: array type has incomplete element type -when building glibc with gcc-4.0 -The bug has been present since at least glibc-2.2.5. -This patch applies cleanly to glibc-2.3.4 - ---- /home/dank/downloads/glibc-2.3-20050307/iconvdata/jis0208.h 2003-06-11 14:40:42.000000000 -0700 -+++ glibc-2.3-20050307/iconvdata/jis0208.h 2005-03-13 20:55:01.784054760 -0800 -@@ -24,15 +24,6 @@ - #include - #include - --/* Conversion table. */ --extern const uint16_t __jis0208_to_ucs[]; -- --extern const char __jisx0208_from_ucs4_lat1[256][2]; --extern const char __jisx0208_from_ucs4_greek[0xc1][2]; --extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; --extern const char __jisx0208_from_ucs_tab[][2]; -- -- - /* Struct for table with indeces in UCS mapping table. */ - struct jisx0208_ucs_idx - { -@@ -42,6 +33,15 @@ - }; - - -+/* Conversion table. */ -+extern const uint16_t __jis0208_to_ucs[]; -+ -+extern const char __jisx0208_from_ucs4_lat1[256][2]; -+extern const char __jisx0208_from_ucs4_greek[0xc1][2]; -+extern const struct jisx0208_ucs_idx __jisx0208_from_ucs_idx[]; -+extern const char __jisx0208_from_ucs_tab[][2]; -+ -+ - static inline uint32_t - __attribute ((always_inline)) - jisx0208_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch --- a/patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc-procfs.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -First discussed here: -http://gcc.gnu.org/ml/gcc/2005-01/msg00509.html - -Revision 1.12, Wed Mar 2 20:11:38 2005 UTC by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050303T1335, HEAD -Changes since 1.11: +3 -8 lines -Diff to previous 1.11 (colored) - -2005-02-21 Alan Modra - - * sysdeps/unix/sysv/linux/powerpc/sys/procfs.h (elf_vrreg_t): Don't - use __uint128_t. - -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h?cvsroot=glibc -http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h.diff?r1=1.11&r2=1.12&cvsroot=glibc - -Fixes - -In file included from ../linuxthreads_db/proc_service.h:20, - from ../linuxthreads_db/thread_dbP.h:7, - from ../linuxthreads/descr.h:44, - from ../linuxthreads/internals.h:30, - from ../linuxthreads/sysdeps/pthread/bits/libc-lock.h:27, - from ../sysdeps/generic/ldsodefs.h:38, - from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, - from :2: -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: error: syntax error before 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: type defaults to 'int' in declaration of 'elf_vrreg_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:57: warning: data definition has no type or storage class -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: error: syntax error before 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: type defaults to 'int' in declaration of 'elf_vrregset_t' -../sysdeps/unix/sysv/linux/powerpc/sys/procfs.h:58: warning: data definition has no type or storage class -make[2]: make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/csu' - - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h,v -retrieving revision 1.11 -retrieving revision 1.12 -diff -u -r1.11 -r1.12 ---- libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2003/12/17 23:09:34 1.11 -+++ libc/sysdeps/unix/sysv/linux/powerpc/sys/procfs.h 2005/03/02 20:11:38 1.12 -@@ -46,15 +46,10 @@ - typedef double elf_fpreg_t; - typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; - --/* gcc 3.1 and newer support __uint128_t. */ --#if !__GNUC_PREREQ(3,1) --typedef struct { -- unsigned long u[4]; --} __attribute((aligned(16))) __uint128_t; --#endif -- - /* Altivec registers */ --typedef __uint128_t elf_vrreg_t; -+typedef struct { -+ unsigned int u[4]; -+} __attribute__ ((aligned (16))) elf_vrreg_t; - typedef elf_vrreg_t elf_vrregset_t[ELF_NVRREG]; - #endif - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch --- a/patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc32.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -Fixes - -../sysdeps/powerpc/powerpc32/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/powerpc/powerpc32/dl-machine.h:461: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/powerpc/powerpc32/dl-machine.h:469: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: *** [/home/dank/queue/jobdir.dual2/crosstool-dev/build/powerpc-750-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/build-glibc/elf/dl-reloc.o] Error 1 - -diff -ur glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h ---- glibc-2.3-20050307.orig/sysdeps/powerpc/powerpc32/dl-machine.h Wed Jul 30 23:33:52 2003 -+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc32/dl-machine.h Thu Mar 17 13:19:16 2005 -@@ -455,7 +455,14 @@ - } - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -463,7 +470,14 @@ - *reloc_addr = l_addr + reloc->r_addend; - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf32_Addr l_addr, const Elf32_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch --- a/patches/glibc/2.3.5/glibc-2.3.4-allow-gcc-4.0-powerpc64.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -Fixes: - -In file included from dynamic-link.h:22, - from dl-reloc.c:269: -../sysdeps/powerpc/powerpc64/dl-machine.h: In function '_dl_relocate_object': -../sysdeps/powerpc/powerpc64/dl-machine.h:573: error: invalid storage class for function 'elf_machine_rela_relative' -../sysdeps/powerpc/powerpc64/dl-machine.h:607: error: invalid storage class for function 'elf_machine_rela' -../sysdeps/powerpc/powerpc64/dl-machine.h:889: error: invalid storage class for function 'elf_machine_lazy_rel' -make[2]: Leaving directory `/home/dank/queue/jobdir.fast2/crosstool-dev/build/powerpc64-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/glibc-2.3-20050307/elf' - ---- glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h.old Thu Mar 17 13:35:23 2005 -+++ glibc-2.3-20050307/sysdeps/powerpc/powerpc64/dl-machine.h Thu Mar 17 13:37:12 2005 -@@ -567,7 +567,14 @@ - const Elf64_Sym *refsym) - attribute_hidden; - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela_relative (Elf64_Addr l_addr, const Elf64_Rela *reloc, - void *const reloc_addr_arg) - { -@@ -598,7 +605,14 @@ - - /* Perform the relocation specified by RELOC and SYM (which is fully - resolved). MAP is the object containing the reloc. */ --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_rela (struct link_map *map, - const Elf64_Rela *reloc, - const Elf64_Sym *sym, -@@ -883,7 +897,14 @@ - MODIFIED_CODE_NOQUEUE (reloc_addr); - } - --static inline void -+#if __GNUC__ >= 4 -+ auto inline void -+#else -+ static inline void -+#endif -+#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2) -+ __attribute ((always_inline)) -+#endif - elf_machine_lazy_rel (struct link_map *map, - Elf64_Addr l_addr, const Elf64_Rela *reloc) - { diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.4-memcmp.patch --- a/patches/glibc/2.3.5/glibc-2.3.4-memcmp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -Fixes - ../sysdeps/i386/i686/memcmp.S: Assembler messages: - ../sysdeps/i386/i686/memcmp.S:390: Error: can't resolve `.rodata' {.rodata section} - `memcmp' {.text section} -when building on macosx. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/i686/memcmp.S?cvsroot=glibc -Revision 1.4, Thu Apr 28 18:19:25 2005 UTC by drepper -Branch: MAIN -CVS Tags: fedora-glibc-20050503T0852 -Changes since 1.3: +2 -2 lines -Diff to previous 1.3 (colored) - -Move misplaced END. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/i386/i686/memcmp.S.diff?r1=1.3&r2=1.4&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/i386/i686/memcmp.S,v -retrieving revision 1.3 -retrieving revision 1.4 -diff -u -r1.3 -r1.4 ---- libc/sysdeps/i386/i686/memcmp.S 2004/04/01 23:28:37 1.3 -+++ libc/sysdeps/i386/i686/memcmp.S 2005/04/28 18:19:25 1.4 -@@ -1,5 +1,5 @@ - /* Compare two memory blocks for differences in the first COUNT bytes. -- Copyright (C) 2004 Free Software Foundation, Inc. -+ Copyright (C) 2004, 2005 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or -@@ -350,6 +350,7 @@ - sbbl $-1, %eax - popl %esi - RETURN -+END (BP_SYM (memcmp)) - - .section .rodata - ALIGN (2) -@@ -387,7 +388,6 @@ - .long L(30bytes) - . + 0x78 - .long L(31bytes) - . + 0x7c - --END (BP_SYM (memcmp)) - - #undef bcmp - weak_alias (BP_SYM (memcmp), BP_SYM (bcmp)) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.5-allow-gcc-4.0-wordexp.patch --- a/patches/glibc/2.3.5/glibc-2.3.5-allow-gcc-4.0-wordexp.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -../sysdeps/generic/wordexp.c: In function 'exec_comm': -../sysdeps/generic/wordexp.c:815: sorry, unimplemented: inlining failed in call to 'exec_comm_child': function body not available -../sysdeps/generic/wordexp.c:900: sorry, unimplemented: called from here -make[2]: *** [/home/dank/queue/jobdir.fast2/crosstool-dev/build/i686-unknown-linux-gnu/gcc-4.0-20050305-glibc-2.3-20050307/build-glibc/posix/wordexp.o] Error - -I had to add the keyword 'inline' to get it to compile: - ---- glibc-2.3-20050307/sysdeps/generic/wordexp.c.old 2005-03-12 08:54:15.709253928 -0800 -+++ glibc-2.3-20050307/sysdeps/generic/wordexp.c 2005-03-12 08:54:51.242852000 -0800 -@@ -809,7 +809,7 @@ - } - - /* Function called by child process in exec_comm() */ --static void -+static inline void - internal_function __attribute__ ((always_inline)) - exec_comm_child (char *comm, int *fildes, int showerr, int noexec) - { - diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-string.patch --- a/patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-string.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ - -Fixes? the following error when building with gcc-4.0.0: - -../string/strcoll.c:39: error: '__EI_strcoll' aliased to undefined symbol '__GI_strcoll' -make[2]: *** [/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/wcsmbs/wcscoll.os] Error 1 -make[2]: Leaving directory `/home/dank/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4/wcsmbs' - - -Thu Mar 17 21:06:24 2005 UTC (3 weeks, 5 days ago) by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050405T2114, fedora-glibc-20050401T1444, fedora-glibc-20050324T0715, fedora-glibc-20050319T1907, HEAD - -2005-03-16 Richard Henderson - - * include/wchar.h (__wcscoll): Remove. - * wcsmbs/wcscoll.c: Define wcscoll directly instead of via __wcscoll. - * string/strcoll.c: Don't issue libc_hidden_def STRCOLL redefined. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/string/strcoll.c.diff?r1=1.33&r2=1.34&cvsroot=glibc -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/include/wchar.h.diff?r1=1.26&r2=1.27&cvsroot=glibc -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/wcsmbs/wcscoll.c.diff?r1=1.13&r2=1.14&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/string/strcoll.c,v -retrieving revision 1.33 -retrieving revision 1.34 -diff -u -r1.33 -r1.34 ---- libc/string/strcoll.c 2004/03/14 20:51:30 1.33 -+++ libc/string/strcoll.c 2005/03/17 21:06:24 1.34 -@@ -23,6 +23,7 @@ - # define STRING_TYPE char - # define STRCOLL strcoll - # define STRCOLL_L __strcoll_l -+# define USE_HIDDEN_DEF - #endif - - #include "../locale/localeinfo.h" -@@ -35,6 +36,7 @@ - { - return STRCOLL_L (s1, s2, _NL_CURRENT_LOCALE); - } --#if !defined WIDE_CHAR_VERSION --libc_hidden_def (strcoll) -+ -+#ifdef USE_HIDDEN_DEF -+libc_hidden_def (STRCOLL) - #endif -=================================================================== -RCS file: /cvs/glibc/libc/include/wchar.h,v -retrieving revision 1.26 -retrieving revision 1.27 -diff -u -r1.26 -r1.27 ---- libc/include/wchar.h 2004/03/14 20:45:10 1.26 -+++ libc/include/wchar.h 2005/03/17 21:06:24 1.27 -@@ -56,7 +56,6 @@ - extern int __wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2, - size_t __n) - __attribute_pure__; --extern int __wcscoll (__const wchar_t *__s1, __const wchar_t *__s2); - extern size_t __wcslen (__const wchar_t *__s) __attribute_pure__; - extern size_t __wcsnlen (__const wchar_t *__s, size_t __maxlen) - __attribute_pure__; -=================================================================== -RCS file: /cvs/glibc/libc/wcsmbs/wcscoll.c,v -retrieving revision 1.13 -retrieving revision 1.14 -diff -u -r1.13 -r1.14 ---- libc/wcsmbs/wcscoll.c 2004/03/14 21:05:48 1.13 -+++ libc/wcsmbs/wcscoll.c 2005/03/17 21:06:24 1.14 -@@ -22,12 +22,11 @@ - - #define STRING_TYPE wchar_t - #define USTRING_TYPE wint_t --#define STRCOLL __wcscoll -+#define STRCOLL wcscoll - #define STRCOLL_L __wcscoll_l - - #include "../string/strcoll.c" - - #ifndef USE_IN_EXTENDED_LOCALE_MODEL --weak_alias (__wcscoll, wcscoll) - libc_hidden_weak (wcscoll) - #endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-symbols.patch --- a/patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-symbols.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ -If I'm really lucky, this fixes the following error building with gcc-4.0.0: - -../sysdeps/ieee754/dbl-64/s_isinf.c:29: error: 'isinf' aliased to undefined symbol '__isinf' -make[2]: *** [/home/dank/queue/jobdir.fast/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/math/s_isinf.os] Error 1 -make[1]: *** [math/subdir_lib] Error 2 -make: *** [lib] Error 2 - ---- - - -Revision 1.71, Thu Mar 17 21:06:27 2005 UTC (3 weeks, 5 days ago) by roland -Branch: MAIN -CVS Tags: fedora-glibc-20050405T2114, fedora-glibc-20050401T1444, fedora-glibc-20050324T0715, fedora-glibc-20050319T1907, HEAD -Changes since 1.70: +11 -66 lines -Diff to previous 1.70 (colored) - -2005-03-16 Richard Henderson - - * include/libc-symbols.h (__hidden_proto): Remove bogus declaration - of internal. - (__hidden_def1, __hidden_dot_def1): Remove. - (__hidden_def2, __hidden_def3): Remove. - (__hidden_ver1): New. - (hidden_ver, hidden_def, hidden_weak): Use it. - (hidden_data_ver, hidden_data_ver, hidden_data_weak): Use non-data - version of the macro. - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/include/libc-symbols.h.diff?r1=1.70&r2=1.71&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/include/libc-symbols.h,v -retrieving revision 1.70 -retrieving revision 1.71 -diff -u -r1.70 -r1.71 ---- libc/include/libc-symbols.h 2005/02/11 00:29:46 1.70 -+++ libc/include/libc-symbols.h 2005/03/17 21:06:27 1.71 -@@ -583,78 +583,23 @@ - # define hidden_proto(name, attrs...) \ - __hidden_proto (name, __GI_##name, ##attrs) - # define __hidden_proto(name, internal, attrs...) \ -- extern __typeof (name) internal; \ - extern __typeof (name) name __asm__ (__hidden_asmname (#internal)) \ - __hidden_proto_hiddenattr (attrs); - # define __hidden_asmname(name) \ - __hidden_asmname1 (__USER_LABEL_PREFIX__, name) - # define __hidden_asmname1(prefix, name) __hidden_asmname2(prefix, name) - # define __hidden_asmname2(prefix, name) #prefix name --# ifdef HAVE_ASM_SET_DIRECTIVE --# define __hidden_def1(original, alias) \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ -- .set C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ -- .set C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_def1(original, alias) --# endif --# else --# define __hidden_def1(original, alias) \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_def1(original, alias) ASM_LINE_SEP \ -- ASM_GLOBAL_DIRECTIVE C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_def1(original, alias) --# endif --# endif --# define __hidden_def2(...) #__VA_ARGS__ --# define __hidden_def3(...) __hidden_def2 (__VA_ARGS__) --# define hidden_def(name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name) \ -- __hidden_dot_def1 (__GI_##name, name))); --# define hidden_data_def(name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (__GI_##name, name))); --# define hidden_ver(local, name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name) \ -- __hidden_dot_def1 (local, __GI_##name))); --# define hidden_data_ver(local, name) \ -- __asm__ (__hidden_def3 (__hidden_def1 (local, __GI_##name))); --# ifdef HAVE_WEAK_SYMBOLS --# ifdef HAVE_ASM_WEAKEXT_DIRECTIVE --# define __hidden_weak1(original, alias) \ -- .weakext C_SYMBOL_NAME (alias), C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ -- .weakext C_SYMBOL_DOT_NAME (alias), C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_weak1(original, alias) --# endif --# else /* ! HAVE_ASM_WEAKEXT_DIRECTIVE */ --# define __hidden_weak1(original, alias) \ -- .weak C_SYMBOL_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_NAME (alias) = C_SYMBOL_NAME (original) --# ifdef HAVE_ASM_GLOBAL_DOT_NAME --# define __hidden_dot_weak1(original, alias) ASM_LINE_SEP \ -- .weak C_SYMBOL_DOT_NAME (alias) ASM_LINE_SEP \ -- C_SYMBOL_DOT_NAME (alias) = C_SYMBOL_DOT_NAME (original) --# else --# define __hidden_dot_weak1(original, alias) --# endif --# endif --# define hidden_weak(name) \ -- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name) \ -- __hidden_dot_weak1 (__GI_##name, name))); --# define hidden_data_weak(name) \ -- __asm__ (__hidden_def3 (__hidden_weak1 (__GI_##name, name))); --# else --# define hidden_weak(name) hidden_def (name) --# endif -+# define __hidden_ver1(local, internal, name) \ -+ extern __typeof (name) __EI_##name __asm__(__hidden_asmname (#internal)); \ -+ extern __typeof (name) __EI_##name \ -+ __attribute__((alias (__hidden_asmname (#local)))) -+# define hidden_ver(local, name) __hidden_ver1(local, __GI_##name, name); -+# define hidden_data_ver(local, name) hidden_ver(local, name) -+# define hidden_def(name) __hidden_ver1(__GI_##name, name, name); -+# define hidden_data_def(name) hidden_def(name) -+# define hidden_weak(name) \ -+ __hidden_ver1(__GI_##name, name, name) __attribute__((weak)); -+# define hidden_data_weak(name) hidden_weak(name) - # else - /* For assembly, we need to do the opposite of what we do in C: - in assembly gcc __REDIRECT stuff is not in place, so functions diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-wcstol_l.patch --- a/patches/glibc/2.3.5/glibc-2.3.5-allow-gcc4-wcstol_l.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -Fixes -../sysdeps/wordsize-64/wcstol_l.c:11: error: '____wcstoll_l_internal' aliased to undefined symbol '____wcstol_l_internal' -../sysdeps/wordsize-64/wcstol_l.c:12: error: '__wcstoll_l' aliased to undefined symbol '__wcstol_l' -../sysdeps/wordsize-64/wcstol_l.c:13: error: 'wcstoll_l' aliased to undefined symbol '__wcstol_l' -make[2]: *** [/home/dkegel/queue/jobdir.produser_cpsm10/crosstool-0.32/build/x86_64-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/wcsmbs/wcstoul_l.o] Error 1 - -https://www.redhat.com/archives/fedora-cvs-commits/2005-March/msg00408.html -%changelog -+* Fri Mar 25 2005 Jakub Jelinek 2.3.4-18 -+- fix build on 64-bit arches with new GCC - -Revision 1.4.2.1, Fri Mar 25 11:59:01 2005 UTC (3 weeks, 4 days ago) by jakub -Branch: fedora-branch -CVS Tags: fedora-glibc-2_3_4-18 -Changes since 1.4: +2 -0 lines -Diff to previous 1.4 (colored) - - * sysdeps/wordsize-64/strtol_l.c: Don't add aliases if UNSIGNED. - * sysdeps/wordsize-64/wcstol_l.c: Likewise. - - -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/wordsize-64/strtol_l.c.diff?r1=1.4&r2=1.4.2.1&cvsroot=glibc -http://sourceware.org/cgi-bin/cvsweb.cgi/libc/sysdeps/wordsize-64/wcstol_l.c.diff?r1=1.4&r2=1.4.2.1&cvsroot=glibc - -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/strtol_l.c,v -retrieving revision 1.4 -retrieving revision 1.4.2.1 -diff -u -r1.4 -r1.4.2.1 ---- libc/sysdeps/wordsize-64/strtol_l.c 2003/03/03 09:45:12 1.4 -+++ libc/sysdeps/wordsize-64/strtol_l.c 2005/03/25 11:59:01 1.4.2.1 -@@ -8,7 +8,9 @@ - #undef ____strtoll_l_internal - #undef __strtoll_l - #undef strtoll_l -+#if !UNSIGNED - strong_alias (____strtol_l_internal, ____strtoll_l_internal) - libc_hidden_ver (____strtol_l_internal, ____strtoll_l_internal) - weak_alias (__strtol_l, __strtoll_l) - weak_alias (__strtol_l, strtoll_l) -+#endif -=================================================================== -RCS file: /cvs/glibc/libc/sysdeps/wordsize-64/wcstol_l.c,v -retrieving revision 1.4 -retrieving revision 1.4.2.1 -diff -u -r1.4 -r1.4.2.1 ---- libc/sysdeps/wordsize-64/wcstol_l.c 2002/08/08 11:44:51 1.4 -+++ libc/sysdeps/wordsize-64/wcstol_l.c 2005/03/25 11:59:01 1.4.2.1 -@@ -8,6 +8,8 @@ - #undef ____wcstoll_l_internal - #undef __wcstoll_l - #undef wcstoll_l -+#if !UNSIGNED - strong_alias (____wcstol_l_internal, ____wcstoll_l_internal) - weak_alias (__wcstol_l, __wcstoll_l) - weak_alias (__wcstol_l, wcstoll_l) -+#endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.5-cygwin.patch --- a/patches/glibc/2.3.5/glibc-2.3.5-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,185 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.3.x on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - -glibc-linuxthreads-2.3.5 also requires a patch, see -../glibc-linuxthreads-2.3.5/glibc-linuxthreads-2.3.5-cygwin.patch - -[ forward ported to glibc-2.3.5 by Petr Cvachoucek: - -Message-ID: <4282FCBA.3040000@unicontrols.cz> -Date: Thu, 12 May 2005 08:50:34 +0200 -From: Petr Cvachoucek -To: Dan Kegel -CC: crossgcc@sources.redhat.com -Subject: Patches to build gcc 3.4.3 / glibc 2.3.5 on cygwin - -Hi Dan, -following patches are needed to build gcc-3.4.3/glibc-2.3.5 toolchain -on cygwin. Tested to build toolchains for powerpc 604 and 750 targets. - --- - Petr Cvachoucek - Unicontrols a.s. - http://www.unicontrols.cz -] - -diff -aur glibc-2.3.5/Makeconfig glibc-2.3.5-cygwin/Makeconfig ---- glibc-2.3.5/Makeconfig 2005-02-16 11:50:19.000000000 +0100 -+++ glibc-2.3.5-cygwin/Makeconfig 2005-05-11 08:24:51.046875000 +0200 -@@ -449,7 +449,7 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # This is how to find at build-time things that will be installed there. - rpath-dirs = math elf dlfcn nss nis rt resolv crypt - endif -@@ -656,7 +656,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -712,14 +712,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(PIC-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 -+libtype.oST = lib%_nonshared.a - endif - - # The assembler can generate debug information too. -diff -aur glibc-2.3.5/Makerules glibc-2.3.5-cygwin/Makerules ---- glibc-2.3.5/Makerules 2004-12-15 19:52:39.000000000 +0100 -+++ glibc-2.3.5-cygwin/Makerules 2005-05-11 08:25:33.578125000 +0200 -@@ -416,7 +416,7 @@ - # Bounded pointer thunks are only built for *.ob - elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) \ - $(elide-bp-thunks) - elide-routines.os += $(static-only-routines) $(elide-bp-thunks) -@@ -961,7 +961,7 @@ - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -969,7 +969,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ -diff -aur glibc-2.3.5/extra-lib.mk glibc-2.3.5-cygwin/extra-lib.mk ---- glibc-2.3.5/extra-lib.mk 2004-12-02 23:54:47.000000000 +0100 -+++ glibc-2.3.5-cygwin/extra-lib.mk 2005-05-11 08:27:28.156250000 +0200 -@@ -13,7 +13,7 @@ - - ifneq (,$($(lib)-static-only-routines)) - ifneq (,$(filter yesyes%,$(build-shared)$(elf)$($(lib).so-version))) --object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oS) -+object-suffixes-$(lib) += $(filter-out $($(lib)-inhibit-o),.oST) - endif - endif - -@@ -29,7 +29,7 @@ - - # Add each flavor of library to the lists of things to build and install. - install-lib += $(foreach o,$(object-suffixes-$(lib)),$(lib:lib%=$(libtype$o))) --extra-objs += $(foreach o,$(filter-out .os .oS,$(object-suffixes-$(lib))),\ -+extra-objs += $(foreach o,$(filter-out .os .oST,$(object-suffixes-$(lib))),\ - $(patsubst %,%$o,$(filter-out \ - $($(lib)-shared-only-routines),\ - $(all-$(lib)-routines)))) -@@ -57,7 +57,7 @@ - - - # Use o-iterator.mk to generate a rule for each flavor of library. --ifneq (,$(filter-out .os .oS,$(object-suffixes-$(lib)))) -+ifneq (,$(filter-out .os .oST,$(object-suffixes-$(lib)))) - define o-iterator-doit - $(objpfx)$(patsubst %,$(libtype$o),$(lib:lib%=%)): \ - $(patsubst %,$(objpfx)%$o,\ -@@ -65,7 +65,7 @@ - $(all-$(lib)-routines))); \ - $$(build-extra-lib) - endef --object-suffixes-left = $(filter-out .os .oS,$(object-suffixes-$(lib))) -+object-suffixes-left = $(filter-out .os .oST,$(object-suffixes-$(lib))) - include $(patsubst %,$(..)o-iterator.mk,$(object-suffixes-left)) - endif - -@@ -77,9 +77,9 @@ - $(build-extra-lib) - endif - --ifneq (,$(filter .oS,$(object-suffixes-$(lib)))) --$(objpfx)$(patsubst %,$(libtype.oS),$(lib:lib%=%)): \ -- $(patsubst %,$(objpfx)%.oS,\ -+ifneq (,$(filter .oST,$(object-suffixes-$(lib)))) -+$(objpfx)$(patsubst %,$(libtype.oST),$(lib:lib%=%)): \ -+ $(patsubst %,$(objpfx)%.oST,\ - $(filter $($(lib)-static-only-routines),\ - $(all-$(lib)-routines))) - $(build-extra-lib) -diff -aur glibc-2.3.5/nptl/Makefile glibc-2.3.5-cygwin/nptl/Makefile ---- glibc-2.3.5/nptl/Makefile 2005-02-16 09:45:56.000000000 +0100 -+++ glibc-2.3.5-cygwin/nptl/Makefile 2005-05-11 08:26:01.812500000 +0200 -@@ -360,7 +360,7 @@ - - $(inst_libdir)/libpthread.so: $(common-objpfx)format.lds \ - $(objpfx)libpthread.so$(libpthread.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)pthread) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -368,7 +368,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libpthread.so$(libpthread.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)pthread)'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)pthread)'\ - ')' \ - ) > $@.new - mv -f $@.new $@ -diff -aur glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile ---- glibc-2.3.5/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-16 08:46:14.000000000 +0200 -+++ glibc-2.3.5-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile 2005-05-11 08:26:25.937500000 +0200 -@@ -10,4 +10,4 @@ - ASFLAGS-.op += -Wa,-Av9a - ASFLAGS-.og += -Wa,-Av9a - ASFLAGS-.ob += -Wa,-Av9a --ASFLAGS-.oS += -Wa,-Av9a -+ASFLAGS-.oST += -Wa,-Av9a diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.5-fix-pr631.patch --- a/patches/glibc/2.3.5/glibc-2.3.5-fix-pr631.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -From dank@kegel.com -Wed Jun 15 09:12:43 PDT 2005 - -Fixes - -build-glibc/libc.a(nsswitch.o)(.data+0x64): undefined reference to `_nss_files_getaliasent_r' -build-glibc/libc.a(nsswitch.o)(.data+0x6c): undefined reference to `_nss_files_endaliasent' -... 53 lines deleted ... -build-glibc/libc.a(nsswitch.o)(.data+0x21c): undefined reference to `_nss_files_getspnam_r' -collect2: ld returned 1 exit status -make[2]: *** [/build/gcc-3.4.3-glibc-2.3.5-hdrs-2.6.11.2/i686-unknown-linux-gnu/build-glibc/elf/ldconfig] Error 1 - -when building glibc with --enable-static-nss. - -See http://sources.redhat.com/bugzilla/show_bug.cgi?id=631 - ---- glibc-2.3.5/Makeconfig.old Wed Jun 15 08:13:12 2005 -+++ glibc-2.3.5/Makeconfig Wed Jun 15 08:13:14 2005 -@@ -487,7 +487,7 @@ - - # The static libraries. - ifeq (yes,$(build-static)) --link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(common-objpfx)libc.a -+link-libc-static = $(common-objpfx)libc.a $(static-gnulib) $(otherlibs) $(common-objpfx)libc.a - else - ifeq (yes,$(build-shared)) - # We can try to link the programs with lib*_pic.a... ---- glibc-2.3.5/elf/Makefile.old Wed Jun 15 07:46:49 2005 -+++ glibc-2.3.5/elf/Makefile Wed Jun 15 08:14:00 2005 -@@ -114,6 +114,13 @@ - install-bin-script = ldd - endif - -+ifeq (yes,$(build-static-nss)) -+nssobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)nss) -+resolvobjdir := $(patsubst ../$(subdir),.,$(common-objpfx)resolv) -+otherlibs += $(nssobjdir)/libnss_files.a $(resolvobjdir)/libnss_dns.a \ -+ $(resolvobjdir)/libresolv.a -+endif -+ - others = sprof sln - install-bin = sprof - others-static = sln diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-2.3.5-sh-memset.patch --- a/patches/glibc/2.3.5/glibc-2.3.5-sh-memset.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -[http://sources.redhat.com/ml/crossgcc/2005-10/msg00035.html] - -Message-ID: <434576E1.6020305@sscd.de> -Date: Thu, 06 Oct 2005 21:11:29 +0200 -From: Alexander Sieb -To: crossgcc@sourceware.org -Subject: Crosstool sh4-linux-gcc-4.0.2-glibc-2.3.5 patches - -Hi, - -attached you find the files I needed to add to crosstool-0.38 -in order to build a sh4-linux gcc-4.0.2-glibc-2.3.5 tool chain. - -Files attached: - -sh4-gcc4.dat: - * gcc4 needs --with-multilib-list=m4,m4-nofpu otherwise a linux - kernel won't build as it uses the -m4-nofpu option. - -gcc-pr21623.patch: - * Kaz Kojima provided a patch [really, a workaround -dank] for http://gcc.gnu.org/PR21623 - -glibc-2.3.5-sh-memset.patch: - * A patch for glibc-2.3.5 which corrects memset. From SUGIOKA Toshinobu. - See content for rationale. - --- snip -- - --- Here's patch 2 of 2, plus URLs showing where it is in CVS -- - -[http://sources.redhat.com/ml/glibc-cvs/2005-q3/msg00319.html] - -Date: 24 Jul 2005 22:54:32 -0000 -Message-ID: <20050724225432.2111.qmail@sourceware.org> -From: roland at sourceware dot org -To: glibc-cvs at sources dot redhat dot com -Subject: libc/sysdeps/sh memset.S - -CVSROOT: /cvs/glibc -Module name: libc -Changes by: roland@sources.redhat.com 2005-07-24 22:54:32 - -Modified files: - sysdeps/sh : memset.S - -Log message: - 2005-07-24 SUGIOKA Toshinobu - - * sysdeps/sh/memset.S (memset): Correct 2nd argument handling. - -[http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/sh/memset.S.diff?cvsroot=glibc&r1=1.4&r2=1.5] - -RCS file: /cvs/glibc/libc/sysdeps/sh/memset.S,v -retrieving revision 1.4 -retrieving revision 1.5 -diff -u -r1.4 -r1.5 ---- libc/sysdeps/sh/memset.S 2003/04/29 22:47:18 1.4 -+++ libc/sysdeps/sh/memset.S 2005/07/24 22:54:32 1.5 -@@ -28,6 +28,7 @@ - bt.s L_byte_loop_init - mov r4,r7 - -+ extu.b r5,r5 - swap.b r5,r1 - or r1,r5 - swap.w r5,r1 - - -[See also http://sources.redhat.com/ml/libc-alpha/2005-07/msg00051.html] diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-configure-apple-as.patch --- a/patches/glibc/2.3.5/glibc-configure-apple-as.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -http://in3www.epfl.ch/~schaffne/glibc-configure-apple-as.patch -http://sources.redhat.com/ml/crossgcc/2004-02/msg00151.html - -The following makes it possible to configure glibc-2.3.2 on Mac OS X, -where the assembler but doesn't understand the --version flag. - -Fixes the symptom -checking whether ld is GNU ld... no -checking for /usr/libexec/gcc/darwin/ppc/as... /usr/libexec/gcc/darwin/ppc/as -checking version of /usr/libexec/gcc/darwin/ppc/as... - - ---- glibc-2.3.2/configure~ Wed Feb 26 09:20:48 2003 -+++ glibc-2.3.2/configure Fri Feb 27 13:12:53 2004 -@@ -3789,7 +3789,7 @@ - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $AS" >&5 - echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 -- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ ac_prog_version=`$AS -v &1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 2.1[3-9]*) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-fp-byteorder.patch --- a/patches/glibc/2.3.5/glibc-fp-byteorder.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -Taken from http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html -Author: addsub@eyou.com -Target: ARM - -Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c -and makes printf("%f", 1.0) work. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00115.html : - It ... fixes the 'printf("%f\n", 0.5); prints 0.000000' and general 'floating point - is broken' on my big-endian hardfloat FPA ARM platform. ... - It's definitely needed for hardfloat. So I'd think it's needed for - big-endian systems in any case, and for VFP on little-endian systems - too. Someone would have to verify that though. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00123.html - I just had a look at glibc-20040830, and [this patch] is still needed and useful - for this version. glibc-20040830 out-of-the-box still contains the - following wrong assumptions: - - sysdeps/arm/bits/endian.h: float word order is big endian (which it is - not on vfp systems) - - sysdeps/arm/gmp-mparam.h: IEEE doubles are mixed endian (which they - are not on big endian systems, neither on vfp systems) - - sysdeps/arm/ieee754.h: IEEE doubles are in little endian byte order - (which they are not on big endian systems) - [This patch] seems the right solution for all of these issues. - -Dimitry Andric wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00132.html : - It's even needed for glibc CVS, AFAICS. - The patch hunk which modifies glibc.new/sysdeps/arm/bits/endian.h - (currently at version 1.4) is only needed for proper VFP operation. - But the hunk which modifies sysdeps/arm/gmp-mparam.h, and the hunk - that deletes sysdeps/arm/ieee754.h (yes, this IS correct), are needed - for proper operation of *any* FP model on big endian ARM. - -See also discussion in followups to -http://sources.redhat.com/ml/crossgcc/2004-05/msg00245.html) - -Message-ID: <276985760.37584@eyou.com> -Received: from unknown (HELO eyou.com) (172.16.2.2) - by 0.0.0.0 with SMTP; Tue, 17 Feb 2004 10:42:40 +0800 -Received: (qmail 8238 invoked by uid 65534); 17 Feb 2004 10:42:38 +0800 -Date: 17 Feb 2004 10:42:38 +0800 -Message-ID: <20040217104238.8237.qmail@eyou.com> -From: "add" -To: dank@kegel.com -Reply-To: "add" -Subject: Re:   problem while building arm vfp softfloat gcc ` - -Hi, Dan, This is a patch I applied to my glibc-2.3.2, then my softfloat -toolchain can printf("%f\n",1.0). So you may have a try of this - - -diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h ---- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400 -+++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500 -@@ -9,4 +9,9 @@ - #else - #define __BYTE_ORDER __LITTLE_ENDIAN - #endif -+ -+#ifdef __VFP_FP__ -+#define __FLOAT_WORD_ORDER __BYTE_ORDER -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN -+#endif -diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h ---- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500 -@@ -26,5 +26,13 @@ MA 02111-1307, USA. */ - #define BITS_PER_SHORTINT 16 - #define BITS_PER_CHAR 8 - --#define IEEE_DOUBLE_BIG_ENDIAN 0 --#define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#if defined(__ARMEB__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__VFP_FP__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+#else -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+# define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#endif -diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h ---- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500 -@@ -1,115 +0,0 @@ --/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _IEEE754_H -- --#define _IEEE754_H 1 --#include -- --#include -- --__BEGIN_DECLS -- --union ieee754_float -- { -- float f; -- -- /* This is the IEEE 754 single-precision format. */ -- struct -- { -- unsigned int mantissa:23; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa:22; -- unsigned int quiet_nan:1; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee_nan; -- }; -- --#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ -- -- --union ieee754_double -- { -- double d; -- -- /* This is the IEEE 754 double-precision format. */ -- struct -- { -- unsigned int mantissa0:20; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa0:19; -- unsigned int quiet_nan:1; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee_nan; -- }; -- --#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ -- -- --/* The following two structures are correct for `new' floating point systems but -- wrong for the old FPPC. The only solution seems to be to avoid their use on -- old hardware. */ -- --union ieee854_long_double -- { -- long double d; -- -- /* This is the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:32; -- } ieee; -- -- /* This is for NaNs in the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:30; -- unsigned int quiet_nan:1; -- unsigned int one:1; -- } ieee_nan; -- }; -- --#define IEEE854_LONG_DOUBLE_BIAS 0x3fff -- --__END_DECLS -- --#endif /* ieee754.h */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/glibc-mips-bootstrap-gcc-header-install.patch --- a/patches/glibc/2.3.5/glibc-mips-bootstrap-gcc-header-install.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -http://sourceware.org/ml/crossgcc/2005-05/msg00165.html -Fixes a MIPS build problem (unrelated to NPTL) - -Message-ID: <428E8B24.1000201@realitydiluted.com> -Date: Fri, 20 May 2005 20:13:08 -0500 -From: "Steven J dot Hill" -To: crossgcc at sources dot redhat dot com, toolchain at gentoo dot org, - Shay_Gal-On at pmc-sierra dot com, TheNop at gmx dot net -Subject: New NPTL patches for crosstools and MIPS NPTL patches.... - -Greetings. - -I have uploaded the latest NPTL patch for crosstool-0.34. I have also -uploaded a tarball of the patches necessary to build a MIPS NPTL -cross toolchain. To build a MIPS NPTL toolchain you will need the -released version of binutils-2.16 and the absolute latest GCC and -glibc code from the HEAD of cvs. Use the 'demo-mips-nptl.sh' script -to build the toolchain. Please report bugs or issues to the crossgcc -mailing list. Here is the link off of my FTP site: - - ftp://ftp.realitydiluted.com/crosstools/crosstool-0.34/ - -[Note: BOOTSTRAP_GCC is set by crosstool.sh when invoking make install-headers] - -diff -ur glibc-2.4.0-20050406/sysdeps/mips/mips32/Makefile glibc-2.4.0-20050406-patched/sysdeps/mips/mips32/Makefile ---- glibc-2.4.0-20050406/sysdeps/mips/mips32/Makefile 2003-03-29 02:15:28.000000000 -0600 -+++ glibc-2.4.0-20050406-patched/sysdeps/mips/mips32/Makefile 2005-04-12 21:36:51.318837655 -0500 -@@ -1,3 +1,7 @@ -+ifeq ($(filter -DBOOTSTRAP_GCC,$(CFLAGS)),) - ifeq ($(filter -mabi=32,$(CC)),) - CC += -mabi=32 - endif -+else -+CC += -D"_MIPS_SZPTR=32" -+endif diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/make-install-lib-all.patch --- a/patches/glibc/2.3.5/make-install-lib-all.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -From http://svn.exactcode.de/t2/trunk/package/base/glibc32/make-install-lib-all.patch -Rule to install all needed libraries, not just the ones installed by install-lib, -yet not install programs. -Needed because we can't use the main install target, as we can't build programs before -we have the final gcc installed; linking fails because libeh.a is not present, -and glibc insists on linking programs with that library. - -diff -Naur glibc-2.3.4.orig/Makerules glibc-2.3.4/Makerules ---- glibc-2.3.4.orig/Makerules 2004-12-15 20:52:39.000000000 +0200 -+++ glibc-2.3.4/Makerules 2005-02-19 15:16:31.415125176 +0200 -@@ -844,6 +844,13 @@ - installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\ - $(inst_libdir)/$(patsubst %,$(libtype$o),\ - $(libprefix)$(libc-name))) -+ -+install-lib-all: $(inst_slibdir)/libc.so$(libc.so-version) \ -+ $(inst_slibdir)/libc-$(version).so \ -+ $(inst_libdir)/libc.so \ -+ $(inst_libdir)/libc.a \ -+ install-lib -+ - install: $(installed-libcs) - $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force) - $(make-target-directory) diff -r 419d959441ed -r 447b203edc2e patches/glibc/2.3.5/pr758.patch --- a/patches/glibc/2.3.5/pr758.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,256 +0,0 @@ -See http://sources.redhat.com/bugzilla/show_bug.cgi?id=758 - -Submitted By: Jim Gifford (patches at jg555 dot com) -Date: 2005-02-23 -Initial Package Version: 2.3.4 -Origin: Richard Sandiford -Upstream Status: Unknown -Description: Fixes Syscall.h generation - -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/Makefile glibc-2.3.4/sysdeps/unix/sysv/linux/mips/Makefile ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/Makefile 2004-11-24 04:38:15 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/Makefile 2005-02-23 18:21:54 +0000 -@@ -9,11 +9,73 @@ - - no_syscall_list_h = 1 - --# Generate the list of SYS_* macros for the system calls (__NR_* macros). --# We generate not only SYS_, pointing at SYS__ if --# it exists, but also define SYS__ for all ABIs. -+# A callable macro that expands to a shell command. Preprocess file $(1) -+# using ABI option $(2) and see which macros it defines. Print FOO for each -+# macro of the form __NR$(3)_FOO, filtering out ABI-specific __NR macros -+# that have a prefix other than $(3). -+mips_list_syscalls = $(filter-out -m%,$(CC)) -E -x c $(+includes) \ -+ $(sysincludes) -D_LIBC -dM -mabi=$(2) $(1) | \ -+ sed -n 's@^\#define __NR$(3)_\([^ ]*\) .*@\1@p' | \ -+ sed -e '/^[ON]32_/d' -e '/^N64_/d' -e '/^64_/d' | \ -+ LC_ALL=C sort -+ -+# Generate a list of SYS_* macros from the linux __NR macros. -+# -+# Before version 2.6, linux had separate 32-bit and 64-bit MIPS ports, -+# each with its own set of headers. The ports were merged for 2.6 and -+# this merged port defines the syscalls in a slightly different way. -+# There are therefore three sets of headers that we need to consider: -+# -+# (1) Headers from the separate 32-bit MIPS port. They just define -+# a single list of __NR macros. -+# -+# (2) Headers from the separate 64-bit MIPS port. They unconditionally -+# define syscalls for all three ABIs, with o32 syscalls prefixed -+# by __NR_O32, n32 syscalls prefixed by __NR_N32 and n64 syscalls -+# prefixed by plain __NR. -+# -+# (3) Headers from the combined port. They use the _MIPS_SIM macro to -+# define the right set of syscalls for the current ABI. The syscalls -+# themselves have no special ABI prefix, but the headers also define: -+# -+# __NR_O32_Linux{,_syscalls} -+# __NR_N32_Linux{,_syscalls} -+# __NR_64_Linux{,_syscalls} -+# -+# In case (1) we just want a simple list of SYS_* macros. In cases (2) -+# and (3) we want a file that will work for all three ABIs, regardless -+# of which ABI we are currently using. We also want the file to work -+# if the user later moves from (2) to (3). Thus the file we create -+# for (2) and (3) has the form: -+# -+# #if _MIPS_SIM == _MIPS_SIM_NABI32 -+# # ifdef __NR_N32_open -+# # define SYS_n32syscall1 __NR_N32_n32syscall1 -+# # ... -+# # else -+# # define SYS_n32syscall1 __NR_n32syscall1 -+# # ... -+# # endif -+# #elif _MIPS_SIM == _MIPS_SIM_ABI64 -+# # define SYS_n64syscall1 __NR_n64syscall1 -+# # ... -+# #else -+# # ifdef __NR_O32_open -+# # define SYS_o32syscall1 __NR_O32_o32syscall1 -+# # ... -+# # else -+# # define SYS_o32syscall1 __NR_o32syscall1 -+# # ... -+# # endif -+# #endif -+# -+# Here, __NR_N32_open and __NR_O32_open are used to detect case (2) -+# over case (3). The n64 SYS_* macros can always use the normal -+# ABI-less names. - $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/mips/sys/syscall.h - $(make-target-directory) -+ $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC $< -MD -MP \ -+ -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' > /dev/null - { \ - echo '/* Generated at libc build time from kernel syscall list. */';\ - echo ''; \ -@@ -22,28 +84,38 @@ - echo '#endif'; \ - echo ''; \ - echo '#include '; \ -- rm -f $(@:.d=.h).newt; \ -- $(CC) -E -MD -MP -MF $(@:.h=.d)-t -MT '$(@:.d=.h) $(@:.h=.d)' \ -- -x c $(+includes) $(sysincludes) $< -D_LIBC -dM | \ -- sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p' \ -- > $(@:.d=.h).newt; \ -- if grep SYS_O32_ $(@:.d=.h).newt > /dev/null; then \ -+ rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \ -+ $(call mips_list_syscalls,$<,n32,_N32) > $(@:.d=.h).newn32; \ -+ if test -s $(@:.d=.h).newn32; then \ -+ if grep open $(@:.d=.h).newn32 > /dev/null; then \ -+ $(call mips_list_syscalls,$<,32,_O32) > $(@:.d=.h).new32; \ -+ $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \ -+ else \ -+ $(call mips_list_syscalls,$<,32,) > $(@:.d=.h).new32; \ -+ $(call mips_list_syscalls,$<,n32,) > $(@:.d=.h).newn32; \ -+ $(call mips_list_syscalls,$<,64,) > $(@:.d=.h).new64; \ -+ fi; \ - echo '#if _MIPS_SIM == _ABIN32'; \ -- sed -n 's/^\(#define SYS_\)N32_/\1/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort; \ -+ echo '# ifdef __NR_N32_open'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_N32_\1@' < $(@:.d=.h).newn32; \ -+ echo '# else'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).newn32; \ -+ echo '# endif'; \ - echo '#elif _MIPS_SIM == _ABI64'; \ -- sed -n 's/^\(#define SYS_\)N64_/\1/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).new64; \ - echo '#else'; \ -- sed -n 's/^\(#define SYS_\)O32_/\1/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort; \ -+ echo '# ifdef __NR_O32_open'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_O32_\1@' < $(@:.d=.h).new32; \ -+ echo '# else'; \ -+ sed 's@\(.*\)@# define SYS_\1 __NR_\1@' < $(@:.d=.h).new32; \ -+ echo '# endif'; \ - echo '#endif'; \ -- sed -n '/^#define SYS_\([ON]32\|N64\)_/p' < $(@:.d=.h).newt | \ -- LC_ALL=C sort +1.8; \ - else \ -- cat $(@:.d=.h).newt; \ -+ $(CC) -E -x c $(+includes) $(sysincludes) -D_LIBC -dM $< | \ -+ sed -n 's@^\#define __NR_\([^ ]*\) .*@\#define SYS_\1 __NR_\1@p' | \ -+ LC_ALL=C sort; \ - fi; \ -- rm $(@:.d=.h).newt; \ -+ rm -f $(@:.d=.h).new32 $(@:.d=.h).newn32 $(@:.d=.h).new64; \ - } > $(@:.d=.h).new - mv -f $(@:.d=.h).new $(@:.d=.h) - ifneq (,$(objpfx)) -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure 2004-11-24 04:42:45 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure 2005-02-23 18:10:11 +0000 -@@ -18,7 +18,7 @@ - { echo "$as_me:$LINENO: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&5 - echo "$as_me: WARNING: *** asm/unistd.h not found, it will not be pre-processed" >&2;} - echo '#include ' > asm-unistd.h -- else -+ elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then - # The point of this preprocessing is to turn __NR_ into - # __NR_N64_, as well as to define __NR_ to - # __NR__, if __NR__ is defined -@@ -68,6 +68,8 @@ - { - print; - }' -+ else -+ echo '#include ' > asm-unistd.h - fi ;; - mips*) - rm -f asm-unistd.h -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure.in glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure.in ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/configure.in 2004-11-24 04:38:31 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/configure.in 2005-02-23 18:10:11 +0000 -@@ -18,7 +18,7 @@ - if test ! -f "$asm_unistd_h"; then - AC_MSG_WARN([*** asm/unistd.h not found, it will not be pre-processed]) - echo '#include ' > asm-unistd.h -- else -+ elif grep __NR_N32_open "$asm_unistd_h" > /dev/null; then - # The point of this preprocessing is to turn __NR_ into - # __NR_N64_, as well as to define __NR_ to - # __NR__, if __NR__ is defined -@@ -68,6 +68,8 @@ - { - print; - }' -+ else -+ echo '#include ' > asm-unistd.h - fi ;; - mips*) - rm -f asm-unistd.h -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2003-03-29 08:15:29 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips32/kern64/sysdep.h 2005-02-23 18:10:11 +0000 -@@ -1,36 +0,0 @@ --/* Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H --#define _LINUX_MIPS_MIPS32_KERN64_SYSDEP_H 1 -- --/* There is some commonality. */ --#include -- --/* For Linux we can use the system call table in the header file -- /usr/include/asm/unistd.h -- of the kernel. But these symbols do not follow the SYS_* syntax -- so we have to redefine the `SYS_ify' macro here. */ --#undef SYS_ify --#ifdef __STDC__ --# define SYS_ify(syscall_name) __NR_O32_##syscall_name --#else --# define SYS_ify(syscall_name) __NR_O32_/**/syscall_name --#endif -- --#endif /* linux/mips/mips32/kern64/sysdep.h */ -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2004-10-18 05:16:07 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h 2005-02-23 18:10:11 +0000 -@@ -28,9 +28,9 @@ - so we have to redefine the `SYS_ify' macro here. */ - #undef SYS_ify - #ifdef __STDC__ --# define SYS_ify(syscall_name) __NR_N32_##syscall_name -+# define SYS_ify(syscall_name) __NR_##syscall_name - #else --# define SYS_ify(syscall_name) __NR_N32_/**/syscall_name -+# define SYS_ify(syscall_name) __NR_/**/syscall_name - #endif - - #ifdef __ASSEMBLER__ -diff -Naur glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h ---- glibc-2.3.4.orig/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2004-10-18 05:16:08 +0000 -+++ glibc-2.3.4/sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h 2005-02-23 18:10:11 +0000 -@@ -28,9 +28,9 @@ - so we have to redefine the `SYS_ify' macro here. */ - #undef SYS_ify - #ifdef __STDC__ --# define SYS_ify(syscall_name) __NR_N64_##syscall_name -+# define SYS_ify(syscall_name) __NR_##syscall_name - #else --# define SYS_ify(syscall_name) __NR_N64_/**/syscall_name -+# define SYS_ify(syscall_name) __NR_/**/syscall_name - #endif - - #ifdef __ASSEMBLER__ diff -r 419d959441ed -r 447b203edc2e patches/glibc/20040827/arm-ctl_bus_isa.patch --- a/patches/glibc/20040827/arm-ctl_bus_isa.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -Applies to both glibc-2.2.5 and glibc-2.3.2, and probably glibc cvs as of Aug 2004. -Needed to build glibc with linux kernels 2.4.23 or higher on ARM, -Fixes following error: - -../sysdeps/unix/sysv/linux/arm/ioperm.c: In function `init_iosys': -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: `BUS_ISA' undeclared (first use in this function) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (Each undeclared identifier is reported only once -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: for each function it appears in.) -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:103: error: (near initialization for `iobase_name[1]') -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: initializer element is not constant -../sysdeps/unix/sysv/linux/arm/ioperm.c:104: error: (near initialization for `ioshift_name[1]') -make[2]: *** [/home/dank/crosstool-0.28/build/arm-softfloat-linux-gnu/gcc-3.3.4-glibc-2.2.5/build-glibc/misc/ioperm.o] Error 1 - -cf. "[SYSCTL] BUS_ISA -> CTL_BUS_ISA", http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html - ---- glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c.old 2003-02-20 14:22:24.000000000 -0800 -+++ glibc-2.3.2/sysdeps/unix/sysv/linux/arm/ioperm.c 2004-01-31 16:01:50.000000000 -0800 -@@ -47,6 +47,12 @@ - #include - #include - -+/* see http://www.ussg.iu.edu/hypermail/linux/kernel/0311.0/0529.html */ -+#include -+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,23)) -+#define CTL_BUS_ISA BUS_ISA /* and hope it's not the one from linux/input.h */ -+#endif -+ - #define PATH_ARM_SYSTYPE "/etc/arm_systype" - #define PATH_CPUINFO "/proc/cpuinfo" - -@@ -80,7 +86,7 @@ - * Initialize I/O system. There are several ways to get the information - * we need. Each is tried in turn until one succeeds. - * -- * 1. Sysctl (CTL_BUS, BUS_ISA, ISA_*). This is the preferred method -+ * 1. Sysctl (CTL_BUS, CTL_BUS_ISA, ISA_*). This is the preferred method - * but not all kernels support it. - * - * 2. Read the value (not the contents) of symlink PATH_ARM_SYSTYPE. -@@ -100,8 +106,8 @@ - { - char systype[256]; - int i, n; -- static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE }; -- static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT }; -+ static int iobase_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_BASE }; -+ static int ioshift_name[] = { CTL_BUS, CTL_BUS_ISA, BUS_ISA_PORT_SHIFT }; - size_t len = sizeof(io.base); - - if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0) diff -r 419d959441ed -r 447b203edc2e patches/glibc/20040827/glibc-2.3.2-sparc64-dl-machine.patch --- a/patches/glibc/20040827/glibc-2.3.2-sparc64-dl-machine.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -See http://gcc.gnu.org/PR15345 - -Quick kludge by H.J.Lu -Works around gcc-3.4.0 error which shows up when building glibc-2.3.2 for sparc64: - -.../sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/libc.a(dl-reloc.o)(.text+0x4b4): In function `elf_machine_load_address.3': -: undefined reference to `_DYNAMIC' -collect2: ld returned 1 exit status -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/elf/sln] Error 1 - - ---- glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h.orig Sat May 8 20:54:26 2004 -+++ glibc-2.3.2/sysdeps/sparc/sparc64/dl-machine.h Sat May 8 17:18:04 2004 -@@ -65,6 +65,7 @@ - } - - /* Return the run-time load address of the shared object. */ -+#ifdef IS_IN_rtld - static inline Elf64_Addr - elf_machine_load_address (void) - { -@@ -84,6 +85,7 @@ - pc[3]*4 is l_addr + _GLOBAL_OFFSET_TABLE_ - (long)pc - 12 */ - return (Elf64_Addr) got - *got + (Elf32_Sword) ((pc[2] - pc[3]) * 4) - 4; - } -+#endif - - /* We have 4 cases to handle. And we code different code sequences - for each one. I love V9 code models... */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/20040827/glibc-2.3.3-cygwin.patch --- a/patches/glibc/20040827/glibc-2.3.3-cygwin.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -Fixes -elf/librtld.os: In function `process_envvars': : undefined reference to `__access' -... -when building glibc-2.3.3 on cygwin - -Idea from -http://sources.redhat.com/ml/bug-glibc/2002-01/msg00071/glibc-2.2-cygin-shared.patch -Basically, make glibc use .oST as suffix for 'object static' -instead of .oS, since cygwin has trouble distinguishing .os from .oS -(Original patch had .on, but .oST is more mnemonic for 'object static') - -glibc-linuxthreads-2.3.3 also requires a patch, see -../glibc-linuxthreads-2.3.3/glibc-linuxthreads-2.3.3-cygwin.patch - -[ Rediffed against glibc-2.3.3 ] - - -diff -aur glibc-2.3.3/Makeconfig glibc-2.3.3-cygwin/Makeconfig ---- glibc-2.3.3/Makeconfig 2003-09-17 01:36:10.000000000 -0700 -+++ glibc-2.3.3-cygwin/Makeconfig 2004-08-27 20:34:43.000000000 -0700 -@@ -439,13 +439,13 @@ - # run the linked programs. - link-libc = -Wl,-rpath-link=$(rpath-link) \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - # This is how to find at build-time things that will be installed there. - rpath-dirs = math elf dlfcn nss nis rt resolv crypt - else - ifneq (,$(filter aix aix%,$(config-os))) - link-libc = $(common-objpfx)libc.a \ -- $(common-objpfx)$(patsubst %,$(libtype.oS),c) $(gnulib) -+ $(common-objpfx)$(patsubst %,$(libtype.oST),c) $(gnulib) - rpath-dirs = math dlfcn nss nis rt resolv crypt - endif - endif -@@ -658,7 +658,7 @@ - # The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX}) - # to pass different flags for each flavor. - libtypes = $(foreach o,$(object-suffixes-for-libc),$(libtype$o)) --all-object-suffixes := .o .os .op .og .ob .oS -+all-object-suffixes := .o .os .op .og .ob .oST - object-suffixes := - CPPFLAGS-.o = $(pic-default) - CFLAGS-.o = $(filter %frame-pointer,$(+cflags)) -@@ -714,14 +714,14 @@ - - ifeq (yes,$(build-shared)) - # Build special library that contains the static-only routines for libc. --object-suffixes-for-libc += .oS -+object-suffixes-for-libc += .oST - - # Must build the routines as PIC, though, because they can end up in (users') - # shared objects. We don't want to use CFLAGS-os because users may, for - # example, make that processor-specific. --CFLAGS-.oS = $(CFLAGS-.o) $(PIC-ccflag) --CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 --libtype.oS = lib%_nonshared.a -+CFLAGS-.oST = $(CFLAGS-.o) $(pic-ccflag) -+CPPFLAGS-.oST = $(CPPFLAGS-.o) -DPIC -DLIBC_NONSHARED=1 -+libtype.oST = lib%_nonshared.a - endif - - # The assembler can generate debug information too. -diff -aur glibc-2.3.3/Makerules glibc-2.3.3-cygwin/Makerules ---- glibc-2.3.3/Makerules 2003-10-31 16:35:57.000000000 -0800 -+++ glibc-2.3.3-cygwin/Makerules 2004-08-27 20:33:47.000000000 -0700 -@@ -414,7 +414,7 @@ - # Bounded pointer thunks are only built for *.ob - elide-bp-thunks = $(addprefix $(bppfx),$(bp-thunks)) - --elide-routines.oS += $(filter-out $(static-only-routines),\ -+elide-routines.oST += $(filter-out $(static-only-routines),\ - $(routines) $(aux) $(sysdep_routines)) \ - $(elide-bp-thunks) - elide-routines.os += $(static-only-routines) $(elide-bp-thunks) -@@ -934,7 +934,7 @@ - install: $(inst_libdir)/libc.so - $(inst_libdir)/libc.so: $(common-objpfx)format.lds \ - $(common-objpfx)libc.so$(libc.so-version) \ -- $(inst_libdir)/$(patsubst %,$(libtype.oS),\ -+ $(inst_libdir)/$(patsubst %,$(libtype.oST),\ - $(libprefix)$(libc-name)) \ - $(+force) - (echo '/* GNU ld script';\ -@@ -942,7 +942,7 @@ - echo ' the static library, so try that secondarily. */';\ - cat $<; \ - echo 'GROUP ( $(slibdir)/libc.so$(libc.so-version)' \ -- '$(libdir)/$(patsubst %,$(libtype.oS),$(libprefix)$(libc-name))'\ -+ '$(libdir)/$(patsubst %,$(libtype.oST),$(libprefix)$(libc-name))'\ - ')' \ - ) > $@.new - mv -f $@.new $@ -diff -aur glibc-2.3.3/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.3.3-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile ---- glibc-2.3.3/sysdeps/sparc/sparc32/sparcv9/Makefile 2002-08-29 03:41:15.000000000 -0700 -+++ glibc-2.3.3-cygwin/sysdeps/sparc/sparc32/sparcv9/Makefile 2004-08-27 20:35:43.000000000 -0700 -@@ -10,4 +10,4 @@ - ASFLAGS-.op += -Wa,-Av9a - ASFLAGS-.og += -Wa,-Av9a - ASFLAGS-.ob += -Wa,-Av9a --ASFLAGS-.oS += -Wa,-Av9a -+ASFLAGS-.oST += -Wa,-Av9a diff -r 419d959441ed -r 447b203edc2e patches/glibc/20040827/glibc-2.3.3-libeh-kludge.patch --- a/patches/glibc/20040827/glibc-2.3.3-libeh-kludge.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -wget "http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2003-09&msgid=20030911190500.GE12344%40sunsite.ms.mff.cuni.cz" -aka http://sources.redhat.com/ml/libc-alpha/2003-09/msg00104.html - -This seems to fix the error - gcc-3.4.1-glibc-2.3.3/lib/gcc/powerpc-7400-linux-gnu/3.4.1/../../../../powerpc-7400-linux-gnu/bin/ld: cannot find -lgcc_eh - make[1]: *** [build/powerpc-7400-linux-gnu/gcc-3.4.1-glibc-2.3.3/build-glibc/libc.so] Error 1 -but I assume it will cause trouble with nptl, since it's so violent - -FIXME: once we figure out why this patch is wrong, fix it right :-) - -Rediffed against glibc-20040822 - - ---- glibc-20040822/Makeconfig.orig 2004-08-04 20:34:28.000000000 -0700 -+++ glibc-20040822/Makeconfig 2004-08-24 07:36:49.000000000 -0700 -@@ -527,8 +527,8 @@ - libgcc_eh := -Wl,--as-needed -lgcc_s$(libgcc_s_suffix) -Wl,--no-as-needed - endif - ifneq ($(have-cc-with-libunwind),yes) -- gnulib := -lgcc $(libgcc_eh) -- static-gnulib := -lgcc -lgcc_eh -+ gnulib := -lgcc -+ static-gnulib := -lgcc - else - gnulib := -lgcc $(libgcc_eh) -lunwind - static-gnulib := -lgcc -lgcc_eh -lunwind diff -r 419d959441ed -r 447b203edc2e patches/glibc/20040827/glibc-configure-apple-as.patch --- a/patches/glibc/20040827/glibc-configure-apple-as.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -http://in3www.epfl.ch/~schaffne/glibc-configure-apple-as.patch -http://sources.redhat.com/ml/crossgcc/2004-02/msg00151.html - -The following makes it possible to configure glibc-2.3.2 on Mac OS X, -where the assembler but doesn't understand the --version flag. - -Fixes the symptom -checking whether ld is GNU ld... no -checking for /usr/libexec/gcc/darwin/ppc/as... /usr/libexec/gcc/darwin/ppc/as -checking version of /usr/libexec/gcc/darwin/ppc/as... - - ---- glibc-2.3.2/configure~ Wed Feb 26 09:20:48 2003 -+++ glibc-2.3.2/configure Fri Feb 27 13:12:53 2004 -@@ -3789,7 +3789,7 @@ - # Found it, now check the version. - echo "$as_me:$LINENO: checking version of $AS" >&5 - echo $ECHO_N "checking version of $AS... $ECHO_C" >&6 -- ac_prog_version=`$AS --version 2>&1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ ac_prog_version=`$AS -v &1 | sed -n 's/^.*GNU assembler.* \([0-9]*\.[0-9.]*\).*$/\1/p'` - case $ac_prog_version in - '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; - 2.1[3-9]*) diff -r 419d959441ed -r 447b203edc2e patches/glibc/20040827/glibc-fp-byteorder.patch --- a/patches/glibc/20040827/glibc-fp-byteorder.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -Taken from http://sources.redhat.com/ml/crossgcc/2004-02/msg00104.html -Author: addsub@eyou.com -Target: ARM - -Fixes http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.c-torture/execute/920501-8.c -and makes printf("%f", 1.0) work. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00115.html : - It ... fixes the 'printf("%f\n", 0.5); prints 0.000000' and general 'floating point - is broken' on my big-endian hardfloat FPA ARM platform. ... - It's definitely needed for hardfloat. So I'd think it's needed for - big-endian systems in any case, and for VFP on little-endian systems - too. Someone would have to verify that though. - -Lennert Buytenhek wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00123.html - I just had a look at glibc-20040830, and [this patch] is still needed and useful - for this version. glibc-20040830 out-of-the-box still contains the - following wrong assumptions: - - sysdeps/arm/bits/endian.h: float word order is big endian (which it is - not on vfp systems) - - sysdeps/arm/gmp-mparam.h: IEEE doubles are mixed endian (which they - are not on big endian systems, neither on vfp systems) - - sysdeps/arm/ieee754.h: IEEE doubles are in little endian byte order - (which they are not on big endian systems) - [This patch] seems the right solution for all of these issues. - -Dimitry Andric wrote in http://sources.redhat.com/ml/crossgcc/2004-09/msg00132.html : - It's even needed for glibc CVS, AFAICS. - The patch hunk which modifies glibc.new/sysdeps/arm/bits/endian.h - (currently at version 1.4) is only needed for proper VFP operation. - But the hunk which modifies sysdeps/arm/gmp-mparam.h, and the hunk - that deletes sysdeps/arm/ieee754.h (yes, this IS correct), are needed - for proper operation of *any* FP model on big endian ARM. - -See also discussion in followups to -http://sources.redhat.com/ml/crossgcc/2004-05/msg00245.html) - -Message-ID: <276985760.37584@eyou.com> -Received: from unknown (HELO eyou.com) (172.16.2.2) - by 0.0.0.0 with SMTP; Tue, 17 Feb 2004 10:42:40 +0800 -Received: (qmail 8238 invoked by uid 65534); 17 Feb 2004 10:42:38 +0800 -Date: 17 Feb 2004 10:42:38 +0800 -Message-ID: <20040217104238.8237.qmail@eyou.com> -From: "add" -To: dank@kegel.com -Reply-To: "add" -Subject: Re:   problem while building arm vfp softfloat gcc ` - -Hi, Dan, This is a patch I applied to my glibc-2.3.2, then my softfloat -toolchain can printf("%f\n",1.0). So you may have a try of this - - -diff -uNrp glibc.old/sysdeps/arm/bits/endian.h glibc.new/sysdeps/arm/bits/endian.h ---- glibc.old/sysdeps/arm/bits/endian.h 1999-04-12 11:59:13.000000000 -0400 -+++ glibc.new/sysdeps/arm/bits/endian.h 2004-02-12 09:15:13.000000000 -0500 -@@ -9,4 +9,9 @@ - #else - #define __BYTE_ORDER __LITTLE_ENDIAN - #endif -+ -+#ifdef __VFP_FP__ -+#define __FLOAT_WORD_ORDER __BYTE_ORDER -+#else - #define __FLOAT_WORD_ORDER __BIG_ENDIAN -+#endif -diff -uNrp glibc.old/sysdeps/arm/gmp-mparam.h glibc.new/sysdeps/arm/gmp-mparam.h ---- glibc.old/sysdeps/arm/gmp-mparam.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/gmp-mparam.h 2004-02-12 09:15:13.000000000 -0500 -@@ -26,5 +26,13 @@ MA 02111-1307, USA. */ - #define BITS_PER_SHORTINT 16 - #define BITS_PER_CHAR 8 - --#define IEEE_DOUBLE_BIG_ENDIAN 0 --#define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#if defined(__ARMEB__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 1 -+#elif defined(__VFP_FP__) -+# define IEEE_DOUBLE_MIXED_ENDIAN 0 -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+#else -+# define IEEE_DOUBLE_BIG_ENDIAN 0 -+# define IEEE_DOUBLE_MIXED_ENDIAN 1 -+#endif -diff -uNrp glibc.old/sysdeps/arm/ieee754.h glibc.new/sysdeps/arm/ieee754.h ---- glibc.old/sysdeps/arm/ieee754.h 2001-07-07 15:21:19.000000000 -0400 -+++ glibc.new/sysdeps/arm/ieee754.h 1969-12-31 19:00:00.000000000 -0500 -@@ -1,115 +0,0 @@ --/* Copyright (C) 1992, 1995, 1996, 1998 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C 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 -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _IEEE754_H -- --#define _IEEE754_H 1 --#include -- --#include -- --__BEGIN_DECLS -- --union ieee754_float -- { -- float f; -- -- /* This is the IEEE 754 single-precision format. */ -- struct -- { -- unsigned int mantissa:23; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa:22; -- unsigned int quiet_nan:1; -- unsigned int exponent:8; -- unsigned int negative:1; -- } ieee_nan; -- }; -- --#define IEEE754_FLOAT_BIAS 0x7f /* Added to exponent. */ -- -- --union ieee754_double -- { -- double d; -- -- /* This is the IEEE 754 double-precision format. */ -- struct -- { -- unsigned int mantissa0:20; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee; -- -- /* This format makes it easier to see if a NaN is a signalling NaN. */ -- struct -- { -- unsigned int mantissa0:19; -- unsigned int quiet_nan:1; -- unsigned int exponent:11; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- } ieee_nan; -- }; -- --#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ -- -- --/* The following two structures are correct for `new' floating point systems but -- wrong for the old FPPC. The only solution seems to be to avoid their use on -- old hardware. */ -- --union ieee854_long_double -- { -- long double d; -- -- /* This is the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:32; -- } ieee; -- -- /* This is for NaNs in the IEEE 854 double-extended-precision format. */ -- struct -- { -- unsigned int exponent:15; -- unsigned int empty:16; -- unsigned int negative:1; -- unsigned int mantissa1:32; -- unsigned int mantissa0:30; -- unsigned int quiet_nan:1; -- unsigned int one:1; -- } ieee_nan; -- }; -- --#define IEEE854_LONG_DOUBLE_BIAS 0x3fff -- --__END_DECLS -- --#endif /* ieee754.h */ diff -r 419d959441ed -r 447b203edc2e patches/glibc/20050502/make-install-lib-all.patch --- a/patches/glibc/20050502/make-install-lib-all.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -From http://svn.exactcode.de/t2/trunk/package/base/glibc32/make-install-lib-all.patch -Rule to install all needed libraries, not just the ones installed by install-lib, -yet not install programs. -Needed because we can't use the main install target, as we can't build programs before -we have the final gcc installed; linking fails because libeh.a is not present, -and glibc insists on linking programs with that library. - -diff -Naur glibc-2.3.4.orig/Makerules glibc-2.3.4/Makerules ---- glibc-2.3.4.orig/Makerules 2004-12-15 20:52:39.000000000 +0200 -+++ glibc-2.3.4/Makerules 2005-02-19 15:16:31.415125176 +0200 -@@ -844,6 +844,13 @@ - installed-libcs := $(foreach o,$(filter-out .os,$(object-suffixes-for-libc)),\ - $(inst_libdir)/$(patsubst %,$(libtype$o),\ - $(libprefix)$(libc-name))) -+ -+install-lib-all: $(inst_slibdir)/libc.so$(libc.so-version) \ -+ $(inst_slibdir)/libc-$(version).so \ -+ $(inst_libdir)/libc.so \ -+ $(inst_libdir)/libc.a \ -+ install-lib -+ - install: $(installed-libcs) - $(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib $(+force) - $(make-target-directory) diff -r 419d959441ed -r 447b203edc2e patches/glibc/compat-2.1/rh62-09-glibc-compat-2.1.3-security2.patch --- a/patches/glibc/compat-2.1/rh62-09-glibc-compat-2.1.3-security2.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -2002-07-05 Tomohiro Kato - - * glibc-compat/nss_dns/dns-network.c (getanswer_r): Reduce - linebuflen in parallel to bumping up the buffer pointer. - * glibc-compat/nss_dns/dns-host.c (getanswer_r): Likewise. - Compare n with linebuflen instead of buflen. - -2002-07-02 Andreas Schwab - - * resolv/nss_dns/dns-network.c (getanswer_r): Reduce linebuflen - in parallel to bumping up the buffer pointer. - ---- libc/glibc-compat/nss_dns/dns-network.c.jj Wed Jan 10 11:58:20 2001 -+++ libc/glibc-compat/nss_dns/dns-network.c Tue Jul 9 10:31:15 2002 -@@ -283,7 +283,9 @@ getanswer_r (const querybuf *answer, int - } - cp += n; - *alias_pointer++ = bp; -- bp += strlen (bp) + 1; -+ n = strlen (bp) + 1; -+ bp += n; -+ linebuflen -= n; - result->n_addrtype = class == C_IN ? AF_INET : AF_UNSPEC; - ++have_answer; - } ---- libc/glibc-compat/nss_dns/dns-host.c.jj Wed Jan 10 11:58:20 2001 -+++ libc/glibc-compat/nss_dns/dns-host.c Tue Jul 9 10:36:41 2002 -@@ -424,7 +424,7 @@ getanswer_r (const querybuf *answer, int - linebuflen -= n; - /* Get canonical name. */ - n = strlen (tbuf) + 1; /* For the \0. */ -- if ((size_t) n > buflen || n >= MAXHOSTNAMELEN) -+ if ((size_t) n > linebuflen || n >= MAXHOSTNAMELEN) - { - ++had_error; - continue; -@@ -447,7 +447,7 @@ getanswer_r (const querybuf *answer, int - cp += n; - /* Get canonical name. */ - n = strlen (tbuf) + 1; /* For the \0. */ -- if ((size_t) n > buflen || n >= MAXHOSTNAMELEN) -+ if ((size_t) n > linebuflen || n >= MAXHOSTNAMELEN) - { - ++had_error; - continue; -@@ -542,6 +542,7 @@ getanswer_r (const querybuf *answer, int - linebuflen -= nn; - } - -+ linebuflen -= sizeof (align) - ((u_long) bp % sizeof (align)); - bp += sizeof (align) - ((u_long) bp % sizeof (align)); - - if (n >= linebuflen) -#--- libc/resolv/nss_dns/dns-network.c.jj Mon Jul 9 14:59:24 2001 -#+++ libc/resolv/nss_dns/dns-network.c Tue Jul 9 10:30:31 2002 -#@@ -328,7 +328,9 @@ getanswer_r (const querybuf *answer, int -# } -# cp += n; -# *alias_pointer++ = bp; -#- bp += strlen (bp) + 1; -#+ n = strlen (bp) + 1; -#+ bp += n; -#+ linebuflen -= n; -# result->n_addrtype = class == C_IN ? AF_INET : AF_UNSPEC; -# ++have_answer; -# } diff -r 419d959441ed -r 447b203edc2e patches/glibc/compat-2.1/rh62-12-glibc-compat-2.1.3-maxpacket.patch --- a/patches/glibc/compat-2.1/rh62-12-glibc-compat-2.1.3-maxpacket.patch Tue Aug 14 19:32:22 2007 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,512 +0,0 @@ -#--- libc/resolv/nss_dns/dns-host.c.jj Tue Sep 14 03:05:08 1999 -#+++ libc/resolv/nss_dns/dns-host.c Thu Oct 10 13:07:33 2002 -#@@ -129,9 +129,10 @@ _nss_dns_gethostbyname2_r (const char *n -# char *buffer, size_t buflen, int *errnop, -# int *h_errnop) -# { -#- querybuf host_buffer; -#+ querybuf *host_buffer; -# int size, type, n; -# const char *cp; -#+ enum nss_status status; -# -# switch (af) { -# case AF_INET: -#@@ -159,16 +160,25 @@ _nss_dns_gethostbyname2_r (const char *n -# if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL) -# name = cp; -# -#- n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf)); -#+ host_buffer = (querybuf *) malloc (sizeof (*host_buffer)); -#+ if (host_buffer == NULL) { -#+ *errnop = ENOMEM; -#+ return NSS_STATUS_UNAVAIL; -#+ } -#+ -#+ n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf)); -# if (n < 0) -# { -# *h_errnop = h_errno; -# *errnop = *h_errnop == TRY_AGAIN ? EAGAIN : ENOENT; -#+ free (host_buffer); -# return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -# } -# -#- return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen, -#- errnop, h_errnop); -#+ status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen, -#+ errnop, h_errnop); -#+ free (host_buffer); -#+ return status; -# } -# -# -#@@ -205,7 +215,7 @@ _nss_dns_gethostbyaddr_r (const char *ad -# char *h_addr_ptrs[MAX_NR_ADDRS + 1]; -# char linebuffer[0]; -# } *host_data = (struct host_data *) buffer; -#- querybuf host_buffer; -#+ querybuf *host_buffer; -# char qbuf[MAXDNAME+1], *qp; -# size_t size; -# int n, status; -#@@ -257,17 +267,25 @@ _nss_dns_gethostbyaddr_r (const char *ad -# /* Cannot happen. */ -# } -# -#- n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf, -#- sizeof host_buffer); -#+ host_buffer = (querybuf *) malloc (sizeof (*host_buffer)); -#+ if (host_buffer == NULL) { -#+ *errnop = ENOMEM; -#+ return NSS_STATUS_UNAVAIL; -#+ } -#+ -#+ n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf, -#+ sizeof (host_buffer->buf)); -# if (n < 0) -# { -# *h_errnop = h_errno; -# *errnop = errno; -#+ free (host_buffer); -# return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -# } -# -#- status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen, -#+ status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen, -# errnop, h_errnop); -#+ free (host_buffer); -# if (status != NSS_STATUS_SUCCESS) -# { -# *h_errnop = h_errno; -#--- libc/resolv/nss_dns/dns-network.c.jj Wed Jun 30 12:01:14 1999 -#+++ libc/resolv/nss_dns/dns-network.c Thu Oct 10 13:09:49 2002 -#@@ -113,24 +113,36 @@ _nss_dns_getnetbyname_r (const char *nam -# char *buffer, size_t buflen, int *errnop) -# { -# /* Return entry for network with NAME. */ -#- querybuf net_buffer; -#+ querybuf *net_buffer; -# int anslen; -# char *qbuf; -#+ enum nss_status status; -# -# qbuf = strdupa (name); -#- anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -#- sizeof (querybuf)); -#+ -#+ net_buffer = (querybuf *) malloc (sizeof (*net_buffer)); -#+ if (net_buffer == NULL) -#+ { -#+ *errnop = ENOMEM; -#+ return NSS_STATUS_UNAVAIL; -#+ } -#+ -#+ anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf, -#+ sizeof (net_buffer->buf)); -# if (anslen < 0) -# { -# /* Nothing found. */ -# *errnop = errno; -#+ free (net_buffer); -# return (errno == ECONNREFUSED -# || errno == EPFNOSUPPORT -# || errno == EAFNOSUPPORT) -# ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -# } -# -#- return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME); -#+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME); -#+ free (net_buffer); -#+ return status; -# } -# -# -#@@ -140,7 +152,7 @@ _nss_dns_getnetbyaddr_r (long net, int t -# { -# /* Return entry for network with NAME. */ -# enum nss_status status; -#- querybuf net_buffer; -#+ querybuf *net_buffer; -# unsigned int net_bytes[4]; -# char qbuf[MAXDNAME]; -# int cnt, anslen; -#@@ -176,19 +188,28 @@ _nss_dns_getnetbyaddr_r (long net, int t -# break; -# } -# -#- anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -#- sizeof (querybuf)); -#+ net_buffer = (querybuf *) malloc (sizeof (*net_buffer)); -#+ if (net_buffer == NULL) -#+ { -#+ *errnop = ENOMEM; -#+ return NSS_STATUS_UNAVAIL; -#+ } -#+ -#+ anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf, -#+ sizeof (net_buffer->buf)); -# if (anslen < 0) -# { -# /* Nothing found. */ -# *errnop = errno; -#+ free (net_buffer); -# return (errno == ECONNREFUSED -# || errno == EPFNOSUPPORT -# || errno == EAFNOSUPPORT) -# ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -# } -# -#- status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR); -#+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR); -#+ free (net_buffer); -# if (status == NSS_STATUS_SUCCESS) -# { -# /* Strip trailing zeros. */ -#--- libc/resolv/res_query.c.jj Wed Jun 30 12:01:06 1999 -#+++ libc/resolv/res_query.c Thu Oct 10 13:01:12 2002 -#@@ -106,7 +106,7 @@ res_query(name, class, type, answer, ans -# u_char *answer; /* buffer to put answer */ -# int anslen; /* size of answer buffer */ -# { -#- u_char buf[MAXPACKET]; -#+ u_char *buf; -# register HEADER *hp = (HEADER *) answer; -# int n; -# -#@@ -121,17 +121,25 @@ res_query(name, class, type, answer, ans -# printf(";; res_query(%s, %d, %d)\n", name, class, type); -# #endif -# -#+ buf = malloc (MAXPACKET); -#+ if (buf == NULL) { -#+ __set_h_errno (NETDB_INTERNAL); -#+ return -1; -#+ } -#+ -# n = res_mkquery(QUERY, name, class, type, NULL, 0, NULL, -#- buf, sizeof(buf)); -#+ buf, MAXPACKET); -# if (n <= 0) { -# #ifdef DEBUG -# if (_res.options & RES_DEBUG) -# printf(";; res_query: mkquery failed\n"); -# #endif -# __set_h_errno (NO_RECOVERY); -#+ free (buf); -# return (n); -# } -# n = res_send(buf, n, answer, anslen); -#+ free (buf); -# if (n < 0) { -# #ifdef DEBUG -# if (_res.options & RES_DEBUG) -#--- libc/resolv/gethnamaddr.c.jj Tue Dec 7 11:50:36 1999 -#+++ libc/resolv/gethnamaddr.c Thu Oct 10 15:05:50 2002 -#@@ -512,10 +512,11 @@ gethostbyname2(name, af) -# const char *name; -# int af; -# { -#- querybuf buf; -#+ querybuf *buf; -# register const char *cp; -# char *bp; -# int n, size, type, len; -#+ struct hostent *ret; -# extern struct hostent *_gethtbyname2(); -# -# if ((_res.options & RES_INIT) == 0 && res_init() == -1) { -#@@ -617,13 +618,22 @@ gethostbyname2(name, af) -# break; -# } -# -#- if ((n = res_search(name, C_IN, type, buf.buf, sizeof(buf.buf))) < 0) { -#+ buf = (querybuf *) malloc (sizeof (*buf)); -#+ if (buf == NULL) { -#+ __set_h_errno (NETDB_INTERNAL); -#+ return NULL; -#+ } -#+ -#+ if ((n = res_search(name, C_IN, type, buf->buf, sizeof(buf->buf))) < 0) { -#+ free (buf); -# dprintf("res_search failed (%d)\n", n); -# if (errno == ECONNREFUSED) -# return (_gethtbyname2(name, af)); -# return (NULL); -# } -#- return (getanswer(&buf, n, name, type)); -#+ ret = getanswer(buf, n, name, type); -#+ free (buf); -#+ return ret; -# } -# -# struct hostent * -#@@ -636,7 +646,7 @@ gethostbyaddr(addr, len, af) -# static const u_char mapped[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0xff,0xff }; -# static const u_char tunnelled[] = { 0,0, 0,0, 0,0, 0,0, 0,0, 0,0 }; -# int n, size; -#- querybuf buf; -#+ querybuf *buf; -# register struct hostent *hp; -# char qbuf[MAXDNAME+1], *qp; -# #ifdef SUNSECURITY -#@@ -697,14 +707,24 @@ gethostbyaddr(addr, len, af) -# default: -# abort(); -# } -#- n = res_query(qbuf, C_IN, T_PTR, (u_char *)buf.buf, sizeof buf.buf); -#+ -#+ buf = (querybuf *) malloc (sizeof (*buf)); -#+ if (buf == NULL) { -#+ __set_h_errno (NETDB_INTERNAL); -#+ return NULL; -#+ } -#+ -#+ n = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof buf->buf); -# if (n < 0) { -#+ free (buf); -# dprintf("res_query failed (%d)\n", n); -# if (errno == ECONNREFUSED) -# return (_gethtbyaddr(addr, len, af)); -# return (NULL); -# } -#- if (!(hp = getanswer(&buf, n, qbuf, T_PTR))) -#+ hp = getanswer(buf, n, qbuf, T_PTR); -#+ free (buf); -#+ if (!hp) -# return (NULL); /* h_errno was set by getanswer() */ -# #ifdef SUNSECURITY -# if (af == AF_INET) { -#--- libc/resolv/getnetnamadr.c.jj Wed Jun 30 12:00:50 1999 -#+++ libc/resolv/getnetnamadr.c Thu Oct 10 13:14:01 2002 -#@@ -210,7 +210,7 @@ getnetbyaddr(net, net_type) -# { -# unsigned int netbr[4]; -# int nn, anslen; -#- querybuf buf; -#+ querybuf *buf; -# char qbuf[MAXDNAME]; -# u_int32_t net2; /* Changed from unsigned long --roland */ -# struct netent *net_entry; -#@@ -236,8 +236,15 @@ getnetbyaddr(net, net_type) -# netbr[1], netbr[0]); -# break; -# } -#- anslen = res_query(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf)); -#+ -#+ buf = (querybuf *) malloc (sizeof (*buf)); -#+ if (buf == NULL) { -#+ return NULL; -#+ } -#+ -#+ anslen = res_query(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf)); -# if (anslen < 0) { -#+ free (buf); -# #ifdef DEBUG -# if (_res.options & RES_DEBUG) -# printf("res_query failed\n"); -#@@ -246,7 +253,8 @@ getnetbyaddr(net, net_type) -# return (_getnetbyaddr(net, net_type)); -# return (NULL); -# } -#- net_entry = getnetanswer(&buf, anslen, BYADDR); -#+ net_entry = getnetanswer(buf, anslen, BYADDR); -#+ free (buf); -# if (net_entry) { -# unsigned u_net = net; /* maybe net should be unsigned ? */ -# -#@@ -264,7 +272,7 @@ getnetbyname(net) -# register const char *net; -# { -# int anslen; -#- querybuf buf; -#+ querybuf *buf; -# char qbuf[MAXDNAME]; -# struct netent *net_entry; -# -#@@ -273,8 +281,13 @@ getnetbyname(net) -# return (NULL); -# } -# strcpy(&qbuf[0], net); -#- anslen = res_search(qbuf, C_IN, T_PTR, (u_char *)&buf, sizeof(buf)); -#+ buf = (querybuf *) malloc (sizeof (*buf)); -#+ if (buf == NULL) { -#+ return NULL; -#+ } -#+ anslen = res_search(qbuf, C_IN, T_PTR, buf->buf, sizeof(buf->buf)); -# if (anslen < 0) { -#+ free (buf); -# #ifdef DEBUG -# if (_res.options & RES_DEBUG) -# printf("res_query failed\n"); -#@@ -283,7 +296,8 @@ getnetbyname(net) -# return (_getnetbyname(net)); -# return (_getnetbyname(net)); -# } -#- net_entry = getnetanswer(&buf, anslen, BYNAME); -#+ net_entry = getnetanswer(buf, anslen, BYNAME); -#+ free (buf); -# if (net_entry) -# return (net_entry); -# return (_getnetbyname(net)); ---- libc/glibc-compat/nss_dns/dns-host.c.jj Mon Jan 3 20:07:08 2000 -+++ libc/glibc-compat/nss_dns/dns-host.c Thu Oct 10 12:46:24 2002 -@@ -126,9 +126,10 @@ enum nss_status - _nss_dns_gethostbyname2_r (const char *name, int af, struct hostent *result, - char *buffer, size_t buflen, int *h_errnop) - { -- querybuf host_buffer; -+ querybuf *host_buffer; - int size, type, n; - const char *cp; -+ enum nss_status status; - - switch (af) { - case AF_INET: -@@ -156,15 +157,22 @@ _nss_dns_gethostbyname2_r (const char *n - if (strchr (name, '.') == NULL && (cp = __hostalias (name)) != NULL) - name = cp; - -- n = res_search (name, C_IN, type, host_buffer.buf, sizeof (host_buffer.buf)); -+ host_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (host_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ n = res_search (name, C_IN, type, host_buffer->buf, sizeof (host_buffer->buf)); - if (n < 0) - { - *h_errnop = h_errno; -+ free (host_buffer); - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- return getanswer_r (&host_buffer, n, name, type, result, buffer, buflen, -- h_errnop); -+ status = getanswer_r (host_buffer, n, name, type, result, buffer, buflen, -+ h_errnop); -+ free (host_buffer); -+ return status; - } - - -@@ -200,7 +208,7 @@ _nss_dns_gethostbyaddr_r (const char *ad - char *h_addr_ptrs[MAX_NR_ADDRS + 1]; - char linebuffer[0]; - } *host_data = (struct host_data *) buffer; -- querybuf host_buffer; -+ querybuf *host_buffer; - char qbuf[MAXDNAME+1], *qp; - int size, n, status; - -@@ -251,16 +259,22 @@ _nss_dns_gethostbyaddr_r (const char *ad - /* Cannot happen. */ - } - -- n = res_query (qbuf, C_IN, T_PTR, (u_char *)host_buffer.buf, -- sizeof host_buffer); -+ host_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (host_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ n = res_query (qbuf, C_IN, T_PTR, host_buffer->buf, -+ sizeof (host_buffer->buf)); - if (n < 0) - { - *h_errnop = h_errno; -+ free (host_buffer); - return errno == ECONNREFUSED ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; - } - -- status = getanswer_r (&host_buffer, n, qbuf, T_PTR, result, buffer, buflen, -+ status = getanswer_r (host_buffer, n, qbuf, T_PTR, result, buffer, buflen, - h_errnop); -+ free (host_buffer); - if (status != NSS_STATUS_SUCCESS) - { - *h_errnop = h_errno; ---- libc/glibc-compat/nss_dns/dns-network.c.jj Mon Jan 3 20:07:08 2000 -+++ libc/glibc-compat/nss_dns/dns-network.c Thu Oct 10 12:46:24 2002 -@@ -107,21 +107,32 @@ _nss_dns_getnetbyname_r (const char *nam - char *buffer, size_t buflen) - { - /* Return entry for network with NAME. */ -- querybuf net_buffer; -+ querybuf *net_buffer; - int anslen; - char *qbuf; -+ enum nss_status status; - - qbuf = strdupa (name); -- anslen = res_search (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -- sizeof (querybuf)); -+ -+ net_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (net_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ anslen = res_search (qbuf, C_IN, T_PTR, net_buffer->buf, -+ sizeof (net_buffer->buf)); - if (anslen < 0) -- /* Nothing found. */ -- return (errno == ECONNREFUSED -- || errno == EPFNOSUPPORT -- || errno == EAFNOSUPPORT) -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ { -+ free (net_buffer); -+ /* Nothing found. */ -+ return (errno == ECONNREFUSED -+ || errno == EPFNOSUPPORT -+ || errno == EAFNOSUPPORT) -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ } - -- return getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYNAME); -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYNAME); -+ free (net_buffer); -+ return status; - } - - -@@ -131,7 +142,7 @@ _nss_dns_getnetbyaddr_r (long net, int t - { - /* Return entry for network with NAME. */ - enum nss_status status; -- querybuf net_buffer; -+ querybuf *net_buffer; - unsigned int net_bytes[4]; - char qbuf[MAXDNAME]; - int cnt, anslen; -@@ -167,16 +178,24 @@ _nss_dns_getnetbyaddr_r (long net, int t - break; - } - -- anslen = res_query (qbuf, C_IN, T_PTR, (u_char *) &net_buffer, -- sizeof (querybuf)); -+ net_buffer = (querybuf *) malloc (sizeof (querybuf)); -+ if (net_buffer == NULL) -+ return NSS_STATUS_UNAVAIL; -+ -+ anslen = res_query (qbuf, C_IN, T_PTR, net_buffer->buf, -+ sizeof (net_buffer->buf)); - if (anslen < 0) -- /* Nothing found. */ -- return (errno == ECONNREFUSED -- || errno == EPFNOSUPPORT -- || errno == EAFNOSUPPORT) -- ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ { -+ free (net_buffer); -+ /* Nothing found. */ -+ return (errno == ECONNREFUSED -+ || errno == EPFNOSUPPORT -+ || errno == EAFNOSUPPORT) -+ ? NSS_STATUS_UNAVAIL : NSS_STATUS_NOTFOUND; -+ } - -- status = getanswer_r (&net_buffer, anslen, result, buffer, buflen, BYADDR); -+ status = getanswer_r (net_buffer, anslen, result, buffer, buflen, BYADDR); -+ free (net_buffer); - if (status == NSS_STATUS_SUCCESS) - { - /* Strip trailing zeros. */