Recent

Author Topic: [SOLVED] trunk bug for mipsel raised exception internally - Access violation  (Read 1878 times)

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Code: Pascal  [Select][+][-]
  1. $ ./compiler/ppcrossmipsel test.pas -Fu./rtl/ps1 -Fu./rtl/inc -Tps1 -a -XP/usr/local/mipsel-unknown-elf/bin/mipsel-unknown-elf- -Cfnone
  2. Warning: Source OS Redefined!
  3. Free Pascal Compiler version 3.3.1 [2024/04/22] for mipsel
  4. Copyright (c) 1993-2024 by Florian Klaempfl and others
  5. Target OS: PlayStation 1 for MIPSEL
  6. Compiling test.pas
  7. test.pas(1,6) Error: Compilation raised exception internally
  8. Fatal: Compilation aborted
  9. An unhandled exception occurred at $00000000004EE58A:
  10. EAccessViolation: Access violation
  11.   $00000000004EE58A  push,  line 1935 of symdef.pas
  12.  

:(

ideas?


host linux x86_64
« Last Edit: April 23, 2024, 06:06:41 pm by Key-Real »

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
If some body is inspired to fix this, so he will trow an
internal error number
as common

clone

https://gitlab.com/Key-Real/source


nickysn

  • New Member
  • *
  • Posts: 27
You should compile the compiler with debug info and try to get a better stack trace. When you build the compiler, add these options to the make command:
OPT="-O- -CR -glv -dEXTDEBUG" CROSSOPT="-O- -g-" ALLOW_WARNINGS=1
These debugging options are a little aggressive, but they might be useful when debugging the compiler for a new (and unstable) platform.

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Code: Pascal  [Select][+][-]
  1. $ ./compiler/ppcrossmipsel test.pas -Fu./rtl/ps1 -Fu./rtl/inc -Tps1 -a -XP/usr/local/mipsel-unknown-elf/bin/mipsel-unknown-elf- -Cfnone -n -vut
  2. Warning: Source OS Redefined!
  3. Compiler: /home/key-real/vip-code/source/compiler/ppcrossmipsel
  4. Using executable path: /home/key-real/vip-code/source/compiler/
  5. Using unit path: ./rtl/ps1/
  6. Using unit path: ./rtl/inc/
  7. Using unit path: ./compiler/
  8. Using library path: ./rtl/ps1/
  9. Using library path: ./rtl/inc/
  10. Using library path: ./compiler/
  11. Using object path: ./rtl/ps1/
  12. Using object path: ./rtl/inc/
  13. Using object path: ./compiler/
  14. Searching file test.pas... found
  15. (PROGRAM)  Registering new unit SYSTEM
  16. (PROGRAM)  Load from PROGRAM (implementation) unit SYSTEM
  17. (SYSTEM)   Loading unit SYSTEM
  18. Unitsearch: system.ppu
  19. Searching file system.ppu... not found
  20. Searching file SYSTEM.PPU... not found
  21. Unitsearch: system.pp
  22. Searching file system.pp... not found
  23. Searching file SYSTEM.PP... not found
  24. Unitsearch: system.pas
  25. Searching file system.pas... not found
  26. Searching file SYSTEM.PAS... not found
  27. Unitsearch: ./rtl/ps1/system.ppu
  28. Searching file ./rtl/ps1/system.ppu... found
  29. PPU Loading ./rtl/ps1/system.ppu
  30. (SYSTEM)   PPU Name: ./rtl/ps1/system.ppu
  31. (SYSTEM)   PPU Time: 2024/04/23 10:36:02
  32. (SYSTEM)   PPU Flags: 4224
  33. (SYSTEM)   PPU Crc: 81615BB2
  34. (SYSTEM)   PPU Crc: 3FC14DEF (intfc)
  35. (SYSTEM)   PPU Crc: DE388206 (indc)
  36. (SYSTEM)   Number of definitions: 2958
  37. (SYSTEM)   Number of symbols: 7783
  38. (SYSTEM)   PPU Source: ./rtl/ps1/system.pp time 2024/04/22 08:41:06
  39. (SYSTEM)   PPU Source: systemh.inc not found
  40. (SYSTEM)   PPU Source: sysosh.inc not available
  41. (SYSTEM)   PPU Source: rtldefs.inc not available
  42. (SYSTEM)   PPU Source: filerec.inc not available
  43. (SYSTEM)   PPU Source: textrec.inc not available
  44. (SYSTEM)   PPU Source: innr.inc not available
  45. (SYSTEM)   PPU Source: cpuh.inc not available
  46. (SYSTEM)   PPU Source: ../mips/cpuh.inc not available
  47. (SYSTEM)   PPU Source: currh.inc not available
  48. (SYSTEM)   PPU Source: ustringh.inc not available
  49. (SYSTEM)   PPU Source: setjumph.inc not available
  50. (SYSTEM)   PPU Source: ../mips/setjumph.inc not available
  51. (SYSTEM)   PPU Source: rttih.inc not available
  52. (SYSTEM)   PPU Source: objpash.inc not available
  53. (SYSTEM)   PPU Source: varianth.inc not available
  54. (SYSTEM)   PPU Source: dynarrh.inc not available
  55. (SYSTEM)   PPU Source: compproc.inc not available
  56. (SYSTEM)   PPU Source: heaph.inc not available
  57. (SYSTEM)   PPU Source: threadh.inc not available
  58. (SYSTEM)   PPU Source: dynlibh.inc not available
  59. (SYSTEM)   PPU Source: resh.inc not available
  60. (SYSTEM)   PPU Source: excepth.inc not available
  61. (SYSTEM)   PPU Source: system.inc not available
  62. (SYSTEM)   PPU Source: sysos.inc not available
  63. (SYSTEM)   PPU Source: mips.inc not available
  64. (SYSTEM)   PPU Source: ../mips/mips.inc not available
  65. (SYSTEM)   PPU Source: generic.inc not available
  66. (SYSTEM)   PPU Source: set.inc not available
  67. (SYSTEM)   PPU Source: ../mips/set.inc not available
  68. (SYSTEM)   PPU Source: genset.inc not available
  69. (SYSTEM)   PPU Source: gencurr.inc not available
  70. (SYSTEM)   PPU Source: sstrings.inc not available
  71. (SYSTEM)   PPU Source: int64p.inc not available
  72. (SYSTEM)   PPU Source: ../mips/int64p.inc not available
  73. (SYSTEM)   PPU Source: int64.inc not available
  74. (SYSTEM)   PPU Source: astrings.inc not available
  75. (SYSTEM)   PPU Source: ustrings.inc not available
  76. (SYSTEM)   PPU Source: aliases.inc not available
  77. (SYSTEM)   PPU Source: rttidecl.inc not available
  78. (SYSTEM)   PPU Source: dynarr.inc not available
  79. (SYSTEM)   PPU Source: objpas.inc not available
  80. (SYSTEM)   PPU Source: except.inc not available
  81. (SYSTEM)   PPU Source: variant.inc not available
  82. (SYSTEM)   PPU Source: rtti.inc not available
  83. (SYSTEM)   PPU Source: setjump.inc not available
  84. (SYSTEM)   PPU Source: ../mips/setjump.inc not available
  85. (SYSTEM)   PPU Source: sysheap.inc not available
  86. (SYSTEM)   PPU Source: heap.inc not available
  87. (SYSTEM)   PPU Source: thread.inc not available
  88. (SYSTEM)   PPU Source: threadvr.inc not available
  89. (SYSTEM)   PPU Source: dynlib.inc not available
  90. (SYSTEM)   PPU Source: sysfile.inc not available
  91. (SYSTEM)   PPU Source: text.inc not available
  92. (SYSTEM)   PPU Source: file.inc not available
  93. (SYSTEM)   PPU Source: typefile.inc not available
  94. (SYSTEM)   PPU Source: isotmp.inc not available
  95. (SYSTEM)   PPU Source: sysdir.inc not available
  96. (SYSTEM)   PPU Source: sysres.inc not available
  97. (SYSTEM)   Finished loading unit SYSTEM
  98. Searching file test.pas... found
  99. Searching file test.pas... found
  100. Searching file test.pas... found
  101. (PROGRAM)  Registering new unit FPINTRES
  102. (PROGRAM)  Load from PROGRAM (implementation) unit FPINTRES
  103. (FPINTRES) Loading unit FPINTRES
  104. Unitsearch: fpintres.ppu
  105. Searching file fpintres.ppu... not found
  106. Searching file FPINTRES.PPU... not found
  107. Unitsearch: fpintres.pp
  108. Searching file fpintres.pp... not found
  109. Searching file FPINTRES.PP... not found
  110. Unitsearch: fpintres.pas
  111. Searching file fpintres.pas... not found
  112. Searching file FPINTRES.PAS... not found
  113. Unitsearch: ./rtl/ps1/fpintres.ppu
  114. Searching file ./rtl/ps1/fpintres.ppu... not found
  115. Searching file ./rtl/ps1/FPINTRES.PPU... not found
  116. Unitsearch: ./rtl/ps1/fpintres.pp
  117. Searching file ./rtl/ps1/fpintres.pp... not found
  118. Searching file ./rtl/ps1/FPINTRES.PP... not found
  119. Unitsearch: ./rtl/ps1/fpintres.pas
  120. Searching file ./rtl/ps1/fpintres.pas... not found
  121. Searching file ./rtl/ps1/FPINTRES.PAS... not found
  122. Unitsearch: ./rtl/inc/fpintres.ppu
  123. Searching file ./rtl/inc/fpintres.ppu... not found
  124. Searching file ./rtl/inc/FPINTRES.PPU... not found
  125. Unitsearch: ./rtl/inc/fpintres.pp
  126. Searching file ./rtl/inc/fpintres.pp... found
  127. Searching file test.pas... found
  128. test.pas(1,6) Error: Compilation raised exception internally
  129. Fatal: Compilation aborted
  130. An unhandled exception occurred at $0000000000570E35:
  131. EAccessViolation: Access violation
  132.   $0000000000570E35  push,  line 1936 of symdef.pas
  133.   $00000000007C68FE  AddUnit,  line 204 of pmodules.pas
  134.   $00000000007C7634  CheckAddUnit,  line 384 of pmodules.pas
  135.   $00000000007C72FF  loaddefaultunits,  line 426 of pmodules.pas
  136.   $00000000007CE667  proc_program,  line 2837 of pmodules.pas
  137.   $00000000004E1779  compile_module,  line 488 of parser.pas
  138.   $0000000000517559  continue,  line 269 of ctask.pas
  139.   $00000000005177BF  processqueue,  line 334 of ctask.pas
  140.   $000000000043E12F  Compile,  line 310 of compiler.pas
  141.   $0000000000401496  $main,  line 308 of pp.pas
  142.   $000000000043372D  SysEntry,  line 332 of system.pp
  143.  
  144.  

nickysn

  • New Member
  • *
  • Posts: 27
From the debug log it seems like the compiler is trying to load the fpintres unit. Have you compiled this unit?

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Yes, Finally!

the system and the fpintres units have to be precompiled!

I would wish me a reasonable error message from the compiler to avoid all this discussion

Antero

  • Newbie
  • Posts: 2
Is there a FPC cross compiler, that:

1) Runs on a PC (Windows, either 32- or 64-bit)

2) produces MIPS binaries (I hope I could run these on Mediatek MT7621 / MT7621A CPU).

Can I download such FPC cross compiler from somewhere, or do I need to compile it myself ?

Are there instructions, how to compile it, if it is not available as a pre-compiled binary ?

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
I'm working on the port of FPC for the Playstation 1.
So i can only guarantee for the R3000A CPU.

PascalDragon

  • Hero Member
  • *****
  • Posts: 5755
  • Compiler Developer
Is there a FPC cross compiler, that:

1) Runs on a PC (Windows, either 32- or 64-bit)

2) produces MIPS binaries (I hope I could run these on Mediatek MT7621 / MT7621A CPU).

Can I download such FPC cross compiler from somewhere, or do I need to compile it myself ?

Are there instructions, how to compile it, if it is not available as a pre-compiled binary ?

We don't provide a prebuilt cross compiler for MIPS from Windows. But you can easily built it yourself assuming you have suitable binutils available:

  • ensure that the latest release is installed (currently 3.2.2)
  • download the source of the current development version (trunk aka main aka (currently) 3.3.1
  • in the directory of the extracted source execute the following:
Code: [Select]
make all FPMAKEOPT="-T <n>" CPU_TARGET=mips OS_TARGET=<target> BINUTILSPREFIX=<prefix>
make install FPMAKEOPT="-T <n>" CPU_TARGET=mips OS_TARGET=<target> INSTALL_PREFIX=C:\Where\To\Install

Whereby
  • <n> is the number of CPU cores your system has
  • <target> is the operating system you want to compile for (for MIPS this would be mainly either linux or embedded
  • <prefix> is the prefix of the binutils, e.g. if the binaries have the name mips-elf-as.exe and so on then it would be mips-elf-

This will generate a Big Endian 32-bit cross compiler. If you need Little Endian you need to use mipsel instead of mips. And if you need 64-bit you need to use mips64 or mipsel64.

Please note that FPC currently only supports the following MIPS sub architectures, so you'll have to check whether the CPU you want to target is supported:

  • MIPS1
  • MIPS2
  • MIPS3
  • MIPS4
  • MIPS5
  • MIPS32
  • MIPS32R2
  • PIC32MX

You can pass that to the make all using CROSSOPT=-Cp<arch>.

If you can't find suitable binutils for you can also compile inside WSL if you have a suitable Windows version.

Key-Real

  • Sr. Member
  • ****
  • Posts: 372
Be WARNED!

I can only speak of MIPS1. The Assembler Writer of the Trunk generates wrong code. It doesn't handle the ReadAfterWrite MIPS1 issue!
This means if You do, lets say, a
Code: Pascal  [Select][+][-]
  1. ld [destReg], [mem addr]
You can not read from this [destReg] direct after this load. You have to insert a
Code: Pascal  [Select][+][-]
  1. nop
of an other suitable Instruction.

I fixed this, but my port is not jet in the Trunk because I'm still working on it.


 

TinyPortal © 2005-2018