[fpc-devel] Trunk does not build on AArch64

Sven Barth pascaldragon at googlemail.com
Sun Oct 18 11:31:38 CEST 2020

Am 18.10.2020 um 11:15 schrieb J. Gareth Moreton:
> Hi Sven - thanks for the quick check.  I'm out of the house currently 
> so I can't try it out immediately, but I'll try it out later this 
> evening.  By the way, both my source and target are aarch64-linux (I'm 
> using the prototype aarch64 build of the Raspberry Pi OS, athough I 
> have an SD card with the standard 32-bit Arm Raspian as well).

So you used 3.2.0 aarch64-linux as starting compiler? (though the 
question isn't important anymore as the problem was somewhere else)

> In regards to it not supporting inline assembly, it might only be 
> applicable to FPC 3.2.x, as I tried to write some customised assembly 
> language but was getting unrecognised opcode errors for instructions 
> that definitely exist (like LDR).

3.2.0 also supports inline assembly for aarch64. And LDR works as well 
as the following code in the Rtti unit from 3.2.0 shows:

=== code begin ===

   RawThunkPlaceholderProc = $8765876587658765;
   RawThunkPlaceholderContext = $4321432143214321;

   TRawThunkProc = PtrUInt;
   TRawThunkContext = PtrUInt;

procedure RawThunk; assembler; nostackframe;
   ldr x16, .LProc
   ldr x0, .LContext
   br x16
   .quad RawThunkPlaceholderProc
   .quad RawThunkPlaceholderContext

=== code end ===

So you probably either used something that's definitely not supposed to 
be supported or something that the assembly reader does not yet handle 
correctly (e.g. I had to fix 3.1.1 so that the code above is handled 

Thus if you have such code and it doesn't work please report it.


More information about the fpc-devel mailing list