Skip to content

compiler: Fails to build itself for i386-win32

Summary

Building i386 compiler on i386 machine fails. Building on x86_64 succeeds but does not work.

make.exe install OS_TARGET=win32 CPU_TARGET=i386 FPC=C:\fpc-3.2.2\bin\i386-win32\ppc386.exe  OVERRIDEVERSIONCHECK=1 FPCOPT="-CpPENTIUM3 -gl"

System Information

  • Operating system: Windows 2003 server
  • Processor architecture: x86
  • Compiler version: trunk git 131331bc
  • Device: Computer

What is the current bug behavior?

make.exe[7]: Entering directory `C:/projects/fpc/rtl/win32'
C:/projects/fpc/compiler/ppc1.exe -CpPENTIUM3 -gl -Ur -Xs -O2 -n -Fi../inc -Fi../i386 -Fi../win -Fi./i386 -Fi../win/wininc -FE
-FUC:/projects/fpc/rtl/units/i386-win32 -di386 -dRELEASE -Fu../win -Us -Sg system.pp
make.exe[7]: *** [system.ppu] Error 216
make.exe[7]: Leaving directory `C:/projects/fpc/rtl/win32'
make.exe[6]: *** [win32_all] Error 2

gdb says:

C:\projects\fpc\compiler>gdb ppc1.exe
GNU gdb (GDB) 7.2
...
Reading symbols from C:\projects\fpc\compiler/ppc1.exe...done.
(gdb) run
Starting program: C:\projects\fpc\compiler/ppc1.exe
[New Thread 1172.0xf24]

Program received signal SIGILL, Illegal instruction.
0x004035b6 in FPC_CPUCODEINIT () at C:/projects/fpc/rtl/i386/i386.inc:2137
2137                      xorl %ecx,%ecx
(gdb)

Possible fixes

Looks like it is recent CPU feature detection changes

Edited by Anton Kavalenka
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information