[fpc-pascal] ppcrossarm 220

Florian Klaempfl florian at freepascal.org
Thu Nov 8 14:44:15 CET 2007


Carsten Bager schrieb:
> I have built a Win32 ppcrossarm.exe (2.20) compiler. The compiler works 
> ok. The output from the Linux and the Win32 compiler when I use the -sh 
> directive is exactly the same. The downside is I have some problems 
> finding a Win32 linker that I can use.
> 
> If I compile a Hallow World program, it works ok, but when I try to compile a 
> program that uses uLibc, the Win32 linker and the Linux linker dos not do 
> exactly the same. 
> 
> When I run the output from the Win32 linker on my arm platform it stops 
> with
> Segmentation fault
> The output from the Linux linker runs ok
> 
> If I look in the map file the only difference I can see is (see at the end of this mail)
> 
> Linux:   0x000080d4                . = (0x8000 + SIZEOF_HEADERS)
> Win32:  0x00008000                . = 0x8000
> 
> I have several versions of Win32 linkers (215,216,217)  and Linux linkers 
> (215,216,217,218). I have also seen this problem with a Linux linker (217)
> 
> One of the Win32 linkers I have used if from 
> ftp://ftp.freepascal.org/pub/fpc/contrib/cross/mingw/binutils-2.15.94-win32-
> arm-linux.zip
> 
> Has anyone got a hint where to go from here.

- try to compare FPC's linker script with one of a working ld
- try to find differences using objdump

> 
> Regards
> 
> Carsten
> 
> 
> 
> 
> ----------------------               Linux       ---------------------------------------------
>                 0x00010000                PROVIDE (__executable_start, 0x10000)
>                 0x00010100                . = 0x10100
>                 0x00008000                PROVIDE (__executable_start, 0x8000)
>                 0x000080d4                . = (0x8000 + SIZEOF_HEADERS)
> 
> .interp         0x000080d4       0x13
>  *(.interp)
>  .interp        0x000080d4       0x13 /Fpc/Lib/Ulibc/Arm/cprt0.o
>  *(.interp)
> 
> .hash           0x000080e8       0x94
>  *(.hash)
>  .hash          0x000080e8       0x94 /Fpc/Lib/Ulibc/Arm/cprt0.o
>  *(.hash)
> 
> .dynsym         0x0000817c      0x120
>  *(.dynsym)
>  .dynsym        0x0000817c      0x120 /Fpc/Lib/Ulibc/Arm/cprt0.o
>  *(.dynsym)
> 
> .dynstr         0x0000829c       0xc4
>  *(.dynstr)
>  .dynstr        0x0000829c       0xc4 /Fpc/Lib/Ulibc/Arm/cprt0.o
>  *(.dynstr)
> 
> .gnu.version
>  *(.gnu.version)
>  *(.gnu.version)
> 
> .gnu.version_d
>  *(.gnu.version_d)
>  *(.gnu.version_d)
> 
> .gnu.version_r
>  *(.gnu.version_r)
>  *(.gnu.version_r)
> 
> .rel.dyn        0x00008360       0x18
>  *(.rel.init)
>  *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
>  *(.rel.fini)
>  *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
>  *(.rel.data.rel.ro*)
>  *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
>  *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
>  *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
>  *(.rel.ctors)
>  *(.rel.dtors)
>  *(.rel.got)
>  .rel.got       0x00008360       0x18 /Fpc/Lib/Ulibc/Arm/cprt0.o
>  *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
>  *(.rel.init)
>  *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
> 
> ----------------------               Win32    --------------------------------------------------
>                 0x00010000                PROVIDE (__executable_start, 0x10000)
>                 0x00010100                . = 0x10100
>                 0x00008000                PROVIDE (__executable_start, 0x8000)
>                 0x00008000                . = 0x8000
> 
> .interp         0x00008000       0x13
>  *(.interp)
>  .interp        0x00008000       0x13 J:\Fpc\Lib\Ulibc\Arm\cprt0.o
>  *(.interp)
> 
> .hash           0x00008014       0x90
>  *(.hash)
>  .hash          0x00008014       0x90 J:\Fpc\Lib\Ulibc\Arm\cprt0.o
>  *(.hash)
> 
> .dynsym         0x000080a4      0x110
>  *(.dynsym)
>  .dynsym        0x000080a4      0x110 J:\Fpc\Lib\Ulibc\Arm\cprt0.o
>  *(.dynsym)
> 
> .dynstr         0x000081b4       0xbb
>  *(.dynstr)
>  .dynstr        0x000081b4       0xbb J:\Fpc\Lib\Ulibc\Arm\cprt0.o
>  *(.dynstr)
> 
> .gnu.version    0x00008270        0x0
>  *(.gnu.version)
>  *(.gnu.version)
> 
> .gnu.version_d  0x00008270        0x0
>  *(.gnu.version_d)
>  *(.gnu.version_d)
> 
> .gnu.version_r  0x00008270        0x0
>  *(.gnu.version_r)
>  *(.gnu.version_r)
> 
> .rel.dyn        0x00008270       0x18
>  *(.rel.init)
>  *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
>  *(.rel.fini)
>  *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
>  *(.rel.data.rel.ro* .rel.gnu.linkonce.d.rel.ro.*)
>  *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
>  *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
>  *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
>  *(.rel.ctors)
>  *(.rel.dtors)
>  *(.rel.got)
>  .rel.got       0x00008270       0x18 J:\Fpc\Lib\Ulibc\Arm\cprt0.o
>  *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
>  *(.rel.init)
>  *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
> 
> 
> 
> 
> 
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> 




More information about the fpc-pascal mailing list