This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: arm-unknown-linux-gnueabi ABI selection


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]