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.*) _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal