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;
This commit is contained in:
Yann E. MORIN" 2007-08-14 20:11:44 +00:00
parent ab0fc7eab4
commit 6c368af5b4
439 changed files with 37 additions and 175567 deletions

View File

@ -9,50 +9,16 @@ choice
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 @@ config BINUTILS_V_2_17
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 @@ endchoice
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

View File

@ -6,81 +6,23 @@ choice
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 @@ config CC_VERSION
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

View File

@ -13,7 +13,7 @@ choice
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

View File

@ -42,19 +42,9 @@ config GDB_V_snapshot
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 @@ endchoice
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

View File

@ -20,7 +20,7 @@ choice
config LTRACE_V_0_3_36
bool
prompt "0.3.36"
prompt "0.3.36 (OBSOLETE)"
depends on OBSOLETE
config LTRACE_V_0_4

View File

@ -13,77 +13,12 @@ choice
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 @@ endchoice
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

View File

@ -2,25 +2,9 @@ choice
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 @@ config KERNEL_COPY_V_2_6_8
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!

View File

@ -2,203 +2,24 @@ choice
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 @@ endchoice
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

View File

@ -4,103 +4,10 @@ choice
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
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 @@ endchoice
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

View File

@ -12,29 +12,19 @@ config LIBC_V_specific_date
bool
prompt "<specific date>"
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 @@ config LIBC_VERSION
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 @@ config LIBC_VERSION
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

View File

@ -19,44 +19,9 @@ choice
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 @@ endchoice
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

View File

@ -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 <errno.h>
#ifdef HAVE_SYS_ERRLIST
+#undef sys_nerr
#undef sys_errlist
#endif

View File

@ -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

View File

@ -1,96 +0,0 @@
2002-04-20 Jakub Jelinek <jakub@redhat.com>
* 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

View File

@ -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}

View File

@ -1,372 +0,0 @@
2002-08-03 Jakub Jelinek <jakub@redhat.com>
* 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 <test>:
+ 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 <test\+0xe2> 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*"] )

View File

@ -1,27 +0,0 @@
2002-08-07 Jakub Jelinek <jakub@redhat.com>
* 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++;

View File

@ -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

View File

@ -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 <kkojima@rr.iij4u.or.jp>
Dan Kegel <dank@kegel.com> 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;
}

View File

@ -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

View File

@ -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 <schwab at suse dot de>
To: Nathan Sidwell <nathan at codesourcery dot com>
Cc: Ian Lance Taylor <ian at wasabisystems dot com>, 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 <nathan@codesourcery.com> 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 <schwab@suse.de>
* 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&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."

View File

@ -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 */

View File

@ -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 <jakub at redhat dot com>
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 <jakub at redhat dot com>
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 <jakub@redhat.com>
* 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 <davidm@hpl.hp.com>
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

View File

@ -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 <drow at false dot org>
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 <dan@debian.org>
* 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

View File

@ -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 <schwab at suse dot de>
To: Nathan Sidwell <nathan at codesourcery dot com>
Cc: Ian Lance Taylor <ian at wasabisystems dot com>, 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 <nathan@codesourcery.com> 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 <schwab@suse.de>
* 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&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."

View File

@ -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 */

View File

@ -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 <jakub at redhat dot com>
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 <jakub at redhat dot com>
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 <jakub@redhat.com>
* 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 <davidm@hpl.hp.com>
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

View File

@ -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 <drow at false dot org>
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 <dan@debian.org>
* 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

View File

@ -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 <schwab at suse dot de>
To: Nathan Sidwell <nathan at codesourcery dot com>
Cc: Ian Lance Taylor <ian at wasabisystems dot com>, 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 <nathan@codesourcery.com> 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 <schwab@suse.de>
* 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&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."

View File

@ -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
;;

View File

@ -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"
;;

View File

@ -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 <chris@debian.org>
## 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

View File

@ -1,47 +0,0 @@
#!/bin/sh -e
## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
##
## 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,

View File

@ -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
;;

View File

@ -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"
;;

View File

@ -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 <chris@debian.org>
## 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

View File

@ -1,47 +0,0 @@
#!/bin/sh -e
## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
##
## 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,

View File

@ -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
+ }
}
#

View File

@ -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

View File

@ -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. */

View File

@ -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"
}

View File

@ -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<mem_fun1_ref_t<void,Elem,int> >::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 *, binder2nd<mem_fun1_ref_t<void,Elem,int> > >(Elem *, Elem *, binder2nd<mem_fun1_ref_t<void,Elem,int> >)'^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<void,Elem,int>::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

View File

@ -1,44 +0,0 @@
#
# Submitted-By: Marc Kleine-Budde <mkl@pengutronix.de>, 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

View File

@ -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;
+}
+

View File

@ -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;
+}

View File

@ -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;
+}

View File

@ -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 <tm@kloo.net>
+ * 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);
+}

View File

@ -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 <eager@mvista.com>
+ * 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;
+ }
+ }
+
+}

View File

@ -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;
+}

View File

@ -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 <kkojima@gcc.gnu.org>
+ * 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;
+}

View File

@ -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}};

View File

@ -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;
+}

View File

@ -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 <kkojima@rr.iij4u.or.jp>
> 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

View File

@ -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 <kkojima@rr.iij4u.or.jp>
Dan Kegel <dank@kegel.com> 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. */

View File

@ -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

View File

@ -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 <stdarg.h>

View File

@ -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. */

View File

@ -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"
}

View File

@ -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<mem_fun1_ref_t<void,Elem,int> >::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 *, binder2nd<mem_fun1_ref_t<void,Elem,int> > >(Elem *, Elem *, binder2nd<mem_fun1_ref_t<void,Elem,int> >)'^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<void,Elem,int>::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

View File

@ -1,65 +0,0 @@
By Lennert Buytenhek <buytenh@wantstofly.org>
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

View File

@ -1,44 +0,0 @@
#
# Submitted-By: Marc Kleine-Budde <mkl@pengutronix.de>, 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

View File

@ -1 +0,0 @@
../3.3.1/pr10392-1-test.patch

View File

@ -1 +0,0 @@
../3.3.1/pr10412-1-test.patch

View File

@ -1 +0,0 @@
../3.3.1/pr10589-1-test.patch

View File

@ -1 +0,0 @@
../3.3.1/pr11162-1-test.patch

View File

@ -1 +0,0 @@
../3.3.1/pr11587-1-test.patch

View File

@ -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

View File

@ -1 +0,0 @@
../3.3.1/pr11736-1-test.patch

View File

@ -1 +0,0 @@
../3.3.1/pr11864-1-test.patch

View File

@ -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 <string.h>
+
+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;
+}

View File

@ -1 +0,0 @@
../3.3.1/pr9365-1-test.patch

View File

@ -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 */

View File

@ -1,122 +0,0 @@
[adjusted very slightly to apply to gcc-3.3.2 - dank]
From: kaz Kojima <kkojima@rr.iij4u.or.jp>
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 <kkojima@rr.iij4u.or.jp>
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 <dank@kegel.com> 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-*-*) ;;
*)

View File

@ -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 <kkojima@rr.iij4u.or.jp>
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

View File

@ -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 <stdarg.h>

View File

@ -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

View File

@ -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. */

View File

@ -1,65 +0,0 @@
By Lennert Buytenhek <buytenh@wantstofly.org>
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

View File

@ -1,44 +0,0 @@
#
# Submitted-By: Marc Kleine-Budde <mkl@pengutronix.de>, 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

View File

@ -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;
+}
+

View File

@ -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;
+}

View File

@ -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;
+}

View File

@ -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 <tm@kloo.net>
+ * 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);
+}

View File

@ -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 <eager@mvista.com>
+ * 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;
+ }
+ }
+
+}

View File

@ -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

View File

@ -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;
+}

View File

@ -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 <kkojima@gcc.gnu.org>
+ * 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;
+}

View File

@ -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"
}

View File

@ -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

View File

@ -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]));

View File

@ -1,246 +0,0 @@
Date: Fri, 06 Feb 2004 12:35:58 +0900
From: SUGIOKA Toshinobu <sugioka@itonet.co.jp>
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: <mailto:linux-sh-ctl@m17n.org?body=help>
List-Id: linux-sh.m17n.org
At 19:40 03/12/01 +0000, Stuart Menefy <stuart.menefy@st.com> wrote:
>On Sat, 29 Nov 2003 20:19:08 +0900 kkojima@rr.iij4u.or.jp wrote:
>
>> Dan Kegel <dank@kegel.com> 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

View File

@ -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 <string.h>
+
+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;
+}

View File

@ -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. */

View File

@ -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;
+}

View File

@ -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 */

View File

@ -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 <kkojima@rr.iij4u.or.jp>
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

View File

@ -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 <stdarg.h>

View File

@ -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

View File

@ -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]);
"
)

View File

@ -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 <kkojima@rr.iij4u.or.jp>
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

Some files were not shown because too many files have changed in this diff Show More