[fpc-pascal] ppcrossarm 220
Carsten Bager
carsten at beas.dk
Thu Nov 8 07:25:09 CET 2007
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.
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.*)
More information about the fpc-pascal
mailing list