[fpc-pascal] program interpreter for arm eabi is wrong

Terry Kemp tkemp at klc.net.nz
Thu Apr 16 23:35:19 CEST 2009

I can't seem to find the secret sauce that gives me program interpreter
= ld-linux.so.3 for my arm eabi prgrams so I am having to
symlink /lib/ld-linux.so.2 to /lib/ld-linux.so.3 on my gumstix.

It used to work for me with the FPC_ARMEL ifdef in tlinux.pas 
{$ifdef arm}
{$ifdef FPC_ARMEL}
{$else FPC_ARMEL}
{$endif FPC_ARMEL}
{$endif arm}

but not it seems any more.
Any clues as to what is overriding this?



toolchain is..

fpc-svn arm eabi built with...

make clean crosszipinstall CPU_TARGET=arm CROSSOPT='-CaEABI -dFPC_ARMEL
-dFPC_ABI_EABI -CfSOFT -gl -O-' FPC=ppcx64-2.2.2
cd ./utils/fppkg
-dFPC_ABI_EABI -CfSOFT -gl -O-' FPC=../../compiler/ppcrossarm 
cd ../../
make crosszipinstall CPU_TARGET=arm CROSSOPT='-CaEABI -dFPC_ARMEL
-dFPC_ABI_EABI -CfSOFT -gl -O-' FPC=ppcx64-2.2.2

(I don't usually use the -CaEABI -dFPC_ABI_EABI and -FD options but I'm
covering all bases here) 

compile command...
ppcrossarm-2.3.1 -a -B -Xd -MObjFPC -darm231qt -dUSE_QT_44 -dQTOPIA
-CfSOFT -dFPC_ARMEL -dFPC_ABI_EABI -O- -Fl~/bin/Qt-arm -CaEABI
-gl dbtest.lpr

file dbtest: ELF 32-bit LSB executable, ARM, version 1 (SYSV),
dynamically linked (uses shared libs), not stripped

couple of bits of info from readelf...
readelf -a dbtest | less

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg
  PHDR           0x000034 0x00008034 0x00008034 0x000c0 0x000c0 R E 0x4
  INTERP         0x0000f4 0x000080f4 0x000080f4 0x00013 0x00013 R   0x1

      [Requesting program interpreter: /lib/ld-linux.so.2]

  LOAD           0x000000 0x00008000 0x00008000 0x32f3cc 0x32f3cc R E
  LOAD           0x32f3cc 0x0033f3cc 0x0033f3cc 0x0fc00 0x25a74 RW
  DYNAMIC        0x32f3cc 0x0033f3cc 0x0033f3cc 0x000d0 0x000d0 RW  0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x4

Section to Segment mapping:
  Segment Sections...
   01     .interp 

02     .interp .hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.plt .plt .text .rodata 
   03     .dynamic .got .data .bss 
   04     .dynamic 
Version needs section '.gnu.version_r' contains 2 entries:
Addr: 0x000000000001487c  Offset: 0x00c87c  Link: 4 (.dynstr)
  000000: Version: 1  File: libdl.so.2  Cnt: 1
  0x0010:   Name: GLIBC_2.4  Flags: none  Version: 3
  0x0020: Version: 1  File: libc.so.6  Cnt: 1
  0x0030:   Name: GLIBC_2.4  Flags: none  Version: 2
Attribute Section: aeabi
File Attributes
  Tag_CPU_arch: v5TE
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-1

More information about the fpc-pascal mailing list