mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-04-13 22:23:04 +00:00
Merge.
This commit is contained in:
commit
de8f2cea32
@ -2,29 +2,15 @@
|
||||
|
||||
comment "GNU binutils"
|
||||
|
||||
config BINUTILS_VERSION
|
||||
string
|
||||
|
||||
choice
|
||||
bool
|
||||
prompt "binutils version"
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_BELOW
|
||||
|
||||
config BINUTILS_V_2_19_51_0_2
|
||||
config BINUTILS_V_2_20
|
||||
bool
|
||||
prompt "2.19.51.0.2 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_19_51_0_1
|
||||
bool
|
||||
prompt "2.19.51.0.1 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_19_50_0_1
|
||||
bool
|
||||
prompt "2.19.50.0.1 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
prompt "2.20"
|
||||
|
||||
config BINUTILS_V_2_19_1
|
||||
bool
|
||||
@ -34,71 +20,18 @@ config BINUTILS_V_2_19
|
||||
bool
|
||||
prompt "2.19"
|
||||
|
||||
config BINUTILS_V_2_18_93
|
||||
bool
|
||||
prompt "2.18.93 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_92
|
||||
bool
|
||||
prompt "2.18.92 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_91
|
||||
bool
|
||||
prompt "2.18.91 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_90
|
||||
bool
|
||||
prompt "2.18.90 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_50_0_9
|
||||
bool
|
||||
prompt "2.18.50.0.9 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_50_0_8
|
||||
bool
|
||||
prompt "2.18.50.0.8 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_50_0_7
|
||||
bool
|
||||
prompt "2.18.50.0.7 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_50_0_6
|
||||
bool
|
||||
prompt "2.18.50.0.6 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18_50_0_4
|
||||
bool
|
||||
prompt "2.18.50.0.4 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config BINUTILS_V_2_18
|
||||
bool
|
||||
prompt "2.18"
|
||||
|
||||
config BINUTILS_V_2_17
|
||||
bool
|
||||
prompt "2.17"
|
||||
prompt "2.17 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config BINUTILS_V_2_16_1
|
||||
bool
|
||||
prompt "2.16.1"
|
||||
|
||||
config BINUTILS_V_2_15
|
||||
bool
|
||||
prompt "2.15 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config BINUTILS_V_2_14
|
||||
bool
|
||||
prompt "2.14 (OBSOLETE)"
|
||||
prompt "2.16.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
@ -107,25 +40,12 @@ config BINUTILS_VERSION
|
||||
string
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "2.19.51.0.2" if BINUTILS_V_2_19_51_0_2
|
||||
default "2.19.51.0.1" if BINUTILS_V_2_19_51_0_1
|
||||
default "2.19.50.0.1" if BINUTILS_V_2_19_50_0_1
|
||||
default "2.20" if BINUTILS_V_2_20
|
||||
default "2.19.1" if BINUTILS_V_2_19_1
|
||||
default "2.19" if BINUTILS_V_2_19
|
||||
default "2.18.93" if BINUTILS_V_2_18_93
|
||||
default "2.18.92" if BINUTILS_V_2_18_92
|
||||
default "2.18.91" if BINUTILS_V_2_18_91
|
||||
default "2.18.90" if BINUTILS_V_2_18_90
|
||||
default "2.18.50.0.9" if BINUTILS_V_2_18_50_0_9
|
||||
default "2.18.50.0.8" if BINUTILS_V_2_18_50_0_8
|
||||
default "2.18.50.0.7" if BINUTILS_V_2_18_50_0_7
|
||||
default "2.18.50.0.6" if BINUTILS_V_2_18_50_0_6
|
||||
default "2.18.50.0.4" if BINUTILS_V_2_18_50_0_4
|
||||
default "2.18" if BINUTILS_V_2_18
|
||||
default "2.17" if BINUTILS_V_2_17
|
||||
default "2.16.1" if BINUTILS_V_2_16_1
|
||||
default "2.15" if BINUTILS_V_2_15
|
||||
default "2.14" if BINUTILS_V_2_14
|
||||
|
||||
config BINUTILS_EXTRA_CONFIG
|
||||
string
|
||||
|
@ -4,9 +4,6 @@ if ARCH_BINFMT_FLAT
|
||||
|
||||
comment "elf2flt"
|
||||
|
||||
config ELF2FLT_VERSION
|
||||
string
|
||||
|
||||
choice
|
||||
bool
|
||||
prompt "elf2flt version"
|
||||
|
@ -19,6 +19,13 @@ choice
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_BELOW
|
||||
|
||||
config CC_V_4_4_2
|
||||
bool
|
||||
prompt "4.4.2 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
select CC_GCC_4_3_or_later
|
||||
select CC_GCC_4_4_or_later
|
||||
|
||||
config CC_V_4_4_1
|
||||
bool
|
||||
prompt "4.4.1 (EXPERIMENTAL)"
|
||||
@ -65,7 +72,8 @@ config CC_V_4_2_4
|
||||
|
||||
config CC_V_4_2_3
|
||||
bool
|
||||
prompt "4.2.3"
|
||||
prompt "4.2.3 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_2_2
|
||||
bool
|
||||
@ -73,48 +81,22 @@ config CC_V_4_2_2
|
||||
|
||||
config CC_V_4_2_1
|
||||
bool
|
||||
prompt "4.2.1"
|
||||
prompt "4.2.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_2_0
|
||||
bool
|
||||
prompt "4.2.0"
|
||||
prompt "4.2.0 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_1_2
|
||||
bool
|
||||
prompt "4.1.2"
|
||||
|
||||
config CC_V_4_1_1
|
||||
bool
|
||||
prompt "4.1.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_1_0
|
||||
bool
|
||||
prompt "4.1.0 (OBSOLETE)"
|
||||
prompt "4.1.2 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_0_4
|
||||
bool
|
||||
prompt "4.0.4"
|
||||
|
||||
config CC_V_4_0_3
|
||||
bool
|
||||
prompt "4.0.3 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_0_2
|
||||
bool
|
||||
prompt "4.0.2 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_0_1
|
||||
bool
|
||||
prompt "4.0.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_4_0_0
|
||||
bool
|
||||
prompt "4.0.0 (OBSOLETE)"
|
||||
prompt "4.0.4 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_3_4_6
|
||||
@ -122,16 +104,6 @@ config CC_V_3_4_6
|
||||
prompt "3.4.6 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_3_3_6
|
||||
bool
|
||||
prompt "3.3.6 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CC_V_3_2_3
|
||||
bool
|
||||
prompt "3.2.3 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
config CC_GCC_4_3_or_later
|
||||
@ -148,6 +120,7 @@ config CC_VERSION
|
||||
string
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "4.4.2" if CC_V_4_4_2
|
||||
default "4.4.1" if CC_V_4_4_1
|
||||
default "4.4.0" if CC_V_4_4_0
|
||||
default "4.3.4" if CC_V_4_3_4
|
||||
@ -161,16 +134,8 @@ config CC_VERSION
|
||||
default "4.2.1" if CC_V_4_2_1
|
||||
default "4.2.0" if CC_V_4_2_0
|
||||
default "4.1.2" if CC_V_4_1_2
|
||||
default "4.1.1" if CC_V_4_1_1
|
||||
default "4.1.0" if CC_V_4_1_0
|
||||
default "4.0.4" if CC_V_4_0_4
|
||||
default "4.0.3" if CC_V_4_0_3
|
||||
default "4.0.2" if CC_V_4_0_2
|
||||
default "4.0.1" if CC_V_4_0_1
|
||||
default "4.0.0" if CC_V_4_0_0
|
||||
default "3.4.6" if CC_V_3_4_6
|
||||
default "3.3.6" if CC_V_3_3_6
|
||||
default "3.2.3" if CC_V_3_2_3
|
||||
|
||||
config CC_CXA_ATEXIT
|
||||
bool
|
||||
|
@ -16,15 +16,18 @@ config CLOOG_V_0_15_6
|
||||
|
||||
config CLOOG_V_0_15_5
|
||||
bool
|
||||
prompt "0.15.5"
|
||||
prompt "0.15.5 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CLOOG_V_0_15_4
|
||||
bool
|
||||
prompt "0.15.4"
|
||||
prompt "0.15.4 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config CLOOG_V_0_15_3
|
||||
bool
|
||||
prompt "0.15.3"
|
||||
prompt "0.15.3 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -16,11 +16,13 @@ config GMP_V_4_3_0
|
||||
|
||||
config GMP_V_4_2_4
|
||||
bool
|
||||
prompt "4.2.4"
|
||||
prompt "4.2.4 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config GMP_V_4_2_2
|
||||
bool
|
||||
prompt "4.2.2"
|
||||
prompt "4.2.2 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -12,7 +12,8 @@ config MPC_V_0_7
|
||||
|
||||
config MPC_V_0_6
|
||||
bool
|
||||
prompt "0.6"
|
||||
prompt "0.6 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -16,11 +16,13 @@ config MPFR_V_2_4_0
|
||||
|
||||
config MPFR_V_2_3_2
|
||||
bool
|
||||
prompt "2.3.2"
|
||||
prompt "2.3.2 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config MPFR_V_2_3_1
|
||||
bool
|
||||
prompt "2.3.1"
|
||||
prompt "2.3.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -13,11 +13,6 @@ config DMALLOC_V_5_5_2
|
||||
bool
|
||||
prompt "5.5.2"
|
||||
|
||||
config DMALLOC_V_5_4_3
|
||||
bool
|
||||
prompt "5.4.3 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
config DMALLOC_VERSION
|
||||
@ -25,4 +20,3 @@ config DMALLOC_VERSION
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "5.5.2" if DMALLOC_V_5_5_2
|
||||
default "5.4.3" if DMALLOC_V_5_4_3
|
||||
|
@ -29,19 +29,23 @@ config DUMA_V_2_5_15
|
||||
|
||||
config DUMA_V_2_5_14
|
||||
bool
|
||||
prompt "2_5_14"
|
||||
prompt "2_5_14 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config DUMA_V_2_5_12
|
||||
bool
|
||||
prompt "2_5_12"
|
||||
prompt "2_5_12 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config DUMA_V_2_5_8
|
||||
bool
|
||||
prompt "2_5_8"
|
||||
prompt "2_5_8 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config DUMA_V_2_5_1
|
||||
bool
|
||||
prompt "2_5_1"
|
||||
prompt "2_5_1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -99,34 +99,15 @@ choice
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_BELOW
|
||||
|
||||
config GDB_V_7_0
|
||||
bool
|
||||
prompt "7.0 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config GDB_V_6_8
|
||||
bool
|
||||
prompt "6.8"
|
||||
|
||||
config GDB_V_6_7_1
|
||||
bool
|
||||
prompt "6.7.1 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config GDB_V_6_7
|
||||
bool
|
||||
prompt "6.7 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config GDB_V_6_6
|
||||
bool
|
||||
prompt "6.6"
|
||||
|
||||
config GDB_V_6_5
|
||||
bool
|
||||
prompt "6.5 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config GDB_V_6_4
|
||||
bool
|
||||
prompt "6.4 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config GDB_V_snapshot
|
||||
bool
|
||||
prompt "snapshot (EXPERIMENTAL)"
|
||||
@ -139,12 +120,8 @@ config GDB_VERSION
|
||||
string
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "7.0" if GDB_V_7_0
|
||||
default "6.8" if GDB_V_6_8
|
||||
default "6.7.1" if GDB_V_6_7_1
|
||||
default "6.7" if GDB_V_6_7
|
||||
default "6.6" if GDB_V_6_6
|
||||
default "6.5" if GDB_V_6_5
|
||||
default "6.4" if GDB_V_6_4
|
||||
default "snapshot" if GDB_V_snapshot
|
||||
|
||||
if GDB_NATIVE
|
||||
@ -161,7 +138,8 @@ config NCURSES_V_5_7
|
||||
|
||||
config NCURSES_V_5_6
|
||||
bool
|
||||
prompt "5.6"
|
||||
prompt "5.6 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -25,11 +25,13 @@ config LTRACE_V_0_5_1
|
||||
|
||||
config LTRACE_V_0_5
|
||||
bool
|
||||
prompt "0.5"
|
||||
prompt "0.5 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LTRACE_V_0_4
|
||||
bool
|
||||
prompt "0.4"
|
||||
prompt "0.4 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -8,31 +8,28 @@ choice
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_BELOW
|
||||
|
||||
config STRACE_V_4_5_19
|
||||
bool
|
||||
prompt "4.5.19 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
|
||||
config STRACE_V_4_5_18
|
||||
bool
|
||||
prompt "4.5.18 (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
prompt "4.5.18"
|
||||
|
||||
config STRACE_V_4_5_17
|
||||
bool
|
||||
prompt "4.5.17"
|
||||
prompt "4.5.17 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config STRACE_V_4_5_16
|
||||
bool
|
||||
prompt "4.5.16"
|
||||
prompt "4.5.16 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config STRACE_V_4_5_15
|
||||
bool
|
||||
prompt "4.5.15"
|
||||
|
||||
config STRACE_V_4_5_14
|
||||
bool
|
||||
prompt "4.5.14 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config STRACE_V_4_5
|
||||
bool
|
||||
prompt "4.5 (OBSOLETE)"
|
||||
prompt "4.5.15 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
@ -41,9 +38,8 @@ config STRACE_VERSION
|
||||
string
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "4.5.19" if STRACE_V_4_5_19
|
||||
default "4.5.18" if STRACE_V_4_5_18
|
||||
default "4.5.17" if STRACE_V_4_5_17
|
||||
default "4.5.16" if STRACE_V_4_5_16
|
||||
default "4.5.15" if STRACE_V_4_5_15
|
||||
default "4.5.14" if STRACE_V_4_5_14
|
||||
default "4.5" if STRACE_V_4_5
|
||||
|
@ -34,6 +34,22 @@ choice
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_BELOW
|
||||
|
||||
config KERNEL_V_2_6_31_5
|
||||
bool
|
||||
prompt "2.6.31.5"
|
||||
|
||||
config KERNEL_V_2_6_31_4
|
||||
bool
|
||||
prompt "2.6.31.4"
|
||||
|
||||
config KERNEL_V_2_6_31_3
|
||||
bool
|
||||
prompt "2.6.31.3"
|
||||
|
||||
config KERNEL_V_2_6_31_2
|
||||
bool
|
||||
prompt "2.6.31.2"
|
||||
|
||||
config KERNEL_V_2_6_31_1
|
||||
bool
|
||||
prompt "2.6.31.1"
|
||||
@ -42,6 +58,10 @@ config KERNEL_V_2_6_31
|
||||
bool
|
||||
prompt "2.6.31"
|
||||
|
||||
config KERNEL_V_3_6_30_9
|
||||
bool
|
||||
prompt "3.6.30.9"
|
||||
|
||||
config KERNEL_V_3_6_30_8
|
||||
bool
|
||||
prompt "3.6.30.8"
|
||||
@ -80,75 +100,31 @@ config KERNEL_V_2_6_30
|
||||
|
||||
config KERNEL_V_2_6_29_6
|
||||
bool
|
||||
prompt "2.6.29.6"
|
||||
prompt "2.6.29.6 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_28_10
|
||||
bool
|
||||
prompt "2.6.28.10"
|
||||
|
||||
config KERNEL_V_2_6_27_35
|
||||
bool
|
||||
prompt "2.6.27.35 (long-term stable)"
|
||||
|
||||
config KERNEL_V_2_6_26_8
|
||||
bool
|
||||
prompt "2.6.26.8 (OBSOLETE)"
|
||||
prompt "2.6.28.10 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_25_20
|
||||
config KERNEL_V_2_6_27_38
|
||||
bool
|
||||
prompt "2.6.25.20 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_24_7
|
||||
bool
|
||||
prompt "2.6.24.7 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_23_17
|
||||
bool
|
||||
prompt "2.6.23.17 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_22_19
|
||||
bool
|
||||
prompt "2.6.22.19 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_21_7
|
||||
bool
|
||||
prompt "2.6.21.7 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_20_21
|
||||
bool
|
||||
prompt "2.6.20.21 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_19_7
|
||||
bool
|
||||
prompt "2.6.19.7 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_2_6_18_8
|
||||
bool
|
||||
prompt "2.6.18.8 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config KERNEL_V_select
|
||||
bool
|
||||
prompt "Other version (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
prompt "2.6.27.38 (long-term stable)"
|
||||
|
||||
endchoice
|
||||
|
||||
config KERNEL_VERSION
|
||||
string
|
||||
prompt "Kernel version" if KERNEL_V_select
|
||||
# Don't remove next line
|
||||
# CT_INSERT_VERSION_STRING_BELOW
|
||||
default "2.6.31.5" if KERNEL_V_2_6_31_5
|
||||
default "2.6.31.4" if KERNEL_V_2_6_31_4
|
||||
default "2.6.31.3" if KERNEL_V_2_6_31_3
|
||||
default "2.6.31.2" if KERNEL_V_2_6_31_2
|
||||
default "2.6.31.1" if KERNEL_V_2_6_31_1
|
||||
default "2.6.31" if KERNEL_V_2_6_31
|
||||
default "3.6.30.9" if KERNEL_V_3_6_30_9
|
||||
default "3.6.30.8" if KERNEL_V_3_6_30_8
|
||||
default "3.6.30.7" if KERNEL_V_3_6_30_7
|
||||
default "2.6.30.6" if KERNEL_V_2_6_30_6
|
||||
@ -159,25 +135,8 @@ config KERNEL_VERSION
|
||||
default "2.6.30.1" if KERNEL_V_2_6_30_1
|
||||
default "2.6.30" if KERNEL_V_2_6_30
|
||||
default "2.6.29.6" if KERNEL_V_2_6_29_6
|
||||
default "2.6.29" if KERNEL_V_2_6_29
|
||||
default "2.6.28.10" if KERNEL_V_2_6_28_10
|
||||
default "2.6.27.35" if KERNEL_V_2_6_27_35
|
||||
default "2.6.26.8" if KERNEL_V_2_6_26_8
|
||||
default "2.6.25.20" if KERNEL_V_2_6_25_20
|
||||
default "2.6.24.7" if KERNEL_V_2_6_24_7
|
||||
default "2.6.23.17" if KERNEL_V_2_6_23_17
|
||||
default "2.6.22.19" if KERNEL_V_2_6_22_19
|
||||
default "2.6.21.7" if KERNEL_V_2_6_21_7
|
||||
default "2.6.20.21" if KERNEL_V_2_6_20_21
|
||||
default "2.6.19.7" if KERNEL_V_2_6_19_7
|
||||
default "2.6.18.8" if KERNEL_V_2_6_18_8
|
||||
help
|
||||
Enter here the kernel version you want to use, if it is
|
||||
not listed above. Something like V.P.S or V.P.S.E, where:
|
||||
V: VERSION
|
||||
P: PATCHLEVEL
|
||||
S: SUBLEVEL
|
||||
E: EXTRAVERSION
|
||||
default "2.6.27.38" if KERNEL_V_2_6_27_38
|
||||
|
||||
choice
|
||||
bool
|
||||
|
@ -28,19 +28,23 @@ config EGLIBC_V_2_9
|
||||
|
||||
config EGLIBC_V_2_8
|
||||
bool
|
||||
prompt "2_8"
|
||||
prompt "2_8 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config EGLIBC_V_2_7
|
||||
bool
|
||||
prompt "2_7"
|
||||
prompt "2_7 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config EGLIBC_V_2_6
|
||||
bool
|
||||
prompt "2_6"
|
||||
prompt "2_6 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config EGLIBC_V_2_5
|
||||
bool
|
||||
prompt "2_5"
|
||||
prompt "2_5 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config EGLIBC_V_TRUNK
|
||||
bool
|
||||
|
@ -26,23 +26,28 @@ config LIBC_V_2_8
|
||||
|
||||
config LIBC_V_2_7
|
||||
bool
|
||||
prompt "2.7"
|
||||
prompt "2.7 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_2_6_1
|
||||
bool
|
||||
prompt "2.6.1"
|
||||
prompt "2.6.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_2_6
|
||||
bool
|
||||
prompt "2.6"
|
||||
prompt "2.6 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_2_5_1
|
||||
bool
|
||||
prompt "2.5.1"
|
||||
prompt "2.5.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_2_5
|
||||
bool
|
||||
prompt "2.5"
|
||||
prompt "2.5 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_2_3_6
|
||||
bool
|
||||
|
@ -26,25 +26,12 @@ config LIBC_V_0_9_30
|
||||
|
||||
config LIBC_V_0_9_29
|
||||
bool
|
||||
prompt "0.9.29"
|
||||
prompt "0.9.29 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_0_9_28_3
|
||||
bool
|
||||
prompt "0.9.28.3"
|
||||
|
||||
config LIBC_V_0_9_28_2
|
||||
bool
|
||||
prompt "0.9.28.2 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_0_9_28_1
|
||||
bool
|
||||
prompt "0.9.28.1 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_0_9_28
|
||||
bool
|
||||
prompt "0.9.28 (OBSOLETE)"
|
||||
prompt "0.9.28.3 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
config LIBC_V_snapshot
|
||||
@ -68,9 +55,6 @@ config LIBC_VERSION
|
||||
default "0.9.30" if LIBC_V_0_9_30
|
||||
default "0.9.29" if LIBC_V_0_9_29
|
||||
default "0.9.28.3" if LIBC_V_0_9_28_3
|
||||
default "0.9.28.2" if LIBC_V_0_9_28_2
|
||||
default "0.9.28.1" if LIBC_V_0_9_28_1
|
||||
default "0.9.28" if LIBC_V_0_9_28
|
||||
default "snapshot" if LIBC_V_snapshot
|
||||
|
||||
config LIBC_UCLIBC_0_9_30_or_later
|
||||
|
@ -21,7 +21,8 @@ config LIBELF_V_0_8_11
|
||||
|
||||
config LIBELF_V_0_8_10
|
||||
bool
|
||||
prompt "0.8.10"
|
||||
prompt "0.8.10 (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
|
||||
endchoice
|
||||
|
||||
|
@ -19,7 +19,8 @@ config SSTRIP_BUILDROOT
|
||||
|
||||
config SSTRIP_ELFKICKERS
|
||||
bool
|
||||
prompt "ELFkickers"
|
||||
prompt "ELFkickers (OBSOLETE)"
|
||||
depends on OBSOLETE
|
||||
help
|
||||
The original, ageing version, of sstrip from ELFkickers.
|
||||
Fully functional, but not maintained anymore.
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,38 +0,0 @@
|
||||
diff -durN binutils-2.14.orig/gas/config/tc-i386.c binutils-2.14/gas/config/tc-i386.c
|
||||
--- binutils-2.14.orig/gas/config/tc-i386.c 2003-01-29 11:05:52.000000000 +0100
|
||||
+++ binutils-2.14/gas/config/tc-i386.c 2008-09-22 08:54:50.000000000 +0200
|
||||
@@ -189,15 +189,10 @@
|
||||
const char extra_symbol_chars[] = "*%-([";
|
||||
#endif
|
||||
|
||||
-#if (defined (TE_I386AIX) \
|
||||
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
|
||||
- && !defined (TE_LINUX) \
|
||||
- && !defined (TE_FreeBSD) \
|
||||
- && !defined (TE_NetBSD)))
|
||||
/* This array holds the chars that always start a comment. If the
|
||||
pre-processor is disabled, these aren't very useful. */
|
||||
-const char comment_chars[] = "#/";
|
||||
-#define PREFIX_SEPARATOR '\\'
|
||||
+const char comment_chars[] = "#";
|
||||
+#define PREFIX_SEPARATOR '/'
|
||||
|
||||
/* This array holds the chars that only start a comment at the beginning of
|
||||
a line. If the line seems to have the form '# 123 filename'
|
||||
@@ -207,16 +202,7 @@
|
||||
#NO_APP at the beginning of its output.
|
||||
Also note that comments started like this one will always work if
|
||||
'/' isn't otherwise defined. */
|
||||
-const char line_comment_chars[] = "#";
|
||||
-
|
||||
-#else
|
||||
-/* Putting '/' here makes it impossible to use the divide operator.
|
||||
- However, we need it for compatibility with SVR4 systems. */
|
||||
-const char comment_chars[] = "#";
|
||||
-#define PREFIX_SEPARATOR '/'
|
||||
-
|
||||
const char line_comment_chars[] = "/#";
|
||||
-#endif
|
||||
|
||||
const char line_separator_chars[] = ";";
|
||||
|
@ -1,38 +0,0 @@
|
||||
diff -durN binutils-2.15.orig/gas/config/tc-i386.c binutils-2.15/gas/config/tc-i386.c
|
||||
--- binutils-2.15.orig/gas/config/tc-i386.c 2004-05-17 21:36:09.000000000 +0200
|
||||
+++ binutils-2.15/gas/config/tc-i386.c 2008-09-22 08:57:14.000000000 +0200
|
||||
@@ -185,15 +185,10 @@
|
||||
const char extra_symbol_chars[] = "*%-([";
|
||||
#endif
|
||||
|
||||
-#if (defined (TE_I386AIX) \
|
||||
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
|
||||
- && !defined (TE_LINUX) \
|
||||
- && !defined (TE_FreeBSD) \
|
||||
- && !defined (TE_NetBSD)))
|
||||
/* This array holds the chars that always start a comment. If the
|
||||
pre-processor is disabled, these aren't very useful. */
|
||||
-const char comment_chars[] = "#/";
|
||||
-#define PREFIX_SEPARATOR '\\'
|
||||
+const char comment_chars[] = "#";
|
||||
+#define PREFIX_SEPARATOR '/'
|
||||
|
||||
/* This array holds the chars that only start a comment at the beginning of
|
||||
a line. If the line seems to have the form '# 123 filename'
|
||||
@@ -203,16 +198,7 @@
|
||||
#NO_APP at the beginning of its output.
|
||||
Also note that comments started like this one will always work if
|
||||
'/' isn't otherwise defined. */
|
||||
-const char line_comment_chars[] = "#";
|
||||
-
|
||||
-#else
|
||||
-/* Putting '/' here makes it impossible to use the divide operator.
|
||||
- However, we need it for compatibility with SVR4 systems. */
|
||||
-const char comment_chars[] = "#";
|
||||
-#define PREFIX_SEPARATOR '/'
|
||||
-
|
||||
const char line_comment_chars[] = "/#";
|
||||
-#endif
|
||||
|
||||
const char line_separator_chars[] = ";";
|
||||
|
@ -1,144 +0,0 @@
|
||||
diff -uNr binutils-2.15-pristine/bfd/configure binutils-2.15/bfd/configure
|
||||
--- binutils-2.15-pristine/bfd/configure 2004-05-17 12:35:57.000000000 -0700
|
||||
+++ binutils-2.15/bfd/configure 2004-07-19 16:36:19.000000000 -0700
|
||||
@@ -1009,7 +1009,7 @@
|
||||
bfd_version_string="\"${VERSION}\""
|
||||
if test x${is_release} = x; then
|
||||
bfd_version_date=`sed -n -e 's/.*DATE //p' < ${srcdir}/version.h`
|
||||
- bfd_version_string="\"${VERSION} ${bfd_version_date}\""
|
||||
+ bfd_version_string="\"${VERSION} ${bfd_version_date} uClibc\""
|
||||
fi
|
||||
|
||||
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf32-arm.h binutils-2.15/bfd/elf32-arm.h
|
||||
--- binutils-2.15-pristine/bfd/elf32-arm.h 2004-05-17 12:35:58.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf32-arm.h 2004-07-19 16:37:06.000000000 -0700
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
#ifdef FOUR_WORD_PLT
|
||||
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf32-cris.c binutils-2.15/bfd/elf32-cris.c
|
||||
--- binutils-2.15-pristine/bfd/elf32-cris.c 2004-05-17 12:35:58.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf32-cris.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -536,7 +536,7 @@
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
/* The size in bytes of an entry in the procedure linkage table. */
|
||||
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf32-frv.c binutils-2.15/bfd/elf32-frv.c
|
||||
--- binutils-2.15-pristine/bfd/elf32-frv.c 2004-05-17 12:35:58.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf32-frv.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -2913,7 +2913,7 @@
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
#define DEFAULT_STACK_SIZE 0x20000
|
||||
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf32-hppa.c binutils-2.15/bfd/elf32-hppa.c
|
||||
--- binutils-2.15-pristine/bfd/elf32-hppa.c 2004-05-17 12:35:58.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf32-hppa.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -115,7 +115,7 @@
|
||||
|
||||
#define PLT_ENTRY_SIZE 8
|
||||
#define GOT_ENTRY_SIZE 4
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
static const bfd_byte plt_stub[] =
|
||||
{
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf32-ppc.c binutils-2.15/bfd/elf32-ppc.c
|
||||
--- binutils-2.15-pristine/bfd/elf32-ppc.c 2004-05-17 12:35:59.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf32-ppc.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -49,7 +49,7 @@
|
||||
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
/* The size in bytes of an entry in the procedure linkage table. */
|
||||
#define PLT_ENTRY_SIZE 12
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf32-s390.c binutils-2.15/bfd/elf32-s390.c
|
||||
--- binutils-2.15-pristine/bfd/elf32-s390.c 2004-05-17 12:35:59.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf32-s390.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -452,7 +452,7 @@
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
|
||||
copying dynamic variables from a shared lib into an app's dynbss
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf32-sparc.c binutils-2.15/bfd/elf32-sparc.c
|
||||
--- binutils-2.15-pristine/bfd/elf32-sparc.c 2004-05-17 12:36:00.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf32-sparc.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -536,7 +536,7 @@
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
/* The nop opcode we use. */
|
||||
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf64-ppc.c binutils-2.15/bfd/elf64-ppc.c
|
||||
--- binutils-2.15-pristine/bfd/elf64-ppc.c 2004-05-17 12:36:01.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf64-ppc.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -99,7 +99,7 @@
|
||||
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
/* The size in bytes of an entry in the procedure linkage table. */
|
||||
#define PLT_ENTRY_SIZE 24
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf64-s390.c binutils-2.15/bfd/elf64-s390.c
|
||||
--- binutils-2.15-pristine/bfd/elf64-s390.c 2004-05-17 12:36:01.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf64-s390.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -473,7 +473,7 @@
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
|
||||
copying dynamic variables from a shared lib into an app's dynbss
|
||||
diff -uNr binutils-2.15-pristine/bfd/elf-m10300.c binutils-2.15/bfd/elf-m10300.c
|
||||
--- binutils-2.15-pristine/bfd/elf-m10300.c 2004-05-17 12:35:57.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elf-m10300.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -4026,7 +4026,7 @@
|
||||
/* The name of the dynamic interpreter. This is put in the .interp
|
||||
section. */
|
||||
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
/* Create dynamic sections when linking against a dynamic object. */
|
||||
|
||||
diff -uNr binutils-2.15-pristine/bfd/elfxx-ia64.c binutils-2.15/bfd/elfxx-ia64.c
|
||||
--- binutils-2.15-pristine/bfd/elfxx-ia64.c 2004-05-17 12:36:02.000000000 -0700
|
||||
+++ binutils-2.15/bfd/elfxx-ia64.c 2004-07-19 16:49:59.000000000 -0700
|
||||
@@ -643,7 +643,7 @@
|
||||
0x60, 0x00, 0x80, 0x00 /* br.few b6;; */
|
||||
};
|
||||
|
||||
-#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1"
|
||||
+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0"
|
||||
|
||||
static const bfd_byte oor_brl[16] =
|
||||
{
|
@ -1,692 +0,0 @@
|
||||
diff -urN binutils-2.15-dist/bfd/config.bfd binutils-2.15/bfd/config.bfd
|
||||
--- binutils-2.15-dist/bfd/config.bfd 2004-05-17 14:35:56.000000000 -0500
|
||||
+++ binutils-2.15/bfd/config.bfd 2004-08-04 12:01:44.000000000 -0500
|
||||
@@ -126,7 +126,7 @@
|
||||
targ_defvec=ecoffalpha_little_vec
|
||||
targ_selvecs=bfd_elf64_alpha_vec
|
||||
;;
|
||||
- alpha*-*-linux-gnu* | alpha*-*-elf*)
|
||||
+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*)
|
||||
targ_defvec=bfd_elf64_alpha_vec
|
||||
targ_selvecs=ecoffalpha_little_vec
|
||||
;;
|
||||
@@ -136,7 +136,7 @@
|
||||
alpha*-*-*)
|
||||
targ_defvec=ecoffalpha_little_vec
|
||||
;;
|
||||
- ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
|
||||
+ ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
|
||||
targ_defvec=bfd_elf64_ia64_little_vec
|
||||
targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
|
||||
;;
|
||||
@@ -213,7 +213,7 @@
|
||||
targ_defvec=bfd_elf32_littlearm_vec
|
||||
targ_selvecs=bfd_elf32_bigarm_vec
|
||||
;;
|
||||
- armeb-*-elf | arm*b-*-linux-gnu*)
|
||||
+ armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf32_bigarm_vec
|
||||
targ_selvecs=bfd_elf32_littlearm_vec
|
||||
;;
|
||||
@@ -221,7 +221,7 @@
|
||||
targ_defvec=bfd_elf32_littlearm_vec
|
||||
targ_selvecs=bfd_elf32_bigarm_vec
|
||||
;;
|
||||
- arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
|
||||
+ arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | arm*-*-conix* | \
|
||||
arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks)
|
||||
targ_defvec=bfd_elf32_littlearm_vec
|
||||
targ_selvecs=bfd_elf32_bigarm_vec
|
||||
@@ -360,7 +360,7 @@
|
||||
;;
|
||||
|
||||
#ifdef BFD64
|
||||
- hppa*64*-*-linux-gnu*)
|
||||
+ hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf64_hppa_linux_vec
|
||||
targ_selvecs=bfd_elf64_hppa_vec
|
||||
;;
|
||||
@@ -371,7 +371,7 @@
|
||||
;;
|
||||
#endif
|
||||
|
||||
- hppa*-*-linux-gnu* | hppa*-*-netbsd*)
|
||||
+ hppa*-*-linux-gnu* | hppa*-*-linux-uclibc* | hppa*-*-netbsd*)
|
||||
targ_defvec=bfd_elf32_hppa_linux_vec
|
||||
targ_selvecs=bfd_elf32_hppa_vec
|
||||
;;
|
||||
@@ -494,7 +494,7 @@
|
||||
targ_selvecs=bfd_elf32_i386_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
- i[3-7]86-*-linux-gnu*)
|
||||
+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf32_i386_vec
|
||||
targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
|
||||
targ64_selvecs=bfd_elf64_x86_64_vec
|
||||
@@ -508,7 +508,7 @@
|
||||
targ_defvec=bfd_elf64_x86_64_vec
|
||||
targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
|
||||
;;
|
||||
- x86_64-*-linux-gnu*)
|
||||
+ x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf64_x86_64_vec
|
||||
targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
|
||||
;;
|
||||
@@ -683,7 +683,7 @@
|
||||
targ_selvecs=bfd_elf32_m68k_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
- m68*-*-linux-gnu*)
|
||||
+ m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf32_m68k_vec
|
||||
targ_selvecs=m68klinux_vec
|
||||
;;
|
||||
@@ -955,7 +955,8 @@
|
||||
;;
|
||||
#endif
|
||||
powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
|
||||
- powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
|
||||
+ powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | \
|
||||
+ powerpc-*-rtems* | \
|
||||
powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*)
|
||||
targ_defvec=bfd_elf32_powerpc_vec
|
||||
targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
|
||||
@@ -987,8 +988,8 @@
|
||||
targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
|
||||
;;
|
||||
powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
|
||||
- powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
|
||||
- powerpcle-*-rtems*)
|
||||
+ powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* |\
|
||||
+ powerpcle-*-vxworks* | powerpcle-*-rtems*)
|
||||
targ_defvec=bfd_elf32_powerpcle_vec
|
||||
targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
|
||||
targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
|
||||
@@ -1149,7 +1150,7 @@
|
||||
targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
|
||||
targ_underscore=yes
|
||||
;;
|
||||
- sparc-*-linux-gnu*)
|
||||
+ sparc-*-linux-gnu* | sparc-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf32_sparc_vec
|
||||
targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
|
||||
;;
|
||||
@@ -1196,7 +1197,7 @@
|
||||
targ_defvec=sunos_big_vec
|
||||
targ_underscore=yes
|
||||
;;
|
||||
- sparc64-*-linux-gnu*)
|
||||
+ sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf64_sparc_vec
|
||||
targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
|
||||
;;
|
||||
@@ -1265,7 +1266,7 @@
|
||||
targ_underscore=yes
|
||||
;;
|
||||
|
||||
- vax-*-linux-gnu*)
|
||||
+ vax-*-linux-gnu* | vax-*-linux-uclibc*)
|
||||
targ_defvec=bfd_elf32_vax_vec
|
||||
;;
|
||||
|
||||
diff -urN binutils-2.15-dist/bfd/configure binutils-2.15/bfd/configure
|
||||
--- binutils-2.15-dist/bfd/configure 2004-05-17 14:35:57.000000000 -0500
|
||||
+++ binutils-2.15/bfd/configure 2004-08-04 12:01:44.000000000 -0500
|
||||
@@ -1699,6 +1699,11 @@
|
||||
lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ lt_cv_deplibs_check_method=pass_all
|
||||
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
||||
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
|
||||
@@ -5278,7 +5283,7 @@
|
||||
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
|
||||
COREFILE=''
|
||||
;;
|
||||
- alpha*-*-linux-gnu*)
|
||||
+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/alphalinux.h"'
|
||||
;;
|
||||
@@ -5338,7 +5343,7 @@
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i386mach3.h"'
|
||||
;;
|
||||
- i[3-7]86-*-linux-gnu*)
|
||||
+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i386linux.h"'
|
||||
;;
|
||||
@@ -5376,7 +5381,7 @@
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/hp300bsd.h"'
|
||||
;;
|
||||
- m68*-*-linux-gnu*)
|
||||
+ m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/m68klinux.h"'
|
||||
;;
|
||||
@@ -5477,7 +5482,7 @@
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxult2.h"'
|
||||
;;
|
||||
- vax-*-linux-gnu*)
|
||||
+ vax-*-linux-gnu* | vax-*-linux-uclibc*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxlinux.h"'
|
||||
;;
|
||||
diff -urN binutils-2.15-dist/bfd/configure.in binutils-2.15/bfd/configure.in
|
||||
--- binutils-2.15-dist/bfd/configure.in 2004-05-17 14:35:57.000000000 -0500
|
||||
+++ binutils-2.15/bfd/configure.in 2004-08-04 12:01:44.000000000 -0500
|
||||
@@ -178,7 +178,7 @@
|
||||
alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
|
||||
COREFILE=''
|
||||
;;
|
||||
- alpha*-*-linux-gnu*)
|
||||
+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/alphalinux.h"'
|
||||
;;
|
||||
@@ -259,7 +259,7 @@
|
||||
TRAD_HEADER='"hosts/i386mach3.h"'
|
||||
;;
|
||||
changequote(,)dnl
|
||||
- i[3-7]86-*-linux-gnu*)
|
||||
+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
|
||||
changequote([,])dnl
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/i386linux.h"'
|
||||
@@ -300,7 +300,7 @@
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/hp300bsd.h"'
|
||||
;;
|
||||
- m68*-*-linux-gnu*)
|
||||
+ m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/m68klinux.h"'
|
||||
;;
|
||||
@@ -385,7 +385,7 @@
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxult2.h"'
|
||||
;;
|
||||
- vax-*-linux-gnu*)
|
||||
+ vax-*-linux-gnu* | vax-*-linux-uclibc*)
|
||||
COREFILE=trad-core.lo
|
||||
TRAD_HEADER='"hosts/vaxlinux.h"'
|
||||
;;
|
||||
diff -urN binutils-2.15-dist/binutils/configure binutils-2.15/binutils/configure
|
||||
--- binutils-2.15-dist/binutils/configure 2004-01-02 11:08:04.000000000 -0600
|
||||
+++ binutils-2.15/binutils/configure 2004-08-04 12:01:44.000000000 -0500
|
||||
@@ -1585,6 +1585,11 @@
|
||||
lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ lt_cv_deplibs_check_method=pass_all
|
||||
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
||||
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
|
||||
diff -urN binutils-2.15-dist/configure binutils-2.15/configure
|
||||
--- binutils-2.15-dist/configure 2004-05-17 14:36:20.000000000 -0500
|
||||
+++ binutils-2.15/configure 2004-08-04 12:01:44.000000000 -0500
|
||||
@@ -1288,6 +1288,18 @@
|
||||
i[3456789]86-*-freebsd* | i[3456789]86-*-kfreebsd*-gnu)
|
||||
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
;;
|
||||
+ i[3456789]86-*-linux-uclibc*)
|
||||
+ # This section makes it possible to build newlib natively on linux.
|
||||
+ # If we are using a cross compiler then don't configure newlib.
|
||||
+ if test x${is_cross_compiler} != xno ; then
|
||||
+ noconfigdirs="$noconfigdirs target-newlib"
|
||||
+ fi
|
||||
+ noconfigdirs="$noconfigdirs target-libgloss"
|
||||
+ # If we are not using a cross compiler, do configure newlib.
|
||||
+ # Note however, that newlib will only be configured in this situation
|
||||
+ # if the --with-newlib option has been given, because otherwise
|
||||
+ # 'target-newlib' will appear in skipdirs.
|
||||
+ ;;
|
||||
i[3456789]86-*-linux*)
|
||||
# The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
|
||||
# not build java stuff by default.
|
||||
diff -urN binutils-2.15-dist/configure.in binutils-2.15/configure.in
|
||||
--- binutils-2.15-dist/configure.in 2004-05-17 14:40:54.000000000 -0500
|
||||
+++ binutils-2.15/configure.in 2004-08-04 12:01:44.000000000 -0500
|
||||
@@ -521,6 +521,18 @@
|
||||
i[[3456789]]86-*-freebsd* | i[[3456789]]86-*-kfreebsd*-gnu)
|
||||
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
;;
|
||||
+ i[[3456789]]86-*-linux-uclibc*)
|
||||
+ # This section makes it possible to build newlib natively on linux.
|
||||
+ # If we are using a cross compiler then don't configure newlib.
|
||||
+ if test x${is_cross_compiler} != xno ; then
|
||||
+ noconfigdirs="$noconfigdirs target-newlib"
|
||||
+ fi
|
||||
+ noconfigdirs="$noconfigdirs target-libgloss"
|
||||
+ # If we are not using a cross compiler, do configure newlib.
|
||||
+ # Note however, that newlib will only be configured in this situation
|
||||
+ # if the --with-newlib option has been given, because otherwise
|
||||
+ # 'target-newlib' will appear in skipdirs.
|
||||
+ ;;
|
||||
i[[3456789]]86-*-linux*)
|
||||
# The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
|
||||
# not build java stuff by default.
|
||||
diff -urN binutils-2.15-dist/gas/configure binutils-2.15/gas/configure
|
||||
--- binutils-2.15-dist/gas/configure 2004-05-17 14:36:07.000000000 -0500
|
||||
+++ binutils-2.15/gas/configure 2004-08-04 12:07:50.000000000 -0500
|
||||
@@ -3400,6 +3400,11 @@
|
||||
lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ lt_cv_deplibs_check_method=pass_all
|
||||
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
||||
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
|
||||
@@ -4224,6 +4229,7 @@
|
||||
alpha*-*-osf*) fmt=ecoff ;;
|
||||
alpha*-*-linuxecoff*) fmt=ecoff ;;
|
||||
alpha*-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ alpha*-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
alpha*-*-netbsd*) fmt=elf em=nbsd ;;
|
||||
alpha*-*-openbsd*) fmt=elf em=obsd ;;
|
||||
|
||||
@@ -4240,6 +4246,7 @@
|
||||
arm*-*-conix*) fmt=elf ;;
|
||||
arm-*-linux*aout*) fmt=aout em=linux ;;
|
||||
arm*-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ arm*-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
arm*-*-uclinux*) fmt=elf em=linux ;;
|
||||
arm-*-netbsdelf*) fmt=elf em=nbsd ;;
|
||||
arm-*-*n*bsd*) fmt=aout em=nbsd ;;
|
||||
@@ -4253,6 +4260,7 @@
|
||||
avr-*-*) fmt=elf ;;
|
||||
|
||||
cris-*-linux-gnu*) fmt=multi bfd_gas=yes em=linux ;;
|
||||
+ cris-*-linux-uclibc*) fmt=multi bfd_gas=yes em=linux ;;
|
||||
cris-*-*) fmt=multi bfd_gas=yes ;;
|
||||
|
||||
d10v-*-*) fmt=elf ;;
|
||||
@@ -4310,7 +4318,9 @@
|
||||
i386-*-linux*oldld) fmt=aout em=linux ;;
|
||||
i386-*-linux*coff*) fmt=coff em=linux ;;
|
||||
i386-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ i386-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
x86_64-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ x86_64-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
i386-*-lynxos*) fmt=coff em=lynx ;;
|
||||
i386-*-sysv[45]*) fmt=elf ;;
|
||||
i386-*-solaris*) fmt=elf ;;
|
||||
@@ -4370,6 +4380,7 @@
|
||||
ia64-*-elf*) fmt=elf ;;
|
||||
ia64-*-aix*) fmt=elf em=ia64aix ;;
|
||||
ia64-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ ia64-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
ia64-*-hpux*) fmt=elf em=hpux ;;
|
||||
ia64-*-netbsd*) fmt=elf em=nbsd ;;
|
||||
|
||||
@@ -4397,6 +4408,7 @@
|
||||
m68k-*-hpux*) fmt=hp300 em=hp300 ;;
|
||||
m68k-*-linux*aout*) fmt=aout em=linux ;;
|
||||
m68k-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ m68k-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
m68k-*-uclinux*) fmt=elf ;;
|
||||
m68k-*-gnu*) fmt=elf ;;
|
||||
m68k-*-lynxos*) fmt=coff em=lynx ;;
|
||||
@@ -4459,6 +4471,7 @@
|
||||
ppc-*-beos*) fmt=coff ;;
|
||||
ppc-*-*n*bsd* | ppc-*-elf*) fmt=elf ;;
|
||||
ppc-*-eabi* | ppc-*-sysv4*) fmt=elf ;;
|
||||
+ ppc-*-linux-uclibc* | \
|
||||
ppc-*-linux-gnu*) fmt=elf em=linux
|
||||
case "$endian" in
|
||||
big) ;;
|
||||
@@ -4486,7 +4499,9 @@
|
||||
ppc-*-kaos*) fmt=elf ;;
|
||||
|
||||
s390x-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ s390x-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
s390-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ s390-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
|
||||
sh*-*-linux*) fmt=elf em=linux
|
||||
case ${cpu} in
|
||||
@@ -4519,6 +4534,7 @@
|
||||
sparc-*-coff) fmt=coff ;;
|
||||
sparc-*-linux*aout*) fmt=aout em=linux ;;
|
||||
sparc-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ sparc-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
sparc-*-lynxos*) fmt=coff em=lynx ;;
|
||||
sparc-fujitsu-none) fmt=aout ;;
|
||||
sparc-*-elf) fmt=elf ;;
|
||||
diff -urN binutils-2.15-dist/gas/configure.in binutils-2.15/gas/configure.in
|
||||
--- binutils-2.15-dist/gas/configure.in 2004-05-17 14:36:07.000000000 -0500
|
||||
+++ binutils-2.15/gas/configure.in 2004-08-04 12:07:21.000000000 -0500
|
||||
@@ -194,6 +194,7 @@
|
||||
alpha*-*-osf*) fmt=ecoff ;;
|
||||
alpha*-*-linuxecoff*) fmt=ecoff ;;
|
||||
alpha*-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ alpha*-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
alpha*-*-netbsd*) fmt=elf em=nbsd ;;
|
||||
alpha*-*-openbsd*) fmt=elf em=obsd ;;
|
||||
|
||||
@@ -210,6 +211,7 @@
|
||||
arm*-*-conix*) fmt=elf ;;
|
||||
arm-*-linux*aout*) fmt=aout em=linux ;;
|
||||
arm*-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ arm*-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
arm*-*-uclinux*) fmt=elf em=linux ;;
|
||||
arm-*-netbsdelf*) fmt=elf em=nbsd ;;
|
||||
arm-*-*n*bsd*) fmt=aout em=nbsd ;;
|
||||
@@ -223,6 +225,7 @@
|
||||
avr-*-*) fmt=elf ;;
|
||||
|
||||
cris-*-linux-gnu*) fmt=multi bfd_gas=yes em=linux ;;
|
||||
+ cris-*-linux-uclibc*) fmt=multi bfd_gas=yes em=linux ;;
|
||||
cris-*-*) fmt=multi bfd_gas=yes ;;
|
||||
|
||||
d10v-*-*) fmt=elf ;;
|
||||
@@ -280,7 +283,9 @@
|
||||
i386-*-linux*oldld) fmt=aout em=linux ;;
|
||||
i386-*-linux*coff*) fmt=coff em=linux ;;
|
||||
i386-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ i386-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
x86_64-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ x86_64-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
i386-*-lynxos*) fmt=coff em=lynx ;;
|
||||
changequote(,)dnl
|
||||
i386-*-sysv[45]*) fmt=elf ;;
|
||||
@@ -333,6 +338,7 @@
|
||||
ia64-*-elf*) fmt=elf ;;
|
||||
ia64-*-aix*) fmt=elf em=ia64aix ;;
|
||||
ia64-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ ia64-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
ia64-*-hpux*) fmt=elf em=hpux ;;
|
||||
ia64-*-netbsd*) fmt=elf em=nbsd ;;
|
||||
|
||||
@@ -360,6 +366,7 @@
|
||||
m68k-*-hpux*) fmt=hp300 em=hp300 ;;
|
||||
m68k-*-linux*aout*) fmt=aout em=linux ;;
|
||||
m68k-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ m68k-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
m68k-*-uclinux*) fmt=elf ;;
|
||||
m68k-*-gnu*) fmt=elf ;;
|
||||
m68k-*-lynxos*) fmt=coff em=lynx ;;
|
||||
@@ -419,6 +426,7 @@
|
||||
ppc-*-beos*) fmt=coff ;;
|
||||
ppc-*-*n*bsd* | ppc-*-elf*) fmt=elf ;;
|
||||
ppc-*-eabi* | ppc-*-sysv4*) fmt=elf ;;
|
||||
+ ppc-*-linux-uclibc* | \
|
||||
ppc-*-linux-gnu*) fmt=elf em=linux
|
||||
case "$endian" in
|
||||
big) ;;
|
||||
@@ -439,7 +447,9 @@
|
||||
ppc-*-kaos*) fmt=elf ;;
|
||||
|
||||
s390x-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ s390x-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
s390-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ s390-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
|
||||
sh*-*-linux*) fmt=elf em=linux
|
||||
case ${cpu} in
|
||||
@@ -472,6 +482,7 @@
|
||||
sparc-*-coff) fmt=coff ;;
|
||||
sparc-*-linux*aout*) fmt=aout em=linux ;;
|
||||
sparc-*-linux-gnu*) fmt=elf em=linux ;;
|
||||
+ sparc-*-linux-uclibc*) fmt=elf em=linux ;;
|
||||
sparc-*-lynxos*) fmt=coff em=lynx ;;
|
||||
sparc-fujitsu-none) fmt=aout ;;
|
||||
sparc-*-elf) fmt=elf ;;
|
||||
diff -urN binutils-2.15-dist/gprof/configure binutils-2.15/gprof/configure
|
||||
--- binutils-2.15-dist/gprof/configure 2003-08-26 12:19:19.000000000 -0500
|
||||
+++ binutils-2.15/gprof/configure 2004-08-04 12:01:45.000000000 -0500
|
||||
@@ -1581,6 +1581,11 @@
|
||||
lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ lt_cv_deplibs_check_method=pass_all
|
||||
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
||||
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
|
||||
diff -urN binutils-2.15-dist/ld/configure binutils-2.15/ld/configure
|
||||
--- binutils-2.15-dist/ld/configure 2003-04-24 07:36:07.000000000 -0500
|
||||
+++ binutils-2.15/ld/configure 2004-08-04 12:01:45.000000000 -0500
|
||||
@@ -1589,6 +1589,11 @@
|
||||
lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ lt_cv_deplibs_check_method=pass_all
|
||||
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
||||
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
|
||||
diff -urN binutils-2.15-dist/ld/configure.tgt binutils-2.15/ld/configure.tgt
|
||||
--- binutils-2.15-dist/ld/configure.tgt 2004-05-17 14:36:15.000000000 -0500
|
||||
+++ binutils-2.15/ld/configure.tgt 2004-08-04 12:01:45.000000000 -0500
|
||||
@@ -30,6 +30,7 @@
|
||||
targ_extra_emuls="criself crislinux"
|
||||
targ_extra_libpath=$targ_extra_emuls ;;
|
||||
cris-*-linux-gnu*) targ_emul=crislinux ;;
|
||||
+cris-*-linux-uclibc*) targ_emul=crislinux ;;
|
||||
cris-*-*) targ_emul=criself
|
||||
targ_extra_emuls="crisaout crislinux"
|
||||
targ_extra_libpath=$targ_extra_emuls ;;
|
||||
@@ -59,14 +60,16 @@
|
||||
tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
|
||||
tdir_sun4=sparc-sun-sunos4
|
||||
;;
|
||||
-sparc64-*-linux-gnu*) targ_emul=elf64_sparc
|
||||
+sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*) \
|
||||
+ targ_emul=elf64_sparc
|
||||
targ_extra_emuls="elf32_sparc sparclinux sun4"
|
||||
targ_extra_libpath=elf32_sparc
|
||||
tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
|
||||
tdir_sparclinux=${tdir_elf32_sparc}aout
|
||||
tdir_sun4=sparc-sun-sunos4
|
||||
;;
|
||||
-sparc*-*-linux-gnu*) targ_emul=elf32_sparc
|
||||
+sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) \
|
||||
+ targ_emul=elf32_sparc
|
||||
targ_extra_emuls="sparclinux elf64_sparc sun4"
|
||||
targ_extra_libpath=elf64_sparc
|
||||
tdir_sparclinux=${targ_alias}aout
|
||||
@@ -118,7 +121,9 @@
|
||||
m32r*le-*-elf*) targ_emul=m32rlelf ;;
|
||||
m32r*-*-elf*) targ_emul=m32relf ;;
|
||||
m32r*le-*-linux-gnu*) targ_emul=m32rlelf_linux ;;
|
||||
+m32r*le-*-linux-uclibc*) targ_emul=m32rlelf_linux ;;
|
||||
m32r*-*-linux-gnu*) targ_emul=m32relf_linux ;;
|
||||
+m32r*-*-linux-uclibc*) targ_emul=m32relf_linux ;;
|
||||
m68hc11-*-*|m6811-*-*) targ_emul=m68hc11elf
|
||||
targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
|
||||
m68hc12-*-*|m6812-*-*) targ_emul=m68hc12elf
|
||||
@@ -128,7 +133,7 @@
|
||||
m68*-ericsson-ose) targ_emul=sun3 ;;
|
||||
m68*-apple-aux*) targ_emul=m68kaux ;;
|
||||
*-tandem-none) targ_emul=st2000 ;;
|
||||
-i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
|
||||
+i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;;
|
||||
i[3-7]86-*-nto-qnx*) targ_emul=i386nto ;;
|
||||
i[3-7]86-*-vsta) targ_emul=vsta ;;
|
||||
i[3-7]86-go32-rtems*) targ_emul=i386go32 ;;
|
||||
@@ -152,14 +157,16 @@
|
||||
tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
|
||||
;;
|
||||
i[3-7]86-*-linux*oldld) targ_emul=i386linux; targ_extra_emuls=elf_i386 ;;
|
||||
-i[3-7]86-*-linux-gnu*) targ_emul=elf_i386
|
||||
+i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) \
|
||||
+ targ_emul=elf_i386
|
||||
targ_extra_emuls=i386linux
|
||||
if test x${want64} = xtrue; then
|
||||
targ_extra_emuls="$targ_extra_emuls elf_x86_64"
|
||||
fi
|
||||
tdir_i386linux=${targ_alias}aout
|
||||
;;
|
||||
-x86_64-*-linux-gnu*) targ_emul=elf_x86_64
|
||||
+x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) \
|
||||
+ targ_emul=elf_x86_64
|
||||
targ_extra_emuls="elf_i386 i386linux"
|
||||
targ_extra_libpath=elf_i386
|
||||
tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
|
||||
@@ -259,10 +266,13 @@
|
||||
arm9e-*-elf) targ_emul=armelf ;;
|
||||
arm-*-oabi) targ_emul=armelf_oabi ;;
|
||||
arm*b-*-linux-gnu*) targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
|
||||
+arm*b-*-linux-uclibc*) targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
|
||||
arm*-*-linux-gnu*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
|
||||
+arm*-*-linux-uclibc*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
|
||||
arm*-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
|
||||
arm*-*-conix*) targ_emul=armelf ;;
|
||||
-thumb-*-linux-gnu* | thumb-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
|
||||
+thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) \
|
||||
+ targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
|
||||
strongarm-*-coff) targ_emul=armcoff ;;
|
||||
strongarm-*-elf) targ_emul=armelf ;;
|
||||
strongarm-*-kaos*) targ_emul=armelf ;;
|
||||
@@ -364,7 +374,8 @@
|
||||
targ_extra_emuls=m68kelf
|
||||
tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
|
||||
;;
|
||||
-m68k-*-linux-gnu*) targ_emul=m68kelf
|
||||
+m68k-*-linux-gnu* | m68k-*-linux-uclibc*) \
|
||||
+ targ_emul=m68kelf
|
||||
targ_extra_emuls=m68klinux
|
||||
tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'`
|
||||
;;
|
||||
@@ -381,9 +392,9 @@
|
||||
m68*-*-psos*) targ_emul=m68kpsos ;;
|
||||
m68*-*-rtemscoff*) targ_emul=m68kcoff ;;
|
||||
m68*-*-rtems*) targ_emul=m68kelf ;;
|
||||
-hppa*64*-*-linux-gnu*) targ_emul=hppa64linux ;;
|
||||
+hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*) targ_emul=hppa64linux ;;
|
||||
hppa*64*-*) targ_emul=elf64hppa ;;
|
||||
-hppa*-*-linux-gnu*) targ_emul=hppalinux ;;
|
||||
+hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*) targ_emul=hppalinux ;;
|
||||
hppa*-*-*elf*) targ_emul=hppaelf ;;
|
||||
hppa*-*-lites*) targ_emul=hppaelf ;;
|
||||
hppa*-*-netbsd*) targ_emul=hppanbsd ;;
|
||||
@@ -396,6 +407,7 @@
|
||||
targ_emul=vaxnbsd
|
||||
targ_extra_emuls=elf32vax ;;
|
||||
vax-*-linux-gnu*) targ_emul=elf32vax ;;
|
||||
+vax-*-linux-uclibc*) targ_emul=elf32vax ;;
|
||||
mips*-*-pe) targ_emul=mipspe ;
|
||||
targ_extra_ofiles="deffilep.o pe-dll.o" ;;
|
||||
mips*-dec-ultrix*) targ_emul=mipslit ;;
|
||||
@@ -429,16 +441,16 @@
|
||||
mips*-*-vxworks*) targ_emul=elf32ebmip
|
||||
targ_extra_emuls="elf32elmip" ;;
|
||||
mips*-*-windiss) targ_emul=elf32mipswindiss ;;
|
||||
-mips64*el-*-linux-gnu*) targ_emul=elf32ltsmipn32
|
||||
+mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*) targ_emul=elf32ltsmipn32
|
||||
targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
|
||||
;;
|
||||
-mips64*-*-linux-gnu*) targ_emul=elf32btsmipn32
|
||||
+mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*) targ_emul=elf32btsmipn32
|
||||
targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
|
||||
;;
|
||||
-mips*el-*-linux-gnu*) targ_emul=elf32ltsmip
|
||||
+mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*) targ_emul=elf32ltsmip
|
||||
targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
|
||||
;;
|
||||
-mips*-*-linux-gnu*) targ_emul=elf32btsmip
|
||||
+mips*-*-linux-gnu* | mips*-*-linux-uclibc*) targ_emul=elf32btsmip
|
||||
targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
|
||||
;;
|
||||
mips*-*-lnews*) targ_emul=mipslnews ;;
|
||||
@@ -461,6 +473,10 @@
|
||||
alpha*-*-linux-gnu*) targ_emul=elf64alpha targ_extra_emuls=alpha
|
||||
tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
|
||||
;;
|
||||
+alpha*-*-linux-uclibc*) targ_emul=elf64alpha targ_extra_emuls=alpha
|
||||
+ # The following needs to be checked...
|
||||
+ tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
|
||||
+ ;;
|
||||
alpha*-*-osf*) targ_emul=alpha ;;
|
||||
alpha*-*-gnu*) targ_emul=elf64alpha ;;
|
||||
alpha*-*-netware*) targ_emul=alpha ;;
|
||||
diff -urN binutils-2.15-dist/libtool.m4 binutils-2.15/libtool.m4
|
||||
--- binutils-2.15-dist/libtool.m4 2003-04-10 22:58:39.000000000 -0500
|
||||
+++ binutils-2.15/libtool.m4 2004-08-04 12:01:45.000000000 -0500
|
||||
@@ -645,6 +645,11 @@
|
||||
lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ lt_cv_deplibs_check_method=pass_all
|
||||
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
||||
[lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
|
||||
diff -urN binutils-2.15-dist/ltconfig binutils-2.15/ltconfig
|
||||
--- binutils-2.15-dist/ltconfig 2003-10-03 23:54:47.000000000 -0500
|
||||
+++ binutils-2.15/ltconfig 2004-08-04 12:01:45.000000000 -0500
|
||||
@@ -603,6 +603,7 @@
|
||||
# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
|
||||
case $host_os in
|
||||
linux-gnu*) ;;
|
||||
+linux-uclibc*) ;;
|
||||
linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
|
||||
esac
|
||||
|
||||
@@ -1259,6 +1260,24 @@
|
||||
dynamic_linker='GNU/Linux ld.so'
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ version_type=linux
|
||||
+ need_lib_prefix=no
|
||||
+ need_version=no
|
||||
+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
|
||||
+ soname_spec='${libname}${release}.so$major'
|
||||
+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
|
||||
+ shlibpath_var=LD_LIBRARY_PATH
|
||||
+ shlibpath_overrides_runpath=no
|
||||
+ # This implies no fast_install, which is unacceptable.
|
||||
+ # Some rework will be needed to allow for fast_install
|
||||
+ # before this can be enabled.
|
||||
+ # Note: copied from linux-gnu, and may not be appropriate.
|
||||
+ hardcode_into_libs=yes
|
||||
+ # Assume using the uClibc dynamic linker.
|
||||
+ dynamic_linker="uClibc ld.so"
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
need_lib_prefix=no
|
||||
need_version=no
|
||||
diff -urN binutils-2.15-dist/opcodes/configure binutils-2.15/opcodes/configure
|
||||
--- binutils-2.15-dist/opcodes/configure 2003-08-05 04:39:31.000000000 -0500
|
||||
+++ binutils-2.15/opcodes/configure 2004-08-04 12:01:45.000000000 -0500
|
||||
@@ -1700,6 +1700,11 @@
|
||||
lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
|
||||
;;
|
||||
|
||||
+linux-uclibc*)
|
||||
+ lt_cv_deplibs_check_method=pass_all
|
||||
+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
|
||||
+ ;;
|
||||
+
|
||||
netbsd*)
|
||||
if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
|
||||
lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
|
@ -1,32 +0,0 @@
|
||||
diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.am binutils-2.14.90.0.6.new/bfd/doc/Makefile.am
|
||||
--- binutils-2.14.90.0.6/bfd/doc/Makefile.am 2003-07-23 10:08:09.000000000 -0500
|
||||
+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.am 2004-03-01 16:05:16.000000000 -0600
|
||||
@@ -55,10 +55,10 @@
|
||||
MKDOC = chew$(EXEEXT_FOR_BUILD)
|
||||
|
||||
$(MKDOC): chew.o
|
||||
- $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
|
||||
+ $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
|
||||
|
||||
chew.o: chew.c
|
||||
- $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
|
||||
+ $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
|
||||
|
||||
protos: libbfd.h libcoff.h bfd.h
|
||||
|
||||
diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.in binutils-2.14.90.0.6.new/bfd/doc/Makefile.in
|
||||
--- binutils-2.14.90.0.6/bfd/doc/Makefile.in 2003-07-23 10:08:09.000000000 -0500
|
||||
+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.in 2004-03-01 16:05:03.000000000 -0600
|
||||
@@ -469,10 +469,10 @@
|
||||
|
||||
|
||||
$(MKDOC): chew.o
|
||||
- $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
|
||||
+ $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
|
||||
|
||||
chew.o: chew.c
|
||||
- $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
|
||||
+ $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
|
||||
|
||||
protos: libbfd.h libcoff.h bfd.h
|
||||
|
@ -1,26 +0,0 @@
|
||||
--- binutils/bfd/elf32-mips.c~
|
||||
+++ binutils/bfd/elf32-mips.c
|
||||
@@ -1611,7 +1611,9 @@
|
||||
|
||||
/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
|
||||
page sizes of up to that limit, so we need to respect it. */
|
||||
-#define ELF_MAXPAGESIZE 0x10000
|
||||
+/*#define ELF_MAXPAGESIZE 0x10000*/
|
||||
+/* Use 4K to shrink the elf header. NOT for general use! */
|
||||
+#define ELF_MAXPAGESIZE 0x1000
|
||||
#define elf32_bed elf32_tradbed
|
||||
|
||||
/* Include the target file again for this target. */
|
||||
--- binutils/bfd/elfn32-mips.c~
|
||||
+++ binutils/bfd/elfn32-mips.c
|
||||
@@ -1976,7 +1976,9 @@
|
||||
|
||||
/* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
|
||||
page sizes of up to that limit, so we need to respect it. */
|
||||
-#define ELF_MAXPAGESIZE 0x10000
|
||||
+/*#define ELF_MAXPAGESIZE 0x10000*/
|
||||
+/* Use 4K to shrink the elf header. NOT for general use! */
|
||||
+#define ELF_MAXPAGESIZE 0x1000
|
||||
#define elf32_bed elf32_tradbed
|
||||
|
||||
/* Include the target file again for this target. */
|
@ -1,63 +0,0 @@
|
||||
http://sources.redhat.com/ml/binutils/2004-06/msg00010.html
|
||||
--- binutils-2.15.90.0.3-old/bfd/elf32-arm.h 2004-04-12 14:56:33.000000000 -0500
|
||||
+++ binutils-2.15.90.0.3/bfd/elf32-arm.h 2004-09-03 06:56:40.000000000 -0500
|
||||
@@ -87,6 +87,8 @@
|
||||
#endif
|
||||
static bfd_boolean allocate_dynrelocs
|
||||
PARAMS ((struct elf_link_hash_entry *h, PTR inf));
|
||||
+static bfd_boolean elf32_arm_readonly_dynrelocs
|
||||
+ PARAMS ((struct elf_link_hash_entry *, PTR));
|
||||
static bfd_boolean create_got_section
|
||||
PARAMS ((bfd * dynobj, struct bfd_link_info * info));
|
||||
static bfd_boolean elf32_arm_create_dynamic_sections
|
||||
@@ -3531,6 +3533,37 @@
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
+/* Find any dynamic relocs that apply to read-only sections. */
|
||||
+
|
||||
+static bfd_boolean
|
||||
+elf32_arm_readonly_dynrelocs (h, inf)
|
||||
+ struct elf_link_hash_entry *h;
|
||||
+ PTR inf;
|
||||
+{
|
||||
+ struct elf32_arm_link_hash_entry *eh;
|
||||
+ struct elf32_arm_relocs_copied *p;
|
||||
+
|
||||
+ if (h->root.type == bfd_link_hash_warning)
|
||||
+ h = (struct elf_link_hash_entry *) h->root.u.i.link;
|
||||
+
|
||||
+ eh = (struct elf32_arm_link_hash_entry *) h;
|
||||
+ for (p = eh->relocs_copied; p != NULL; p = p->next)
|
||||
+ {
|
||||
+ asection *s = p->section;
|
||||
+
|
||||
+ if (s != NULL && (s->flags & SEC_READONLY) != 0)
|
||||
+ {
|
||||
+ struct bfd_link_info *info = (struct bfd_link_info *) inf;
|
||||
+
|
||||
+ info->flags |= DF_TEXTREL;
|
||||
+
|
||||
+ /* Not an error, just cut short the traversal. */
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ }
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
/* Set the sizes of the dynamic sections. */
|
||||
|
||||
static bfd_boolean
|
||||
@@ -3740,6 +3773,12 @@
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+ /* If any dynamic relocs apply to a read-only section,
|
||||
+ then we need a DT_TEXTREL entry. */
|
||||
+ if ((info->flags & DF_TEXTREL) == 0)
|
||||
+ elf_link_hash_traverse (&htab->root, elf32_arm_readonly_dynrelocs,
|
||||
+ (PTR) info);
|
||||
+
|
||||
if ((info->flags & DF_TEXTREL) != 0)
|
||||
{
|
||||
if (!add_dynamic_entry (DT_TEXTREL, 0))
|
@ -1,24 +0,0 @@
|
||||
Signed-off-by: dank@kegel.com
|
||||
|
||||
Raising the size of the hash table is a noticable win when linking
|
||||
at least one large app.
|
||||
|
||||
There was a patch,
|
||||
http://sources.redhat.com/ml/binutils/2004-06/msg00165.html
|
||||
to do this dynamically. No idea why that didn't make it in.
|
||||
So this tiny change to raise the default size is just
|
||||
a stopgap for now.
|
||||
|
||||
|
||||
--- binutils-2.15/bfd/hash.c.old 2003-12-01 01:33:01.000000000 -0500
|
||||
+++ binutils-2.15/bfd/hash.c 2006-03-01 16:26:26.701991000 -0500
|
||||
@@ -295,7 +295,7 @@
|
||||
*/
|
||||
|
||||
/* The default number of entries to use when creating a hash table. */
|
||||
-#define DEFAULT_SIZE (4051)
|
||||
+#define DEFAULT_SIZE (32749)
|
||||
|
||||
/* Create a new hash table, given a number of entries. */
|
||||
|
||||
|
@ -1,75 +0,0 @@
|
||||
Fix found here: http://www.freelists.org/archives/openbeos/11-2005/msg00090.html
|
||||
|
||||
Fixes:
|
||||
In file included from ./targ-cpu.h:1,
|
||||
from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/obj-elf.h:42,
|
||||
from ./obj-format.h:1,
|
||||
from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/te-linux.h:4,
|
||||
from ./targ-env.h:1,
|
||||
from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/as.h:626,
|
||||
from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/app.c:30:
|
||||
/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/tc-i386.h:451: error: array type has incomplete element type
|
||||
make[3]: *** [app.o] Error 1
|
||||
make[3]: Leaving directory `/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-binutils/gas'
|
||||
|
||||
when building binutils-2.15 with gcc-4.0
|
||||
|
||||
|
||||
diff -ur binutils-2.15.old/gas/as.h binutils-2.15/gas/as.h
|
||||
--- binutils-2.15.old/gas/as.h 2003-11-22 18:14:21.000000000 -0800
|
||||
+++ binutils-2.15/gas/as.h 2006-02-14 22:05:35.000000000 -0800
|
||||
@@ -605,7 +605,26 @@
|
||||
struct expressionS;
|
||||
struct fix;
|
||||
typedef struct symbol symbolS;
|
||||
-struct relax_type;
|
||||
+
|
||||
+/* JF moved this here from as.h under the theory that nobody except MACHINE.c
|
||||
+ and write.c care about it anyway. */
|
||||
+/* [zooey]: the above no longer holds with gcc4, as it keeps bugging about
|
||||
+ incomplete element types in arrays, if relax_type isn't defined
|
||||
+ here. So I moved the definition back from tc.h to here. */
|
||||
+struct relax_type
|
||||
+{
|
||||
+ /* Forward reach. Signed number. > 0. */
|
||||
+ long rlx_forward;
|
||||
+ /* Backward reach. Signed number. < 0. */
|
||||
+ long rlx_backward;
|
||||
+
|
||||
+ /* Bytes length of this address. */
|
||||
+ unsigned char rlx_length;
|
||||
+
|
||||
+ /* Next longer relax-state. 0 means there is no 'next' relax-state. */
|
||||
+ relax_substateT rlx_more;
|
||||
+};
|
||||
+
|
||||
typedef struct frag fragS;
|
||||
|
||||
#ifdef BFD_ASSEMBLER
|
||||
diff -ur binutils-2.15.old/gas/tc.h binutils-2.15/gas/tc.h
|
||||
--- binutils-2.15.old/gas/tc.h 2003-12-03 15:39:38.000000000 -0800
|
||||
+++ binutils-2.15/gas/tc.h 2006-02-14 22:03:35.000000000 -0800
|
||||
@@ -24,23 +24,6 @@
|
||||
|
||||
extern const pseudo_typeS md_pseudo_table[];
|
||||
|
||||
-/* JF moved this here from as.h under the theory that nobody except MACHINE.c
|
||||
- and write.c care about it anyway. */
|
||||
-
|
||||
-struct relax_type
|
||||
-{
|
||||
- /* Forward reach. Signed number. > 0. */
|
||||
- long rlx_forward;
|
||||
- /* Backward reach. Signed number. < 0. */
|
||||
- long rlx_backward;
|
||||
-
|
||||
- /* Bytes length of this address. */
|
||||
- unsigned char rlx_length;
|
||||
-
|
||||
- /* Next longer relax-state. 0 means there is no 'next' relax-state. */
|
||||
- relax_substateT rlx_more;
|
||||
-};
|
||||
-
|
||||
typedef struct relax_type relax_typeS;
|
||||
|
||||
extern const int md_reloc_size; /* Size of a relocation record */
|
@ -1,40 +0,0 @@
|
||||
Make psignal prototype in libiberty match that in glibc.
|
||||
|
||||
Fixes:
|
||||
|
||||
gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal':
|
||||
gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype
|
||||
/usr/include/signal.h:131: prototype declaration
|
||||
gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype
|
||||
/usr/include/signal.h:131: prototype declaration
|
||||
gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned
|
||||
mprotect... make[1]: *** [strsignal.o] Error 1
|
||||
make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty'
|
||||
make: *** [all-libiberty] Error 2
|
||||
|
||||
when building on red hat 7.1
|
||||
though it's a bit of a mystery why libiberty's psignal is being compiled at
|
||||
all, since red hat 7.1's glibc supports psignal (hence the error message)
|
||||
|
||||
--- binutils-2.15/libiberty/strsignal.c.old 2005-04-18 13:57:40.000000000 -0700
|
||||
+++ binutils-2.15/libiberty/strsignal.c 2005-04-18 13:59:09.000000000 -0700
|
||||
@@ -544,7 +544,7 @@
|
||||
|
||||
/*
|
||||
|
||||
-@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message})
|
||||
+@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message})
|
||||
|
||||
Print @var{message} to the standard error, followed by a colon,
|
||||
followed by the description of the signal specified by @var{signo},
|
||||
@@ -557,9 +557,7 @@
|
||||
#ifndef HAVE_PSIGNAL
|
||||
|
||||
void
|
||||
-psignal (signo, message)
|
||||
- unsigned signo;
|
||||
- char *message;
|
||||
+psignal (int signo, const char *message)
|
||||
{
|
||||
if (signal_names == NULL)
|
||||
{
|
@ -1,22 +0,0 @@
|
||||
See http://sources.redhat.com/ml/binutils/2004-06/msg00114.html
|
||||
|
||||
--- src/bfd/elflink.c.org 2004-07-05 09:11:42.920597000 -0400
|
||||
+++ src/bfd/elflink.c 2004-07-05 09:12:59.240847000 -0400
|
||||
@@ -2700,7 +2700,7 @@
|
||||
return vdiff > 0 ? 1 : -1;
|
||||
else
|
||||
{
|
||||
- long sdiff = h1->root.u.def.section - h2->root.u.def.section;
|
||||
+ long sdiff = h1->root.u.def.section->id - h2->root.u.def.section->id;
|
||||
if (sdiff != 0)
|
||||
return sdiff > 0 ? 1 : -1;
|
||||
}
|
||||
@@ -3954,7 +3954,7 @@
|
||||
i = idx + 1;
|
||||
else
|
||||
{
|
||||
- long sdiff = slook - h->root.u.def.section;
|
||||
+ long sdiff = slook->id - h->root.u.def.section->id;
|
||||
if (sdiff < 0)
|
||||
j = idx;
|
||||
else if (sdiff > 0)
|
@ -1,45 +0,0 @@
|
||||
Grabbed with
|
||||
wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/opcodes/ppc-opc.c.diff?r1=1.70&r2=1.71&cvsroot=src'
|
||||
See
|
||||
http://mail.gnu.org/archive/html/bug-binutils/2004-05/msg00071.html
|
||||
and
|
||||
http://sources.redhat.com/ml/binutils-cvs/2004-05/msg00111.html
|
||||
|
||||
This fixes problems like
|
||||
{standard input}: Assembler messages:
|
||||
{standard input}:1: Error: Unrecognized opcode: `dssall'
|
||||
which show up in binutils-2.15 when building the Linux kernel,
|
||||
or possibly failed compilations when building setjmp/longjmp in glibc.
|
||||
|
||||
An alternative fix would be to pass -many to the assembler.
|
||||
A patch to do that for glibc is at
|
||||
wget 'http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2004-05&msgid=40B36E8C.9030609%40us.ibm.com'
|
||||
Yet another, better, fix would be for gcc to generate assembly
|
||||
that told the assembler which processor type to use.
|
||||
Presumably the Linux kernel sources would need a fix, too.
|
||||
Probably better to just fix binutils to accept sources that it used to.
|
||||
|
||||
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/opcodes/ppc-opc.c,v
|
||||
retrieving revision 1.70
|
||||
retrieving revision 1.71
|
||||
diff -u -r1.70 -r1.71
|
||||
--- src/opcodes/ppc-opc.c 2004/05/05 13:43:36 1.70
|
||||
+++ src/opcodes/ppc-opc.c 2004/05/19 05:11:48 1.71
|
||||
@@ -1004,8 +1004,13 @@
|
||||
|
||||
/* If only one bit of the FXM field is set, we can use the new form
|
||||
of the instruction, which is faster. Unlike the Power4 branch hint
|
||||
- encoding, this is not backward compatible. */
|
||||
- else if ((dialect & PPC_OPCODE_POWER4) != 0 && (value & -value) == value)
|
||||
+ encoding, this is not backward compatible. Do not generate the
|
||||
+ new form unless -mpower4 has been given, or -many and the two
|
||||
+ operand form of mfcr was used. */
|
||||
+ else if ((value & -value) == value
|
||||
+ && ((dialect & PPC_OPCODE_POWER4) != 0
|
||||
+ || ((dialect & PPC_OPCODE_ANY) != 0
|
||||
+ && (insn & (0x3ff << 1)) == 19 << 1)))
|
||||
insn |= 1 << 20;
|
||||
|
||||
/* Any other value on mfcr is an error. */
|
@ -1,51 +0,0 @@
|
||||
From http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/gas/config/tc-arm.c.diff?r1=1.168&r2=1.169&cvsroot=src
|
||||
See also http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-July/023128.html,
|
||||
"[CRITICAL PATCH] 2.6: fix silent build error]"
|
||||
|
||||
Revision 1.169, Fri Jul 2 11:12:29 2004 UTC (19 hours, 4 minutes ago) by nickc
|
||||
Branch: MAIN
|
||||
CVS Tags: binutils_latest_snapshot, HEAD
|
||||
Changes since 1.168: +14 -1 lines
|
||||
|
||||
(md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not allow values which have come
|
||||
from undefined symbols.
|
||||
Always consider this fixup to have been processed as a reloc cannot be
|
||||
generated for it.
|
||||
|
||||
|
||||
===================================================================
|
||||
RCS file: /cvs/src/src/gas/config/tc-arm.c,v
|
||||
retrieving revision 1.168
|
||||
retrieving revision 1.169
|
||||
diff -u -r1.168 -r1.169
|
||||
--- src/gas/config/tc-arm.c 2004/04/30 10:51:12 1.168
|
||||
+++ src/gas/config/tc-arm.c 2004/07/02 11:12:29 1.169
|
||||
@@ -12186,6 +12186,20 @@
|
||||
switch (fixP->fx_r_type)
|
||||
{
|
||||
case BFD_RELOC_ARM_IMMEDIATE:
|
||||
+ /* We claim that this fixup has been processed here,
|
||||
+ even if in fact we generate an error because we do
|
||||
+ not have a reloc for it, so tc_gen_reloc will reject it. */
|
||||
+ fixP->fx_done = 1;
|
||||
+
|
||||
+ if (fixP->fx_addsy
|
||||
+ && ! S_IS_DEFINED (fixP->fx_addsy))
|
||||
+ {
|
||||
+ as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
+ _("undefined symbol %s used as an immediate value"),
|
||||
+ S_GET_NAME (fixP->fx_addsy));
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
newimm = validate_immediate (value);
|
||||
temp = md_chars_to_number (buf, INSN_SIZE);
|
||||
|
||||
@@ -12202,7 +12216,6 @@
|
||||
|
||||
newimm |= (temp & 0xfffff000);
|
||||
md_number_to_chars (buf, (valueT) newimm, INSN_SIZE);
|
||||
- fixP->fx_done = 1;
|
||||
break;
|
||||
|
||||
case BFD_RELOC_ARM_ADRL_IMMEDIATE:
|
@ -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Ãe 5, 90409 NÃrnberg, Germany
|
||||
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
|
||||
"And now for something completely different."
|
@ -1,22 +0,0 @@
|
||||
--- binutils-2.15/configure.old 2004-07-21 21:36:47.000000000 -0700
|
||||
+++ binutils-2.15/configure 2004-07-21 21:37:08.000000000 -0700
|
||||
@@ -999,7 +999,7 @@
|
||||
|
||||
# Some tools are only suitable for building in a "native" situation.
|
||||
# Remove these if host!=target.
|
||||
-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
|
||||
+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
|
||||
|
||||
# Similarly, some are only suitable for cross toolchains.
|
||||
# Remove these if host=target.
|
||||
--- binutils-2.15/configure.in.old 2004-07-21 21:37:19.000000000 -0700
|
||||
+++ binutils-2.15/configure.in 2004-07-21 21:37:34.000000000 -0700
|
||||
@@ -236,7 +236,7 @@
|
||||
|
||||
# Some tools are only suitable for building in a "native" situation.
|
||||
# Remove these if host!=target.
|
||||
-native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
|
||||
+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf"
|
||||
|
||||
# Similarly, some are only suitable for cross toolchains.
|
||||
# Remove these if host=target.
|
@ -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 */
|
@ -1,677 +0,0 @@
|
||||
Signed-off-by: dank@kegel.com
|
||||
Fixes ld speed issue.
|
||||
See http://weblogs.mozillazine.org/roc/archives/2005/02/optimizing_gnu.html
|
||||
See thread "Re: optimizations for 3x speedup in ld",
|
||||
http://sources.redhat.com/ml/binutils/2005-03/msg00847.html
|
||||
|
||||
Wildcard section matching enhancement, backported from the binutils CVS tree.
|
||||
Here's the CVS log comment from the original change to ldlang.c:
|
||||
|
||||
revision 1.177
|
||||
date: 2005/04/06 15:33:02; author: jakub; state: Exp; lines: +438 -51
|
||||
2005-04-06 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* ldlang.c: Formatting.
|
||||
(walk_wild_consider_section): Remember return value from wildcardp.
|
||||
(is_simple_wild): Use strcspn instead of 2 strpbrk calls and strlen.
|
||||
(wild_spec_can_overlap): Use strcspn instead of strpbrk and strlen.
|
||||
|
||||
2005-04-06 Robert O'Callahan <rocallahan@novell.com>
|
||||
|
||||
* ld.h (lean_section_userdata_type): Remove.
|
||||
(fat_section_userdata_type): Remove file field.
|
||||
(SECTION_USERDATA_SIZE): Remove.
|
||||
* ldlang.c (init_os): Eliminate initialization of unused
|
||||
lean_section_userdata_type.
|
||||
|
||||
* ldlang.h (callback_t, walk_wild_section_handler_t): New
|
||||
typedefs.
|
||||
(struct lang_wild_statement_struct): Add walk_wild_section_handler
|
||||
and handler_data fields.
|
||||
* ldlang.c (callback_t): Removed.
|
||||
(walk_wild_consider_section, walk_wild_section_general,
|
||||
section_iterator_callback, find_section, is_simple_wild,
|
||||
match_simple_wild, walk_wild_section_specs1_wild0,
|
||||
walk_wild_section_specs1_wild1, walk_wild_section_specs2_wild1,
|
||||
walk_wild_section_specs3_wild2, walk_wild_section_specs4_wild2,
|
||||
wild_spec_can_overlap, analyze_walk_wild_section_handler): New
|
||||
functions.
|
||||
(lang_add_wild): Call analyze_walk_wild_section_handler.
|
||||
(walk_wild_section): Renamed to walk_wild_section_general and
|
||||
created a wrapper function.
|
||||
(section_iterator_callback_data): New typedef.
|
||||
|
||||
Note that bfd_get_section_by_name_if didn't exist in 2.15, so it was backported
|
||||
as well.
|
||||
|
||||
--- binutils-2.15/bfd/bfd-in2.h.old 2004-05-17 15:35:56.000000000 -0400
|
||||
+++ binutils-2.15/bfd/bfd-in2.h 2006-02-09 11:54:45.989940000 -0500
|
||||
@@ -1425,6 +1425,10 @@
|
||||
|
||||
asection *bfd_get_section_by_name (bfd *abfd, const char *name);
|
||||
|
||||
+asection *bfd_get_section_by_name_if (bfd *abfd, const char *name,
|
||||
+ bfd_boolean (*operation) (bfd *, asection *, void *),
|
||||
+ void *user_storage);
|
||||
+
|
||||
char *bfd_get_unique_section_name
|
||||
(bfd *abfd, const char *templat, int *count);
|
||||
|
||||
--- binutils-2.15/bfd/section.c.old 2003-12-01 01:33:01.000000000 -0500
|
||||
+++ binutils-2.15/bfd/section.c 2006-01-23 14:16:54.768993000 -0500
|
||||
@@ -801,6 +801,57 @@
|
||||
|
||||
/*
|
||||
FUNCTION
|
||||
+ bfd_get_section_by_name_if
|
||||
+
|
||||
+SYNOPSIS
|
||||
+ asection *bfd_get_section_by_name_if
|
||||
+ (bfd *abfd,
|
||||
+ const char *name,
|
||||
+ bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
|
||||
+ void *obj);
|
||||
+
|
||||
+DESCRIPTION
|
||||
+ Call the provided function @var{func} for each section
|
||||
+ attached to the BFD @var{abfd} whose name matches @var{name},
|
||||
+ passing @var{obj} as an argument. The function will be called
|
||||
+ as if by
|
||||
+
|
||||
+| func (abfd, the_section, obj);
|
||||
+
|
||||
+ It returns the first section for which @var{func} returns true,
|
||||
+ otherwise <<NULL>>.
|
||||
+
|
||||
+*/
|
||||
+
|
||||
+asection *
|
||||
+bfd_get_section_by_name_if (bfd *abfd, const char *name,
|
||||
+ bfd_boolean (*operation) (bfd *,
|
||||
+ asection *,
|
||||
+ void *),
|
||||
+ void *user_storage)
|
||||
+{
|
||||
+ struct section_hash_entry *sh;
|
||||
+ unsigned long hash;
|
||||
+
|
||||
+ sh = section_hash_lookup (&abfd->section_htab, name, FALSE, FALSE);
|
||||
+ if (sh == NULL)
|
||||
+ return NULL;
|
||||
+
|
||||
+ hash = sh->root.hash;
|
||||
+ do
|
||||
+ {
|
||||
+ if ((*operation) (abfd, &sh->section, user_storage))
|
||||
+ return &sh->section;
|
||||
+ sh = (struct section_hash_entry *) sh->root.next;
|
||||
+ }
|
||||
+ while (sh != NULL && sh->root.hash == hash
|
||||
+ && strcmp (sh->root.string, name) == 0);
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
+/*
|
||||
+FUNCTION
|
||||
bfd_get_unique_section_name
|
||||
|
||||
SYNOPSIS
|
||||
--- binutils-2.15/ld/ldlang.c.old 2004-05-17 15:36:16.000000000 -0400
|
||||
+++ binutils-2.15/ld/ldlang.c 2006-01-23 13:40:12.745499000 -0500
|
||||
@@ -81,9 +81,6 @@
|
||||
static void lang_record_phdrs (void);
|
||||
static void lang_do_version_exports_section (void);
|
||||
|
||||
-typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
|
||||
- asection *, lang_input_statement_type *, void *);
|
||||
-
|
||||
/* Exported variables. */
|
||||
lang_output_section_statement_type *abs_output_section;
|
||||
lang_statement_list_type lang_output_section_statement;
|
||||
@@ -138,21 +135,71 @@
|
||||
|
||||
/* Generic traversal routines for finding matching sections. */
|
||||
|
||||
+/* Try processing a section against a wildcard. This just calls
|
||||
+ the callback unless the filename exclusion list is present
|
||||
+ and excludes the file. It's hardly ever present so this
|
||||
+ function is very fast. */
|
||||
+
|
||||
+static void
|
||||
+walk_wild_consider_section (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ asection *s,
|
||||
+ struct wildcard_list *sec,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
+{
|
||||
+ bfd_boolean skip = FALSE;
|
||||
+ struct name_list *list_tmp;
|
||||
+
|
||||
+ /* Don't process sections from files which were
|
||||
+ excluded. */
|
||||
+ for (list_tmp = sec->spec.exclude_name_list;
|
||||
+ list_tmp;
|
||||
+ list_tmp = list_tmp->next)
|
||||
+ {
|
||||
+ bfd_boolean is_wildcard = wildcardp (list_tmp->name);
|
||||
+ if (is_wildcard)
|
||||
+ skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
|
||||
+ else
|
||||
+ skip = strcmp (list_tmp->name, file->filename) == 0;
|
||||
+
|
||||
+ /* If this file is part of an archive, and the archive is
|
||||
+ excluded, exclude this file. */
|
||||
+ if (! skip && file->the_bfd != NULL
|
||||
+ && file->the_bfd->my_archive != NULL
|
||||
+ && file->the_bfd->my_archive->filename != NULL)
|
||||
+ {
|
||||
+ if (is_wildcard)
|
||||
+ skip = fnmatch (list_tmp->name,
|
||||
+ file->the_bfd->my_archive->filename,
|
||||
+ 0) == 0;
|
||||
+ else
|
||||
+ skip = strcmp (list_tmp->name,
|
||||
+ file->the_bfd->my_archive->filename) == 0;
|
||||
+ }
|
||||
+
|
||||
+ if (skip)
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (!skip)
|
||||
+ (*callback) (ptr, sec, s, file, data);
|
||||
+}
|
||||
+
|
||||
+/* Lowest common denominator routine that can handle everything correctly,
|
||||
+ but slowly. */
|
||||
+
|
||||
static void
|
||||
-walk_wild_section (lang_wild_statement_type *ptr,
|
||||
- lang_input_statement_type *file,
|
||||
- callback_t callback,
|
||||
- void *data)
|
||||
+walk_wild_section_general (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
{
|
||||
asection *s;
|
||||
-
|
||||
- if (file->just_syms_flag)
|
||||
- return;
|
||||
+ struct wildcard_list *sec;
|
||||
|
||||
for (s = file->the_bfd->sections; s != NULL; s = s->next)
|
||||
{
|
||||
- struct wildcard_list *sec;
|
||||
-
|
||||
sec = ptr->section_list;
|
||||
if (sec == NULL)
|
||||
(*callback) (ptr, sec, s, file, data);
|
||||
@@ -160,39 +207,8 @@
|
||||
while (sec != NULL)
|
||||
{
|
||||
bfd_boolean skip = FALSE;
|
||||
- struct name_list *list_tmp;
|
||||
-
|
||||
- /* Don't process sections from files which were
|
||||
- excluded. */
|
||||
- for (list_tmp = sec->spec.exclude_name_list;
|
||||
- list_tmp;
|
||||
- list_tmp = list_tmp->next)
|
||||
- {
|
||||
- if (wildcardp (list_tmp->name))
|
||||
- skip = fnmatch (list_tmp->name, file->filename, 0) == 0;
|
||||
- else
|
||||
- skip = strcmp (list_tmp->name, file->filename) == 0;
|
||||
-
|
||||
- /* If this file is part of an archive, and the archive is
|
||||
- excluded, exclude this file. */
|
||||
- if (! skip && file->the_bfd != NULL
|
||||
- && file->the_bfd->my_archive != NULL
|
||||
- && file->the_bfd->my_archive->filename != NULL)
|
||||
- {
|
||||
- if (wildcardp (list_tmp->name))
|
||||
- skip = fnmatch (list_tmp->name,
|
||||
- file->the_bfd->my_archive->filename,
|
||||
- 0) == 0;
|
||||
- else
|
||||
- skip = strcmp (list_tmp->name,
|
||||
- file->the_bfd->my_archive->filename) == 0;
|
||||
- }
|
||||
-
|
||||
- if (skip)
|
||||
- break;
|
||||
- }
|
||||
|
||||
- if (!skip && sec->spec.name != NULL)
|
||||
+ if (sec->spec.name != NULL)
|
||||
{
|
||||
const char *sname = bfd_get_section_name (file->the_bfd, s);
|
||||
|
||||
@@ -203,13 +219,381 @@
|
||||
}
|
||||
|
||||
if (!skip)
|
||||
- (*callback) (ptr, sec, s, file, data);
|
||||
+ walk_wild_consider_section (ptr, file, s, sec, callback, data);
|
||||
|
||||
sec = sec->next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+/* Routines to find a single section given its name. If there's more
|
||||
+ than one section with that name, we report that. */
|
||||
+
|
||||
+typedef struct
|
||||
+{
|
||||
+ asection *found_section;
|
||||
+ bfd_boolean multiple_sections_found;
|
||||
+} section_iterator_callback_data;
|
||||
+
|
||||
+static bfd_boolean
|
||||
+section_iterator_callback (bfd *bfd ATTRIBUTE_UNUSED, asection *s, void *data)
|
||||
+{
|
||||
+ section_iterator_callback_data *d = data;
|
||||
+
|
||||
+ if (d->found_section != NULL)
|
||||
+ {
|
||||
+ d->multiple_sections_found = TRUE;
|
||||
+ return TRUE;
|
||||
+ }
|
||||
+
|
||||
+ d->found_section = s;
|
||||
+ return FALSE;
|
||||
+}
|
||||
+
|
||||
+static asection *
|
||||
+find_section (lang_input_statement_type *file,
|
||||
+ struct wildcard_list *sec,
|
||||
+ bfd_boolean *multiple_sections_found)
|
||||
+{
|
||||
+ section_iterator_callback_data cb_data = { NULL, FALSE };
|
||||
+
|
||||
+ bfd_get_section_by_name_if (file->the_bfd, sec->spec.name,
|
||||
+ section_iterator_callback, &cb_data);
|
||||
+ *multiple_sections_found = cb_data.multiple_sections_found;
|
||||
+ return cb_data.found_section;
|
||||
+}
|
||||
+
|
||||
+/* Code for handling simple wildcards without going through fnmatch,
|
||||
+ which can be expensive because of charset translations etc. */
|
||||
+
|
||||
+/* A simple wild is a literal string followed by a single '*',
|
||||
+ where the literal part is at least 4 characters long. */
|
||||
+
|
||||
+static bfd_boolean
|
||||
+is_simple_wild (const char *name)
|
||||
+{
|
||||
+ size_t len = strcspn (name, "*?[");
|
||||
+ return len >= 4 && name[len] == '*' && name[len + 1] == '\0';
|
||||
+}
|
||||
+
|
||||
+static bfd_boolean
|
||||
+match_simple_wild (const char *pattern, const char *name)
|
||||
+{
|
||||
+ /* The first four characters of the pattern are guaranteed valid
|
||||
+ non-wildcard characters. So we can go faster. */
|
||||
+ if (pattern[0] != name[0] || pattern[1] != name[1]
|
||||
+ || pattern[2] != name[2] || pattern[3] != name[3])
|
||||
+ return FALSE;
|
||||
+
|
||||
+ pattern += 4;
|
||||
+ name += 4;
|
||||
+ while (*pattern != '*')
|
||||
+ if (*name++ != *pattern++)
|
||||
+ return FALSE;
|
||||
+
|
||||
+ return TRUE;
|
||||
+}
|
||||
+
|
||||
+/* Specialized, optimized routines for handling different kinds of
|
||||
+ wildcards */
|
||||
+
|
||||
+static void
|
||||
+walk_wild_section_specs1_wild0 (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
+{
|
||||
+ /* We can just do a hash lookup for the section with the right name.
|
||||
+ But if that lookup discovers more than one section with the name
|
||||
+ (should be rare), we fall back to the general algorithm because
|
||||
+ we would otherwise have to sort the sections to make sure they
|
||||
+ get processed in the bfd's order. */
|
||||
+ bfd_boolean multiple_sections_found;
|
||||
+ struct wildcard_list *sec0 = ptr->handler_data[0];
|
||||
+ asection *s0 = find_section (file, sec0, &multiple_sections_found);
|
||||
+
|
||||
+ if (multiple_sections_found)
|
||||
+ walk_wild_section_general (ptr, file, callback, data);
|
||||
+ else if (s0)
|
||||
+ walk_wild_consider_section (ptr, file, s0, sec0, callback, data);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+walk_wild_section_specs1_wild1 (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
+{
|
||||
+ asection *s;
|
||||
+ struct wildcard_list *wildsec0 = ptr->handler_data[0];
|
||||
+
|
||||
+ for (s = file->the_bfd->sections; s != NULL; s = s->next)
|
||||
+ {
|
||||
+ const char *sname = bfd_get_section_name (file->the_bfd, s);
|
||||
+ bfd_boolean skip = !match_simple_wild (wildsec0->spec.name, sname);
|
||||
+
|
||||
+ if (!skip)
|
||||
+ walk_wild_consider_section (ptr, file, s, wildsec0, callback, data);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+walk_wild_section_specs2_wild1 (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
+{
|
||||
+ asection *s;
|
||||
+ struct wildcard_list *sec0 = ptr->handler_data[0];
|
||||
+ struct wildcard_list *wildsec1 = ptr->handler_data[1];
|
||||
+ bfd_boolean multiple_sections_found;
|
||||
+ asection *s0 = find_section (file, sec0, &multiple_sections_found);
|
||||
+
|
||||
+ if (multiple_sections_found)
|
||||
+ {
|
||||
+ walk_wild_section_general (ptr, file, callback, data);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Note that if the section was not found, s0 is NULL and
|
||||
+ we'll simply never succeed the s == s0 test below. */
|
||||
+ for (s = file->the_bfd->sections; s != NULL; s = s->next)
|
||||
+ {
|
||||
+ /* Recall that in this code path, a section cannot satisfy more
|
||||
+ than one spec, so if s == s0 then it cannot match
|
||||
+ wildspec1. */
|
||||
+ if (s == s0)
|
||||
+ walk_wild_consider_section (ptr, file, s, sec0, callback, data);
|
||||
+ else
|
||||
+ {
|
||||
+ const char *sname = bfd_get_section_name (file->the_bfd, s);
|
||||
+ bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
|
||||
+
|
||||
+ if (!skip)
|
||||
+ walk_wild_consider_section (ptr, file, s, wildsec1, callback,
|
||||
+ data);
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+walk_wild_section_specs3_wild2 (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
+{
|
||||
+ asection *s;
|
||||
+ struct wildcard_list *sec0 = ptr->handler_data[0];
|
||||
+ struct wildcard_list *wildsec1 = ptr->handler_data[1];
|
||||
+ struct wildcard_list *wildsec2 = ptr->handler_data[2];
|
||||
+ bfd_boolean multiple_sections_found;
|
||||
+ asection *s0 = find_section (file, sec0, &multiple_sections_found);
|
||||
+
|
||||
+ if (multiple_sections_found)
|
||||
+ {
|
||||
+ walk_wild_section_general (ptr, file, callback, data);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for (s = file->the_bfd->sections; s != NULL; s = s->next)
|
||||
+ {
|
||||
+ if (s == s0)
|
||||
+ walk_wild_consider_section (ptr, file, s, sec0, callback, data);
|
||||
+ else
|
||||
+ {
|
||||
+ const char *sname = bfd_get_section_name (file->the_bfd, s);
|
||||
+ bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname);
|
||||
+
|
||||
+ if (!skip)
|
||||
+ walk_wild_consider_section (ptr, file, s, wildsec1, callback, data);
|
||||
+ else
|
||||
+ {
|
||||
+ skip = !match_simple_wild (wildsec2->spec.name, sname);
|
||||
+ if (!skip)
|
||||
+ walk_wild_consider_section (ptr, file, s, wildsec2, callback,
|
||||
+ data);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+walk_wild_section_specs4_wild2 (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
+{
|
||||
+ asection *s;
|
||||
+ struct wildcard_list *sec0 = ptr->handler_data[0];
|
||||
+ struct wildcard_list *sec1 = ptr->handler_data[1];
|
||||
+ struct wildcard_list *wildsec2 = ptr->handler_data[2];
|
||||
+ struct wildcard_list *wildsec3 = ptr->handler_data[3];
|
||||
+ bfd_boolean multiple_sections_found;
|
||||
+ asection *s0 = find_section (file, sec0, &multiple_sections_found), *s1;
|
||||
+
|
||||
+ if (multiple_sections_found)
|
||||
+ {
|
||||
+ walk_wild_section_general (ptr, file, callback, data);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ s1 = find_section (file, sec1, &multiple_sections_found);
|
||||
+ if (multiple_sections_found)
|
||||
+ {
|
||||
+ walk_wild_section_general (ptr, file, callback, data);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for (s = file->the_bfd->sections; s != NULL; s = s->next)
|
||||
+ {
|
||||
+ if (s == s0)
|
||||
+ walk_wild_consider_section (ptr, file, s, sec0, callback, data);
|
||||
+ else
|
||||
+ if (s == s1)
|
||||
+ walk_wild_consider_section (ptr, file, s, sec1, callback, data);
|
||||
+ else
|
||||
+ {
|
||||
+ const char *sname = bfd_get_section_name (file->the_bfd, s);
|
||||
+ bfd_boolean skip = !match_simple_wild (wildsec2->spec.name,
|
||||
+ sname);
|
||||
+
|
||||
+ if (!skip)
|
||||
+ walk_wild_consider_section (ptr, file, s, wildsec2, callback,
|
||||
+ data);
|
||||
+ else
|
||||
+ {
|
||||
+ skip = !match_simple_wild (wildsec3->spec.name, sname);
|
||||
+ if (!skip)
|
||||
+ walk_wild_consider_section (ptr, file, s, wildsec3,
|
||||
+ callback, data);
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+walk_wild_section (lang_wild_statement_type *ptr,
|
||||
+ lang_input_statement_type *file,
|
||||
+ callback_t callback,
|
||||
+ void *data)
|
||||
+{
|
||||
+ if (file->just_syms_flag)
|
||||
+ return;
|
||||
+
|
||||
+ (*ptr->walk_wild_section_handler) (ptr, file, callback, data);
|
||||
+}
|
||||
+
|
||||
+/* Returns TRUE when name1 is a wildcard spec that might match
|
||||
+ something name2 can match. We're conservative: we return FALSE
|
||||
+ only if the prefixes of name1 and name2 are different up to the
|
||||
+ first wildcard character. */
|
||||
+
|
||||
+static bfd_boolean
|
||||
+wild_spec_can_overlap (const char *name1, const char *name2)
|
||||
+{
|
||||
+ size_t prefix1_len = strcspn (name1, "?*[");
|
||||
+ size_t prefix2_len = strcspn (name2, "?*[");
|
||||
+ size_t min_prefix_len;
|
||||
+
|
||||
+ /* Note that if there is no wildcard character, then we treat the
|
||||
+ terminating 0 as part of the prefix. Thus ".text" won't match
|
||||
+ ".text." or ".text.*", for example. */
|
||||
+ if (name1[prefix1_len] == '\0')
|
||||
+ prefix1_len++;
|
||||
+ if (name2[prefix2_len] == '\0')
|
||||
+ prefix2_len++;
|
||||
+
|
||||
+ min_prefix_len = prefix1_len < prefix2_len ? prefix1_len : prefix2_len;
|
||||
+
|
||||
+ return memcmp (name1, name2, min_prefix_len) == 0;
|
||||
+}
|
||||
+
|
||||
+/* Select specialized code to handle various kinds of wildcard
|
||||
+ statements. */
|
||||
+
|
||||
+static void
|
||||
+analyze_walk_wild_section_handler (lang_wild_statement_type *ptr)
|
||||
+{
|
||||
+ int sec_count = 0;
|
||||
+ int wild_name_count = 0;
|
||||
+ struct wildcard_list *sec;
|
||||
+ int signature;
|
||||
+ int data_counter;
|
||||
+
|
||||
+ ptr->walk_wild_section_handler = walk_wild_section_general;
|
||||
+
|
||||
+ /* Count how many wildcard_specs there are, and how many of those
|
||||
+ actually use wildcards in the name. Also, bail out if any of the
|
||||
+ wildcard names are NULL. (Can this actually happen?
|
||||
+ walk_wild_section used to test for it.) And bail out if any
|
||||
+ of the wildcards are more complex than a simple string
|
||||
+ ending in a single '*'. */
|
||||
+ for (sec = ptr->section_list; sec != NULL; sec = sec->next)
|
||||
+ {
|
||||
+ ++sec_count;
|
||||
+ if (sec->spec.name == NULL)
|
||||
+ return;
|
||||
+ if (wildcardp (sec->spec.name))
|
||||
+ {
|
||||
+ ++wild_name_count;
|
||||
+ if (!is_simple_wild (sec->spec.name))
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /* The zero-spec case would be easy to optimize but it doesn't
|
||||
+ happen in practice. Likewise, more than 4 specs doesn't
|
||||
+ happen in practice. */
|
||||
+ if (sec_count == 0 || sec_count > 4)
|
||||
+ return;
|
||||
+
|
||||
+ /* Check that no two specs can match the same section. */
|
||||
+ for (sec = ptr->section_list; sec != NULL; sec = sec->next)
|
||||
+ {
|
||||
+ struct wildcard_list *sec2;
|
||||
+ for (sec2 = sec->next; sec2 != NULL; sec2 = sec2->next)
|
||||
+ {
|
||||
+ if (wild_spec_can_overlap (sec->spec.name, sec2->spec.name))
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ signature = (sec_count << 8) + wild_name_count;
|
||||
+ switch (signature)
|
||||
+ {
|
||||
+ case 0x0100:
|
||||
+ ptr->walk_wild_section_handler = walk_wild_section_specs1_wild0;
|
||||
+ break;
|
||||
+ case 0x0101:
|
||||
+ ptr->walk_wild_section_handler = walk_wild_section_specs1_wild1;
|
||||
+ break;
|
||||
+ case 0x0201:
|
||||
+ ptr->walk_wild_section_handler = walk_wild_section_specs2_wild1;
|
||||
+ break;
|
||||
+ case 0x0302:
|
||||
+ ptr->walk_wild_section_handler = walk_wild_section_specs3_wild2;
|
||||
+ break;
|
||||
+ case 0x0402:
|
||||
+ ptr->walk_wild_section_handler = walk_wild_section_specs4_wild2;
|
||||
+ break;
|
||||
+ default:
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Now fill the data array with pointers to the specs, first the
|
||||
+ specs with non-wildcard names, then the specs with wildcard
|
||||
+ names. It's OK to process the specs in different order from the
|
||||
+ given order, because we've already determined that no section
|
||||
+ will match more than one spec. */
|
||||
+ data_counter = 0;
|
||||
+ for (sec = ptr->section_list; sec != NULL; sec = sec->next)
|
||||
+ if (!wildcardp (sec->spec.name))
|
||||
+ ptr->handler_data[data_counter++] = sec;
|
||||
+ for (sec = ptr->section_list; sec != NULL; sec = sec->next)
|
||||
+ if (wildcardp (sec->spec.name))
|
||||
+ ptr->handler_data[data_counter++] = sec;
|
||||
+}
|
||||
+
|
||||
/* Handle a wild statement for a single file F. */
|
||||
|
||||
static void
|
||||
@@ -4353,6 +4737,7 @@
|
||||
new->section_list = section_list;
|
||||
new->keep_sections = keep_sections;
|
||||
lang_list_init (&new->children);
|
||||
+ analyze_walk_wild_section_handler (new);
|
||||
}
|
||||
|
||||
void
|
||||
--- binutils-2.15/ld/ldlang.h.old 2004-05-17 15:36:16.000000000 -0400
|
||||
+++ binutils-2.15/ld/ldlang.h 2006-01-23 13:32:33.653292000 -0500
|
||||
@@ -295,7 +295,17 @@
|
||||
union lang_statement_union *file;
|
||||
} lang_afile_asection_pair_statement_type;
|
||||
|
||||
-typedef struct lang_wild_statement_struct
|
||||
+typedef struct lang_wild_statement_struct lang_wild_statement_type;
|
||||
+
|
||||
+typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *,
|
||||
+ asection *, lang_input_statement_type *, void *);
|
||||
+
|
||||
+typedef void (*walk_wild_section_handler_t) (lang_wild_statement_type *,
|
||||
+ lang_input_statement_type *,
|
||||
+ callback_t callback,
|
||||
+ void *data);
|
||||
+
|
||||
+struct lang_wild_statement_struct
|
||||
{
|
||||
lang_statement_header_type header;
|
||||
const char *filename;
|
||||
@@ -303,7 +313,10 @@
|
||||
struct wildcard_list *section_list;
|
||||
bfd_boolean keep_sections;
|
||||
lang_statement_list_type children;
|
||||
-} lang_wild_statement_type;
|
||||
+
|
||||
+ walk_wild_section_handler_t walk_wild_section_handler;
|
||||
+ struct wildcard_list *handler_data[4];
|
||||
+};
|
||||
|
||||
typedef struct lang_address_statement_struct
|
||||
{
|
@ -1,33 +0,0 @@
|
||||
Signed-off-by: dank@kegel.com
|
||||
|
||||
See http://sourceware.org/ml/binutils/2005-12/msg00270.html
|
||||
http://sourceware.org/ml/binutils-cvs/2005-12/msg00139.html
|
||||
|
||||
STABS hash table size change, backported from the binutils CVS tree. Here's
|
||||
the CVS log comment for the original change:
|
||||
|
||||
revision 1.25
|
||||
date: 2005/12/29 10:29:23; author: nickc; state: Exp; lines: +2 -3
|
||||
(_bfd_link_section_stabs): Use bfd_hash_table_init rather than
|
||||
bfd_hash_table_init_n(...,251) so that the size of the hash table can be
|
||||
controlled by the user.
|
||||
|
||||
Note that tunable hash table size changes were added after 2.15. The effect
|
||||
of this change is to make bfd use its default hash table size for the stabs
|
||||
hash as well.
|
||||
|
||||
|
||||
--- binutils-2.15/bfd/stabs.c.old 2004-05-17 15:36:04.000000000 -0400
|
||||
+++ binutils-2.15/bfd/stabs.c 2006-02-09 15:21:56.567014000 -0500
|
||||
@@ -241,9 +241,8 @@
|
||||
goto error_return;
|
||||
/* Make sure the first byte is zero. */
|
||||
(void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE);
|
||||
- if (! bfd_hash_table_init_n (&sinfo->includes.root,
|
||||
- stab_link_includes_newfunc,
|
||||
- 251))
|
||||
+ if (! bfd_hash_table_init (&sinfo->includes.root,
|
||||
+ stab_link_includes_newfunc))
|
||||
goto error_return;
|
||||
sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr");
|
||||
sinfo->stabstr->flags |= SEC_HAS_CONTENTS | SEC_READONLY | SEC_DEBUGGING;
|
@ -1,42 +0,0 @@
|
||||
Message-ID: <000801c48f60$cec16630$9103a8c0@ULOC5012>
|
||||
From: "Michael Geiger" <mcgege@gmx.de>
|
||||
To: <dank@kegel.com>
|
||||
Subject: Patch for cross compiling s/390 kernel on linux host
|
||||
Date: Tue, 31 Aug 2004 15:45:41 +0200
|
||||
|
||||
Dear Dan,
|
||||
|
||||
I had big problems compiling a kernel for s/390 on my linux host - I tried
|
||||
different chains from crosstool-0.28-rc34 and finally succeded with
|
||||
gcc-3.3.4-glibc-2.3.2 after applying another patch to binutils-2.15
|
||||
(attached).
|
||||
All compilations of the different kernel versions I tried stopped with
|
||||
"Invalid .insn format" somewhere. I checked the recent cvs version of
|
||||
binutils and applied the latest diff to gas/config/tc-s390.c and that solved
|
||||
it.
|
||||
|
||||
Greetings
|
||||
|
||||
Michael Geiger
|
||||
|
||||
|
||||
diff -u -r1.39 -r1.40
|
||||
--- src/gas/config/tc-s390.c 2004/05/06 11:01:48 1.39
|
||||
+++ src/gas/config/tc-s390.c 2004/06/15 12:38:08 1.40
|
||||
@@ -1596,13 +1596,13 @@
|
||||
if (exp.X_op == O_constant)
|
||||
{
|
||||
if ( ( opformat->oplen == 6
|
||||
- && exp.X_add_number >= 0
|
||||
+ && (addressT) exp.X_add_number >= 0
|
||||
&& (addressT) exp.X_add_number < (1ULL << 48))
|
||||
|| ( opformat->oplen == 4
|
||||
- && exp.X_add_number >= 0
|
||||
+ && (addressT) exp.X_add_number >= 0
|
||||
&& (addressT) exp.X_add_number < (1ULL << 32))
|
||||
|| ( opformat->oplen == 2
|
||||
- && exp.X_add_number >= 0
|
||||
+ && (addressT) exp.X_add_number >= 0
|
||||
&& (addressT) exp.X_add_number < (1ULL << 16)))
|
||||
md_number_to_chars (insn, exp.X_add_number, opformat->oplen);
|
||||
else
|
@ -1,35 +0,0 @@
|
||||
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/100-arm-uclibcgnueabi.patch
|
||||
|
||||
-= BEGIN original header =-
|
||||
Patch from buildroot, updated to binutils-2.18.50.0.6.
|
||||
|
||||
binutils-2.18.50.0.6/configure | 2 1 1 0 +-
|
||||
binutils-2.18.50.0.6/configure.ac | 2 1 1 0 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
-= END original header =-
|
||||
|
||||
diff -durN binutils-2.18.50.0.4.orig/configure binutils-2.18.50.0.4/configure
|
||||
--- binutils-2.18.50.0.4.orig/configure 2008-02-08 17:44:09.000000000 +0100
|
||||
+++ binutils-2.18.50.0.4/configure 2009-03-07 12:17:29.000000000 +0100
|
||||
@@ -2249,7 +2249,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
noconfigdirs="$noconfigdirs target-libobjc"
|
||||
case ${with_newlib} in
|
||||
diff -durN binutils-2.18.50.0.4.orig/configure.ac binutils-2.18.50.0.4/configure.ac
|
||||
--- binutils-2.18.50.0.4.orig/configure.ac 2008-02-08 17:44:09.000000000 +0100
|
||||
+++ binutils-2.18.50.0.4/configure.ac 2009-03-07 12:17:30.000000000 +0100
|
||||
@@ -526,7 +526,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
noconfigdirs="$noconfigdirs target-libobjc"
|
||||
case ${with_newlib} in
|
@ -1,35 +0,0 @@
|
||||
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/110-ld-makefile-path.patch
|
||||
|
||||
-= BEGIN original header =-
|
||||
Fix ld scripts path, copied from buildroot.
|
||||
|
||||
binutils-2.18.50.0.6/ld/Makefile.am | 2 1 1 0 +-
|
||||
binutils-2.18.50.0.6/ld/Makefile.in | 2 1 1 0 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
-= END original header =-
|
||||
|
||||
diff -durN binutils-2.18.50.0.4.orig/ld/Makefile.am binutils-2.18.50.0.4/ld/Makefile.am
|
||||
--- binutils-2.18.50.0.4.orig/ld/Makefile.am 2007-11-03 21:40:37.000000000 +0100
|
||||
+++ binutils-2.18.50.0.4/ld/Makefile.am 2009-03-07 12:17:30.000000000 +0100
|
||||
@@ -18,7 +18,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@
|
||||
diff -durN binutils-2.18.50.0.4.orig/ld/Makefile.in binutils-2.18.50.0.4/ld/Makefile.in
|
||||
--- binutils-2.18.50.0.4.orig/ld/Makefile.in 2007-11-03 21:40:37.000000000 +0100
|
||||
+++ binutils-2.18.50.0.4/ld/Makefile.in 2009-03-07 12:17:30.000000000 +0100
|
||||
@@ -287,7 +287,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
|
@ -1,31 +0,0 @@
|
||||
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/120-check-ldrunpath-length.patch
|
||||
|
||||
-= BEGIN original header =-
|
||||
Check LD_RUN_PATH length, copied from buildroot.
|
||||
|
||||
binutils-2.18.50.0.6/ld/emultempl/elf32.em | 4 4 0 0 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
-= END original header =-
|
||||
|
||||
diff -durN binutils-2.18.50.0.4.orig/ld/emultempl/elf32.em binutils-2.18.50.0.4/ld/emultempl/elf32.em
|
||||
--- binutils-2.18.50.0.4.orig/ld/emultempl/elf32.em 2008-02-08 17:44:55.000000000 +0100
|
||||
+++ binutils-2.18.50.0.4/ld/emultempl/elf32.em 2009-03-07 12:17:31.000000000 +0100
|
||||
@@ -1220,6 +1220,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;
|
||||
@@ -1404,6 +1406,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,
|
@ -1,69 +0,0 @@
|
||||
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/130-i386-no-divide-comment.patch
|
||||
|
||||
-= BEGIN original header =-
|
||||
-= END original header =-
|
||||
|
||||
diff -durN binutils-2.18.50.0.4.orig/gas/config/tc-i386.c binutils-2.18.50.0.4/gas/config/tc-i386.c
|
||||
--- binutils-2.18.50.0.4.orig/gas/config/tc-i386.c 2008-02-08 17:44:10.000000000 +0100
|
||||
+++ binutils-2.18.50.0.4/gas/config/tc-i386.c 2009-03-07 12:17:31.000000000 +0100
|
||||
@@ -300,24 +300,10 @@
|
||||
#endif
|
||||
;
|
||||
|
||||
-#if (defined (TE_I386AIX) \
|
||||
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
|
||||
- && !defined (TE_GNU) \
|
||||
- && !defined (TE_LINUX) \
|
||||
- && !defined (TE_NETWARE) \
|
||||
- && !defined (TE_FreeBSD) \
|
||||
- && !defined (TE_NetBSD)))
|
||||
/* This array holds the chars that always start a comment. If the
|
||||
- pre-processor is disabled, these aren't very useful. The option
|
||||
- --divide will remove '/' from this list. */
|
||||
-const char *i386_comment_chars = "#/";
|
||||
-#define SVR4_COMMENT_CHARS 1
|
||||
-#define PREFIX_SEPARATOR '\\'
|
||||
-
|
||||
-#else
|
||||
+ pre-processor is disabled, these aren't very useful. */
|
||||
const char *i386_comment_chars = "#";
|
||||
#define PREFIX_SEPARATOR '/'
|
||||
-#endif
|
||||
|
||||
/* This array holds the chars that only start a comment at the beginning of
|
||||
a line. If the line seems to have the form '# 123 filename'
|
||||
@@ -7243,20 +7229,6 @@
|
||||
break;
|
||||
|
||||
case OPTION_DIVIDE:
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- {
|
||||
- char *n, *t;
|
||||
- const char *s;
|
||||
-
|
||||
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
|
||||
- t = n;
|
||||
- for (s = i386_comment_chars; *s != '\0'; s++)
|
||||
- if (*s != '/')
|
||||
- *t++ = *s;
|
||||
- *t = '\0';
|
||||
- i386_comment_chars = n;
|
||||
- }
|
||||
-#endif
|
||||
break;
|
||||
|
||||
case OPTION_MARCH:
|
||||
@@ -7392,13 +7364,8 @@
|
||||
fprintf (stream, _("\
|
||||
--32/--64 generate 32bit/64bit code\n"));
|
||||
#endif
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- fprintf (stream, _("\
|
||||
- --divide do not treat `/' as a comment character\n"));
|
||||
-#else
|
||||
fprintf (stream, _("\
|
||||
--divide ignored\n"));
|
||||
-#endif
|
||||
fprintf (stream, _("\
|
||||
-march=CPU[,+EXTENSION...]\n\
|
||||
generate code for CPU and EXTENSION, CPU is one of:\n\
|
@ -1,30 +0,0 @@
|
||||
Patch from buildroot, updated to binutils-2.18.50.0.6.
|
||||
|
||||
binutils-2.18.50.0.6/configure | 2 1 1 0 +-
|
||||
binutils-2.18.50.0.6/configure.ac | 2 1 1 0 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff -durN binutils-2.18.50.0.6.orig/configure binutils-2.18.50.0.6/configure
|
||||
--- binutils-2.18.50.0.6.orig/configure 2008-04-03 18:54:04.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/configure 2008-05-02 23:18:42.000000000 +0200
|
||||
@@ -2298,7 +2298,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
noconfigdirs="$noconfigdirs target-libobjc"
|
||||
case ${with_newlib} in
|
||||
diff -durN binutils-2.18.50.0.6.orig/configure.ac binutils-2.18.50.0.6/configure.ac
|
||||
--- binutils-2.18.50.0.6.orig/configure.ac 2008-04-03 18:54:04.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/configure.ac 2008-05-02 23:18:01.000000000 +0200
|
||||
@@ -560,7 +560,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
noconfigdirs="$noconfigdirs target-libobjc"
|
||||
case ${with_newlib} in
|
@ -1,30 +0,0 @@
|
||||
Fix ld scripts path, copied from buildroot.
|
||||
|
||||
binutils-2.18.50.0.6/ld/Makefile.am | 2 1 1 0 +-
|
||||
binutils-2.18.50.0.6/ld/Makefile.in | 2 1 1 0 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.am binutils-2.18.50.0.6/ld/Makefile.am
|
||||
--- binutils-2.18.50.0.6.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/ld/Makefile.am 2008-05-02 23:25:14.000000000 +0200
|
||||
@@ -18,7 +18,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@
|
||||
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.in binutils-2.18.50.0.6/ld/Makefile.in
|
||||
--- binutils-2.18.50.0.6.orig/ld/Makefile.in 2008-04-03 18:54:05.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/ld/Makefile.in 2008-05-02 23:25:14.000000000 +0200
|
||||
@@ -288,7 +288,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
|
@ -1,26 +0,0 @@
|
||||
Check LD_RUN_PATH length, copied from buildroot.
|
||||
|
||||
binutils-2.18.50.0.6/ld/emultempl/elf32.em | 4 4 0 0 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff -durN binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em binutils-2.18.50.0.6/ld/emultempl/elf32.em
|
||||
--- binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em 2008-04-03 18:54:25.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/ld/emultempl/elf32.em 2008-05-02 23:30:08.000000000 +0200
|
||||
@@ -1220,6 +1220,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;
|
||||
@@ -1405,6 +1407,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
|
||||
(link_info.output_bfd, command_line.soname, rpath,
|
||||
command_line.filter_shlib,
|
@ -1,64 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.6.orig/gas/config/tc-i386.c binutils-2.18.50.0.6/gas/config/tc-i386.c
|
||||
--- binutils-2.18.50.0.6.orig/gas/config/tc-i386.c 2008-04-03 18:54:04.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/gas/config/tc-i386.c 2008-09-22 09:09:23.000000000 +0200
|
||||
@@ -312,24 +312,10 @@
|
||||
#endif
|
||||
;
|
||||
|
||||
-#if (defined (TE_I386AIX) \
|
||||
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
|
||||
- && !defined (TE_GNU) \
|
||||
- && !defined (TE_LINUX) \
|
||||
- && !defined (TE_NETWARE) \
|
||||
- && !defined (TE_FreeBSD) \
|
||||
- && !defined (TE_NetBSD)))
|
||||
/* This array holds the chars that always start a comment. If the
|
||||
- pre-processor is disabled, these aren't very useful. The option
|
||||
- --divide will remove '/' from this list. */
|
||||
-const char *i386_comment_chars = "#/";
|
||||
-#define SVR4_COMMENT_CHARS 1
|
||||
-#define PREFIX_SEPARATOR '\\'
|
||||
-
|
||||
-#else
|
||||
+ pre-processor is disabled, these aren't very useful. */
|
||||
const char *i386_comment_chars = "#";
|
||||
#define PREFIX_SEPARATOR '/'
|
||||
-#endif
|
||||
|
||||
/* This array holds the chars that only start a comment at the beginning of
|
||||
a line. If the line seems to have the form '# 123 filename'
|
||||
@@ -7876,20 +7862,6 @@
|
||||
break;
|
||||
|
||||
case OPTION_DIVIDE:
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- {
|
||||
- char *n, *t;
|
||||
- const char *s;
|
||||
-
|
||||
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
|
||||
- t = n;
|
||||
- for (s = i386_comment_chars; *s != '\0'; s++)
|
||||
- if (*s != '/')
|
||||
- *t++ = *s;
|
||||
- *t = '\0';
|
||||
- i386_comment_chars = n;
|
||||
- }
|
||||
-#endif
|
||||
break;
|
||||
|
||||
case OPTION_MARCH:
|
||||
@@ -8029,13 +8001,8 @@
|
||||
fprintf (stream, _("\
|
||||
--32/--64 generate 32bit/64bit code\n"));
|
||||
#endif
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- fprintf (stream, _("\
|
||||
- --divide do not treat `/' as a comment character\n"));
|
||||
-#else
|
||||
fprintf (stream, _("\
|
||||
--divide ignored\n"));
|
||||
-#endif
|
||||
fprintf (stream, _("\
|
||||
-march=CPU[,+EXTENSION...]\n\
|
||||
generate code for CPU and EXTENSION, CPU is one of:\n\
|
@ -1,30 +0,0 @@
|
||||
Patch from buildroot, updated to binutils-2.18.50.0.6.
|
||||
|
||||
binutils-2.18.50.0.6/configure | 2 1 1 0 +-
|
||||
binutils-2.18.50.0.6/configure.ac | 2 1 1 0 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff -durN binutils-2.18.50.0.6.orig/configure binutils-2.18.50.0.6/configure
|
||||
--- binutils-2.18.50.0.6.orig/configure 2008-04-03 18:54:04.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/configure 2008-05-02 23:18:42.000000000 +0200
|
||||
@@ -2298,7 +2298,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
noconfigdirs="$noconfigdirs target-libobjc"
|
||||
case ${with_newlib} in
|
||||
diff -durN binutils-2.18.50.0.6.orig/configure.ac binutils-2.18.50.0.6/configure.ac
|
||||
--- binutils-2.18.50.0.6.orig/configure.ac 2008-04-03 18:54:04.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/configure.ac 2008-05-02 23:18:01.000000000 +0200
|
||||
@@ -560,7 +560,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
noconfigdirs="$noconfigdirs target-libobjc"
|
||||
case ${with_newlib} in
|
@ -1,30 +0,0 @@
|
||||
Fix ld scripts path, copied from buildroot.
|
||||
|
||||
binutils-2.18.50.0.6/ld/Makefile.am | 2 1 1 0 +-
|
||||
binutils-2.18.50.0.6/ld/Makefile.in | 2 1 1 0 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.am binutils-2.18.50.0.6/ld/Makefile.am
|
||||
--- binutils-2.18.50.0.6.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/ld/Makefile.am 2008-05-02 23:25:14.000000000 +0200
|
||||
@@ -18,7 +18,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@
|
||||
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.in binutils-2.18.50.0.6/ld/Makefile.in
|
||||
--- binutils-2.18.50.0.6.orig/ld/Makefile.in 2008-04-03 18:54:05.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/ld/Makefile.in 2008-05-02 23:25:14.000000000 +0200
|
||||
@@ -288,7 +288,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
|
@ -1,26 +0,0 @@
|
||||
Check LD_RUN_PATH length, copied from buildroot.
|
||||
|
||||
binutils-2.18.50.0.6/ld/emultempl/elf32.em | 4 4 0 0 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff -durN binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em binutils-2.18.50.0.6/ld/emultempl/elf32.em
|
||||
--- binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em 2008-04-03 18:54:25.000000000 +0200
|
||||
+++ binutils-2.18.50.0.6/ld/emultempl/elf32.em 2008-05-02 23:30:08.000000000 +0200
|
||||
@@ -1220,6 +1220,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;
|
||||
@@ -1405,6 +1407,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
|
||||
(link_info.output_bfd, command_line.soname, rpath,
|
||||
command_line.filter_shlib,
|
@ -1,64 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.7.orig/gas/config/tc-i386.c binutils-2.18.50.0.7/gas/config/tc-i386.c
|
||||
--- binutils-2.18.50.0.7.orig/gas/config/tc-i386.c 2008-05-04 16:28:10.000000000 +0200
|
||||
+++ binutils-2.18.50.0.7/gas/config/tc-i386.c 2008-09-22 09:11:19.000000000 +0200
|
||||
@@ -312,24 +312,10 @@
|
||||
#endif
|
||||
;
|
||||
|
||||
-#if (defined (TE_I386AIX) \
|
||||
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
|
||||
- && !defined (TE_GNU) \
|
||||
- && !defined (TE_LINUX) \
|
||||
- && !defined (TE_NETWARE) \
|
||||
- && !defined (TE_FreeBSD) \
|
||||
- && !defined (TE_NetBSD)))
|
||||
/* This array holds the chars that always start a comment. If the
|
||||
- pre-processor is disabled, these aren't very useful. The option
|
||||
- --divide will remove '/' from this list. */
|
||||
-const char *i386_comment_chars = "#/";
|
||||
-#define SVR4_COMMENT_CHARS 1
|
||||
-#define PREFIX_SEPARATOR '\\'
|
||||
-
|
||||
-#else
|
||||
+ pre-processor is disabled, these aren't very useful. */
|
||||
const char *i386_comment_chars = "#";
|
||||
#define PREFIX_SEPARATOR '/'
|
||||
-#endif
|
||||
|
||||
/* This array holds the chars that only start a comment at the beginning of
|
||||
a line. If the line seems to have the form '# 123 filename'
|
||||
@@ -7920,20 +7906,6 @@
|
||||
break;
|
||||
|
||||
case OPTION_DIVIDE:
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- {
|
||||
- char *n, *t;
|
||||
- const char *s;
|
||||
-
|
||||
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
|
||||
- t = n;
|
||||
- for (s = i386_comment_chars; *s != '\0'; s++)
|
||||
- if (*s != '/')
|
||||
- *t++ = *s;
|
||||
- *t = '\0';
|
||||
- i386_comment_chars = n;
|
||||
- }
|
||||
-#endif
|
||||
break;
|
||||
|
||||
case OPTION_MARCH:
|
||||
@@ -8084,13 +8056,8 @@
|
||||
fprintf (stream, _("\
|
||||
--32/--64 generate 32bit/64bit code\n"));
|
||||
#endif
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- fprintf (stream, _("\
|
||||
- --divide do not treat `/' as a comment character\n"));
|
||||
-#else
|
||||
fprintf (stream, _("\
|
||||
--divide ignored\n"));
|
||||
-#endif
|
||||
fprintf (stream, _("\
|
||||
-march=CPU[,+EXTENSION...]\n\
|
||||
generate code for CPU and EXTENSION, CPU is one of:\n\
|
@ -1,24 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/configure binutils-2.18.50.0.8/configure
|
||||
--- binutils-2.18.50.0.8.orig/configure 2008-07-10 17:32:56.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/configure 2008-07-13 23:08:13.000000000 +0200
|
||||
@@ -2313,7 +2313,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
case ${with_newlib} in
|
||||
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
diff -durN binutils-2.18.50.0.8.orig/configure.ac binutils-2.18.50.0.8/configure.ac
|
||||
--- binutils-2.18.50.0.8.orig/configure.ac 2008-07-10 17:32:56.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/configure.ac 2008-07-13 23:08:13.000000000 +0200
|
||||
@@ -562,7 +562,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
case ${with_newlib} in
|
||||
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
@ -1,24 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.am binutils-2.18.50.0.8/ld/Makefile.am
|
||||
--- binutils-2.18.50.0.8.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/ld/Makefile.am 2008-07-13 23:15:40.000000000 +0200
|
||||
@@ -18,7 +18,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@
|
||||
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.in binutils-2.18.50.0.8/ld/Makefile.in
|
||||
--- binutils-2.18.50.0.8.orig/ld/Makefile.in 2008-07-10 17:32:58.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/ld/Makefile.in 2008-07-13 23:15:40.000000000 +0200
|
||||
@@ -290,7 +290,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
|
@ -1,21 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em binutils-2.18.50.0.8/ld/emultempl/elf32.em
|
||||
--- binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em 2008-07-10 17:33:23.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/ld/emultempl/elf32.em 2008-07-13 23:19:29.000000000 +0200
|
||||
@@ -1220,6 +1220,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;
|
||||
@@ -1405,6 +1407,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
|
||||
(link_info.output_bfd, command_line.soname, rpath,
|
||||
command_line.filter_shlib,
|
@ -1,64 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/gas/config/tc-i386.c binutils-2.18.50.0.8/gas/config/tc-i386.c
|
||||
--- binutils-2.18.50.0.8.orig/gas/config/tc-i386.c 2008-07-10 17:32:58.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/gas/config/tc-i386.c 2008-09-22 09:12:39.000000000 +0200
|
||||
@@ -313,24 +313,10 @@
|
||||
#endif
|
||||
;
|
||||
|
||||
-#if (defined (TE_I386AIX) \
|
||||
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
|
||||
- && !defined (TE_GNU) \
|
||||
- && !defined (TE_LINUX) \
|
||||
- && !defined (TE_NETWARE) \
|
||||
- && !defined (TE_FreeBSD) \
|
||||
- && !defined (TE_NetBSD)))
|
||||
/* This array holds the chars that always start a comment. If the
|
||||
- pre-processor is disabled, these aren't very useful. The option
|
||||
- --divide will remove '/' from this list. */
|
||||
-const char *i386_comment_chars = "#/";
|
||||
-#define SVR4_COMMENT_CHARS 1
|
||||
-#define PREFIX_SEPARATOR '\\'
|
||||
-
|
||||
-#else
|
||||
+ pre-processor is disabled, these aren't very useful. */
|
||||
const char *i386_comment_chars = "#";
|
||||
#define PREFIX_SEPARATOR '/'
|
||||
-#endif
|
||||
|
||||
/* This array holds the chars that only start a comment at the beginning of
|
||||
a line. If the line seems to have the form '# 123 filename'
|
||||
@@ -7952,20 +7938,6 @@
|
||||
break;
|
||||
|
||||
case OPTION_DIVIDE:
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- {
|
||||
- char *n, *t;
|
||||
- const char *s;
|
||||
-
|
||||
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
|
||||
- t = n;
|
||||
- for (s = i386_comment_chars; *s != '\0'; s++)
|
||||
- if (*s != '/')
|
||||
- *t++ = *s;
|
||||
- *t = '\0';
|
||||
- i386_comment_chars = n;
|
||||
- }
|
||||
-#endif
|
||||
break;
|
||||
|
||||
case OPTION_MARCH:
|
||||
@@ -8116,13 +8088,8 @@
|
||||
fprintf (stream, _("\
|
||||
--32/--64 generate 32bit/64bit code\n"));
|
||||
#endif
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- fprintf (stream, _("\
|
||||
- --divide do not treat `/' as a comment character\n"));
|
||||
-#else
|
||||
fprintf (stream, _("\
|
||||
--divide ignored\n"));
|
||||
-#endif
|
||||
fprintf (stream, _("\
|
||||
-march=CPU[,+EXTENSION...]\n\
|
||||
generate code for CPU and EXTENSION, CPU is one of:\n\
|
@ -1,24 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/configure binutils-2.18.50.0.8/configure
|
||||
--- binutils-2.18.50.0.8.orig/configure 2008-07-10 17:32:56.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/configure 2008-07-13 23:08:13.000000000 +0200
|
||||
@@ -2313,7 +2313,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
case ${with_newlib} in
|
||||
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
||||
diff -durN binutils-2.18.50.0.8.orig/configure.ac binutils-2.18.50.0.8/configure.ac
|
||||
--- binutils-2.18.50.0.8.orig/configure.ac 2008-07-10 17:32:56.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/configure.ac 2008-07-13 23:08:13.000000000 +0200
|
||||
@@ -562,7 +562,7 @@
|
||||
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
|
||||
libgloss_dir=arm
|
||||
;;
|
||||
- arm*-*-linux-gnueabi)
|
||||
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
|
||||
noconfigdirs="$noconfigdirs target-qthreads"
|
||||
case ${with_newlib} in
|
||||
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
@ -1,24 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.am binutils-2.18.50.0.8/ld/Makefile.am
|
||||
--- binutils-2.18.50.0.8.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/ld/Makefile.am 2008-07-13 23:15:40.000000000 +0200
|
||||
@@ -18,7 +18,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@
|
||||
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.in binutils-2.18.50.0.8/ld/Makefile.in
|
||||
--- binutils-2.18.50.0.8.orig/ld/Makefile.in 2008-07-10 17:32:58.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/ld/Makefile.in 2008-07-13 23:15:40.000000000 +0200
|
||||
@@ -290,7 +290,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
|
@ -1,21 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em binutils-2.18.50.0.8/ld/emultempl/elf32.em
|
||||
--- binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em 2008-07-10 17:33:23.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/ld/emultempl/elf32.em 2008-07-13 23:19:29.000000000 +0200
|
||||
@@ -1220,6 +1220,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;
|
||||
@@ -1405,6 +1407,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
|
||||
(link_info.output_bfd, command_line.soname, rpath,
|
||||
command_line.filter_shlib,
|
@ -1,64 +0,0 @@
|
||||
diff -durN binutils-2.18.50.0.8.orig/gas/config/tc-i386.c binutils-2.18.50.0.8/gas/config/tc-i386.c
|
||||
--- binutils-2.18.50.0.8.orig/gas/config/tc-i386.c 2008-07-10 17:32:58.000000000 +0200
|
||||
+++ binutils-2.18.50.0.8/gas/config/tc-i386.c 2008-09-22 09:12:39.000000000 +0200
|
||||
@@ -313,24 +313,10 @@
|
||||
#endif
|
||||
;
|
||||
|
||||
-#if (defined (TE_I386AIX) \
|
||||
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
|
||||
- && !defined (TE_GNU) \
|
||||
- && !defined (TE_LINUX) \
|
||||
- && !defined (TE_NETWARE) \
|
||||
- && !defined (TE_FreeBSD) \
|
||||
- && !defined (TE_NetBSD)))
|
||||
/* This array holds the chars that always start a comment. If the
|
||||
- pre-processor is disabled, these aren't very useful. The option
|
||||
- --divide will remove '/' from this list. */
|
||||
-const char *i386_comment_chars = "#/";
|
||||
-#define SVR4_COMMENT_CHARS 1
|
||||
-#define PREFIX_SEPARATOR '\\'
|
||||
-
|
||||
-#else
|
||||
+ pre-processor is disabled, these aren't very useful. */
|
||||
const char *i386_comment_chars = "#";
|
||||
#define PREFIX_SEPARATOR '/'
|
||||
-#endif
|
||||
|
||||
/* This array holds the chars that only start a comment at the beginning of
|
||||
a line. If the line seems to have the form '# 123 filename'
|
||||
@@ -7952,20 +7938,6 @@
|
||||
break;
|
||||
|
||||
case OPTION_DIVIDE:
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- {
|
||||
- char *n, *t;
|
||||
- const char *s;
|
||||
-
|
||||
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
|
||||
- t = n;
|
||||
- for (s = i386_comment_chars; *s != '\0'; s++)
|
||||
- if (*s != '/')
|
||||
- *t++ = *s;
|
||||
- *t = '\0';
|
||||
- i386_comment_chars = n;
|
||||
- }
|
||||
-#endif
|
||||
break;
|
||||
|
||||
case OPTION_MARCH:
|
||||
@@ -8116,13 +8088,8 @@
|
||||
fprintf (stream, _("\
|
||||
--32/--64 generate 32bit/64bit code\n"));
|
||||
#endif
|
||||
-#ifdef SVR4_COMMENT_CHARS
|
||||
- fprintf (stream, _("\
|
||||
- --divide do not treat `/' as a comment character\n"));
|
||||
-#else
|
||||
fprintf (stream, _("\
|
||||
--divide ignored\n"));
|
||||
-#endif
|
||||
fprintf (stream, _("\
|
||||
-march=CPU[,+EXTENSION...]\n\
|
||||
generate code for CPU and EXTENSION, CPU is one of:\n\
|
16
patches/binutils/2.20/100-ppc64-pie.patch
Normal file
16
patches/binutils/2.20/100-ppc64-pie.patch
Normal file
@ -0,0 +1,16 @@
|
||||
--- bfd/elf64-ppc.c.jj 2004-09-27 16:46:06.000000000 -0400
|
||||
+++ bfd/elf64-ppc.c 2004-10-04 09:09:50.000000000 -0400
|
||||
@@ -9681,7 +9681,12 @@ ppc64_elf_relocate_section (bfd *output_
|
||||
else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
|
||||
&& !is_opd
|
||||
&& r_type != R_PPC64_TOC)
|
||||
- outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
|
||||
+ {
|
||||
+ outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
|
||||
+ if (h->elf.dynindx == -1
|
||||
+ && h->elf.root.type == bfd_link_hash_undefweak)
|
||||
+ memset (&outrel, 0, sizeof outrel);
|
||||
+ }
|
||||
else
|
||||
{
|
||||
/* This symbol is local, or marked to become local,
|
13
patches/binutils/2.20/110-RPATH_ENVVAR-smack.patch
Normal file
13
patches/binutils/2.20/110-RPATH_ENVVAR-smack.patch
Normal file
@ -0,0 +1,13 @@
|
||||
http://sourceware.org/ml/binutils/2007-07/msg00401.html
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=4970
|
||||
|
||||
--- configure
|
||||
+++ configure
|
||||
@@ -5601,6 +5601,7 @@ case "${host}" in
|
||||
*-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;;
|
||||
*) RPATH_ENVVAR=LD_LIBRARY_PATH ;;
|
||||
esac
|
||||
+RPATH_ENVVAR="cant_touch_this_nah_nah_nah"
|
||||
|
||||
# On systems where the dynamic library environment variable is PATH,
|
||||
if test "$RPATH_ENVVAR" = PATH; then
|
47
patches/binutils/2.20/120-sh-targets.patch
Normal file
47
patches/binutils/2.20/120-sh-targets.patch
Normal file
@ -0,0 +1,47 @@
|
||||
r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
|
||||
|
||||
Likewise, binutils has no idea about any of these new targets either, so we
|
||||
fix that up too.. now we're able to actually build a real toolchain for
|
||||
sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
|
||||
inept targets than that one, really. Go look, I promise).
|
||||
|
||||
--- binutils-2.16.90.0.2-dist/configure
|
||||
+++ binutils-2.16.90.0.2/configure
|
||||
@@ -1207,7 +1207,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)
|
||||
@@ -1495,7 +1495,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.90.0.2-dist/configure.ac
|
||||
+++ binutils-2.16.90.0.2/configure.ac
|
||||
@@ -424,7 +424,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)
|
||||
@@ -712,7 +712,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
|
36
patches/binutils/2.20/130-ld-sysroot.patch
Normal file
36
patches/binutils/2.20/130-ld-sysroot.patch
Normal file
@ -0,0 +1,36 @@
|
||||
Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
|
||||
|
||||
Always try to prepend the sysroot prefix to absolute filenames first.
|
||||
|
||||
http://bugs.gentoo.org/275666
|
||||
http://sourceware.org/bugzilla/show_bug.cgi?id=10340
|
||||
|
||||
--- ld/ldfile.c
|
||||
+++ ld/ldfile.c
|
||||
@@ -308,18 +308,24 @@
|
||||
directory first. */
|
||||
if (! entry->is_archive)
|
||||
{
|
||||
- if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
|
||||
+ /* For absolute pathnames, try to always open the file in the
|
||||
+ sysroot first. If this fails, try to open the file at the
|
||||
+ given location. */
|
||||
+ entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE);
|
||||
+ if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted)
|
||||
{
|
||||
char *name = concat (ld_sysroot, entry->filename,
|
||||
(const char *) NULL);
|
||||
if (ldfile_try_open_bfd (name, entry))
|
||||
{
|
||||
entry->filename = name;
|
||||
+ entry->sysrooted = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
free (name);
|
||||
}
|
||||
- else if (ldfile_try_open_bfd (entry->filename, entry))
|
||||
+
|
||||
+ if (ldfile_try_open_bfd (entry->filename, entry))
|
||||
{
|
||||
entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename)
|
||||
&& is_sysrooted_pathname (entry->filename, TRUE);
|
47
patches/binutils/2.20/140-check_ldrunpath_length.patch
Normal file
47
patches/binutils/2.20/140-check_ldrunpath_length.patch
Normal file
@ -0,0 +1,47 @@
|
||||
#!/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,
|
238
patches/binutils/2.20/150-pt-pax-flags-20090909.patch
Normal file
238
patches/binutils/2.20/150-pt-pax-flags-20090909.patch
Normal file
@ -0,0 +1,238 @@
|
||||
--- binutils-2.20/bfd/elf-bfd.h
|
||||
+++ binutils-2.20/bfd/elf-bfd.h
|
||||
@@ -1527,6 +1527,9 @@ struct elf_obj_tdata
|
||||
/* Segment flags for the PT_GNU_STACK segment. */
|
||||
unsigned int stack_flags;
|
||||
|
||||
+ /* Segment flags for the PT_PAX_FLAGS segment. */
|
||||
+ unsigned int pax_flags;
|
||||
+
|
||||
/* Symbol version definitions in external objects. */
|
||||
Elf_Internal_Verdef *verdef;
|
||||
|
||||
--- binutils-2.20/bfd/elf.c
|
||||
+++ binutils-2.20/bfd/elf.c
|
||||
@@ -1081,6 +1081,7 @@ get_segment_type (unsigned int p_type)
|
||||
case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
|
||||
case PT_GNU_STACK: pt = "STACK"; break;
|
||||
case PT_GNU_RELRO: pt = "RELRO"; break;
|
||||
+ case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
|
||||
default: pt = NULL; break;
|
||||
}
|
||||
return pt;
|
||||
@@ -2379,6 +2380,9 @@ bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index)
|
||||
case PT_GNU_RELRO:
|
||||
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
|
||||
|
||||
+ case PT_PAX_FLAGS:
|
||||
+ return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "pax_flags");
|
||||
+
|
||||
default:
|
||||
/* Check for any processor-specific program segment types. */
|
||||
bed = get_elf_backend_data (abfd);
|
||||
@@ -3393,6 +3397,11 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info)
|
||||
++segs;
|
||||
}
|
||||
|
||||
+ {
|
||||
+ /* We need a PT_PAX_FLAGS segment. */
|
||||
+ ++segs;
|
||||
+ }
|
||||
+
|
||||
for (s = abfd->sections; s != NULL; s = s->next)
|
||||
{
|
||||
if ((s->flags & SEC_LOAD) != 0
|
||||
@@ -3972,6 +3981,20 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
|
||||
}
|
||||
}
|
||||
|
||||
+ {
|
||||
+ amt = sizeof (struct elf_segment_map);
|
||||
+ m = bfd_zalloc (abfd, amt);
|
||||
+ if (m == NULL)
|
||||
+ goto error_return;
|
||||
+ m->next = NULL;
|
||||
+ m->p_type = PT_PAX_FLAGS;
|
||||
+ m->p_flags = elf_tdata (abfd)->pax_flags;
|
||||
+ m->p_flags_valid = 1;
|
||||
+
|
||||
+ *pm = m;
|
||||
+ pm = &m->next;
|
||||
+ }
|
||||
+
|
||||
free (sections);
|
||||
elf_tdata (abfd)->segment_map = mfirst;
|
||||
}
|
||||
@@ -5176,7 +5199,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
|
||||
6. PT_TLS segment includes only SHF_TLS sections.
|
||||
7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
|
||||
8. PT_DYNAMIC should not contain empty sections at the beginning
|
||||
- (with the possible exception of .dynamic). */
|
||||
+ (with the possible exception of .dynamic).
|
||||
+ 9. PT_PAX_FLAGS segments do not include any sections. */
|
||||
#define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed) \
|
||||
((((segment->p_paddr \
|
||||
? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \
|
||||
@@ -5184,6 +5208,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
|
||||
&& (section->flags & SEC_ALLOC) != 0) \
|
||||
|| IS_NOTE (segment, section)) \
|
||||
&& segment->p_type != PT_GNU_STACK \
|
||||
+ && segment->p_type != PT_PAX_FLAGS \
|
||||
&& (segment->p_type != PT_TLS \
|
||||
|| (section->flags & SEC_THREAD_LOCAL)) \
|
||||
&& (segment->p_type == PT_LOAD \
|
||||
--- binutils-2.20/bfd/elflink.c
|
||||
+++ binutils-2.20/bfd/elflink.c
|
||||
@@ -5465,16 +5465,30 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
return TRUE;
|
||||
|
||||
bed = get_elf_backend_data (output_bfd);
|
||||
+
|
||||
+ elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
|
||||
+ if (info->execheap)
|
||||
+ elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
|
||||
+ else if (info->noexecheap)
|
||||
+ elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
|
||||
+
|
||||
if (info->execstack)
|
||||
- elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
|
||||
+ {
|
||||
+ elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
|
||||
+ elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
|
||||
+ }
|
||||
else if (info->noexecstack)
|
||||
- elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
|
||||
+ {
|
||||
+ elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
|
||||
+ elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
|
||||
+ }
|
||||
else
|
||||
{
|
||||
bfd *inputobj;
|
||||
asection *notesec = NULL;
|
||||
int exec = 0;
|
||||
|
||||
+ elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
|
||||
for (inputobj = info->input_bfds;
|
||||
inputobj;
|
||||
inputobj = inputobj->link_next)
|
||||
@@ -5487,7 +5501,11 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
||||
if (s)
|
||||
{
|
||||
if (s->flags & SEC_CODE)
|
||||
- exec = PF_X;
|
||||
+ {
|
||||
+ elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
|
||||
+ elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
|
||||
+ exec = PF_X;
|
||||
+ }
|
||||
notesec = s;
|
||||
}
|
||||
else if (bed->default_execstack)
|
||||
--- binutils-2.20/binutils/readelf.c
|
||||
+++ binutils-2.20/binutils/readelf.c
|
||||
@@ -2556,6 +2556,7 @@ get_segment_type (unsigned long p_type)
|
||||
return "GNU_EH_FRAME";
|
||||
case PT_GNU_STACK: return "GNU_STACK";
|
||||
case PT_GNU_RELRO: return "GNU_RELRO";
|
||||
+ case PT_PAX_FLAGS: return "PAX_FLAGS";
|
||||
|
||||
default:
|
||||
if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
|
||||
--- binutils-2.20/include/bfdlink.h
|
||||
+++ binutils-2.20/include/bfdlink.h
|
||||
@@ -319,6 +319,14 @@ struct bfd_link_info
|
||||
/* TRUE if PT_GNU_RELRO segment should be created. */
|
||||
unsigned int relro: 1;
|
||||
|
||||
+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
|
||||
+ flags. */
|
||||
+ unsigned int execheap: 1;
|
||||
+
|
||||
+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
|
||||
+ flags. */
|
||||
+ unsigned int noexecheap: 1;
|
||||
+
|
||||
/* TRUE if we should warn when adding a DT_TEXTREL to a shared object. */
|
||||
unsigned int warn_shared_textrel: 1;
|
||||
|
||||
--- binutils-2.20/include/elf/common.h
|
||||
+++ binutils-2.20/include/elf/common.h
|
||||
@@ -422,6 +422,7 @@
|
||||
#define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME /* Solaris uses the same value */
|
||||
#define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */
|
||||
#define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */
|
||||
+#define PT_PAX_FLAGS (PT_LOOS + 0x5041580) /* PaX flags */
|
||||
|
||||
/* Program segment permissions, in program header p_flags field. */
|
||||
|
||||
@@ -432,6 +433,21 @@
|
||||
#define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
|
||||
#define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */
|
||||
|
||||
+/* Flags to control PaX behavior. */
|
||||
+
|
||||
+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
|
||||
+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
|
||||
+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
|
||||
+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
|
||||
+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
|
||||
+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
|
||||
+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
|
||||
+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
|
||||
+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
|
||||
+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
|
||||
+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
|
||||
+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
|
||||
+
|
||||
/* Values for section header, sh_type field. */
|
||||
|
||||
#define SHT_NULL 0 /* Section header table entry unused */
|
||||
--- binutils-2.20/ld/emultempl/elf32.em
|
||||
+++ binutils-2.20/ld/emultempl/elf32.em
|
||||
@@ -2159,6 +2159,16 @@ fragment <<EOF
|
||||
link_info.noexecstack = TRUE;
|
||||
link_info.execstack = FALSE;
|
||||
}
|
||||
+ else if (strcmp (optarg, "execheap") == 0)
|
||||
+ {
|
||||
+ link_info.execheap = TRUE;
|
||||
+ link_info.noexecheap = FALSE;
|
||||
+ }
|
||||
+ else if (strcmp (optarg, "noexecheap") == 0)
|
||||
+ {
|
||||
+ link_info.noexecheap = TRUE;
|
||||
+ link_info.execheap = FALSE;
|
||||
+ }
|
||||
EOF
|
||||
|
||||
if test -n "$COMMONPAGESIZE"; then
|
||||
@@ -2237,6 +2247,8 @@ fragment <<EOF
|
||||
fprintf (file, _("\
|
||||
-z execstack Mark executable as requiring executable stack\n"));
|
||||
fprintf (file, _("\
|
||||
+ -z execheap Mark executable as requiring executable heap\n"));
|
||||
+ fprintf (file, _("\
|
||||
-z initfirst Mark DSO to be initialized first at runtime\n"));
|
||||
fprintf (file, _("\
|
||||
-z interpose Mark object to interpose all DSOs but executable\n"));
|
||||
@@ -2260,6 +2272,8 @@ fragment <<EOF
|
||||
-z nodump Mark DSO not available to dldump\n"));
|
||||
fprintf (file, _("\
|
||||
-z noexecstack Mark executable as not requiring executable stack\n"));
|
||||
+ fprintf (file, _("\
|
||||
+ -z noexecheap Mark executable as not requiring executable heap\n"));
|
||||
EOF
|
||||
|
||||
if test -n "$COMMONPAGESIZE"; then
|
||||
--- binutils-2.20/ld/ldgram.y
|
||||
+++ binutils-2.20/ld/ldgram.y
|
||||
@@ -1116,6 +1116,8 @@ phdr_type:
|
||||
$$ = exp_intop (0x6474e550);
|
||||
else if (strcmp (s, "PT_GNU_STACK") == 0)
|
||||
$$ = exp_intop (0x6474e551);
|
||||
+ else if (strcmp (s, "PT_PAX_FLAGS") == 0)
|
||||
+ $$ = exp_intop (0x65041580);
|
||||
else
|
||||
{
|
||||
einfo (_("\
|
16
patches/binutils/2.20/160-amd64-32bit-path.patch
Normal file
16
patches/binutils/2.20/160-amd64-32bit-path.patch
Normal file
@ -0,0 +1,16 @@
|
||||
--- binutils/ld/emulparams/elf_i386.sh
|
||||
+++ binutils/ld/emulparams/elf_i386.sh
|
||||
@@ -13,3 +13,13 @@
|
||||
NO_SMALL_DATA=yes
|
||||
SEPARATE_GOTPLT=12
|
||||
IREL_IN_PLT=
|
||||
+
|
||||
+# In Gentoo, we install 32bit libs into /lib32 in an
|
||||
+# ABI setup with amd64/x86
|
||||
+case "$target" in
|
||||
+ x86_64*-linux*)
|
||||
+ case "$EMULATION_NAME" in
|
||||
+ *i386*) LIBPATH_SUFFIX=32 ;;
|
||||
+ esac
|
||||
+ ;;
|
||||
+esac
|
59
patches/binutils/2.20/170-warn-textrel.patch
Normal file
59
patches/binutils/2.20/170-warn-textrel.patch
Normal file
@ -0,0 +1,59 @@
|
||||
textrels are bad for forcing copy-on-write (this affects everyone),
|
||||
and for security/runtime code generation, this affects security ppl.
|
||||
But in either case, it doesn't matter who needs textrels, it's
|
||||
the very fact that they're needed at all.
|
||||
|
||||
2006-06-10 Ned Ludd <solar@gentoo.org>, Mike Frysinger <vapier@gentoo.org>
|
||||
|
||||
* bfd/elflink.c (bfd_elf_final_link): Check all objects for TEXTRELs.
|
||||
* ld/ldmain.c (main): Change textrel warning default to true.
|
||||
* ld/testsuite/lib/ld-lib.exp (default_ld_simple_link): Scrub TEXTREL
|
||||
warnings from ld output.
|
||||
|
||||
--- bfd/elflink.c
|
||||
+++ bfd/elflink.c
|
||||
@@ -8652,14 +8652,12 @@
|
||||
goto error_return;
|
||||
|
||||
/* Check for DT_TEXTREL (late, in case the backend removes it). */
|
||||
- if (info->warn_shared_textrel && info->shared)
|
||||
+ o = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
+ if (info->warn_shared_textrel && o != NULL)
|
||||
{
|
||||
bfd_byte *dyncon, *dynconend;
|
||||
|
||||
/* Fix up .dynamic entries. */
|
||||
- o = bfd_get_section_by_name (dynobj, ".dynamic");
|
||||
- BFD_ASSERT (o != NULL);
|
||||
-
|
||||
dyncon = o->contents;
|
||||
dynconend = o->contents + o->size;
|
||||
for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
|
||||
@@ -8702,7 +8702,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
|
||||
if (dyn.d_tag == DT_TEXTREL)
|
||||
{
|
||||
info->callbacks->einfo
|
||||
- (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
|
||||
+ (_("%P: warning: creating a DT_TEXTREL in object.\n"));
|
||||
break;
|
||||
}
|
||||
}
|
||||
--- ld/ldmain.c
|
||||
+++ ld/ldmain.c
|
||||
@@ -282,2 +282,3 @@ main (int argc, char **argv)
|
||||
link_info.spare_dynamic_tags = 5;
|
||||
+ link_info.warn_shared_textrel = TRUE;
|
||||
link_info.sharable_sections = FALSE;
|
||||
--- ld/testsuite/lib/ld-lib.exp
|
||||
+++ ld/testsuite/lib/ld-lib.exp
|
||||
@@ -181,6 +181,10 @@ proc default_ld_simple_link { ld target
|
||||
# symbol, since the default linker script might use ENTRY.
|
||||
regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
|
||||
|
||||
+ # Gentoo tweak:
|
||||
+ # We want to ignore TEXTREL warnings since we force enable them by default
|
||||
+ regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
|
||||
+
|
||||
if [string match "" $exec_output] then {
|
||||
return 1
|
||||
} else {
|
@ -0,0 +1,25 @@
|
||||
Don't generate RPATH if we're going to be generating RUNPATH.
|
||||
|
||||
need to ponder what ramifications this has before enabling it
|
||||
|
||||
--- binutils/bfd/elflink.c
|
||||
+++ binutils/bfd/elflink.c
|
||||
@@ -5382,11 +5382,15 @@
|
||||
|
||||
indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, rpath,
|
||||
TRUE);
|
||||
- if (indx == (bfd_size_type) -1
|
||||
- || !_bfd_elf_add_dynamic_entry (info, DT_RPATH, indx))
|
||||
+ if (indx == (bfd_size_type) -1)
|
||||
return FALSE;
|
||||
|
||||
- if (info->new_dtags)
|
||||
+ if (!info->new_dtags)
|
||||
+ {
|
||||
+ if (!_bfd_elf_add_dynamic_entry (info, DT_RPATH, indx))
|
||||
+ return FALSE;
|
||||
+ }
|
||||
+ else
|
||||
{
|
||||
_bfd_elf_strtab_addref (elf_hash_table (info)->dynstr, indx);
|
||||
if (!_bfd_elf_add_dynamic_entry (info, DT_RUNPATH, indx))
|
10
patches/binutils/2.20/190-use-new-ld-dtags.patch
Normal file
10
patches/binutils/2.20/190-use-new-ld-dtags.patch
Normal file
@ -0,0 +1,10 @@
|
||||
--- binutils/ld/ldmain.c
|
||||
+++ binutils/ld/ldmain.c
|
||||
@@ -296,6 +296,7 @@ main (int argc, char **argv)
|
||||
|
||||
link_info.allow_undefined_version = TRUE;
|
||||
link_info.keep_memory = TRUE;
|
||||
+ link_info.new_dtags = TRUE;
|
||||
link_info.combreloc = TRUE;
|
||||
link_info.strip_discarded = TRUE;
|
||||
link_info.callbacks = &link_callbacks;
|
16
patches/binutils/2.20/200-document-new-dtags-behaviour.patch
Normal file
16
patches/binutils/2.20/200-document-new-dtags-behaviour.patch
Normal file
@ -0,0 +1,16 @@
|
||||
Index: binutils-2.19.51.0.5/ld/ld.texinfo
|
||||
===================================================================
|
||||
--- binutils-2.19.51.0.5.orig/ld/ld.texinfo
|
||||
+++ binutils-2.19.51.0.5/ld/ld.texinfo
|
||||
@@ -2036,8 +2036,9 @@ This linker can create the new dynamic t
|
||||
systems may not understand them. If you specify
|
||||
@option{--enable-new-dtags}, the dynamic tags will be created as needed.
|
||||
If you specify @option{--disable-new-dtags}, no new dynamic tags will be
|
||||
-created. By default, the new dynamic tags are not created. Note that
|
||||
-those options are only available for ELF systems.
|
||||
+created. On Gentoo, by default, the new dynamic tags are created (this
|
||||
+differs from upstream behaviour). Note that those options are only
|
||||
+available for ELF systems.
|
||||
|
||||
@kindex --hash-size=@var{number}
|
||||
@item --hash-size=@var{number}
|
8
patches/binutils/2.20/210-generate-gnu-hash.patch
Normal file
8
patches/binutils/2.20/210-generate-gnu-hash.patch
Normal file
@ -0,0 +1,8 @@
|
||||
--- binutils/ld/ldmain.c
|
||||
+++ binutils/ld/ldmain.c
|
||||
@@ -273,2 +273,5 @@ main (int argc, char **argv)
|
||||
link_info.emit_hash = TRUE;
|
||||
+#ifndef __mips__
|
||||
+ link_info.emit_gnu_hash = TRUE;
|
||||
+#endif
|
||||
link_info.callbacks = &link_callbacks;
|
6
patches/binutils/2.20/220-use-relro.patch
Normal file
6
patches/binutils/2.20/220-use-relro.patch
Normal file
@ -0,0 +1,6 @@
|
||||
--- binutils/ld/ldmain.c
|
||||
+++ binutils/ld/ldmain.c
|
||||
@@ -293,2 +293,3 @@ main (int argc, char **argv)
|
||||
link_info.combreloc = TRUE;
|
||||
+ link_info.relro = TRUE;
|
||||
link_info.strip_discarded = TRUE;
|
10
patches/binutils/2.20/230-libiberty-pic.patch
Normal file
10
patches/binutils/2.20/230-libiberty-pic.patch
Normal file
@ -0,0 +1,10 @@
|
||||
--- libiberty/Makefile.in.mps 2004-05-13 15:53:17.000000000 +0200
|
||||
+++ libiberty/Makefile.in 2004-05-13 15:52:53.000000000 +0200
|
||||
@@ -224,6 +224,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA
|
||||
$(AR) $(AR_FLAGS) $(TARGETLIB) \
|
||||
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
|
||||
$(RANLIB) $(TARGETLIB); \
|
||||
+ cp $(TARGETLIB) ../ ; \
|
||||
cd ..; \
|
||||
else true; fi
|
||||
|
@ -1,647 +0,0 @@
|
||||
--------- snip -------
|
||||
Downloaded from ftp://ftp.linux.org.uk/pub/armlinux/toolchain/src-2.95.3/gcc-2.95.3.diff.bz2
|
||||
Not sure what it fixes, but this appears to be The Patch used with gcc-2.95.3 on arm.
|
||||
--------- snip -------
|
||||
|
||||
diff -urN gcc-2.95.3-orig/gcc/config/arm/arm.c gcc-2.95.3/gcc/config/arm/arm.c
|
||||
--- gcc-2.95.3-orig/gcc/config/arm/arm.c Thu Jan 25 15:03:24 2001
|
||||
+++ gcc-2.95.3/gcc/config/arm/arm.c Fri Jul 20 19:39:11 2001
|
||||
@@ -1529,27 +1529,34 @@
|
||||
return gen_rtx_PLUS (Pmode, base, offset);
|
||||
}
|
||||
else if (GET_CODE (orig) == LABEL_REF)
|
||||
- current_function_uses_pic_offset_table = 1;
|
||||
-
|
||||
- return orig;
|
||||
-}
|
||||
+ {
|
||||
+ current_function_uses_pic_offset_table = 1;
|
||||
|
||||
-static rtx pic_rtx;
|
||||
+ if (NEED_PLT_GOT)
|
||||
+ {
|
||||
+ rtx pic_ref, address = gen_reg_rtx (Pmode);
|
||||
+
|
||||
+ emit_insn (gen_pic_load_addr (address, orig));
|
||||
+ pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx,
|
||||
+ address);
|
||||
+ emit_move_insn (address, pic_ref);
|
||||
+ return address;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
-int
|
||||
-is_pic(x)
|
||||
- rtx x;
|
||||
-{
|
||||
- if (x == pic_rtx)
|
||||
- return 1;
|
||||
- return 0;
|
||||
+ return orig;
|
||||
}
|
||||
|
||||
+/* Generate code to load the PIC register. PROLOGUE is true if
|
||||
+ called from arm_expand_prologue (in which case we want the
|
||||
+ generated insns at the start of the function); false if called
|
||||
+ by an exception receiver that needs the PIC register reloaded
|
||||
+ (in which case the insns are just dumped at the current location). */
|
||||
void
|
||||
-arm_finalize_pic ()
|
||||
+arm_finalize_pic (int prologue)
|
||||
{
|
||||
#ifndef AOF_ASSEMBLER
|
||||
- rtx l1, pic_tmp, pic_tmp2, seq;
|
||||
+ rtx l1, pic_tmp, pic_tmp2, seq, pic_rtx;
|
||||
rtx global_offset_table;
|
||||
|
||||
if (current_function_uses_pic_offset_table == 0)
|
||||
@@ -1578,7 +1585,10 @@
|
||||
|
||||
seq = gen_sequence ();
|
||||
end_sequence ();
|
||||
- emit_insn_after (seq, get_insns ());
|
||||
+ if (prologue)
|
||||
+ emit_insn_after (seq, get_insns ());
|
||||
+ else
|
||||
+ emit_insn (seq);
|
||||
|
||||
/* Need to emit this whether or not we obey regdecls,
|
||||
since setjmp/longjmp can cause life info to screw up. */
|
||||
@@ -5327,7 +5337,13 @@
|
||||
if (frame_pointer_needed)
|
||||
live_regs += 4;
|
||||
|
||||
- if (live_regs)
|
||||
+ if (live_regs == 1 && regs_ever_live[LR_REGNUM]
|
||||
+ && ! lr_save_eliminated && ! really_return)
|
||||
+ {
|
||||
+ output_asm_insn (reverse ? "ldr%?%D0\t%|lr, [%|sp}, #4"
|
||||
+ : "ldr%?%d0\t%|lr, [%|sp], #4", &operand);
|
||||
+ }
|
||||
+ else if (live_regs)
|
||||
{
|
||||
if (lr_save_eliminated || ! regs_ever_live[14])
|
||||
live_regs++;
|
||||
@@ -5446,7 +5462,7 @@
|
||||
rtx x;
|
||||
|
||||
length = strlen (name);
|
||||
- alignlength = (length + 1) + 3 & ~3;
|
||||
+ alignlength = ((length + 1) + 3) & ~3;
|
||||
|
||||
ASM_OUTPUT_ASCII (stream, name, length + 1);
|
||||
ASM_OUTPUT_ALIGN (stream, 2);
|
||||
@@ -5838,6 +5854,9 @@
|
||||
int store_arg_regs = 0;
|
||||
int volatile_func = (optimize > 0
|
||||
&& TREE_THIS_VOLATILE (current_function_decl));
|
||||
+ rtx ip_rtx;
|
||||
+ int fp_offset = 0;
|
||||
+ rtx insn;
|
||||
|
||||
/* Naked functions don't have prologues. */
|
||||
if (arm_naked_function_p (current_function_decl))
|
||||
@@ -5859,11 +5878,59 @@
|
||||
live_regs_mask |= 0x4000;
|
||||
}
|
||||
|
||||
+ ip_rtx = gen_rtx_REG (SImode, IP_REGNUM);
|
||||
+
|
||||
if (frame_pointer_needed)
|
||||
{
|
||||
+ if (current_function_needs_context)
|
||||
+ {
|
||||
+ /* The Static chain register is the same as the IP register
|
||||
+ used as a scratch register during stack frame creation.
|
||||
+ To get around this need to find somewhere to store IP
|
||||
+ whilst the frame is being created. We try the following
|
||||
+ places in order:
|
||||
+
|
||||
+ 1. An unused argument register.
|
||||
+ 2. A slot on the stack above the frame. (This only
|
||||
+ works if the function is not a varargs function).
|
||||
+
|
||||
+ If neither of these places is available, we abort (for now). */
|
||||
+ if (regs_ever_live[3] == 0)
|
||||
+ {
|
||||
+ insn = gen_rtx_REG (SImode, 3);
|
||||
+ insn = gen_rtx_SET (SImode, insn, ip_rtx);
|
||||
+ insn = emit_insn (insn);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+ }
|
||||
+ else if (current_function_pretend_args_size == 0)
|
||||
+ {
|
||||
+ insn = gen_rtx_PRE_DEC (SImode, stack_pointer_rtx);
|
||||
+ insn = gen_rtx_MEM (SImode, insn);
|
||||
+ insn = gen_rtx_SET (VOIDmode, insn, ip_rtx);
|
||||
+ insn = emit_insn (insn);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+ fp_offset = 4;
|
||||
+ }
|
||||
+ else
|
||||
+ /* FIXME - the way to handle this situation is to allow
|
||||
+ the pretend args to be dumped onto the stack, then
|
||||
+ reuse r3 to save IP. This would involve moving the
|
||||
+ copying os SP into IP until after the pretend args
|
||||
+ have been dumped, but this is not too hard. */
|
||||
+ error ("Unable to find a temporary location for static chanin register");
|
||||
+ }
|
||||
+
|
||||
live_regs_mask |= 0xD800;
|
||||
- emit_insn (gen_movsi (gen_rtx_REG (SImode, 12),
|
||||
- stack_pointer_rtx));
|
||||
+ if (fp_offset)
|
||||
+ {
|
||||
+ insn = gen_rtx_PLUS (SImode, stack_pointer_rtx, GEN_INT (fp_offset));
|
||||
+ insn = gen_rtx_SET (SImode, ip_rtx, insn);
|
||||
+ }
|
||||
+ else
|
||||
+ insn = gen_movsi (ip_rtx, stack_pointer_rtx);
|
||||
+
|
||||
+ insn = emit_insn (insn);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
}
|
||||
|
||||
if (current_function_pretend_args_size)
|
||||
@@ -5927,9 +5994,31 @@
|
||||
}
|
||||
|
||||
if (frame_pointer_needed)
|
||||
- emit_insn (gen_addsi3 (hard_frame_pointer_rtx, gen_rtx_REG (SImode, 12),
|
||||
- (GEN_INT
|
||||
- (-(4 + current_function_pretend_args_size)))));
|
||||
+ {
|
||||
+ insn = GEN_INT (-(4 + current_function_pretend_args_size + fp_offset));
|
||||
+ insn = emit_insn (gen_addsi3 (hard_frame_pointer_rtx, ip_rtx, insn));
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+
|
||||
+ if (current_function_needs_context)
|
||||
+ {
|
||||
+ /* Recover the static chain register. */
|
||||
+ if (regs_ever_live [3] == 0)
|
||||
+ {
|
||||
+ insn = gen_rtx_REG (SImode, 3);
|
||||
+ insn = gen_rtx_SET (SImode, ip_rtx, insn);
|
||||
+ insn = emit_insn (insn);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+ }
|
||||
+ else /* if (current_function_pretend_args_size == 0) */
|
||||
+ {
|
||||
+ insn = gen_rtx_PLUS (SImode, hard_frame_pointer_rtx, GEN_INT (4));
|
||||
+ insn = gen_rtx_MEM (SImode, insn);
|
||||
+ insn = gen_rtx_SET (SImode, ip_rtx, insn);
|
||||
+ insn = emit_insn (insn);
|
||||
+ RTX_FRAME_RELATED_P (insn) = 1;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
|
||||
if (amount != const0_rtx)
|
||||
{
|
||||
diff -urN gcc-2.95.3-orig/gcc/config/arm/arm.h gcc-2.95.3/gcc/config/arm/arm.h
|
||||
--- gcc-2.95.3-orig/gcc/config/arm/arm.h Thu Jan 25 15:03:26 2001
|
||||
+++ gcc-2.95.3/gcc/config/arm/arm.h Fri Jul 20 19:39:11 2001
|
||||
@@ -601,14 +601,20 @@
|
||||
(TREE_CODE (EXP) == STRING_CST \
|
||||
&& (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
|
||||
|
||||
+#ifndef STRUCTURE_SIZE_BOUNDARY
|
||||
/* Every structures size must be a multiple of 32 bits. */
|
||||
/* This is for compatibility with ARMCC. ARM SDT Reference Manual
|
||||
(ARM DUI 0020D) page 2-20 says "Structures are aligned on word
|
||||
boundaries". */
|
||||
-#ifndef STRUCTURE_SIZE_BOUNDARY
|
||||
-#define STRUCTURE_SIZE_BOUNDARY 32
|
||||
+/* Setting this to 32 produces more efficient code, but the value set in previous
|
||||
+ versions of this toolchain was 8, which produces more compact structures. The
|
||||
+ command line option -mstructure_size_boundary=<n> can be used to change this
|
||||
+ value. */
|
||||
+#define STRUCTURE_SIZE_BOUNDARY arm_structure_size_boundary
|
||||
#endif
|
||||
|
||||
+extern int arm_structure_size_boundary;
|
||||
+
|
||||
/* Used when parsing command line option -mstructure_size_boundary. */
|
||||
extern const char * structure_size_string;
|
||||
|
||||
@@ -768,6 +774,9 @@
|
||||
/* Specify the registers used for certain standard purposes.
|
||||
The values of these macros are register numbers. */
|
||||
|
||||
+/* Register which holds return address from a subroutine call. */
|
||||
+#define LR_REGNUM 14
|
||||
+
|
||||
/* Define this if the program counter is overloaded on a register. */
|
||||
#define PC_REGNUM 15
|
||||
|
||||
@@ -777,6 +786,9 @@
|
||||
/* Base register for access to local variables of the function. */
|
||||
#define FRAME_POINTER_REGNUM 25
|
||||
|
||||
+/* Scratch register - used in all kinds of places, eg trampolines. */
|
||||
+#define IP_REGNUM 12
|
||||
+
|
||||
/* Define this to be where the real frame pointer is if it is not possible to
|
||||
work out the offset between the frame pointer and the automatic variables
|
||||
until after register allocation has taken place. FRAME_POINTER_REGNUM
|
||||
@@ -798,7 +810,7 @@
|
||||
/* The native (Norcroft) Pascal compiler for the ARM passes the static chain
|
||||
as an invisible last argument (possible since varargs don't exist in
|
||||
Pascal), so the following is not true. */
|
||||
-#define STATIC_CHAIN_REGNUM 8
|
||||
+#define STATIC_CHAIN_REGNUM 12
|
||||
|
||||
/* Register in which address to store a structure value
|
||||
is passed to a function. */
|
||||
@@ -1248,7 +1260,12 @@
|
||||
{ \
|
||||
int volatile_func = arm_volatile_func (); \
|
||||
if ((FROM) == ARG_POINTER_REGNUM && (TO) == HARD_FRAME_POINTER_REGNUM)\
|
||||
- (OFFSET) = 0; \
|
||||
+ { \
|
||||
+ if (! current_function_needs_context || ! frame_pointer_needed) \
|
||||
+ (OFFSET) = 0; \
|
||||
+ else \
|
||||
+ (OFFSET) = 4; \
|
||||
+ } \
|
||||
else if ((FROM) == FRAME_POINTER_REGNUM \
|
||||
&& (TO) == STACK_POINTER_REGNUM) \
|
||||
(OFFSET) = (current_function_outgoing_args_size \
|
||||
@@ -1379,8 +1396,10 @@
|
||||
|
||||
On the ARM, allow any integer (invalid ones are removed later by insn
|
||||
patterns), nice doubles and symbol_refs which refer to the function's
|
||||
- constant pool XXX. */
|
||||
-#define LEGITIMATE_CONSTANT_P(X) (! label_mentioned_p (X))
|
||||
+ constant pool XXX.
|
||||
+
|
||||
+ When generating PIC code, allow anything. */
|
||||
+#define LEGITIMATE_CONSTANT_P(X) (flag_pic || ! label_mentioned_p (X))
|
||||
|
||||
/* Symbols in the text segment can be accessed without indirecting via the
|
||||
constant pool; it may take an extra binary operation, but this is still
|
||||
@@ -1496,9 +1515,8 @@
|
||||
&& INTVAL (op) <= 31) \
|
||||
goto LABEL; \
|
||||
} \
|
||||
- /* NASTY: Since this limits the addressing of unsigned byte loads */ \
|
||||
range = ((MODE) == HImode || (MODE) == QImode) \
|
||||
- ? (arm_arch4 ? 256 : 4095) : 4096; \
|
||||
+ ? (((MODE) == HImode && arm_arch4) ? 256 : 4095) : 4096; \
|
||||
if (code == CONST_INT && INTVAL (INDEX) < range \
|
||||
&& INTVAL (INDEX) > -range) \
|
||||
goto LABEL; \
|
||||
@@ -1812,14 +1830,15 @@
|
||||
data addresses in memory. */
|
||||
#define PIC_OFFSET_TABLE_REGNUM arm_pic_register
|
||||
|
||||
-#define FINALIZE_PIC arm_finalize_pic ()
|
||||
+#define FINALIZE_PIC arm_finalize_pic (1)
|
||||
|
||||
-/* We can't directly access anything that contains a symbol,
|
||||
+/* We can't directly access anything that contains a symbol or label,
|
||||
nor can we indirect via the constant pool. */
|
||||
#define LEGITIMATE_PIC_OPERAND_P(X) \
|
||||
- (! symbol_mentioned_p (X) \
|
||||
+ (! symbol_mentioned_p (X) && ! label_mentioned_p (X) \
|
||||
&& (! CONSTANT_POOL_ADDRESS_P (X) \
|
||||
- || ! symbol_mentioned_p (get_pool_constant (X))))
|
||||
+ || (! symbol_mentioned_p (get_pool_constant (X))) \
|
||||
+ && (! label_mentioned_p (get_pool_constant (X)))))
|
||||
|
||||
/* We need to know when we are making a constant pool; this determines
|
||||
whether data needs to be in the GOT or can be referenced via a GOT
|
||||
@@ -2046,17 +2065,9 @@
|
||||
else output_addr_const(STREAM, X); \
|
||||
}
|
||||
|
||||
-/* Handles PIC addr specially */
|
||||
#define OUTPUT_INT_ADDR_CONST(STREAM,X) \
|
||||
{ \
|
||||
- if (flag_pic && GET_CODE(X) == CONST && is_pic(X)) \
|
||||
- { \
|
||||
- output_addr_const(STREAM, XEXP (XEXP (XEXP (X, 0), 0), 0)); \
|
||||
- fputs(" - (", STREAM); \
|
||||
- output_addr_const(STREAM, XEXP (XEXP (XEXP (X, 0), 1), 0)); \
|
||||
- fputs(")", STREAM); \
|
||||
- } \
|
||||
- else output_addr_const(STREAM, X); \
|
||||
+ output_addr_const(STREAM, X); \
|
||||
\
|
||||
/* Mark symbols as position independent. We only do this in the \
|
||||
.text segment, not in the .data segment. */ \
|
||||
@@ -2170,8 +2181,7 @@
|
||||
int arm_return_in_memory PROTO ((Tree));
|
||||
int legitimate_pic_operand_p PROTO ((Rtx));
|
||||
Rtx legitimize_pic_address PROTO ((Rtx, Mmode, Rtx));
|
||||
-int is_pic PROTO ((Rtx));
|
||||
-void arm_finalize_pic PROTO ((void));
|
||||
+void arm_finalize_pic PROTO ((int));
|
||||
int arm_rtx_costs RTX_CODE_PROTO ((Rtx, Rcode));
|
||||
int arm_adjust_cost PROTO ((Rtx, Rtx, Rtx, int));
|
||||
int const_double_rtx_ok_for_fpu PROTO ((Rtx));
|
||||
diff -urN gcc-2.95.3-orig/gcc/config/arm/arm.md gcc-2.95.3/gcc/config/arm/arm.md
|
||||
--- gcc-2.95.3-orig/gcc/config/arm/arm.md Thu Jan 25 15:03:27 2001
|
||||
+++ gcc-2.95.3/gcc/config/arm/arm.md Fri Jul 20 19:39:11 2001
|
||||
@@ -2629,7 +2629,8 @@
|
||||
: preserve_subexpressions_p ()));
|
||||
DONE;
|
||||
}
|
||||
- if (CONSTANT_P (operands[1]) && flag_pic)
|
||||
+ if ((CONSTANT_P (operands[1]) || symbol_mentioned_p (operands[1])
|
||||
+ || label_mentioned_p (operands[1])) && flag_pic)
|
||||
operands[1] = legitimize_pic_address (operands[1], SImode,
|
||||
((reload_in_progress
|
||||
|| reload_completed)
|
||||
@@ -2721,6 +2722,15 @@
|
||||
return \"add%?\\t%0, %|pc, %0\";
|
||||
")
|
||||
|
||||
+(define_expand "builtin_setjmp_receiver"
|
||||
+ [(label_ref (match_operand 0 "" ""))]
|
||||
+ "flag_pic"
|
||||
+ "
|
||||
+{
|
||||
+ arm_finalize_pic (0);
|
||||
+ DONE;
|
||||
+}")
|
||||
+
|
||||
;; If copying one reg to another we can set the condition codes according to
|
||||
;; its value. Such a move is common after a return from subroutine and the
|
||||
;; result is being tested against zero.
|
||||
@@ -6184,15 +6194,20 @@
|
||||
abort ();
|
||||
return \"\";
|
||||
}
|
||||
- strcpy (pattern, \"stmfd\\t%m0!, {%1\");
|
||||
- for (i = 1; i < XVECLEN (operands[2], 0); i++)
|
||||
+ if (XVECLEN (operands[2], 0) > 1)
|
||||
{
|
||||
- strcat (pattern, \", %|\");
|
||||
- strcat (pattern, reg_names[REGNO (XEXP (XVECEXP (operands[2], 0, i),
|
||||
+ strcpy (pattern, \"stmfd\\t%m0!, {%1\");
|
||||
+ for (i = 1; i < XVECLEN (operands[2], 0); i++)
|
||||
+ {
|
||||
+ strcat (pattern, \", %|\");
|
||||
+ strcat (pattern, reg_names[REGNO (XEXP (XVECEXP (operands[2], 0, i),
|
||||
0))]);
|
||||
+ }
|
||||
+ strcat (pattern, \"}\");
|
||||
+ output_asm_insn (pattern, operands);
|
||||
}
|
||||
- strcat (pattern, \"}\");
|
||||
- output_asm_insn (pattern, operands);
|
||||
+ else
|
||||
+ output_asm_insn (\"str\\t%1, [%m0, #-4]!\", operands);
|
||||
return \"\";
|
||||
}"
|
||||
[(set_attr "type" "store4")])
|
||||
diff -urN gcc-2.95.3-orig/gcc/config/arm/elf.h gcc-2.95.3/gcc/config/arm/elf.h
|
||||
--- gcc-2.95.3-orig/gcc/config/arm/elf.h Mon May 31 10:21:53 1999
|
||||
+++ gcc-2.95.3/gcc/config/arm/elf.h Fri Jul 20 19:39:11 2001
|
||||
@@ -167,15 +167,6 @@
|
||||
#define MULTILIB_DEFAULTS { "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
|
||||
#endif
|
||||
|
||||
-/* Setting this to 32 produces more efficient code, but the value set in previous
|
||||
- versions of this toolchain was 8, which produces more compact structures. The
|
||||
- command line option -mstructure_size_boundary=<n> can be used to change this
|
||||
- value. */
|
||||
-#undef STRUCTURE_SIZE_BOUNDARY
|
||||
-#define STRUCTURE_SIZE_BOUNDARY arm_structure_size_boundary
|
||||
-
|
||||
-extern int arm_structure_size_boundary;
|
||||
-
|
||||
/* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS
|
||||
is a valid machine specific attribute for DECL.
|
||||
The attributes in ATTRIBUTES have previously been assigned to DECL. */
|
||||
diff -urN gcc-2.95.3-orig/gcc/config/arm/linux-gas.h gcc-2.95.3/gcc/config/arm/linux-gas.h
|
||||
--- gcc-2.95.3-orig/gcc/config/arm/linux-gas.h Mon Feb 22 17:47:57 1999
|
||||
+++ gcc-2.95.3/gcc/config/arm/linux-gas.h Fri Jul 20 19:39:11 2001
|
||||
@@ -1,6 +1,6 @@
|
||||
/* Definitions of target machine for GNU compiler.
|
||||
ARM Linux-based GNU systems version.
|
||||
- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
|
||||
+ Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
|
||||
Contributed by Russell King <rmk92@ecs.soton.ac.uk>.
|
||||
|
||||
This file is part of GNU CC.
|
||||
@@ -79,5 +79,7 @@
|
||||
register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \
|
||||
register unsigned long _end __asm ("a2") = (unsigned long) (END); \
|
||||
register unsigned long _flg __asm ("a3") = 0; \
|
||||
- __asm __volatile ("swi 0x9f0002"); \
|
||||
+ __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \
|
||||
+ : "=r" (_beg) \
|
||||
+ : "0" (_beg), "r" (_end), "r" (_flg)); \
|
||||
}
|
||||
diff -urN gcc-2.95.3-orig/gcc/config/arm/t-linux gcc-2.95.3/gcc/config/arm/t-linux
|
||||
--- gcc-2.95.3-orig/gcc/config/arm/t-linux Fri Mar 26 16:30:20 1999
|
||||
+++ gcc-2.95.3/gcc/config/arm/t-linux Fri Jul 20 20:46:19 2001
|
||||
@@ -1,6 +1,6 @@
|
||||
# Just for these, we omit the frame pointer since it makes such a big
|
||||
# difference. It is then pointless adding debugging.
|
||||
-TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC
|
||||
+TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC
|
||||
LIBGCC2_DEBUG_CFLAGS = -g0
|
||||
|
||||
# Don't build enquire
|
||||
diff -urN gcc-2.95.3-orig/gcc/final.c gcc-2.95.3/gcc/final.c
|
||||
--- gcc-2.95.3-orig/gcc/final.c Mon Mar 12 13:07:59 2001
|
||||
+++ gcc-2.95.3/gcc/final.c Fri Jul 20 19:39:11 2001
|
||||
@@ -3652,8 +3652,9 @@
|
||||
|
||||
output_addr_const (file, XEXP (x, 0));
|
||||
fprintf (file, "-");
|
||||
- if (GET_CODE (XEXP (x, 1)) == CONST_INT
|
||||
- && INTVAL (XEXP (x, 1)) < 0)
|
||||
+ if ((GET_CODE (XEXP (x, 1)) == CONST_INT
|
||||
+ && INTVAL (XEXP (x, 1)) < 0)
|
||||
+ || GET_CODE (XEXP (x, 1)) != CONST_INT)
|
||||
{
|
||||
fprintf (file, ASM_OPEN_PAREN);
|
||||
output_addr_const (file, XEXP (x, 1));
|
||||
diff -urN gcc-2.95.3-orig/gcc/function.c gcc-2.95.3/gcc/function.c
|
||||
--- gcc-2.95.3-orig/gcc/function.c Thu Jan 25 15:03:15 2001
|
||||
+++ gcc-2.95.3/gcc/function.c Fri Jul 20 19:39:10 2001
|
||||
@@ -3053,6 +3053,105 @@
|
||||
extracted by usage MEM with narrower mode. */
|
||||
static rtx purge_addressof_replacements;
|
||||
|
||||
+/* Return 1 if X and Y are identical-looking rtx's.
|
||||
+ This is the Lisp function EQUAL for rtx arguments. */
|
||||
+
|
||||
+int
|
||||
+rtx_equal_for_addressof_p (x, y)
|
||||
+ rtx x, y;
|
||||
+{
|
||||
+ register int i;
|
||||
+ register int j;
|
||||
+ register enum rtx_code code;
|
||||
+ register char *fmt;
|
||||
+
|
||||
+ if (x == y)
|
||||
+ return 1;
|
||||
+ if (x == 0 || y == 0)
|
||||
+ return 0;
|
||||
+
|
||||
+ code = GET_CODE (x);
|
||||
+ /* Rtx's of different codes cannot be equal. */
|
||||
+ if (code != GET_CODE (y))
|
||||
+ return 0;
|
||||
+
|
||||
+ /* (MULT:SI x y) and (MULT:HI x y) are NOT equivalent.
|
||||
+ (REG:SI x) and (REG:HI x) are NOT equivalent.
|
||||
+ But (MEM:SI x) and (MEM:HI x) are equivalent for our purposes. */
|
||||
+
|
||||
+ if (code != MEM && (GET_MODE (x) != GET_MODE (y)))
|
||||
+ return 0;
|
||||
+
|
||||
+ /* REG, LABEL_REF, and SYMBOL_REF can be compared nonrecursively. */
|
||||
+
|
||||
+ if (code == REG)
|
||||
+ return REGNO (x) == REGNO (y);
|
||||
+ else if (code == LABEL_REF)
|
||||
+ return XEXP (x, 0) == XEXP (y, 0);
|
||||
+ else if (code == SYMBOL_REF)
|
||||
+ return XSTR (x, 0) == XSTR (y, 0);
|
||||
+ else if (code == SCRATCH || code == CONST_DOUBLE)
|
||||
+ return 0;
|
||||
+
|
||||
+ /* Compare the elements. If any pair of corresponding elements
|
||||
+ fail to match, return 0 for the whole things. */
|
||||
+
|
||||
+ fmt = GET_RTX_FORMAT (code);
|
||||
+ for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--)
|
||||
+ {
|
||||
+ switch (fmt[i])
|
||||
+ {
|
||||
+ case 'w':
|
||||
+ if (XWINT (x, i) != XWINT (y, i))
|
||||
+ return 0;
|
||||
+ break;
|
||||
+
|
||||
+ case 'n':
|
||||
+ case 'i':
|
||||
+ if (XINT (x, i) != XINT (y, i))
|
||||
+ return 0;
|
||||
+ break;
|
||||
+
|
||||
+ case 'V':
|
||||
+ case 'E':
|
||||
+ /* Two vectors must have the same length. */
|
||||
+ if (XVECLEN (x, i) != XVECLEN (y, i))
|
||||
+ return 0;
|
||||
+
|
||||
+ /* And the corresponding elements must match. */
|
||||
+ for (j = 0; j < XVECLEN (x, i); j++)
|
||||
+ if (rtx_equal_p (XVECEXP (x, i, j), XVECEXP (y, i, j)) == 0)
|
||||
+ return 0;
|
||||
+ break;
|
||||
+
|
||||
+ case 'e':
|
||||
+ if (rtx_equal_p (XEXP (x, i), XEXP (y, i)) == 0)
|
||||
+ return 0;
|
||||
+ break;
|
||||
+
|
||||
+ case 'S':
|
||||
+ case 's':
|
||||
+ if (strcmp (XSTR (x, i), XSTR (y, i)))
|
||||
+ return 0;
|
||||
+ break;
|
||||
+
|
||||
+ case 'u':
|
||||
+ /* These are just backpointers, so they don't matter. */
|
||||
+ break;
|
||||
+
|
||||
+ case '0':
|
||||
+ break;
|
||||
+
|
||||
+ /* It is believed that rtx's at this level will never
|
||||
+ contain anything but integers and other rtx's,
|
||||
+ except for within LABEL_REFs and SYMBOL_REFs. */
|
||||
+ default:
|
||||
+ abort ();
|
||||
+ }
|
||||
+ }
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
/* Helper function for purge_addressof. See if the rtx expression at *LOC
|
||||
in INSN needs to be changed. If FORCE, always put any ADDRESSOFs into
|
||||
the stack. */
|
||||
@@ -3133,7 +3232,7 @@
|
||||
for (tem = purge_bitfield_addressof_replacements;
|
||||
tem != NULL_RTX;
|
||||
tem = XEXP (XEXP (tem, 1), 1))
|
||||
- if (rtx_equal_p (x, XEXP (tem, 0)))
|
||||
+ if (rtx_equal_for_addressof_p (x, XEXP (tem, 0)))
|
||||
{
|
||||
*loc = XEXP (XEXP (tem, 1), 0);
|
||||
return;
|
||||
@@ -3143,7 +3242,7 @@
|
||||
for (tem = purge_addressof_replacements;
|
||||
tem != NULL_RTX;
|
||||
tem = XEXP (XEXP (tem, 1), 1))
|
||||
- if (rtx_equal_p (XEXP (x, 0), XEXP (tem, 0)))
|
||||
+ if (rtx_equal_for_addressof_p (XEXP (x, 0), XEXP (tem, 0)))
|
||||
{
|
||||
rtx z = XEXP (XEXP (tem, 1), 0);
|
||||
|
||||
diff -urN gcc-2.95.3-orig/gcc/jump.c gcc-2.95.3/gcc/jump.c
|
||||
--- gcc-2.95.3-orig/gcc/jump.c Thu Oct 21 08:24:03 1999
|
||||
+++ gcc-2.95.3/gcc/jump.c Fri Jul 20 19:39:10 2001
|
||||
@@ -115,7 +115,7 @@
|
||||
static rtx delete_unreferenced_labels PROTO((rtx));
|
||||
static void delete_noop_moves PROTO((rtx));
|
||||
static int calculate_can_reach_end PROTO((rtx, int, int));
|
||||
-static int duplicate_loop_exit_test PROTO((rtx));
|
||||
+static int duplicate_loop_exit_test PROTO((rtx, int));
|
||||
static void find_cross_jump PROTO((rtx, rtx, int, rtx *, rtx *));
|
||||
static void do_cross_jump PROTO((rtx, rtx, rtx));
|
||||
static int jump_back_p PROTO((rtx, rtx));
|
||||
@@ -338,7 +338,7 @@
|
||||
&& simplejump_p (temp1))
|
||||
{
|
||||
temp = PREV_INSN (insn);
|
||||
- if (duplicate_loop_exit_test (insn))
|
||||
+ if (duplicate_loop_exit_test (insn, after_regscan))
|
||||
{
|
||||
changed = 1;
|
||||
next = NEXT_INSN (temp);
|
||||
@@ -2548,8 +2548,9 @@
|
||||
values of regno_first_uid and regno_last_uid. */
|
||||
|
||||
static int
|
||||
-duplicate_loop_exit_test (loop_start)
|
||||
+duplicate_loop_exit_test (loop_start, after_regscan)
|
||||
rtx loop_start;
|
||||
+ int after_regscan;
|
||||
{
|
||||
rtx insn, set, reg, p, link;
|
||||
rtx copy = 0, first_copy = 0;
|
||||
@@ -2662,6 +2663,9 @@
|
||||
reg_map[REGNO (reg)] = gen_reg_rtx (GET_MODE (reg));
|
||||
}
|
||||
}
|
||||
+
|
||||
+ if (after_regscan)
|
||||
+ reg_scan_update (exitcode, lastexit, max_reg);
|
||||
|
||||
/* Now copy each insn. */
|
||||
for (insn = exitcode; insn != lastexit; insn = NEXT_INSN (insn))
|
||||
diff -urN gcc-2.95.3-orig/gcc/varasm.c gcc-2.95.3/gcc/varasm.c
|
||||
--- gcc-2.95.3-orig/gcc/varasm.c Mon Feb 19 15:02:02 2001
|
||||
+++ gcc-2.95.3/gcc/varasm.c Fri Jul 20 19:39:11 2001
|
||||
@@ -3286,7 +3286,10 @@
|
||||
value->un.addr.offset = - INTVAL (XEXP (x, 1));
|
||||
}
|
||||
else
|
||||
- abort ();
|
||||
+ {
|
||||
+ value->un.addr.base = x;
|
||||
+ value->un.addr.offset = 0;
|
||||
+ }
|
||||
break;
|
||||
|
||||
default:
|
@ -1,35 +0,0 @@
|
||||
# Taken from http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.gcc.diff?r1=1.3&r2=1.4
|
||||
# Should fix error
|
||||
# Configuration powerpc-host_apple-darwin7.3.0 not supported
|
||||
# when configuring gcc-2.95 on Mac OS X for i686 target
|
||||
# Also create xm-darwin.h, seems to be required, else we get the error
|
||||
# In file included from .../gcc-2.95.3/gcc/gencheck.c:21:
|
||||
# hconfig.h:11:30: rs6000/xm-darwin.h: No such file or directory
|
||||
# make[1]: *** [gencheck.o] Error 1
|
||||
|
||||
|
||||
--- gcc-2.95.3/gcc/configure.old 2004-03-24 12:17:44.000000000 -0800
|
||||
+++ gcc-2.95.3/gcc/configure 2004-03-24 17:14:38.000000000 -0800
|
||||
@@ -5079,6 +5079,10 @@
|
||||
tmake_file=rs6000/t-beos
|
||||
xmake_file=rs6000/x-beos
|
||||
;;
|
||||
+ powerpc-*-darwin*)
|
||||
+ xm_file="rs6000/xm-rs6000.h rs6000/xm-darwin.h"
|
||||
+ xmake_file=rs6000/x-darwin
|
||||
+ ;;
|
||||
powerpc-*-sysv* | powerpc-*-elf*)
|
||||
tm_file=rs6000/sysv4.h
|
||||
xm_file="xm-siglist.h rs6000/xm-sysv4.h"
|
||||
--- /dev/null 2003-01-30 02:24:37.000000000 -0800
|
||||
+++ gcc-3.0.4/gcc/config/rs6000/xm-darwin.h 2000-11-20 19:02:09.000000000 -0800
|
||||
@@ -0,0 +1,9 @@
|
||||
+/* Undo the USG definition in xm-rs6000.h, Darwin is a BSD flavor. */
|
||||
+
|
||||
+#undef USG
|
||||
+
|
||||
+/* Override the usual setting, since Apple's GCC has lame bugs and
|
||||
+ can't handle the initializers. Someday the bugs will be fixed and
|
||||
+ we can get rid of this silliness. */
|
||||
+
|
||||
+#define HAVE_DESIGNATED_INITIALIZERS 0
|
@ -1,39 +0,0 @@
|
||||
# Taken from http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.gcc.diff?r1=1.91&r2=1.92
|
||||
# Should fix error
|
||||
# Configuration x86_64-host_unknown-linux-gnu not supported
|
||||
# when configuring gcc-2.95 on x86_64 build for i686 target
|
||||
# It's a bit silly, since tm_file refers to files that don't exist,
|
||||
# but as long as x86_64 is just the build machine, that doesn't matter.
|
||||
|
||||
--- gcc-2.95.3/gcc/configure.old 2004-03-24 12:17:44.000000000 -0800
|
||||
+++ gcc-2.95.3/gcc/configure 2004-03-24 12:19:30.000000000 -0800
|
||||
@@ -2929,6 +2929,9 @@
|
||||
i[34567]86-*-*)
|
||||
cpu_type=i386
|
||||
;;
|
||||
+ x86_64-*-*)
|
||||
+ cpu_type=i386
|
||||
+ ;;
|
||||
hppa*-*-*)
|
||||
cpu_type=pa
|
||||
;;
|
||||
@@ -3643,6 +3646,19 @@
|
||||
thread_file='posix'
|
||||
fi
|
||||
;;
|
||||
+ x86_64-*-linux*)
|
||||
+ xmake_file=x-linux
|
||||
+ tm_file="i386/biarch64.h i386/i386.h i386/att.h linux.h i386/x86-64.h \
|
||||
+ i386/linux64.h"
|
||||
+ tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff"
|
||||
+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
|
||||
+ gnu_ld=yes
|
||||
+ float_format=i386
|
||||
+ if test x$enable_threads = xyes; then
|
||||
+ thread_file='posix'
|
||||
+ fi
|
||||
+ ;;
|
||||
+
|
||||
i[34567]86-*-gnu*)
|
||||
float_format=i386
|
||||
;;
|
File diff suppressed because it is too large
Load Diff
@ -1,31 +0,0 @@
|
||||
[See also http://gcc.gnu.org/ml/libstdc++/2001-11/msg00133.html ]
|
||||
|
||||
Date: Fri, 16 Nov 2001 16:06:22 -0500
|
||||
From: Phil Edwards <pedwards at disaster dot jaj dot com>
|
||||
To: gcc-patches at gcc dot gnu dot org
|
||||
Subject: [libstdc++ trunk & 3.0] Fix deque memory leak
|
||||
Message-ID: <20011116160622.A23094@disaster.jaj.com>
|
||||
|
||||
|
||||
As discussed on the libstdc++ mailing list. Tested on i686/linux.
|
||||
|
||||
|
||||
|
||||
2001-11-16 Paolo Carlini <pcarlini@unitus.it>
|
||||
|
||||
* include/bits/stl_deque.h (deque::erase()): Fix memory leak.
|
||||
|
||||
|
||||
[rediffed against 2.95.3 -- dank]
|
||||
|
||||
--- gcc-2.95.3/libstdc++/stl/stl_deque.h.old 2001-01-01 09:48:22.000000000 -0800
|
||||
+++ gcc-2.95.3/libstdc++/stl/stl_deque.h 2006-02-18 15:24:17.000000000 -0800
|
||||
@@ -1052,7 +1052,7 @@
|
||||
copy_backward(_M_start, __first, __last);
|
||||
iterator __new_start = _M_start + __n;
|
||||
destroy(_M_start, __new_start);
|
||||
- _M_destroy_nodes(__new_start._M_node, _M_start._M_node);
|
||||
+ _M_destroy_nodes(_M_start._M_node, __new_start._M_node); /* fixed per http://gcc.gnu.org/ml/libstdc++/2001-11/msg00139.html */
|
||||
_M_start = __new_start;
|
||||
}
|
||||
else {
|
@ -1,33 +0,0 @@
|
||||
[ Building gcc-2.95.3 on cygwin yields a compiler that sticks a .exe
|
||||
on the end of every executable, even if they're linux executable.
|
||||
This is highly annoying, and causes glibc build failures that look like this:
|
||||
mv: `.../bin/makedb.new' and `.../bin/makedb' are the same file
|
||||
make[2]: *** [.../bin/makedb] Error 1
|
||||
make[2]: Leaving directory `.../gcc-2.95.3-glibc-2.1.3/glibc-2.1.3/db2'
|
||||
|
||||
The mainline solves this with http://gcc.gnu.org/ml/gcc-cvs/2001-04/msg00440.html,
|
||||
but that doesn't apply cleanly to gcc-2.95.3.
|
||||
|
||||
So, I'm using
|
||||
http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/tools-20030314/gcc-2.95.3-cygwin-020611.patch
|
||||
This is the only patch in crosstool that *isn't* suitable for the mainline.
|
||||
I can live with this patch simply because crosstool does not build
|
||||
compilers that target cygwin or VAX/VMS.
|
||||
If that ever changes, I might need to try applying the real patch.
|
||||
]
|
||||
|
||||
|
||||
|
||||
#
|
||||
# This patch can be found at http://www.uclinux.org/pub/uClinux/m68k-elf-tools/
|
||||
#
|
||||
--- gcc-2.95.3/gcc/config/i386/xm-cygwin.h 1999-04-22 16:40:56.000000000 +0200
|
||||
+++ gcc-2.95.3-cygwin/gcc/config/i386/xm-cygwin.h 2002-06-11 08:23:18.000000000 +0200
|
||||
@@ -19,7 +19,6 @@
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
|
||||
-#define EXECUTABLE_SUFFIX ".exe"
|
||||
#define NO_SYS_SIGLIST 1
|
||||
|
||||
/* We support both "/" and "\" since everybody tests both but we
|
@ -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-2.95.3-orig/configure gcc-2.95.3/configure
|
||||
--- gcc-2.95.3-orig/configure 1999-04-02 16:17:40.000000000 +0200
|
||||
+++ gcc-2.95.3/configure 2005-04-20 18:25:45.030488235 +0200
|
||||
@@ -687,7 +687,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 -f Makefile* ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos
|
||||
# Execute the final clean-up actions
|
||||
${config_shell} skip-this-dir
|
||||
@@ -1599,7 +1599,7 @@
|
||||
# Perform the same cleanup as the trap handler, minus the "exit 1" of course,
|
||||
# and reset the trap handler.
|
||||
rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos
|
||||
-trap 0
|
||||
+trap '' 0
|
||||
|
||||
exit 0
|
||||
|
@ -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.
|
||||
|
||||
--- gcc-2.95.3/libiberty/strerror.c.old 2004-03-24 16:23:19.000000000 -0800
|
||||
+++ gcc-2.95.3/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
|
||||
|
@ -1,28 +0,0 @@
|
||||
This fixes the error
|
||||
|
||||
In file included from gthr-default.h:1,
|
||||
from /build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/gcc-2.95.3/gcc/gthr.h:98,
|
||||
from /build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/gcc-2.95.3/gcc/libgcc2.c:3034:
|
||||
/build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/gcc-2.95.3/gcc/gthr-posix.h:37: pthread.h: No such file or directory
|
||||
make[3]: *** [libgcc2.a] Error 1
|
||||
make[3]: Leaving directory `/build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-gcc-core/gcc'
|
||||
|
||||
in what I think is a nicer way than the patch used by the arm team,
|
||||
i.e. "perl -pi -e 's/^(TARGET_LIBGCC2_CFLAGS.*)/$1 -Dinhibit_libc -D__gthr_posix_h/' gcc/config/arm/t-linux"
|
||||
which seems a bit of a kludge.
|
||||
|
||||
--- gcc-2.95.3/gcc/configure.old Fri Mar 16 06:13:48 2001
|
||||
+++ gcc-2.95.3/gcc/configure Sun Jun 8 13:02:20 2003
|
||||
@@ -853,9 +853,9 @@
|
||||
# Check whether --enable-threads or --disable-threads was given.
|
||||
if test "${enable_threads+set}" = set; then
|
||||
enableval="$enable_threads"
|
||||
- if test x$enable_threads = xno; then
|
||||
- enable_threads=''
|
||||
-fi
|
||||
+ #if test x$enable_threads = xno; then
|
||||
+ #enable_threads=''
|
||||
+ #fi
|
||||
else
|
||||
enable_threads=''
|
||||
fi
|
@ -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
|
@ -1,105 +0,0 @@
|
||||
# See http://gcc.gnu.org/PR7383, http://www.kegel.com/xgcc3/ppc405erratum77.html
|
||||
# Fixed in gcc-3.3
|
||||
|
||||
diff -aur gcc-20020722.orig/gcc/config/rs6000/rs6000.h gcc-20020722/gcc/config/rs6000/rs6000.h
|
||||
--- gcc-20020722.orig/gcc/config/rs6000/rs6000.h Thu Jul 25 09:32:21 2002
|
||||
+++ gcc-20020722/gcc/config/rs6000/rs6000.h Thu Jul 25 09:34:45 2002
|
||||
@@ -66,7 +66,7 @@
|
||||
%{mcpu=rsc1: -D_ARCH_PWR} \
|
||||
%{mcpu=401: -D_ARCH_PPC} \
|
||||
%{mcpu=403: -D_ARCH_PPC} \
|
||||
-%{mcpu=405: -D_ARCH_PPC} \
|
||||
+%{mcpu=405: -D_ARCH_PPC -D__PPC405__} \
|
||||
%{mcpu=505: -D_ARCH_PPC} \
|
||||
%{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \
|
||||
%{mcpu=602: -D_ARCH_PPC} \
|
||||
diff -aur gcc-20020722.orig/libjava/sysdep/powerpc/locks.h gcc-20020722/libjava/sysdep/powerpc/locks.h
|
||||
--- gcc-20020722.orig/libjava/sysdep/powerpc/locks.h Thu Jul 25 09:32:30 2002
|
||||
+++ gcc-20020722/libjava/sysdep/powerpc/locks.h Thu Jul 25 11:39:13 2002
|
||||
@@ -11,6 +11,17 @@
|
||||
#ifndef __SYSDEP_LOCKS_H__
|
||||
#define __SYSDEP_LOCKS_H__
|
||||
|
||||
+#ifdef __PPC405__
|
||||
+// workaround for PPC405 erratum #77 - 07/18/02 JRO, dank, NN. References:
|
||||
+// http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf
|
||||
+// http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489
|
||||
+// http://www.kegel.com/xgcc3/ppc405erratum77.html
|
||||
+// FIXME: using dbct instead of sync would be faster
|
||||
+#define __LIBGCJ_PPC405_ERR77_SYNC "sync \n\t"
|
||||
+#else
|
||||
+#define __LIBGCJ_PPC405_ERR77_SYNC
|
||||
+#endif
|
||||
+
|
||||
typedef size_t obj_addr_t; /* Integer type big enough for object */
|
||||
/* address. */
|
||||
|
||||
@@ -25,6 +36,7 @@
|
||||
"0: lwarx %0,0,%1 ;"
|
||||
" xor. %0,%3,%0;"
|
||||
" bne 1f;"
|
||||
+ __LIBGCJ_PPC405_ERR77_SYNC
|
||||
" stwcx. %2,0,%1;"
|
||||
" bne- 0b;"
|
||||
"1: "
|
||||
@@ -58,6 +70,7 @@
|
||||
"0: lwarx %0,0,%1 ;"
|
||||
" xor. %0,%3,%0;"
|
||||
" bne 1f;"
|
||||
+ __LIBGCJ_PPC405_ERR77_SYNC
|
||||
" stwcx. %2,0,%1;"
|
||||
" bne- 0b;"
|
||||
"1: "
|
||||
diff -aur gcc-20020722.orig/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h gcc-20020722/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h
|
||||
--- gcc-20020722.orig/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h Thu Jul 25 09:32:31 2002
|
||||
+++ gcc-20020722/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h Thu Jul 25 09:34:45 2002
|
||||
@@ -32,6 +32,17 @@
|
||||
|
||||
typedef int _Atomic_word;
|
||||
|
||||
+#ifdef __PPC405__
|
||||
+// workaround for PPC405 erratum #77 - 07/18/02 JRO & dank. References:
|
||||
+// http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf
|
||||
+// http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489
|
||||
+// http://www.kegel.com/xgcc3/ppc405erratum77.html
|
||||
+// FIXME: using dbct instead of sync would be faster
|
||||
+#define __LIBSTDCPP_PPC405_ERR77_SYNC "sync \n\t"
|
||||
+#else
|
||||
+#define __LIBSTDCPP_PPC405_ERR77_SYNC
|
||||
+#endif
|
||||
+
|
||||
static inline _Atomic_word
|
||||
__attribute__ ((__unused__))
|
||||
__exchange_and_add (volatile _Atomic_word* __mem, int __val)
|
||||
@@ -42,6 +53,7 @@
|
||||
"0:\t"
|
||||
"lwarx %0,0,%2 \n\t"
|
||||
"add%I3 %1,%0,%3 \n\t"
|
||||
+ __LIBSTDCPP_PPC405_ERR77_SYNC
|
||||
"stwcx. %1,0,%2 \n\t"
|
||||
"bne- 0b \n\t"
|
||||
"/* End exchange & add */"
|
||||
@@ -61,6 +73,7 @@
|
||||
"0:\t"
|
||||
"lwarx %0,0,%1 \n\t"
|
||||
"add%I2 %0,%0,%2 \n\t"
|
||||
+ __LIBSTDCPP_PPC405_ERR77_SYNC
|
||||
"stwcx. %0,0,%1 \n\t"
|
||||
"bne- 0b \n\t"
|
||||
"/* End atomic add */"
|
||||
@@ -78,6 +91,7 @@
|
||||
"/* Inline always swap */\n"
|
||||
"0:\t"
|
||||
"lwarx %0,0,%1 \n\t"
|
||||
+ __LIBSTDCPP_PPC405_ERR77_SYNC
|
||||
"stwcx. %2,0,%1 \n\t"
|
||||
"bne- 0b \n\t"
|
||||
"/* End always swap */"
|
||||
@@ -98,6 +112,7 @@
|
||||
"lwarx %0,0,%1 \n\t"
|
||||
"cmpwi %0,0 \n\t"
|
||||
"bne- 1f \n\t"
|
||||
+ __LIBSTDCPP_PPC405_ERR77_SYNC
|
||||
"stwcx. %2,0,%1 \n\t"
|
||||
"bne- 0b \n"
|
||||
"1:\n\t"
|
File diff suppressed because it is too large
Load Diff
@ -1,98 +0,0 @@
|
||||
g++ testsuite fixes for cross-compilers, Dan Kegel, Ixia Communications, 12 July 2003
|
||||
|
||||
The first hunk fixes the error
|
||||
|
||||
/testsuite_flags: /testsuite_flags: No such file or directory
|
||||
while executing
|
||||
"exec sh ${odir_v3}/testsuite_flags --build-includes"
|
||||
(procedure "g++_include_flags" line 21)
|
||||
invoked from within
|
||||
"g++_include_flags [get_multilibs] "
|
||||
(procedure "g++_init" line 63)
|
||||
invoked from within
|
||||
"${tool}_init $test_file_name"
|
||||
(procedure "runtest" line 19)
|
||||
invoked from within
|
||||
"runtest $test_name"
|
||||
("foreach" body line 42)
|
||||
invoked from within
|
||||
...
|
||||
make[1]: [check-g++] Error 1 (ignored)
|
||||
|
||||
The fix isn't especially pretty, but it worked for me, and can't hurt the
|
||||
more common native compiler case. Maybe someone who knows the code better
|
||||
can come up with a better fix.
|
||||
|
||||
The second hunk fixes the error
|
||||
|
||||
sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-405-linux-gnu/gcc-3.2.3-glibc-2.2.5/powerpc-405-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian
|
||||
|
||||
when trying to compile g++ testcases (!); setting up
|
||||
the shared library environment when running crosstests of g++
|
||||
should either be done by a special board file, or by
|
||||
setting up a remote chroot environment (see http://kegel.com/crosstool),
|
||||
not by blithely setting LD_LIBRARY_PATH on the local system.
|
||||
|
||||
--- gcc-3.2.3/gcc/testsuite/lib/g++.exp.old Fri Jul 11 15:42:47 2003
|
||||
+++ gcc-3.2.3/gcc/testsuite/lib/g++.exp Sat Jul 12 12:57:07 2003
|
||||
@@ -72,6 +72,8 @@
|
||||
#
|
||||
proc g++_include_flags { paths } {
|
||||
global srcdir
|
||||
+ global objdir
|
||||
+ global target_triplet
|
||||
global HAVE_LIBSTDCXX_V3
|
||||
global TESTING_IN_BUILD_TREE
|
||||
|
||||
@@ -90,6 +92,20 @@
|
||||
|
||||
if { ${HAVE_LIBSTDCXX_V3} } {
|
||||
set odir_v3 [lookfor_file ${gccpath} libstdc++-v3]
|
||||
+ if { $odir_v3 == "" } {
|
||||
+ verbose "g++_include_flags: couldn't find libstdc++-v3 on first try, now looking in build directory $objdir"
|
||||
+ # first assume no multilibs
|
||||
+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"]
|
||||
+ }
|
||||
+ if { $odir_v3 == "" } {
|
||||
+ verbose "g++_include_flags: couldn't find libstdc++-v3 on second try, trying multilib"
|
||||
+ # assume multilib only one level deep
|
||||
+ set multisub [file tail $gccpath]
|
||||
+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"]
|
||||
+ }
|
||||
+ if { $odir_v3 == "" } {
|
||||
+ error "Can't find libstdc++-v3"
|
||||
+ }
|
||||
append flags [exec sh ${odir_v3}/testsuite_flags --build-includes]
|
||||
} else {
|
||||
set odir_v2 [lookfor_file ${gccpath} libstdc++]
|
||||
@@ -192,16 +192,20 @@
|
||||
}
|
||||
}
|
||||
|
||||
- # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
|
||||
- # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH
|
||||
- # (for the 64-bit ABI). The right way to do this would be to modify
|
||||
- # unix.exp -- but that's not an option since it's part of DejaGNU
|
||||
- # proper, so we do it here. We really only need to do
|
||||
- # this on IRIX, but it shouldn't hurt to do it anywhere else.
|
||||
- setenv LD_LIBRARY_PATH $ld_library_path
|
||||
- setenv SHLIB_PATH $ld_library_path
|
||||
- setenv LD_LIBRARYN32_PATH $ld_library_path
|
||||
- setenv LD_LIBRARY64_PATH $ld_library_path
|
||||
+ if {![is_remote target]} {
|
||||
+ # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but
|
||||
+ # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH
|
||||
+ # (for the 64-bit ABI). The right way to do this would be to modify
|
||||
+ # unix.exp -- but that's not an option since it's part of DejaGNU
|
||||
+ # proper, so we do it here. We really only need to do
|
||||
+ # this on IRIX, but it shouldn't hurt to do it anywhere else.
|
||||
+
|
||||
+ # Doing this causes us to be unable to run cross-compilers.
|
||||
+ setenv LD_LIBRARY_PATH $ld_library_path
|
||||
+ setenv SHLIB_PATH $ld_library_path
|
||||
+ setenv LD_LIBRARYN32_PATH $ld_library_path
|
||||
+ setenv LD_LIBRARY64_PATH $ld_library_path
|
||||
+ }
|
||||
|
||||
return "$flags"
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -1,54 +0,0 @@
|
||||
Based on gcc-3.4.0/gcc-3.3.3h-ppc-asm-spec.patch
|
||||
|
||||
Fixes the following errors when building gcc for ppc7450:
|
||||
|
||||
/tmp/ccYph3gd.s: Assembler messages:
|
||||
/tmp/ccYph3gd.s:3823: Error: Unrecognized opcode: `mfvrsave'
|
||||
/tmp/ccYph3gd.s:3857: Error: Unrecognized opcode: `stvx'
|
||||
/tmp/ccYph3gd.s:4026: Error: Unrecognized opcode: `lvx'
|
||||
/tmp/ccYph3gd.s:4027: Error: Unrecognized opcode: `mtvrsave'
|
||||
make[2]: *** [libgcc/./unwind-dw2.o] Error 1
|
||||
make[2]: Leaving directory `/opt/crosstool-0.28-rc35/build/powerpc-7450-linux-gnu/gcc-3.2.3-glibc-2.3.2/build-gcc-core/gcc'
|
||||
make[1]: *** [stmp-multilib] Error 2
|
||||
make[1]: Leaving directory `/opt/crosstool-0.28-rc35/build/powerpc-7450-linux-gnu/gcc-3.2.3-glibc-2.3.2/build-gcc-core/gcc'
|
||||
make: *** [all-gcc] Error 2
|
||||
|
||||
Note that the "-mcpu=7450" option must appear on the "gcc" command line in
|
||||
order for "-maltivec" to be passed to the assembler. Or, "-maltivec" itself
|
||||
may be passed to the "gcc" command.
|
||||
|
||||
Contributed by Tom Warzeka <waz@quahog.npt.nuwc.navy.mil>
|
||||
|
||||
===================================================================
|
||||
--- gcc-3.2.3/gcc/config/rs6000/rs6000.h~ 2003-03-29 07:39:20.000000000 -0500
|
||||
+++ gcc-3.2.3/gcc/config/rs6000/rs6000.h 2004-08-23 16:33:21.000000000 -0400
|
||||
@@ -77,8 +77,8 @@
|
||||
%{mcpu=604e: -D_ARCH_PPC} \
|
||||
%{mcpu=620: -D_ARCH_PPC} \
|
||||
%{mcpu=740: -D_ARCH_PPC} \
|
||||
-%{mcpu=7400: -D_ARCH_PPC} \
|
||||
-%{mcpu=7450: -D_ARCH_PPC} \
|
||||
+%{mcpu=7400: -D_ARCH_PPC -D__ALTIVEC__} \
|
||||
+%{mcpu=7450: -D_ARCH_PPC -D__ALTIVEC__} \
|
||||
%{mcpu=750: -D_ARCH_PPC} \
|
||||
%{mcpu=801: -D_ARCH_PPC} \
|
||||
%{mcpu=821: -D_ARCH_PPC} \
|
||||
@@ -117,14 +117,15 @@
|
||||
%{mcpu=604e: -mppc} \
|
||||
%{mcpu=620: -mppc} \
|
||||
%{mcpu=740: -mppc} \
|
||||
-%{mcpu=7400: -mppc} \
|
||||
-%{mcpu=7450: -mppc} \
|
||||
+%{mcpu=7400: -mppc -maltivec} \
|
||||
+%{mcpu=7450: -mppc -maltivec} \
|
||||
%{mcpu=750: -mppc} \
|
||||
%{mcpu=801: -mppc} \
|
||||
%{mcpu=821: -mppc} \
|
||||
%{mcpu=823: -mppc} \
|
||||
%{mcpu=860: -mppc} \
|
||||
-%{maltivec: -maltivec}"
|
||||
+%{maltivec: -maltivec} \
|
||||
+-many"
|
||||
|
||||
#define CPP_DEFAULT_SPEC ""
|
||||
|
@ -1,45 +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.2.3-orig/configure gcc-3.2.3/configure
|
||||
--- gcc-3.2.3-orig/configure 2002-06-24 18:14:28.000000000 +0200
|
||||
+++ gcc-3.2.3/configure 2005-04-20 18:42:49.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
|
||||
@@ -1615,7 +1615,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
|
||||
|
@ -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
|
File diff suppressed because it is too large
Load Diff
@ -1,16 +0,0 @@
|
||||
http://mirror.sh-linux.org/rpm-2003/SRPMS/gcc-3.2.3-3.src.rpm contains the following patches:
|
||||
|
||||
gcc-20030210-sh-linux-1.patch
|
||||
gcc-3.2.3-libffi-1.patch
|
||||
gcc-3.2.3-sh-linux-dwarf2-1.patch (*not* applied by the spec file, it's in there by accident)
|
||||
|
||||
gcc-3.2.3-libffi-1.patch was needed just to build, I think.
|
||||
|
||||
After that was applied, sh4 gcc seemed to compile fine, but c++ programs
|
||||
failed to execute because libstdc++.so.5 was built without version
|
||||
info. This was caused directly by libstdc++-v3/configure setting
|
||||
SYMVER_MAP=config/linker-map.dummy because it sees that
|
||||
no libgcc_s.so was generated; configure says
|
||||
checking for shared libgcc... no.
|
||||
|
||||
Applying gcc-20030210-sh-linux-1.patch in hopes it makes those problems go away.
|
@ -1,739 +0,0 @@
|
||||
Summary: The GNU Compiler Collection for SuperH.
|
||||
%define GCC_VERSION 3.2.3
|
||||
%define arch_list sh3-linux sh3eb-linux sh4-linux sh4eb-linux
|
||||
%define TARGET_LIBSTDC 1
|
||||
%define TARGET_JAVA 1
|
||||
|
||||
Name: gcc
|
||||
Version: 3.2.3
|
||||
Release: 3
|
||||
|
||||
Copyright: GPL
|
||||
Group: Development/Languages
|
||||
Source0: gcc-%{GCC_VERSION}.tar.bz2
|
||||
Patch1: gcc-20030210-sh-linux-1.patch
|
||||
Patch2: gcc-3.2.3-libffi-1.patch
|
||||
Patch3: gcc-3.2.3-sh-linux-dwarf2-1.patch
|
||||
Buildroot: /var/tmp/gcc-%{_target}-root
|
||||
ExclusiveArch: i386 sh3 sh3eb sh4 sh4eb
|
||||
|
||||
%description
|
||||
This package contains the GNU Compiler Collection: gcc and g++.
|
||||
You'll need this package in order to compile C/C++ code.
|
||||
|
||||
%ifarch i386
|
||||
|
||||
# ==================== Cross Compiler ===============================
|
||||
|
||||
%package sh-linux
|
||||
Summary: The GNU Compiler Collection for sh-linux.
|
||||
Group: Development/Languages
|
||||
Requires: binutils-sh-linux >= 2.13.2
|
||||
Provides: gcc-sh-linux
|
||||
Obsoletes: gcc-sh3-linux gcc-sh3eb-linux gcc-sh4-linux gcc-sh4eb-linux
|
||||
Obsoletes: gcc-sh3-linux-c++ gcc-sh3eb-linux-c++ gcc-sh4-linux-c++ gcc-sh4eb-linux-c++
|
||||
Obsoletes: libstdc++-sh3-linux libstdc++-sh3eb-linux libstdc++-sh4-linux libstdc++-sh4eb-linux
|
||||
AutoReqProv: no
|
||||
|
||||
%description sh-linux
|
||||
The gcc-sh-linux package contains GNU Compiler Collection: gcc g++ and libstdc++-v3.
|
||||
|
||||
It includes support for most of the current C++ specification, including templates and
|
||||
exception handling. It does also include the standard C++ library and C++ header files.
|
||||
You'll need this package in order to cross compile C/C++ code for sh-linux.
|
||||
|
||||
%package -n libgcj-sh-linux
|
||||
Summary: Header files and libraries for sh-linux Java development.
|
||||
Group: Development/Libraries
|
||||
Requires: gcc-sh-linux = %{version}-%{release}
|
||||
AutoReqProv: no
|
||||
|
||||
%description -n libgcj-sh-linux
|
||||
The Java static libraries and C header files. You will need this
|
||||
package to compile your Java programs for sh-linux using the gcc Java compiler (gcj).
|
||||
|
||||
%else
|
||||
# =========================== Native Compiler =================================
|
||||
%package libgcc
|
||||
Summary: runtime libraries for the GNU Compiler Collection.
|
||||
Group: System Environment/Libraries
|
||||
|
||||
%description libgcc
|
||||
This package contains libgcc shared libraries for the GNU C Compiler Collection.
|
||||
You'll need this package in order to execute C,C++,JAVA code
|
||||
that uses shared libgcc.
|
||||
|
||||
%package c++
|
||||
Summary: C++ support for gcc
|
||||
Group: Development/Languages
|
||||
Requires: gcc = %{version}-%{release}
|
||||
|
||||
%description c++
|
||||
This package adds C++ support to the GNU Compiler Collection. It includes
|
||||
support for most of the current C++ specification, including templates and
|
||||
exception handling. It does include the static standard C++
|
||||
library and C++ header files; the library for dynamically linking
|
||||
programs is available separately.
|
||||
|
||||
%package -n libstdc++
|
||||
Summary: GNU c++ library.
|
||||
Group: System Environment/Libraries
|
||||
|
||||
%description -n libstdc++
|
||||
The libstdc++ package contains a snapshot of the GCC Standard C++
|
||||
Library v3, an ongoing project to implement the ISO 14882 Standard C++
|
||||
library.
|
||||
|
||||
%package -n libstdc++-devel
|
||||
Summary: Header files and libraries for C++ development
|
||||
Group: Development/Libraries
|
||||
Requires: libstdc++ = %{version}-%{release}, gcc-c++ = %{version}-%{release}
|
||||
|
||||
%description -n libstdc++-devel
|
||||
This is the GNU implementation of the standard C++ libraries. This
|
||||
package includes the header files and libraries needed for C++
|
||||
development. This includes SGI's implementation of the STL.
|
||||
|
||||
%package java
|
||||
Summary: Java support for gcc
|
||||
Group: Development/Languages
|
||||
Requires: gcc = %{version}-%{release}, libgcj = %{version}-%{release}, libgcj-devel = %{version}-%{release}
|
||||
|
||||
%description java
|
||||
This package adds experimental support for compiling Java(tm) programs and
|
||||
bytecode into native code. To use this you will also need the libgcj and
|
||||
libgcj-devel packages.
|
||||
|
||||
%package -n libgcj
|
||||
Summary: Java runtime library for gcc.
|
||||
Group: System Environment/Libraries
|
||||
|
||||
%description -n libgcj
|
||||
The Java runtime library. You will need this package to run your Java
|
||||
programs compiled using the gcc Java compiler (gcj).
|
||||
|
||||
%package -n libgcj-devel
|
||||
Summary: Header files and libraries for Java development.
|
||||
Group: Development/Libraries
|
||||
Requires: libgcj = %{version}-%{release}
|
||||
|
||||
%description -n libgcj-devel
|
||||
The Java static libraries and C header files. You will need this
|
||||
package to compile your Java programs using the gcc Java compiler (gcj).
|
||||
|
||||
%endif
|
||||
|
||||
%prep
|
||||
%setup -q -n gcc-%{GCC_VERSION}
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
##%patch3 -p1
|
||||
|
||||
%build
|
||||
%ifarch i386
|
||||
# build cross compiler for i386-linux host
|
||||
for arch in sh-linux; do
|
||||
rm -rf ${arch}
|
||||
mkdir ${arch}
|
||||
|
||||
CONFIG_ARGS="\
|
||||
--prefix=%{_prefix} \
|
||||
--mandir=%{_mandir} \
|
||||
--infodir=%{_infodir} \
|
||||
--target=${arch} \
|
||||
--host=%{_host} \
|
||||
--build=%{_build} \
|
||||
--enable-languages=c,c++,java \
|
||||
--with-system-zlib \
|
||||
--with-gxx-include-dir=%{_prefix}/${arch}/include/g++-v3 \
|
||||
--includedir=%{_prefix}/${arch}/include \
|
||||
--disable-checking \
|
||||
--disable-shared \
|
||||
--enable-__cxa_atexit \
|
||||
--enable-c99 \
|
||||
--enable-threads=posix \
|
||||
--enable-long-long"
|
||||
if [ %{TARGET_JAVA} -ne 0 ]; then
|
||||
CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj"
|
||||
fi
|
||||
( cd $arch
|
||||
../configure ${CONFIG_ARGS}
|
||||
)
|
||||
if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then
|
||||
sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$
|
||||
mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile
|
||||
fi
|
||||
make all-gcc -C ${arch}
|
||||
|
||||
if [ %{TARGET_LIBSTDC} -ne 0 ]; then
|
||||
CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`"
|
||||
make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host" all-target-libstdc++-v3 -C ${arch}
|
||||
fi
|
||||
|
||||
if [ %{TARGET_JAVA} -ne 0 ]; then
|
||||
make all-fastjar -C ${arch}
|
||||
CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--host=%{_host}/--host=${arch}/`"
|
||||
dir=`pwd`
|
||||
|
||||
ac_cv_file__proc_self_exe=yes \
|
||||
ac_cv_prog_GCJ="$dir/$arch/gcc/gcj -B$dir/$arch/$arch/libjava/ -B$dir/$arch/gcc/ -B%{_prefix}/$arch/bin/ -B%{_prefix}/$arch/lib/ -isystem %{_prefix}/$arch/include" \
|
||||
make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host --enable-multilib --with-target-subdir=${arch} --with-x=no" \
|
||||
all-target-libjava -C ${arch}
|
||||
fi
|
||||
|
||||
%else
|
||||
# Canadian cross (build native compiler)
|
||||
for arch in %{_target}; do
|
||||
rm -rf ${arch}
|
||||
mkdir -p ${arch}
|
||||
CONFIG_ARGS="\
|
||||
--prefix=%{_prefix} \
|
||||
--mandir=%{_mandir} \
|
||||
--infodir=%{_infodir} \
|
||||
--target=${arch} \
|
||||
--host=${arch} \
|
||||
--build=%{_build} \
|
||||
--enable-languages=c,c++,java \
|
||||
--with-system-zlib \
|
||||
--with-gxx-include-dir=%{_prefix}/include/g++-v3 \
|
||||
--disable-checking \
|
||||
--disable-shared \
|
||||
--enable-__cxa_atexit \
|
||||
--enable-c99 \
|
||||
--enable-threads=posix \
|
||||
--enable-long-long"
|
||||
|
||||
if [ %{TARGET_JAVA} -ne 0 ]; then
|
||||
CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj"
|
||||
fi
|
||||
|
||||
( cd ${arch}
|
||||
CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ \
|
||||
../configure $CONFIG_ARGS
|
||||
)
|
||||
|
||||
if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then
|
||||
sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$
|
||||
mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile
|
||||
fi
|
||||
|
||||
make all-build-libiberty all-gcc -C ${arch}
|
||||
|
||||
if [ %{TARGET_LIBSTDC} -ne 0 ]; then
|
||||
CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`"
|
||||
make TARGET_CONFIGARGS="${CONFIG_ARGS}" all-target-libstdc++-v3 -C ${arch}
|
||||
if [ %{TARGET_JAVA} -ne 0 ]; then
|
||||
( mkdir -p ${arch}/fastjar; cd ${arch}/fastjar; rm *; ../../fastjar/configure --with-system-zlib; make )
|
||||
ac_cv_file__proc_self_exe=yes \
|
||||
CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ GCJ=${arch}-gcj \
|
||||
make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-x=no" configure-target-libjava -C ${arch}
|
||||
|
||||
make -C ${arch}/${arch}/libffi
|
||||
make -C ${arch}/${arch}/boehm-gc
|
||||
make -C ${arch}/${arch}/zlib
|
||||
make GCJ=${arch}-gcj GCJH=${arch}-gcjh ZIP=${arch}-jar -C ${arch}/${arch}/libjava
|
||||
(
|
||||
rm -rf ${arch}/${arch}/fastjar
|
||||
mkdir -p ${arch}/${arch}/fastjar
|
||||
cd ${arch}/${arch}/fastjar
|
||||
|
||||
ac_cv_sizeof_char=1 \
|
||||
ac_cv_sizeof_short=2 \
|
||||
ac_cv_sizeof_int=4 \
|
||||
ac_cv_sizeof_long=4 \
|
||||
ac_cv_sizeof_long_long=8 \
|
||||
ac_cv_sizeof_float=4 \
|
||||
ac_cv_sizeof_double=8 \
|
||||
ac_cv_sizeof_long_double=8 \
|
||||
ac_cv_sizeof_void_p=4 \
|
||||
ac_cv_file__proc_self_exe=yes \
|
||||
ac_cv_header_langinfo_h=yes \
|
||||
CC=${arch}-gcc ../../../fastjar/configure $CONFIG_ARGS
|
||||
|
||||
make
|
||||
)
|
||||
|
||||
fi
|
||||
fi
|
||||
%endif
|
||||
done
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p ${RPM_BUILD_ROOT}/{%{_prefix}/bin,lib}
|
||||
|
||||
%ifarch i386
|
||||
ARCH_STRTIP=strip
|
||||
EXESUFFIX=""
|
||||
arch=sh-linux
|
||||
TOOLPREFIX=${arch}-
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/{bin,include,lib,share}
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/lib/{m4,mb/m4}
|
||||
make DESTDIR=${RPM_BUILD_ROOT} \
|
||||
install-gcc \
|
||||
install-fastjar \
|
||||
-C ${arch}
|
||||
%if 0
|
||||
( cd ${RPM_BUILD_ROOT}%{_prefix}/sh-linux/lib
|
||||
rm -f libgcc_s_*.so
|
||||
mv libgcc_s_mb.so.1 mb/libgcc_s.so.1
|
||||
mv libgcc_s_m4.so.1 m4/libgcc_s.so.1
|
||||
mv libgcc_s_mb_m4.so.1 mb/m4/libgcc_s.so.1
|
||||
ln -s libgcc_s.so.1 mb/libgcc_s.so
|
||||
ln -s libgcc_s.so.1 m4/libgcc_s.so
|
||||
ln -s libgcc_s.so.1 mb/m4/libgcc_s.so
|
||||
)
|
||||
%endif
|
||||
|
||||
if [ %{TARGET_LIBSTDC} -ne 0 ]; then
|
||||
make DESTDIR=${RPM_BUILD_ROOT} \
|
||||
install-target-libstdc++-v3 \
|
||||
-C ${arch}
|
||||
fi
|
||||
if [ %{TARGET_JAVA} -ne 0 ]; then
|
||||
make DESTDIR=${RPM_BUILD_ROOT} \
|
||||
install-target-libjava \
|
||||
install-target-boehm-gc \
|
||||
install-target-zlib \
|
||||
-C ${arch}
|
||||
make DESTDIR=${RPM_BUILD_ROOT} prefix=%{_prefix}/${arch} \
|
||||
install -C ${arch}/${arch}/libffi
|
||||
mv -f $RPM_BUILD_ROOT%{_prefix}/share/java $RPM_BUILD_ROOT%{_prefix}/sh-linux/share/
|
||||
fi
|
||||
rm -f $RPM_BUILD_ROOT%{_prefix}/bin/{gcov,gccbug}
|
||||
rm -f $RPM_BUILD_ROOT%{_prefix}/${arch}/bin/{gij,jv-convert}
|
||||
sed -e 's/@@VERSION@@/%{GCC_VERSION}/g' debian/shCPU-linux-GCC >$RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC
|
||||
chmod 0755 $RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC
|
||||
|
||||
LIBSTDC=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libstdc++.so*`
|
||||
LIBGCJ=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libgcj.so*`
|
||||
LIBFFI=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libffi*.so*`
|
||||
# literally (binary-ly) same
|
||||
PROGS="cpp c++ g++ g77 gcc gcj"
|
||||
DRIVERS="cc1 cc1obj cc1plus collect2 cpp0 f771 jc1 tradcpp0 jvgenmain"
|
||||
OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o"
|
||||
LIBS="libgcc.a libgcc_eh.a libobjc.a"
|
||||
LIBS_1="$LIBSTDC \
|
||||
$LIBGCJ libgcj.spec \
|
||||
$LIBFFI "
|
||||
LIBS_2="libstdc++.a libstdc++.la \
|
||||
libsupc++.a libsupc++.la \
|
||||
libgcj.a libgcj.la \
|
||||
libffi.a libffi.la"
|
||||
INCLUDE="include"
|
||||
|
||||
for CPU in sh3 sh3eb sh4 sh4eb; do
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}
|
||||
mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${CPU}-linux/{lib,share/java}
|
||||
# Make symbolic links for include dir.
|
||||
ln -s ../sh-linux/include $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/include
|
||||
|
||||
# Make symbolic links for libgcj.jar
|
||||
ln -s ../../sh-linux/share/java/libgcj-%{GCC_VERSION}.jar $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/share/java/libgcj-%{GCC_VERSION}.jar
|
||||
|
||||
# Make symbolic links for executables.
|
||||
for p in ${PROGS}; do
|
||||
ln -s shCPU-linux-GCC $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-$p
|
||||
done
|
||||
ln -s sh-linux-gcjh $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-gcjh
|
||||
|
||||
case "${CPU}" in
|
||||
sh3)
|
||||
MULTILIBDIR=
|
||||
MULTIPARENTDIR=
|
||||
AS_ENDIAN_FLAG="-little"
|
||||
CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__"
|
||||
CPP_CPU_DEFS='-D__SH3__ -D__sh3__'
|
||||
CC1_CPU_ENDIAN_FLAGS="-ml -m3"
|
||||
CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m3"
|
||||
LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3"
|
||||
LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3-linux/lib"
|
||||
;;
|
||||
sh3eb)
|
||||
MULTILIBDIR=/mb
|
||||
MULTIPARENTDIR=../
|
||||
AS_ENDIAN_FLAG="-big"
|
||||
CPP_ENDIAN_DEF="-D__BIG_ENDIAN__"
|
||||
CPP_CPU_DEFS='-D__SH3__ -D__sh3__'
|
||||
CC1_CPU_ENDIAN_FLAGS="-mb -m3"
|
||||
CC1PLUS_CPU_ENDIAN_FLAGS="-mb -m3"
|
||||
LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3"
|
||||
LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3eb-linux/lib"
|
||||
;;
|
||||
sh4)
|
||||
MULTILIBDIR=/m4
|
||||
MULTIPARENTDIR=../
|
||||
AS_ENDIAN_FLAG="-little"
|
||||
CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__"
|
||||
CPP_CPU_DEFS="-D__SH4__"
|
||||
CC1_CPU_ENDIAN_FLAGS="-ml -m4"
|
||||
CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m4"
|
||||
LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh4"
|
||||
LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh4-linux/lib"
|
||||
;;
|
||||
sh4eb)
|
||||
MULTILIBDIR=/mb/m4
|
||||
MULTIPARENTDIR=../../
|
||||
AS_ENDIAN_FLAG="-big"
|
||||
CPP_ENDIAN_DEF="-D__BIG_ENDIAN__"
|
||||
CPP_CPU_DEFS="-D__SH4__"
|
||||
CC1_CPU_ENDIAN_FLAGS="-mb -m4"
|
||||
CC1PLUS_CPU_ENDIAN_FLAGS="-mb -m4"
|
||||
LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh4"
|
||||
LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh4eb-linux/lib"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Make symbolic links for GCC drivers, objects, libraries, and include dir.
|
||||
for f in ${DRIVERS} ${INCLUDE}; do
|
||||
if [ -a $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/$f ]; then
|
||||
ln -s ../../sh-linux/%{GCC_VERSION}/$f $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/$f
|
||||
fi
|
||||
done
|
||||
for f in ${OBJS} ${LIBS}; do
|
||||
if [ -a $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}${MULTILIBDIR}/$f ]; then
|
||||
ln -s ../../sh-linux/%{GCC_VERSION}${MULTILIBDIR}/$f $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/$f
|
||||
fi
|
||||
done
|
||||
|
||||
for f in ${LIBS_1} ${LIBS_2}; do
|
||||
if [ -e $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f ]; then
|
||||
mv -f $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/lib
|
||||
ln -s ${MULTIPARENTDIR}../../${CPU}-linux/lib/$f $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f
|
||||
fi
|
||||
done
|
||||
|
||||
sed -e "s+@AS_ENDIAN_FLAG@+${AS_ENDIAN_FLAG}+" \
|
||||
-e "s+@CPP_ENDIAN_DEF@+${CPP_ENDIAN_DEF}+" \
|
||||
-e "s+@CPP_CPU_DEFS@+${CPP_CPU_DEFS}+" \
|
||||
-e "s+@CC1_CPU_ENDIAN_FLAGS@+${CC1_CPU_ENDIAN_FLAGS}+" \
|
||||
-e "s+@CC1PLUS_CPU_ENDIAN_FLAGS@+${CC1PLUS_CPU_ENDIAN_FLAGS}+" \
|
||||
-e "s+@LINKER_CPU_ENDIAN_FLAGS@+${LINKER_CPU_ENDIAN_FLAGS}+" \
|
||||
-e "s+@LINKER_RPATH_LINK_FLAG@+${LINKER_RPATH_LINK_FLAG}+" \
|
||||
debian/edit-specs.in >${arch}/edit-specs-${CPU}.sed
|
||||
|
||||
sed -f ${arch}/edit-specs-${CPU}.sed \
|
||||
$RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/specs \
|
||||
> $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/specs
|
||||
|
||||
done
|
||||
|
||||
%else
|
||||
ARCH_STRTIP=%{_target}-strip
|
||||
EXESUFFIX=""
|
||||
TOOLPREFIX=""
|
||||
ln -s ..%{_prefix}/bin/cpp ${RPM_BUILD_ROOT}/lib/cpp
|
||||
ln -s gcc ${RPM_BUILD_ROOT}%{_prefix}/bin/cc
|
||||
arch=%{_target}
|
||||
make DESTDIR=${RPM_BUILD_ROOT} \
|
||||
install -C ${arch}
|
||||
if [ %{TARGET_JAVA} -ne 0 ]; then
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install -C ${arch}/${arch}/libffi
|
||||
make DESTDIR=${RPM_BUILD_ROOT} install -C ${arch}/${arch}/fastjar
|
||||
mv -f ${RPM_BUILD_ROOT}/%{_prefix}/%{_lib}/libgcj.spec \
|
||||
${RPM_BUILD_ROOT}/%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/
|
||||
fi
|
||||
$ARCH_STRTIP $RPM_BUILD_ROOT%{_prefix}/bin/gcov$EXESUFFIX || :
|
||||
|
||||
cat >${arch}/edit-specs <<EOF
|
||||
/^*cross_compile:$/ {
|
||||
n
|
||||
c\\
|
||||
0
|
||||
}
|
||||
EOF
|
||||
sed -f ${arch}/edit-specs -e 's#-rpath-link.*/usr/%{_target}/lib##' \
|
||||
${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs \
|
||||
>${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs.$$
|
||||
mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs.$$ \
|
||||
${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs
|
||||
|
||||
sed -e "s/dependency_libs=.*/dependency_libs='-lm -lgcc -lc -lgcc'/" \
|
||||
${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la \
|
||||
>${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la.$$
|
||||
mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la.$$ \
|
||||
${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la
|
||||
|
||||
sed -e "s/dependency_libs=.*/dependency_libs='-lpthread -ldl -lz -lm -lgcc -lc -lgcc'/" \
|
||||
${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la \
|
||||
>${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la.$$
|
||||
mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la.$$ \
|
||||
${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la
|
||||
|
||||
cat >$RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/syslimits.h <<EOF
|
||||
#define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h to recurse */
|
||||
#include_next <limits.h>
|
||||
#undef _GCC_NEXT_LIMITS_H
|
||||
EOF
|
||||
|
||||
%endif
|
||||
|
||||
$ARCH_STRTIP $RPM_BUILD_ROOT%{_prefix}/bin/${TOOLPREFIX}{gcc,cpp,c++,c++filt,gcj,gcjh,gij,jar,grepjar,jcf-dump,jv-convert,jv-scan}$EXESUFFIX || :
|
||||
FULLPATH=$(dirname $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/cc1${EXESUFFIX})
|
||||
$ARCH_STRTIP $FULLPATH/{cc1${EXESUFFIX},cc1plus${EXESUFFIX},cpp0${EXESUFFIX},tradcpp0${EXESUFFIX},collect2${EXESUFFIX},jc1${EXESUFFIX},jvgenmain${EXESUFFIX}} || :
|
||||
|
||||
# Strip static libraries
|
||||
sh-linux-strip -S -R .comment `find $RPM_BUILD_ROOT -type f -name "*.a"` || :
|
||||
|
||||
# Strip ELF shared objects
|
||||
for f in `find $RPM_BUILD_ROOT -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) `; do
|
||||
if file $f | grep -q "shared object.*not stripped"; then
|
||||
sh-linux-strip --strip-unneeded -R .comment $f
|
||||
fi
|
||||
done
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
# ==================== Cross Compiler ===============================
|
||||
%ifarch i386
|
||||
|
||||
%files sh-linux
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/bin/sh*
|
||||
%dir %{_prefix}/lib/gcc-lib/sh-linux
|
||||
%dir %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}
|
||||
%dir %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include
|
||||
%dir %{_prefix}/lib/gcc-lib/sh3-linux
|
||||
%dir %{_prefix}/lib/gcc-lib/sh3-linux/%{GCC_VERSION}
|
||||
%dir %{_prefix}/lib/gcc-lib/sh3eb-linux
|
||||
%dir %{_prefix}/lib/gcc-lib/sh3eb-linux/%{GCC_VERSION}
|
||||
%dir %{_prefix}/lib/gcc-lib/sh4-linux
|
||||
%dir %{_prefix}/lib/gcc-lib/sh4-linux/%{GCC_VERSION}
|
||||
%dir %{_prefix}/lib/gcc-lib/sh4eb-linux
|
||||
%dir %{_prefix}/lib/gcc-lib/sh4eb-linux/%{GCC_VERSION}
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cc1
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cc1plus
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/collect2
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cpp0
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/*.o
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/libgcc*.a
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/specs
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/tradcpp0
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/jc1
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/jvgenmain
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/m4
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/mb
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stddef.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stdarg.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/varargs.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/float.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/limits.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stdbool.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/iso646.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/syslimits.h
|
||||
%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/README
|
||||
%{_prefix}/lib/gcc-lib/sh3-linux/%{GCC_VERSION}/*
|
||||
%{_prefix}/lib/gcc-lib/sh3eb-linux/%{GCC_VERSION}/*
|
||||
%{_prefix}/lib/gcc-lib/sh4-linux/%{GCC_VERSION}/*
|
||||
%{_prefix}/lib/gcc-lib/sh4eb-linux/%{GCC_VERSION}/*
|
||||
%{_mandir}/man1/sh-linux-*
|
||||
%dir %{_prefix}/sh-linux/include
|
||||
%{_prefix}/sh3-linux/include
|
||||
%{_prefix}/sh3eb-linux/include
|
||||
%{_prefix}/sh4-linux/include
|
||||
%{_prefix}/sh4eb-linux/include
|
||||
%endif
|
||||
|
||||
%if %{TARGET_LIBSTDC}
|
||||
%ifarch i386
|
||||
%{_prefix}/sh-linux/include/g++-v3
|
||||
%{_prefix}/sh-linux/lib/libs*
|
||||
%{_prefix}/sh-linux/lib/m4/libs*
|
||||
%{_prefix}/sh-linux/lib/mb/libs*
|
||||
%{_prefix}/sh-linux/lib/mb/m4/libs*
|
||||
%{_prefix}/sh3-linux/lib/libs*
|
||||
%{_prefix}/sh4-linux/lib/libs*
|
||||
%{_prefix}/sh3eb-linux/lib/libs*
|
||||
%{_prefix}/sh4eb-linux/lib/libs*
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if %{TARGET_JAVA}
|
||||
%ifarch i386
|
||||
%files -n libgcj-sh-linux
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/sh-linux/include/*.h
|
||||
%{_prefix}/sh-linux/include/gcj
|
||||
%{_prefix}/sh-linux/include/gnu/*
|
||||
%{_prefix}/sh-linux/include/java
|
||||
%{_prefix}/sh-linux/lib/lib*gcj*
|
||||
%{_prefix}/sh-linux/lib/m4/lib*gcj*
|
||||
%{_prefix}/sh-linux/lib/mb/lib*gcj*
|
||||
%{_prefix}/sh-linux/lib/mb/m4/lib*gcj*
|
||||
%{_prefix}/sh-linux/lib/libffi*
|
||||
%{_prefix}/sh-linux/lib/m4/libffi*
|
||||
%{_prefix}/sh-linux/lib/mb/libffi*
|
||||
%{_prefix}/sh-linux/lib/mb/m4/libffi*
|
||||
%{_prefix}/sh-linux/share/java/libgcj-%{GCC_VERSION}.jar
|
||||
%{_prefix}/sh3-linux/lib/lib*gcj*
|
||||
%{_prefix}/sh3-linux/lib/libffi*
|
||||
%{_prefix}/sh3-linux/share/java/libgcj-%{GCC_VERSION}.jar
|
||||
%{_prefix}/sh4-linux/lib/lib*gcj*
|
||||
%{_prefix}/sh4-linux/lib/libffi*
|
||||
%{_prefix}/sh4-linux/share/java/libgcj-%{GCC_VERSION}.jar
|
||||
%{_prefix}/sh3eb-linux/lib/lib*gcj*
|
||||
%{_prefix}/sh3eb-linux/lib/libffi*
|
||||
%{_prefix}/sh3eb-linux/share/java/libgcj-%{GCC_VERSION}.jar
|
||||
%{_prefix}/sh4eb-linux/lib/lib*gcj*
|
||||
%{_prefix}/sh4eb-linux/lib/libffi*
|
||||
%{_prefix}/sh4eb-linux/share/java/libgcj-%{GCC_VERSION}.jar
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%ifarch sh3 sh3eb sh4 sh4eb
|
||||
# =========================== Native Compiler =================================
|
||||
%files
|
||||
%defattr(-,root,root)
|
||||
%dir %{_prefix}/lib/gcc-lib/%{_target}
|
||||
%dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}
|
||||
%dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cc1
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/collect2
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cpp0
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/crt*.o
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/libgcc*.a
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/specs
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/tradcpp0
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stddef.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stdarg.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/varargs.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/float.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/limits.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stdbool.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/iso646.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/syslimits.h
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/README
|
||||
%{_prefix}/bin/gcc
|
||||
%{_prefix}/bin/%{_target}-gcc
|
||||
%{_prefix}/bin/cpp
|
||||
%{_prefix}/bin/gccbug
|
||||
%{_prefix}/bin/gcov
|
||||
%{_prefix}/bin/cc
|
||||
/lib/cpp
|
||||
%{_infodir}/cpp*
|
||||
%{_infodir}/gcc*
|
||||
|
||||
%if 0
|
||||
%files libgcc
|
||||
%defattr(-,root,root)
|
||||
/lib/libgcc_s.so*
|
||||
%endif
|
||||
|
||||
%files c++
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/bin/c++
|
||||
%{_prefix}/bin/g++
|
||||
%{_prefix}/bin/c++filt
|
||||
%{_prefix}/bin/%{_target}-c++
|
||||
%{_prefix}/bin/%{_target}-g++
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cc1plus
|
||||
%endif
|
||||
|
||||
%if %{TARGET_LIBSTDC}
|
||||
%ifarch sh3 sh3eb sh4 sh4eb
|
||||
%files -n libstdc++
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/lib/libstdc++.so*
|
||||
|
||||
%files -n libstdc++-devel
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/include/g++-v3
|
||||
%{_prefix}/lib/libstdc++.*a
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if %{TARGET_JAVA}
|
||||
%ifarch sh3 sh3eb sh4 sh4eb
|
||||
%files java
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/bin/addr2name.awk
|
||||
%{_prefix}/bin/gcj
|
||||
%{_prefix}/bin/gcjh
|
||||
%{_prefix}/bin/gij
|
||||
%{_prefix}/bin/jar
|
||||
%{_prefix}/bin/grepjar
|
||||
%{_prefix}/bin/jcf-dump
|
||||
%{_prefix}/bin/jv-convert
|
||||
%{_prefix}/bin/jv-scan
|
||||
%dir %{_prefix}/lib/gcc-lib
|
||||
%dir %{_prefix}/lib/gcc-lib/%{_target}
|
||||
%dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/jc1
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/jvgenmain
|
||||
%{_infodir}/gcj*
|
||||
|
||||
%files -n libgcj
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/%{_lib}/libgcj.so*
|
||||
%{_prefix}/%{_lib}/libffi*.so*
|
||||
%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/libgcj.spec
|
||||
%{_prefix}/share/java/libgcj-%{GCC_VERSION}.jar
|
||||
|
||||
%files -n libgcj-devel
|
||||
%defattr(-,root,root)
|
||||
%{_prefix}/include/*.h
|
||||
%{_prefix}/include/gcj
|
||||
%{_prefix}/include/gnu/*
|
||||
%{_prefix}/include/java
|
||||
%{_prefix}/lib/libgcj.*a
|
||||
%{_prefix}/lib/libffi.*a
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
* Wed Feb 19 2003 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- version 3.2.2.
|
||||
|
||||
* Tue Feb 19 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- version 3.0.4.
|
||||
|
||||
* Tue Feb 12 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- add java support.
|
||||
|
||||
* Thu Feb 7 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- follow debian/SH update.
|
||||
|
||||
* Tue Feb 5 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- follow debian/SH update.
|
||||
|
||||
* Thu Jan 24 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- rebuild with new binutils.
|
||||
|
||||
* Tue Jan 22 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- leaf function optimization fixed.
|
||||
|
||||
* Thu Dec 06 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- add gcc-ice-rml patch.
|
||||
|
||||
* Tue Nov 13 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- add configure option.
|
||||
|
||||
* Thu Nov 01 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- tablejump fix by gniibe.
|
||||
|
||||
* Mon Oct 22 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- updated gcc patch.
|
||||
|
||||
* Wed Oct 17 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- updated gcc patch.
|
||||
|
||||
* Tue Oct 02 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- gcc/config/sh/sh.c bug fix.
|
||||
|
||||
* Fri Aug 24 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- gcc version 3.0.1.
|
||||
|
||||
* Thu Jun 28 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- gcc version 3.0.
|
||||
- Add libstdc++ package.
|
||||
|
||||
* Mon Apr 23 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- Add cygwin host.
|
||||
|
||||
* Sat Dec 23 2000 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- fix file attribute.
|
||||
- add asmspecs patch.
|
||||
|
||||
* Sat Nov 11 2000 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
|
||||
- initial version.
|
@ -1,70 +0,0 @@
|
||||
See http://gcc.gnu.org/PR22541
|
||||
|
||||
From: Dan Kegel
|
||||
|
||||
When building gcc-3.4.3 or gcc-4.0.0 as a cross into a clean $PREFIX
|
||||
(the only two I've tried like this), the configure script happily copies
|
||||
the glibc include files from include to sys-include; here's the line
|
||||
from the log file (with $PREFIX instead of the real prefix):
|
||||
|
||||
Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include
|
||||
|
||||
But later, when running fixincludes, it gives the error message
|
||||
The directory that should contain system headers does not exist:
|
||||
$PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include
|
||||
|
||||
Nevertheless, it continues building; the header files it installs in
|
||||
$PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include
|
||||
do not include the boilerplate that would cause it to #include_next the
|
||||
glibc headers in the system header directory.
|
||||
Thus the resulting toolchain can't compile the following program:
|
||||
#include <limits.h>
|
||||
int x = PATH_MAX;
|
||||
because its limits.h doesn't include the glibc header.
|
||||
|
||||
That's not nice. I suspect the problem is that gcc/Makefile.in assumes that
|
||||
it can refer to $PREFIX/i686-unknown-linux-gnu with the path
|
||||
$PREFIX/lib/../i686-unknown-linux-gnu, but
|
||||
that fails because the directory $PREFIX/lib doesn't exist during 'make all';
|
||||
it is only created later, during 'make install'. (Which makes this problem
|
||||
confusing, since one only notices the breakage well after 'make install',
|
||||
at which point the path configure complained about does exist, and has the
|
||||
right stuff in it.)
|
||||
|
||||
A possible fix is to replace the line in gcc/Makefile.in that says
|
||||
SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@
|
||||
with a version that gets rid of extra ..'s, e.g.
|
||||
SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"`
|
||||
(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq
|
||||
for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.)
|
||||
|
||||
|
||||
--- gcc-3.4.3/gcc/Makefile.in.foo 2005-05-20 11:41:39.000000000 -0700
|
||||
+++ gcc-3.4.3/gcc/Makefile.in 2005-05-20 12:08:46.000000000 -0700
|
||||
@@ -350,7 +350,10 @@
|
||||
CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
|
||||
|
||||
# autoconf sets SYSTEM_HEADER_DIR to one of the above.
|
||||
-SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@
|
||||
+# Purge it of unneccessary internal relative paths
|
||||
+# to directories that might not exist yet.
|
||||
+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta.
|
||||
+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`
|
||||
|
||||
# Control whether to run fixproto and fixincludes.
|
||||
STMP_FIXPROTO = @STMP_FIXPROTO@
|
||||
@@ -2532,11 +2535,13 @@
|
||||
$(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(gcc_tooldir)
|
||||
|
||||
# Build fixed copies of system files.
|
||||
+# Abort if no system headers available, unless building a crosscompiler.
|
||||
+# FIXME: abort unless building --without-headers would be more accurate and less ugly
|
||||
stmp-fixinc: fixinc.sh gsyslimits.h
|
||||
@if test ! -d ${SYSTEM_HEADER_DIR}; then \
|
||||
echo The directory that should contain system headers does not exist: >&2 ; \
|
||||
echo " ${SYSTEM_HEADER_DIR}" >&2 ; \
|
||||
- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \
|
||||
+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \
|
||||
then sleep 1; else exit 1; fi; \
|
||||
fi
|
||||
rm -rf include; mkdir include
|
@ -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
|
@ -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]);
|
||||
"
|
||||
)
|
||||
|
@ -1,72 +0,0 @@
|
||||
See http://gcc.gnu.org/PR22541
|
||||
|
||||
From: Dan Kegel
|
||||
|
||||
When building gcc-3.4.3 or gcc-4.0.[01] into a clean $PREFIX (the only two I've tried like this),
|
||||
the configure script happily copies the glibc include files from include to sys-include;
|
||||
here's the line from the log file (with $PREFIX instead of the real prefix):
|
||||
|
||||
Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include
|
||||
|
||||
But later, when running fixincludes, it gives the error message
|
||||
The directory that should contain system headers does not exist:
|
||||
$PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include
|
||||
|
||||
Nevertheless, it continues building; the header files it installs in
|
||||
$PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include
|
||||
do not include the boilerplate that would cause it to #include_next the
|
||||
glibc headers in the system header directory.
|
||||
Thus the resulting toolchain can't compile the following program:
|
||||
#include <limits.h>
|
||||
int x = PATH_MAX;
|
||||
because its limits.h doesn't include the glibc header.
|
||||
|
||||
That's not nice. I suspect the problem is that gcc/Makefile.in assumes that
|
||||
it can refer to $PREFIX/i686-unknown-linux-gnu with the path
|
||||
$PREFIX/lib/../i686-unknown-linux-gnu, but
|
||||
that fails because the directory $PREFIX/lib doesn't exist during 'make all';
|
||||
it is only created later, during 'make install'. (Which makes this problem
|
||||
confusing, since one only notices the breakage well after 'make install',
|
||||
at which point the path configure complained about does exist, and has the
|
||||
right stuff in it.)
|
||||
|
||||
A possible fix is to replace the line in gcc/Makefile.in that says
|
||||
SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@
|
||||
with a version that gets rid of extra ..'s, e.g.
|
||||
SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"`
|
||||
(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq
|
||||
for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.)
|
||||
|
||||
[rediffed against gcc-4.0.0]
|
||||
|
||||
--- gcc-4.0.0/gcc/Makefile.in.orig 2005-04-04 12:45:13.000000000 -0700
|
||||
+++ gcc-4.0.0/gcc/Makefile.in 2005-05-20 12:33:43.000000000 -0700
|
||||
@@ -378,7 +378,10 @@
|
||||
CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
|
||||
|
||||
# autoconf sets SYSTEM_HEADER_DIR to one of the above.
|
||||
-SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@
|
||||
+# Purge it of unneccessary internal relative paths
|
||||
+# to directories that might not exist yet.
|
||||
+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta.
|
||||
+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`
|
||||
|
||||
# Control whether to run fixproto and fixincludes.
|
||||
STMP_FIXPROTO = @STMP_FIXPROTO@
|
||||
@@ -2838,13 +2841,15 @@
|
||||
../$(build_subdir)/fixincludes/fixincl: ; @ :
|
||||
|
||||
# Build fixed copies of system files.
|
||||
+# Abort if no system headers available, unless building a crosscompiler.
|
||||
+# FIXME: abort unless building --without-headers would be more accurate and less ugly
|
||||
stmp-fixinc: gsyslimits.h macro_list \
|
||||
../$(build_subdir)/fixincludes/fixincl \
|
||||
../$(build_subdir)/fixincludes/fixinc.sh
|
||||
@if test ! -d ${SYSTEM_HEADER_DIR}; then \
|
||||
echo The directory that should contain system headers does not exist: >&2 ; \
|
||||
echo " ${SYSTEM_HEADER_DIR}" >&2 ; \
|
||||
- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \
|
||||
+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \
|
||||
then sleep 1; else exit 1; fi; \
|
||||
fi
|
||||
rm -rf include; mkdir include
|
@ -1,79 +0,0 @@
|
||||
By Lennert Buytenhek <buytenh@wantstofly.org>
|
||||
Adds support for arm*b-linux* big-endian ARM targets
|
||||
|
||||
Fixes following build error for big-endian ARM targets:
|
||||
|
||||
armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/bin/../lib/gcc/armeb-unknown-linux-gnu/4.0.0/../../../../armeb-unknown-linux-gnu/bin/ld: unrecognised emulation mode: armelf_linux
|
||||
Supported emulations: armelfb_linux armelfb
|
||||
collect2: ld returned 1 exit status
|
||||
make[2]: *** [crosstool-0.32/build/armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/csu/crt1.o] Error 1
|
||||
make[2]: Leaving directory `crosstool-0.32/build/armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4/csu'
|
||||
make[1]: *** [csu/subdir_lib] Error 2
|
||||
make[1]: Leaving directory `crosstool-0.32/build/armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4'
|
||||
make: *** [lib] Error 2
|
||||
|
||||
|
||||
See http://gcc.gnu.org/PR16350
|
||||
|
||||
--- gcc-4.0-20050305/gcc/config/arm/linux-elf.h.orig 2005-03-23 18:44:54.822707377 +0100
|
||||
+++ gcc-4.0-20050305/gcc/config/arm/linux-elf.h 2005-03-23 18:46:18.228560206 +0100
|
||||
@@ -31,19 +31,33 @@
|
||||
/* Do not assume anything about header files. */
|
||||
#define NO_IMPLICIT_EXTERN_C
|
||||
|
||||
+/*
|
||||
+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for
|
||||
+ * arm*b-*-linux* (big endian) configurations.
|
||||
+ */
|
||||
+#if TARGET_BIG_ENDIAN_DEFAULT
|
||||
+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END
|
||||
+#define TARGET_ENDIAN_OPTION "mbig-endian"
|
||||
+#define TARGET_LINKER_EMULATION "armelfb_linux"
|
||||
+#else
|
||||
+#define TARGET_ENDIAN_DEFAULT 0
|
||||
+#define TARGET_ENDIAN_OPTION "mlittle-endian"
|
||||
+#define TARGET_LINKER_EMULATION "armelf_linux"
|
||||
+#endif
|
||||
+
|
||||
#undef TARGET_DEFAULT_FLOAT_ABI
|
||||
#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
|
||||
|
||||
#undef TARGET_DEFAULT
|
||||
-#define TARGET_DEFAULT (0)
|
||||
+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT)
|
||||
|
||||
#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
|
||||
|
||||
-#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
|
||||
+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
|
||||
|
||||
#undef MULTILIB_DEFAULTS
|
||||
#define MULTILIB_DEFAULTS \
|
||||
- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" }
|
||||
+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
|
||||
|
||||
/* The GNU C++ standard library requires that these macros be defined. */
|
||||
#undef CPLUSPLUS_CPP_SPEC
|
||||
@@ -90,7 +104,7 @@
|
||||
%{rdynamic:-export-dynamic} \
|
||||
%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
|
||||
-X \
|
||||
- %{mbig-endian:-EB}" \
|
||||
+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
|
||||
SUBTARGET_EXTRA_LINK_SPEC
|
||||
|
||||
#define TARGET_OS_CPP_BUILTINS() \
|
||||
--- gcc-4.0-20050305/gcc/config.gcc.orig 2005-03-23 18:46:23.318105335 +0100
|
||||
+++ gcc-4.0-20050305/gcc/config.gcc 2005-03-23 18:47:41.592546386 +0100
|
||||
@@ -650,6 +650,11 @@
|
||||
;;
|
||||
arm*-*-linux*) # ARM GNU/Linux with ELF
|
||||
tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
|
||||
+ case $target in
|
||||
+ arm*b-*-linux*)
|
||||
+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
|
||||
+ ;;
|
||||
+ esac
|
||||
tmake_file="${tmake_file} arm/t-arm arm/t-linux"
|
||||
extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
|
||||
gnu_ld=yes
|
@ -1,121 +0,0 @@
|
||||
Date: 18 May 2005 22:47:59 -0000
|
||||
Message-ID: <20050518224759.7352.qmail@sourceware.org>
|
||||
From: "hubicka at ucw dot cz" <gcc-bugzilla@gcc.gnu.org>
|
||||
To: dank@kegel.com
|
||||
References: <20050407215701.20815.dank@kegel.com>
|
||||
Reply-To: gcc-bugzilla@gcc.gnu.org
|
||||
Subject: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'."
|
||||
|
||||
|
||||
------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:47 -------
|
||||
Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'."
|
||||
|
||||
>
|
||||
> ------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:22 -------
|
||||
> Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'."
|
||||
>
|
||||
> coverage_checksum_string already knows a bit about ignoring random seed
|
||||
> produced mess. It looks like this needs to be extended somehow to
|
||||
> handle namespaces too...
|
||||
|
||||
This seems to solve the missmatch. Would it be possible to test it on
|
||||
bigger testcase and if it works distile a testcase that don't use
|
||||
file IO so it is more suitable for gcc regtesting?
|
||||
|
||||
Index: coverage.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gcc/gcc/gcc/coverage.c,v
|
||||
retrieving revision 1.6.2.12.2.12
|
||||
diff -c -3 -p -r1.6.2.12.2.12 coverage.c
|
||||
*** gcc-old/gcc/coverage.c 18 May 2005 07:37:31 -0000 1.6.2.12.2.12
|
||||
--- gcc/gcc/coverage.c 18 May 2005 22:45:36 -0000
|
||||
*************** coverage_checksum_string (unsigned chksu
|
||||
*** 471,505 ****
|
||||
as the checksums are used only for sanity checking. */
|
||||
for (i = 0; string[i]; i++)
|
||||
{
|
||||
if (!strncmp (string + i, "_GLOBAL__", 9))
|
||||
! for (i = i + 9; string[i]; i++)
|
||||
! if (string[i]=='_')
|
||||
! {
|
||||
! int y;
|
||||
! unsigned seed;
|
||||
! int scan;
|
||||
!
|
||||
! for (y = 1; y < 9; y++)
|
||||
! if (!(string[i + y] >= '0' && string[i + y] <= '9')
|
||||
! && !(string[i + y] >= 'A' && string[i + y] <= 'F'))
|
||||
! break;
|
||||
! if (y != 9 || string[i + 9] != '_')
|
||||
! continue;
|
||||
! for (y = 10; y < 18; y++)
|
||||
! if (!(string[i + y] >= '0' && string[i + y] <= '9')
|
||||
! && !(string[i + y] >= 'A' && string[i + y] <= 'F'))
|
||||
! break;
|
||||
! if (y != 18)
|
||||
! continue;
|
||||
! scan = sscanf (string + i + 10, "%X", &seed);
|
||||
! gcc_assert (scan);
|
||||
! if (seed != crc32_string (0, flag_random_seed))
|
||||
! continue;
|
||||
! string = dup = xstrdup (string);
|
||||
! for (y = 10; y < 18; y++)
|
||||
! dup[i + y] = '0';
|
||||
! break;
|
||||
! }
|
||||
break;
|
||||
}
|
||||
|
||||
--- 471,511 ----
|
||||
as the checksums are used only for sanity checking. */
|
||||
for (i = 0; string[i]; i++)
|
||||
{
|
||||
+ int offset = 0;
|
||||
+ if (!strncmp (string + i, "_GLOBAL__N_", 11))
|
||||
+ offset = 11;
|
||||
if (!strncmp (string + i, "_GLOBAL__", 9))
|
||||
! offset = 9;
|
||||
!
|
||||
! /* C++ namespaces do have scheme:
|
||||
! _GLOBAL__N_<filename>_<wrongmagicnumber>_<magicnumber>functionname
|
||||
! since filename might contain extra underscores there seems
|
||||
! to be no better chance then walk all possible offsets looking
|
||||
! for magicnuber. */
|
||||
! if (offset)
|
||||
! for (;string[offset]; offset++)
|
||||
! for (i = i + offset; string[i]; i++)
|
||||
! if (string[i]=='_')
|
||||
! {
|
||||
! int y;
|
||||
!
|
||||
! for (y = 1; y < 9; y++)
|
||||
! if (!(string[i + y] >= '0' && string[i + y] <= '9')
|
||||
! && !(string[i + y] >= 'A' && string[i + y] <= 'F'))
|
||||
! break;
|
||||
! if (y != 9 || string[i + 9] != '_')
|
||||
! continue;
|
||||
! for (y = 10; y < 18; y++)
|
||||
! if (!(string[i + y] >= '0' && string[i + y] <= '9')
|
||||
! && !(string[i + y] >= 'A' && string[i + y] <= 'F'))
|
||||
! break;
|
||||
! if (y != 18)
|
||||
! continue;
|
||||
! if (!dup)
|
||||
! string = dup = xstrdup (string);
|
||||
! for (y = 10; y < 18; y++)
|
||||
! dup[i + y] = '0';
|
||||
! }
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
--
|
||||
|
||||
|
||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20815
|
||||
|
||||
------- You are receiving this mail because: -------
|
||||
You reported the bug, or are watching the reporter.
|
||||
|
||||
|
@ -1,80 +0,0 @@
|
||||
http://gcc.gnu.org/PR20973
|
||||
|
||||
"gcc 4 (about RC1) miscompiles khtml, in fact something in CSS, which basically
|
||||
leads to all websites being misrendered. I can't easily reduce the testcase,
|
||||
but have applied the whole preprocessed source of css/cssstyleselector.ii.
|
||||
|
||||
It is to be compiled with g++ -O2 -fPIC -march=i586 -mtune=i686
|
||||
-fno-exceptions. A more detailed analysis will follow, as we've found out
|
||||
some things already."
|
||||
|
||||
---
|
||||
|
||||
Subject: Bug 20973
|
||||
|
||||
CVSROOT: /cvs/gcc
|
||||
Module name: gcc
|
||||
Branch: gcc-4_0-branch
|
||||
Changes by: matz@gcc.gnu.org 2005-04-22 17:30:21
|
||||
|
||||
Modified files:
|
||||
gcc : ChangeLog reload.c
|
||||
|
||||
Log message:
|
||||
PR middle-end/20973
|
||||
* reload.c (push_reload, find_dummy_reload): Check for uninitialized
|
||||
pseudos.
|
||||
|
||||
Patches:
|
||||
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.177&r2=2.7592.2.178
|
||||
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/reload.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.268&r2=1.268.2.1
|
||||
|
||||
---
|
||||
|
||||
===================================================================
|
||||
RCS file: /cvs/gcc/gcc/gcc/reload.c,v
|
||||
retrieving revision 1.268
|
||||
retrieving revision 1.268.2.1
|
||||
diff -u -r1.268 -r1.268.2.1
|
||||
--- gcc/gcc/reload.c 2005/02/24 22:06:06 1.268
|
||||
+++ gcc/gcc/reload.c 2005/04/22 17:30:15 1.268.2.1
|
||||
@@ -1520,7 +1520,7 @@
|
||||
But if there is no spilling in this block, that is OK.
|
||||
An explicitly used hard reg cannot be a spill reg. */
|
||||
|
||||
- if (rld[i].reg_rtx == 0 && in != 0)
|
||||
+ if (rld[i].reg_rtx == 0 && in != 0 && hard_regs_live_known)
|
||||
{
|
||||
rtx note;
|
||||
int regno;
|
||||
@@ -1534,6 +1534,11 @@
|
||||
&& REG_P (XEXP (note, 0))
|
||||
&& (regno = REGNO (XEXP (note, 0))) < FIRST_PSEUDO_REGISTER
|
||||
&& reg_mentioned_p (XEXP (note, 0), in)
|
||||
+ /* Check that we don't use a hardreg for an uninitialized
|
||||
+ pseudo. See also find_dummy_reload(). */
|
||||
+ && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER
|
||||
+ || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end,
|
||||
+ ORIGINAL_REGNO (XEXP (note, 0))))
|
||||
&& ! refers_to_regno_for_reload_p (regno,
|
||||
(regno
|
||||
+ hard_regno_nregs[regno]
|
||||
@@ -1997,7 +2002,17 @@
|
||||
is a subreg, and in that case, out
|
||||
has a real mode. */
|
||||
(GET_MODE (out) != VOIDmode
|
||||
- ? GET_MODE (out) : outmode)))
|
||||
+ ? GET_MODE (out) : outmode))
|
||||
+ /* But only do all this if we can be sure, that this input
|
||||
+ operand doesn't correspond with an uninitialized pseudoreg.
|
||||
+ global can assign some hardreg to it, which is the same as
|
||||
+ a different pseudo also currently live (as it can ignore the
|
||||
+ conflict). So we never must introduce writes to such hardregs,
|
||||
+ as they would clobber the other live pseudo using the same.
|
||||
+ See also PR20973. */
|
||||
+ && (ORIGINAL_REGNO (in) < FIRST_PSEUDO_REGISTER
|
||||
+ || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end,
|
||||
+ ORIGINAL_REGNO (in))))
|
||||
{
|
||||
unsigned int regno = REGNO (in) + in_offset;
|
||||
unsigned int nwords = hard_regno_nregs[regno][inmode];
|
@ -1,66 +0,0 @@
|
||||
See http://gcc.gnu.org/PR21173
|
||||
This is a fix for a last minute brown-bag bug with gcc-4.0.0
|
||||
|
||||
------- Additional Comment #24 From CVS Commits 2005-04-25 14:03 [reply] -------
|
||||
Subject: Bug 21173
|
||||
|
||||
CVSROOT: /cvs/gcc
|
||||
Module name: gcc
|
||||
Branch: gcc-4_0-branch
|
||||
Changes by: dberlin@gcc.gnu.org 2005-04-25 14:02:38
|
||||
|
||||
Modified files:
|
||||
gcc : ChangeLog tree-ssa-pre.c
|
||||
|
||||
Log message:
|
||||
2005-04-25 Daniel Berlin <dberlin@dberlin.org>
|
||||
|
||||
Fix PR tree-optimization/21173
|
||||
|
||||
* tree-ssa-pre.c (create_expression_by_pieces): Call unshare_expr
|
||||
on things we pass to force_gimple_operand. Don't try to special
|
||||
case min_invariants.
|
||||
|
||||
Patches:
|
||||
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.192&r2=2.7592.2.193
|
||||
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-pre.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.65.4.2&r2=2.65.4.3
|
||||
|
||||
===================================================================
|
||||
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-pre.c,v
|
||||
retrieving revision 2.65.4.2
|
||||
retrieving revision 2.65.4.3
|
||||
diff -u -r2.65.4.2 -r2.65.4.3
|
||||
--- gcc/gcc/tree-ssa-pre.c 2005/04/17 23:40:31 2.65.4.2
|
||||
+++ gcc/gcc/tree-ssa-pre.c 2005/04/25 14:02:31 2.65.4.3
|
||||
@@ -1330,7 +1330,8 @@
|
||||
|
||||
folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr),
|
||||
genop1, genop2));
|
||||
- newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL);
|
||||
+ newexpr = force_gimple_operand (unshare_expr (folded),
|
||||
+ &forced_stmts, false, NULL);
|
||||
if (forced_stmts)
|
||||
{
|
||||
tsi = tsi_start (forced_stmts);
|
||||
@@ -1372,14 +1373,8 @@
|
||||
add_referenced_tmp_var (temp);
|
||||
folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr),
|
||||
genop1));
|
||||
- /* If the generated operand is already GIMPLE min_invariant
|
||||
- just use it instead of calling force_gimple_operand on it,
|
||||
- since that may make it not invariant by copying it into an
|
||||
- assignment. */
|
||||
- if (!is_gimple_min_invariant (genop1))
|
||||
- newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL);
|
||||
- else
|
||||
- newexpr = genop1;
|
||||
+ newexpr = force_gimple_operand (unshare_expr (folded),
|
||||
+ &forced_stmts, false, NULL);
|
||||
if (forced_stmts)
|
||||
{
|
||||
tsi = tsi_start (forced_stmts);
|
||||
|
||||
0K . 1.24 MB/s
|
||||
|
||||
13:16:54 (1.24 MB/s) - `-' saved [1303]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user