[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