arm-unknown-linux-gnueabi ABI selection
Michael Abbott
michael@araneidae.co.uk
Mon Sep 1 13:22:00 GMT 2008
On Sun, 31 Aug 2008, Yann E. MORIN wrote:
> OK, working on Marc's idea, I managed to have a 'working' EABI toolchain:
...
>
> Michael, care to test further the attached patch? If that's OK, then I'll
> remove the ABI config option in case EABI is selected.
I've hit an unexpected snag. Building the kernel fails very early on:
$ arm-diamond-linux-gnueabi-ld -EL -r -o init/main.o init/.tmp_main.o -T init/.tmp_main.ver
Segmentation fault
$
Here's the complete build transcript:
$ make
CHK include/linux/version.h
SYMLINK include/asm-arm/arch -> include/asm-arm/arch-pxa
Generating include/asm-arm/mach-types.h
Using /scratch/git/linux-2.6 as source for kernel
GEN /scratch/tmp/kernel/Makefile
CHK include/linux/utsrelease.h
UPD include/linux/utsrelease.h
HOSTCC scripts/basic/fixdep
HOSTCC scripts/basic/docproc
CC kernel/bounds.s
GEN include/linux/bounds.h
CC arch/arm/kernel/asm-offsets.s
GEN include/asm-arm/asm-offsets.h
CALL /scratch/git/linux-2.6/scripts/checksyscalls.sh
<stdin>:1097:2: warning: #warning syscall fadvise64 not implemented
<stdin>:1265:2: warning: #warning syscall migrate_pages not implemented
<stdin>:1321:2: warning: #warning syscall pselect6 not implemented
<stdin>:1325:2: warning: #warning syscall ppoll not implemented
<stdin>:1365:2: warning: #warning syscall epoll_pwait not implemented
HOSTCC scripts/genksyms/genksyms.o
HOSTCC scripts/genksyms/lex.o
HOSTCC scripts/genksyms/parse.o
HOSTLD scripts/genksyms/genksyms
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/sumversion.o
HOSTLD scripts/mod/modpost
HOSTCC scripts/kallsyms
HOSTCC scripts/bin2c
CC init/main.o
/bin/sh: line 1: 3669 Segmentation fault
arm-diamond-linux-gnueabi-ld -EL -r -o init/main.o init/.tmp_main.o -T init/.tmp_main.ver
make[2]: *** [init/main.o] Error 139
make[1]: *** [init] Error 2
make: *** [sub-make] Error 2
$
There doesn't seem to be a detailed log file in this build, so it's rather
hard to see what's really going on behind the scenes, but I've managed to
find out a little bit.
Firstly, if I leave off the -T argument there is no problem:
$ arm-diamond-linux-gnueabi-ld -EL -r -o init/main.o init/.tmp_main.o
$
Secondly, the input arguments look reasonable:
$ arm-diamond-linux-gnueabi-readelf -h init/.tmp_main.o
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: REL (Relocatable file)
Machine: ARM
Version: 0x1
Entry point address: 0x0
Start of program headers: 0 (bytes into file)
Start of section headers: 70220 (bytes into file)
Flags: 0x4000000, Version4 EABI
Size of this header: 52 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 40 (bytes)
Number of section headers: 40
Section header string table index: 37
$ cat init/.tmp_main.ver
__crc_system_state = 0x2288378f ;
__crc_reset_devices = 0xc2e587d1 ;
__crc_loops_per_jiffy = 0xba497f13 ;
$
Thirdly, if I use the codesourcery toolchain on this one step, it seems to
go ok:
$ /scratch/codesourcery/bin/arm-none-linux-gnueabi-ld -EL -r -o
init/main.o init/.tmp_main.o -T init/.tmp_main.ver
$ arm-diamond-linux-gnueabi-readelf -h init/main.o
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: REL (Relocatable file)
Machine: ARM
Version: 0x1
Entry point address: 0x0
Start of program headers: 0 (bytes into file)
Start of section headers: 70220 (bytes into file)
Flags: 0x4000000, Version4 EABI
Size of this header: 52 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 40 (bytes)
Number of section headers: 40
Section header string table index: 37
$
That's a bit of a pity.
I've sucessfully built the entire crosstool-ng toolchain (including native
gdb) together with a successful build of busybox, but no kernel...
--
For unsubscribe information see http://sourceware.org/lists.html#faq
More information about the crossgcc
mailing list