This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
absolute relocation in TextSegment failed when loading a shared lib on arm7
- From: chris schlund <chrisschlund at gmx dot de>
- To: libc-ports at sources dot redhat dot com
- Date: Thu, 16 Feb 2006 12:37:35 +0100
- Subject: absolute relocation in TextSegment failed when loading a shared lib on arm7
Hi,
I think there is a problem with the handling of absolute relocations in
text segment of shared libraries in glibc when using arm7 controller.
In our example there should be an absolute relocation on label "rel".
The relocation table for the library seems to be ok:
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
00000008 R_ARM_PC24 .text
00000010 R_ARM_ABS32 a_function
But when loading libtest.so with the programm test on arm720t boards, we
got a segfault in the relocation code. I can't be more specific cause I
am not able to symbolic debug in the reloc function.
It seems that a relocation of type R_ARM_ABS32 in the .text segment
doesn't work. An absolut relocation in the .data segment works fine.
when linking statically everything works fine too.
We used a toolchain with gcc-3.4.4 and glibc-2.3.5 which was build with
crosstool-0.38 without any changes.
The code runs fine on i386 and on another arm9 machine. we have heard
that it also runs fine on other arm7 boards, build with a different
toolchain. we also tried other versions with gcc-3.3.4 and glibc 2.3.2
and even in the newest glibc 2.3.6 we got the segfault (all build with
crosstool).
As far as I can see the format of the shared library is ok (see below
for more info). thats why i think this is a glibc problem.
Thanks!
Christian
-------------------------------------------------------------
file l.s:
.data
.text
.globl a_function @ an extern
.type a_function,function
.globl test
.type test,function
test:
ldr R10, rel @ load the function pointer
cmp R10, #0 @ check function Pointer
bne call_it @ call if valid
end:
mov R15, R14 @ return through link register
.ALIGN 2
rel:
.long a_function @ should be filled with absolute
address at runtime
call_it:
mov R15, R10 @ call through register
-------------------------------------------------------------
file test.c:
#include <stdio.h>
#include <dlfcn.h>
int main(int argc, char **argv){
void * handle;
if(argc < 2){
printf("Please specify a shared library to load\n");
return(-1);
}
printf("loading %s ...\n", argv[1]);
handle = dlopen(argv[1],RTLD_LAZY);
if(!handle){
printf("errorl loading %s: %s\n", argv[1], dlerror());
}else{
printf("done %x\n", handle);
}
return 0;
}
-------------------------------------------------------------
file f.c:
int a_function(){
return 42;
}
-------------------------------------------------------------
static.c:
#include <stdio.h>
int main(){
printf("Result from test(): %d\n", test());
}
-------------------------------------------------------------
makefile:
AS=arm-softfloat-linux-gnu-as
CC=arm-softfloat-linux-gnu-gcc
ASFLAGS=-mfpu=softfpa
all: static test libtest.so
static: static.o l.o f.o
$(CC) -o $@ static.o l.o f.o
test: test.o
$(CC) -o $@ test.o -ldl
libtest.so : l.o f.o
$(CC) --shared -o $@ l.o f.o
-------------------------------------------------------------
>arm-softfloat-linux-gnu-readelf -a libtest.so
ELF Header:
Magic: 7f 45 4c 46 01 01 01 61 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: ARM
ABI Version: 0
Type: DYN (Shared object file)
Machine: ARM
Version: 0x1
Entry point address: 0x64c
Start of program headers: 52 (bytes into file)
Start of section headers: 3792 (bytes into file)
Flags: 0x202, has entry point, GNU EABI,
software FP
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
Number of program headers: 3
Size of section headers: 40 (bytes)
Number of section headers: 28
Section header string table index: 25
Section Headers:
[Nr] Name Type Addr Off Size ES Flg
Lk Inf Al
[ 0] NULL 00000000 000000 000000 00
0 0 0
[ 1] .hash HASH 00000094 000094 000144 04 A
2 0 4
[ 2] .dynsym DYNSYM 000001d8 0001d8 0002a0 10 A
3 19 4
[ 3] .dynstr STRTAB 00000478 000478 0000cb 00 A
0 0 1
[ 4] .gnu.version VERSYM 00000544 000544 000054 02 A
2 0 2
[ 5] .gnu.version_r VERNEED 00000598 000598 000020 00 A
3 1 4
[ 6] .rel.dyn REL 000005b8 0005b8 000058 08 A
2 0 4
[ 7] .rel.plt REL 00000610 000610 000008 08 A
2 9 4
[ 8] .init PROGBITS 00000618 000618 000014 00 AX
0 0 4
[ 9] .plt PROGBITS 0000062c 00062c 000020 04 AX
0 0 4
[10] .text PROGBITS 0000064c 00064c 0001ac 00 AX
0 0 4
[11] .fini PROGBITS 000007f8 0007f8 00000c 00 AX
0 0 4
[12] .data PROGBITS 00008804 000804 000008 00 WA
0 0 4
[13] .eh_frame PROGBITS 0000880c 00080c 000004 00 A
0 0 4
[14] .dynamic DYNAMIC 00008810 000810 0000c0 08 WA
3 0 4
[15] .ctors PROGBITS 000088d0 0008d0 000008 00 WA
0 0 4
[16] .dtors PROGBITS 000088d8 0008d8 000008 00 WA
0 0 4
[17] .jcr PROGBITS 000088e0 0008e0 000004 00 WA
0 0 4
[18] .got PROGBITS 000088e4 0008e4 000030 04 WA
0 0 4
[19] .bss NOBITS 00008914 000914 000004 00 WA
0 0 1
[20] .comment PROGBITS 00000000 000914 00005a 00
0 0 1
[21] .debug_aranges PROGBITS 00000000 000970 000058 00
0 0 8
[22] .debug_info PROGBITS 00000000 0009c8 00025e 00
0 0 1
[23] .debug_abbrev PROGBITS 00000000 000c26 000020 00
0 0 1
[24] .debug_line PROGBITS 00000000 000c46 0001a5 00
0 0 1
[25] .shstrtab STRTAB 00000000 000deb 0000e5 00
0 0 1
[26] .symtab SYMTAB 00000000 001330 0007b0 10
27 6a 4
[27] .strtab STRTAB 00000000 001ae0 00046a 00
0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
LOAD 0x000000 0x00000000 0x00000000 0x00804 0x00804 R E 0x8000
LOAD 0x000804 0x00008804 0x00008804 0x00110 0x00114 RW 0x8000
DYNAMIC 0x000810 0x00008810 0x00008810 0x000c0 0x000c0 RW 0x4
Section to Segment mapping:
Segment Sections...
00 .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn
.rel.plt .init .plt .text .fini
01 .data .eh_frame .dynamic .ctors .dtors .jcr .got .bss
02 .dynamic
Dynamic segment at offset 0x810 contains 20 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libc.so.6]
0x0000000c (INIT) 0x618
0x0000000d (FINI) 0x7f8
0x00000004 (HASH) 0x94
0x00000005 (STRTAB) 0x478
0x00000006 (SYMTAB) 0x1d8
0x0000000a (STRSZ) 203 (bytes)
0x0000000b (SYMENT) 16 (bytes)
0x00000003 (PLTGOT) 0x88e4
0x00000002 (PLTRELSZ) 8 (bytes)
0x00000014 (PLTREL) REL
0x00000017 (JMPREL) 0x610
0x00000011 (REL) 0x5b8
0x00000012 (RELSZ) 88 (bytes)
0x00000013 (RELENT) 8 (bytes)
0x6ffffffe (VERNEED) 0x598
0x6fffffff (VERNEEDNUM) 1
0x6ffffff0 (VERSYM) 0x544
0x6ffffffa (RELCOUNT) 7
0x00000000 (NULL) 0x0
Relocation section '.rel.dyn' at offset 0x5b8 contains 11 entries:
Offset Info Type Sym.Value Sym. Name
00008804 00000017 R_ARM_RELATIVE
00008808 00000017 R_ARM_RELATIVE
000088f4 00000017 R_ARM_RELATIVE
000088f8 00000017 R_ARM_RELATIVE
000088fc 00000017 R_ARM_RELATIVE
00008900 00000017 R_ARM_RELATIVE
00008904 00000017 R_ARM_RELATIVE
0000078c 00002702 R_ARM_ABS32 00000794 a_function
00008908 00002215 R_ARM_GLOB_DAT 00000000 __cxa_finalize
0000890c 00002815 R_ARM_GLOB_DAT 00000000 _Jv_RegisterClasses
00008910 00002915 R_ARM_GLOB_DAT 00000000 __gmon_start__
Relocation section '.rel.plt' at offset 0x610 contains 1 entries:
Offset Info Type Sym.Value Sym. Name
000088f0 00002816 R_ARM_JUMP_SLOT 00000000 _Jv_RegisterClasses
There are no unwind sections in this file.
Symbol table '.dynsym' contains 42 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000094 0 SECTION LOCAL DEFAULT 1
2: 000001d8 0 SECTION LOCAL DEFAULT 2
3: 00000478 0 SECTION LOCAL DEFAULT 3
4: 00000544 0 SECTION LOCAL DEFAULT 4
5: 00000598 0 SECTION LOCAL DEFAULT 5
6: 000005b8 0 SECTION LOCAL DEFAULT 6
7: 00000610 0 SECTION LOCAL DEFAULT 7
8: 00000618 0 SECTION LOCAL DEFAULT 8
9: 0000062c 0 SECTION LOCAL DEFAULT 9
10: 0000064c 0 SECTION LOCAL DEFAULT 10
11: 000007f8 0 SECTION LOCAL DEFAULT 11
12: 00008804 0 SECTION LOCAL DEFAULT 12
13: 0000880c 0 SECTION LOCAL DEFAULT 13
14: 00008810 0 SECTION LOCAL DEFAULT 14
15: 000088d0 0 SECTION LOCAL DEFAULT 15
16: 000088d8 0 SECTION LOCAL DEFAULT 16
17: 000088e0 0 SECTION LOCAL DEFAULT 17
18: 000088e4 0 SECTION LOCAL DEFAULT 18
19: 00008914 0 SECTION LOCAL DEFAULT 19
20: 00000000 0 SECTION LOCAL DEFAULT 20
21: 00000000 0 SECTION LOCAL DEFAULT 21
22: 00000000 0 SECTION LOCAL DEFAULT 22
23: 00000000 0 SECTION LOCAL DEFAULT 23
24: 00000000 0 SECTION LOCAL DEFAULT 24
25: 00008810 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
26: 00008918 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__
27: 00008914 0 NOTYPE GLOBAL DEFAULT ABS __bss_start__
28: 00000618 0 FUNC GLOBAL DEFAULT 8 _init
29: 00008918 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__
30: 0000077c 0 FUNC GLOBAL DEFAULT 10 test
31: 00008914 0 NOTYPE GLOBAL DEFAULT ABS __bss_start
32: 00008918 0 NOTYPE GLOBAL DEFAULT ABS __end__
33: 000007f8 0 FUNC GLOBAL DEFAULT 11 _fini
34: 00000000 176 FUNC WEAK DEFAULT UND
__cxa_finalize@GLIBC_2.1.3 (2)
35: 00008914 0 NOTYPE GLOBAL DEFAULT ABS _edata
36: 000088e4 0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
37: 00008918 0 NOTYPE GLOBAL DEFAULT ABS _end
38: 00008804 0 NOTYPE GLOBAL DEFAULT 12 __data_start
39: 00000794 24 FUNC GLOBAL DEFAULT 10 a_function
40: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses
41: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
Symbol table '.symtab' contains 123 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000094 0 SECTION LOCAL DEFAULT 1
2: 000001d8 0 SECTION LOCAL DEFAULT 2
3: 00000478 0 SECTION LOCAL DEFAULT 3
4: 00000544 0 SECTION LOCAL DEFAULT 4
5: 00000598 0 SECTION LOCAL DEFAULT 5
6: 000005b8 0 SECTION LOCAL DEFAULT 6
7: 00000610 0 SECTION LOCAL DEFAULT 7
8: 00000618 0 SECTION LOCAL DEFAULT 8
9: 0000062c 0 SECTION LOCAL DEFAULT 9
10: 0000064c 0 SECTION LOCAL DEFAULT 10
11: 000007f8 0 SECTION LOCAL DEFAULT 11
12: 00008804 0 SECTION LOCAL DEFAULT 12
13: 0000880c 0 SECTION LOCAL DEFAULT 13
14: 00008810 0 SECTION LOCAL DEFAULT 14
15: 000088d0 0 SECTION LOCAL DEFAULT 15
16: 000088d8 0 SECTION LOCAL DEFAULT 16
17: 000088e0 0 SECTION LOCAL DEFAULT 17
18: 000088e4 0 SECTION LOCAL DEFAULT 18
19: 00008914 0 SECTION LOCAL DEFAULT 19
20: 00000000 0 SECTION LOCAL DEFAULT 20
21: 00000000 0 SECTION LOCAL DEFAULT 21
22: 00000000 0 SECTION LOCAL DEFAULT 22
23: 00000000 0 SECTION LOCAL DEFAULT 23
24: 00000000 0 SECTION LOCAL DEFAULT 24
25: 00000000 0 SECTION LOCAL DEFAULT 25
26: 00000000 0 SECTION LOCAL DEFAULT 26
27: 00000000 0 SECTION LOCAL DEFAULT 27
28: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
29: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
30: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
31: 00000000 0 FILE LOCAL DEFAULT ABS initfini.c
32: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
33: 00000000 0 FILE LOCAL DEFAULT ABS <command line>
34: 00000000 0 FILE LOCAL DEFAULT ABS ./../include/libc-symbols
35: 00000000 0 FILE LOCAL DEFAULT ABS ./../include/libc-symbols
36: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
37: 00000000 0 FILE LOCAL DEFAULT ABS ./../include/libc-symbols
38: 00000000 0 FILE LOCAL DEFAULT ABS <command line>
39: 00000000 0 FILE LOCAL DEFAULT ABS <built-in>
40: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
41: 0000064c 0 FUNC LOCAL DEFAULT 10 call_gmon_start
42: 0000064c 0 FUNC LOCAL DEFAULT 10 $a
43: 00000674 0 OBJECT LOCAL DEFAULT 10 $d
44: 00000618 0 FUNC LOCAL DEFAULT 8 $a
45: 000007f8 0 FUNC LOCAL DEFAULT 11 $a
46: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
47: 000088d0 0 OBJECT LOCAL DEFAULT 15 __CTOR_LIST__
48: 000088d0 0 OBJECT LOCAL DEFAULT 15 $d
49: 000088d8 0 OBJECT LOCAL DEFAULT 16 __DTOR_LIST__
50: 000088d8 0 OBJECT LOCAL DEFAULT 16 $d
51: 000088e0 0 OBJECT LOCAL DEFAULT 17 __JCR_LIST__
52: 00008804 0 OBJECT LOCAL DEFAULT 12 $d
53: 00008808 0 OBJECT LOCAL DEFAULT 12 p.0
54: 00008808 0 OBJECT LOCAL DEFAULT 12 $d
55: 00008914 1 OBJECT LOCAL DEFAULT 19 completed.1
56: 0000067c 0 FUNC LOCAL DEFAULT 10 __do_global_dtors_aux
57: 0000067c 0 FUNC LOCAL DEFAULT 10 $a
58: 0000070c 0 OBJECT LOCAL DEFAULT 10 $d
59: 00000720 0 FUNC LOCAL DEFAULT 10 call___do_global_dtors_au
60: 00000720 0 FUNC LOCAL DEFAULT 10 $a
61: 000007fc 0 FUNC LOCAL DEFAULT 11 $a
62: 00000728 0 FUNC LOCAL DEFAULT 10 frame_dummy
63: 00000768 0 OBJECT LOCAL DEFAULT 10 $d
64: 00000774 0 FUNC LOCAL DEFAULT 10 call_frame_dummy
65: 00000774 0 FUNC LOCAL DEFAULT 10 $a
66: 00000620 0 FUNC LOCAL DEFAULT 8 $a
67: 00000000 0 FILE LOCAL DEFAULT ABS crtstuff.c
68: 000088d4 0 OBJECT LOCAL DEFAULT 15 __CTOR_END__
69: 000088d4 0 OBJECT LOCAL DEFAULT 15 $d
70: 000088dc 0 OBJECT LOCAL DEFAULT 16 __DTOR_END__
71: 000088dc 0 OBJECT LOCAL DEFAULT 16 $d
72: 0000880c 0 OBJECT LOCAL DEFAULT 13 __FRAME_END__
73: 0000880c 0 OBJECT LOCAL DEFAULT 13 $d
74: 000088e0 0 OBJECT LOCAL DEFAULT 17 __JCR_END__
75: 000088e0 0 OBJECT LOCAL DEFAULT 17 $d
76: 000007ac 0 FUNC LOCAL DEFAULT 10 __do_global_ctors_aux
77: 000007ac 0 FUNC LOCAL DEFAULT 10 $a
78: 000007e8 0 OBJECT LOCAL DEFAULT 10 $d
79: 000007f0 0 FUNC LOCAL DEFAULT 10 call___do_global_ctors_au
80: 000007f0 0 FUNC LOCAL DEFAULT 10 $a
81: 00000624 0 FUNC LOCAL DEFAULT 8 $a
82: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
83: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
84: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
85: 00000000 0 FILE LOCAL DEFAULT ABS initfini.c
86: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
87: 00000000 0 FILE LOCAL DEFAULT ABS <command line>
88: 00000000 0 FILE LOCAL DEFAULT ABS ./../include/libc-symbols
89: 00000000 0 FILE LOCAL DEFAULT ABS ./../include/libc-symbols
90: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
91: 00000000 0 FILE LOCAL DEFAULT ABS ./../include/libc-symbols
92: 00000000 0 FILE LOCAL DEFAULT ABS <command line>
93: 00000000 0 FILE LOCAL DEFAULT ABS <built-in>
94: 00000000 0 FILE LOCAL DEFAULT ABS /opt/arm/in2soft.spielwie
95: 00000628 0 FUNC LOCAL DEFAULT 8 $a
96: 00000800 0 FUNC LOCAL DEFAULT 11 $a
97: 0000077c 0 FUNC LOCAL DEFAULT 10 $a
98: 0000078c 0 NOTYPE LOCAL DEFAULT 10 rel
99: 00000790 0 NOTYPE LOCAL DEFAULT 10 call_it
100: 00000788 0 NOTYPE LOCAL DEFAULT 10 end
101: 0000078c 0 OBJECT LOCAL DEFAULT 10 $d
102: 00000790 0 FUNC LOCAL DEFAULT 10 $a
103: 00000000 0 FILE LOCAL DEFAULT ABS f.c
104: 00000794 0 FUNC LOCAL DEFAULT 10 $a
105: 00008804 0 OBJECT LOCAL HIDDEN 12 __dso_handle
106: 00008810 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC
107: 00008918 0 NOTYPE GLOBAL DEFAULT ABS _bss_end__
108: 00008914 0 NOTYPE GLOBAL DEFAULT ABS __bss_start__
109: 00000618 0 FUNC GLOBAL DEFAULT 8 _init
110: 00008918 0 NOTYPE GLOBAL DEFAULT ABS __bss_end__
111: 0000077c 0 FUNC GLOBAL DEFAULT 10 test
112: 00008914 0 NOTYPE GLOBAL DEFAULT ABS __bss_start
113: 00008918 0 NOTYPE GLOBAL DEFAULT ABS __end__
114: 000007f8 0 FUNC GLOBAL DEFAULT 11 _fini
115: 00000000 176 FUNC WEAK DEFAULT UND __cxa_finalize@@GLIBC_2.1
116: 00008914 0 NOTYPE GLOBAL DEFAULT ABS _edata
117: 000088e4 0 OBJECT GLOBAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_
118: 00008918 0 NOTYPE GLOBAL DEFAULT ABS _end
119: 00008804 0 NOTYPE GLOBAL DEFAULT 12 __data_start
120: 00000794 24 FUNC GLOBAL DEFAULT 10 a_function
121: 00000000 0 NOTYPE WEAK DEFAULT UND _Jv_RegisterClasses
122: 00000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__
Histogram for bucket list length (total of 37 buckets):
Length Number % of total Coverage
0 26 ( 70.3%)
1 6 ( 16.2%) 35.3%
2 4 ( 10.8%) 82.4%
3 1 ( 2.7%) 100.0%
Version symbols section '.gnu.version' contains 42 entries:
Addr: 0000000000000544 Offset: 0x000544 Link: 2 (.dynsym)
000: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*)
004: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*)
008: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*)
00c: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*)
010: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*)
014: 0 (*local*) 0 (*local*) 0 (*local*) 0 (*local*)
018: 0 (*local*) 1 (*global*) 1 (*global*) 1 (*global*)
01c: 1 (*global*) 1 (*global*) 1 (*global*) 1 (*global*)
020: 1 (*global*) 1 (*global*) 2 (GLIBC_2.1.3) 1 (*global*)
024: 1 (*global*) 1 (*global*) 1 (*global*) 1 (*global*)
028: 0 (*local*) 0 (*local*)
Version needs section '.gnu.version_r' contains 1 entries:
Addr: 0x0000000000000598 Offset: 0x000598 Link to section: 3 (.dynstr)
000000: Version: 1 File: libc.so.6 Cnt: 1
0x0010: Name: GLIBC_2.1.3 Flags: none Version: 2
other infos:
uname -a on build pc:
Linux linux-3og 2.6.11.4-21.7-default #1 Fri Jun 24 14:57:38 CEST 2005
i686 i686 i386 GNU/Linux
uname -a on target:
Linux hnx-vdo 2.6.11-hgcc3.4.4 #40 Mon Feb 6 16:47:22 CET 2006 armv4tl
unknown
configure options for glibc-2.3.5:
/configure --prefix=/usr --build=i686-pc-linux-gnu
--host=arm-softfloat-linux-gnu --without-fp --enable-kern
el=2.4.3 --without-cvs --disable-profile --disable-debug --without-gd
--without-tls --without-__thread --enable-shared -
-enable-add-ons=linuxthreads,
--with-headers=/opt/arm/cross/gcc-3.4.4-glibc-2.3.5/arm-softfloat-linux-gnu/arm-softfloat-
linux-gnu/include