Hi Michael

Am Freitag, 26. September 2014, 08:46:21 schrieb Michael Olbrich:
> On Wed, Sep 24, 2014 at 03:43:10PM +0200, Tim Sander wrote:
> > > I'm happy to announce that I've just released
> > > OSELAS.Toolchain-2013.12.2.
> > > 
> > > This is a bugfix-only release. The relevant changes since 2013.12.1 are:
> > >  - The toolchains can now be built with make 4.0
> > >  - Some toolchains did not optimize for the correct CPU. The code works
> > >  but
> > >  
> > >    might be slower. This is fixed now.
> > >  
> > >  - All security relevant fixes mentioned in the glibc 2.19 changelog
> > >  have
> > >  
> > >    been added for glibc 2.18 based toolchains.
> > >  
> > >  - All generated toolchain archives are now XZ comressed.
> > 
> > While i have used this toolchain arm-v7a-linux-gnueabihf with an Xilinx
> > Zynx compiling nearly the same Project with a different Kernelconfig /DTB
> > for Altera SOC fails with this toolchain !?! The kernel boots but on
> > mounting the rootfs it fails to execute any binary?
> 
> Is the dynamic linker (whatever /lib/ld-linux-armhf.so.3 points to)
> executable? Do you have a working system? Boot it and try to chroot into
> your new system. You get better error messages that way.
Ok i have now setup booted into the environment compiled with 
OSELAS.Toolchain-2012.12.1/arm-cortexa9-linux-gnueabihf, mounted the other 
system via nfs and tried to start any executable:

/mnt/bin/busybox: line 1: syntax error: unexpected word (expecting ")")

(thats with OSELAS.Toolchain-2013.12.2/arm-v7a-linux-gnueabihf on Altera SOC)

I have taken a look at both busyboxes and have run them through "readelf -e" 
(attached). The only difference which sprung to my eye was the hardfloat 
support, which i don't understand as both toolchains should be hardfloat 
toolchains.

Starting the binary with strace gives:
execve("mnt/bin/busybox", ["mnt/bin/busybox"], [/* 11 vars */]) = -1 ENOEXEC 
(Exec format error)
write(2, "strace: exec: Exec format error\n", 32strace: exec: Exec format 
error
) = 32
exit_group(1)                           = ?
+++ exited with 1 +++

So i have an execution error and the shell error seems to be the shell 
fallback from the kernel. 

Another thing which caught my attention was the fact that:
objdump -d bin/busybox |grep UNDEFINED |wc -l
is 364 for the old and 13478 for the new toolchain. 

Best regards
Tim
ELF-Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Klasse:                            ELF32
  Daten:                             2er-Komplement, Little-Endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI-Version:                       0
  Typ:                               EXEC (ausführbare Datei)
  Maschine:                          ARM
  Version:                           0x1
  Einstiegspunktadresse:               0x10010
  Beginn der Programm-Header:          52 (Bytes in Datei)
  Beginn der Sektions-header:          460812 (Bytes in Datei)
  Flags:                             0x5000002, has entry point, Version5 EABI
  Größe dieses Headers:              52 (Byte)
  Größe der Programm-Header:         32 (Byte)
  Number of program headers:         8
  Größe der Sektions-Header:         40 (bytes)
  Anzahl der Sektions-Header:        28
  Sektions-Header Stringtabellen-Index: 27

Sektions-Header:
  [Nr] Name              Typ             Adr      Off    Größe  ES Flg Lk Inf Ar
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .interp           PROGBITS        00008134 000134 000019 00   A  0   0  1
  [ 2] .note.ABI-tag     NOTE            00008150 000150 000020 00   A  0   0  4
  [ 3] .hash             HASH            00008170 000170 0008cc 04   A  4   0  4
  [ 4] .dynsym           DYNSYM          00008a3c 000a3c 0012a0 10   A  5   1  4
  [ 5] .dynstr           STRTAB          00009cdc 001cdc 00097c 00   A  0   0  1
  [ 6] .gnu.version      VERSYM          0000a658 002658 000254 02   A  4   0  2
  [ 7] .gnu.version_r    VERNEED         0000a8ac 0028ac 000020 00   A  5   1  4
  [ 8] .rel.dyn          REL             0000a8cc 0028cc 000048 08   A  4   0  4
  [ 9] .rel.plt          REL             0000a914 002914 0008e8 08   A  4  11  4
  [10] .init             PROGBITS        0000b1fc 0031fc 00000c 00  AX  0   0  4
  [11] .plt              PROGBITS        0000b208 003208 000d70 04  AX  0   0  4
  [12] .text             PROGBITS        0000bf78 003f78 05c610 00  AX  0   0  8
  [13] .fini             PROGBITS        00068588 060588 000008 00  AX  0   0  4
  [14] .rodata           PROGBITS        00068590 060590 00f0f4 00   A  0   0  4
  [15] .ARM.extab        PROGBITS        00077684 06f684 000030 00   A  0   0  4
  [16] .ARM.exidx        ARM_EXIDX       000776b4 06f6b4 0000d8 00  AL 12   0  4
  [17] .eh_frame         PROGBITS        0007778c 06f78c 000004 00   A  0   0  4
  [18] .init_array       INIT_ARRAY      00078000 070000 000004 00  WA  0   0  4
  [19] .fini_array       FINI_ARRAY      00078004 070004 000004 00  WA  0   0  4
  [20] .jcr              PROGBITS        00078008 070008 000004 00  WA  0   0  4
  [21] .dynamic          DYNAMIC         0007800c 07000c 0000e8 08  WA  5   0  4
  [22] .got              PROGBITS        000780f4 0700f4 000498 04  WA  0   0  4
  [23] .data             PROGBITS        0007858c 07058c 00013d 00  WA  0   0  4
  [24] .bss              NOBITS          000786d0 0706c9 002234 00  WA  0   0  8
  [25] .ARM.attributes   ARM_ATTRIBUTES  00000000 0706c9 000043 00      0   0  1
  [26] .gnu_debuglink    PROGBITS        00000000 07070c 00000c 00      0   0  1
  [27] .shstrtab         STRTAB          00000000 070718 0000f4 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

Programm-Header:
  Typ            Offset   VirtAdr    PhysAdr    DateiGr SpeiGr  Flg Ausr.
  EXIDX          0x06f6b4 0x000776b4 0x000776b4 0x000d8 0x000d8 R   0x4
  PHDR           0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4
  INTERP         0x000134 0x00008134 0x00008134 0x00019 0x00019 R   0x1
      [Programminterpreter anfordern: /lib/ld-linux-armhf.so.3]
  LOAD           0x000000 0x00008000 0x00008000 0x6f790 0x6f790 R E 0x8000
  LOAD           0x070000 0x00078000 0x00078000 0x006c9 0x02904 RW  0x8000
  DYNAMIC        0x07000c 0x0007800c 0x0007800c 0x000e8 0x000e8 RW  0x4
  NOTE           0x000150 0x00008150 0x00008150 0x00020 0x00020 R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4

 Abbildung von Sektion nach Segment:
  Segmentsektionen...
   00     .ARM.exidx 
   01     
   02     .interp 
   03     .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version 
.gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.extab 
.ARM.exidx .eh_frame 
   04     .init_array .fini_array .jcr .dynamic .got .data .bss 
   05     .dynamic 
   06     .note.ABI-tag 
   07     
ELF-Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00 
  Klasse:                            ELF32
  Daten:                             2er-Komplement, Little-Endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI-Version:                       0
  Typ:                               EXEC (ausführbare Datei)
  Maschine:                          ARM
  Version:                           0x1
  Einstiegspunktadresse:               0xe789
  Beginn der Programm-Header:          52 (Bytes in Datei)
  Beginn der Sektions-header:          321624 (Bytes in Datei)
  Flags:                             0x5000402, has entry point, Version5 EABI, 
hard-float ABI
  Größe dieses Headers:              52 (Byte)
  Größe der Programm-Header:         32 (Byte)
  Number of program headers:         8
  Größe der Sektions-Header:         40 (bytes)
  Anzahl der Sektions-Header:        27
  Sektions-Header Stringtabellen-Index: 26

Sektions-Header:
  [Nr] Name              Typ             Adr      Off    Größe  ES Flg Lk Inf Ar
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .interp           PROGBITS        00008134 000134 000019 00   A  0   0  1
  [ 2] .note.ABI-tag     NOTE            00008150 000150 000020 00   A  0   0  4
  [ 3] .hash             HASH            00008170 000170 0008ac 04   A  4   0  4
  [ 4] .dynsym           DYNSYM          00008a1c 000a1c 001220 10   A  5   1  4
  [ 5] .dynstr           STRTAB          00009c3c 001c3c 00090e 00   A  0   0  1
  [ 6] .gnu.version      VERSYM          0000a54a 00254a 000244 02   A  4   0  2
  [ 7] .gnu.version_r    VERNEED         0000a790 002790 000020 00   A  5   1  4
  [ 8] .rel.dyn          REL             0000a7b0 0027b0 000038 08   A  4   0  4
  [ 9] .rel.plt          REL             0000a7e8 0027e8 0008d0 08   A  4  11  4
  [10] .init             PROGBITS        0000b0b8 0030b8 00000c 00  AX  0   0  4
  [11] .plt              PROGBITS        0000b0c4 0030c4 000ddc 04  AX  0   0  4
  [12] .text             PROGBITS        0000bea0 003ea0 03b116 00  AX  0   0  8
  [13] .fini             PROGBITS        00046fb8 03efb8 000008 00  AX  0   0  4
  [14] .rodata           PROGBITS        00046fc0 03efc0 00f0af 00   A  0   0  4
  [15] .ARM.exidx        ARM_EXIDX       00056070 04e070 000008 00  AL 12   0  4
  [16] .eh_frame         PROGBITS        00056078 04e078 000004 00   A  0   0  4
  [17] .init_array       INIT_ARRAY      0005e07c 04e07c 000004 00  WA  0   0  4
  [18] .fini_array       FINI_ARRAY      0005e080 04e080 000004 00  WA  0   0  4
  [19] .jcr              PROGBITS        0005e084 04e084 000004 00  WA  0   0  4
  [20] .dynamic          DYNAMIC         0005e088 04e088 0000e8 08  WA  5   0  4
  [21] .got              PROGBITS        0005e170 04e170 00047c 04  WA  0   0  4
  [22] .data             PROGBITS        0005e5ec 04e5ec 00013d 00  WA  0   0  4
  [23] .bss              NOBITS          0005e730 04e729 00223c 00  WA  0   0  8
  [24] .ARM.attributes   ARM_ATTRIBUTES  00000000 04e729 000037 00      0   0  1
  [25] .gnu_debuglink    PROGBITS        00000000 04e760 00000c 00      0   0  1
  [26] .shstrtab         STRTAB          00000000 04e76c 0000e9 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings)
  I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
  O (extra OS processing required) o (OS specific), p (processor specific)

Programm-Header:
  Typ            Offset   VirtAdr    PhysAdr    DateiGr SpeiGr  Flg Ausr.
  EXIDX          0x04e070 0x00056070 0x00056070 0x00008 0x00008 R   0x4
  PHDR           0x000034 0x00008034 0x00008034 0x00100 0x00100 R E 0x4
  INTERP         0x000134 0x00008134 0x00008134 0x00019 0x00019 R   0x1
      [Programminterpreter anfordern: /lib/ld-linux-armhf.so.3]
  LOAD           0x000000 0x00008000 0x00008000 0x4e07c 0x4e07c R E 0x8000
  LOAD           0x04e07c 0x0005e07c 0x0005e07c 0x006ad 0x028f0 RW  0x8000
  DYNAMIC        0x04e088 0x0005e088 0x0005e088 0x000e8 0x000e8 RW  0x4
  NOTE           0x000150 0x00008150 0x00008150 0x00020 0x00020 R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10

 Abbildung von Sektion nach Segment:
  Segmentsektionen...
   00     .ARM.exidx 
   01     
   02     .interp 
   03     .interp .note.ABI-tag .hash .dynsym .dynstr .gnu.version 
.gnu.version_r .rel.dyn .rel.plt .init .plt .text .fini .rodata .ARM.exidx 
.eh_frame 
   04     .init_array .fini_array .jcr .dynamic .got .data .bss 
   05     .dynamic 
   06     .note.ABI-tag 
   07     
-- 
ptxdist mailing list
ptxdist@pengutronix.de

Reply via email to