> Am 31.03.2024 um 21:35 schrieb Florian Klämpfl via fpc-devel > <fpc-devel@lists.freepascal.org>: > > > >> Am 31.03.2024 um 17:11 schrieb Michael Ring via fpc-devel >> <fpc-devel@lists.freepascal.org>: >> >> Hi, >> >> it has been a while since I have been deep,deep down in the rabbit hole of >> Cortex Assembly, so please forgive me if I am overlooking something... >> >> I have an application for Raspberry Pico (target embedded) and it fails >> during initialization as soon as I add a unit that includes an object and I >> reference the object in my code... >> >> In that case fpc_initialize (for rtti?) is called and I cannot find source >> code for fpc_initialize >> >> In the debugger I see that R0 is $1000177E and R1 is $28 This is in the >> flash area, so far, so good but $1000177E is obviously not word alligned, it >> is halfword aligned so this then triggers _HardFault_Handler. >> >> 10001778 4648 ldr r0, [pc, #280] ; >> (0x10001894 <fpc_initialize+316>) >> 1000177A 4058 ldr r0, [r0, r1] ; Crash Boom >> Bang !!!!! >> >> Looking at the map file the address is within fpc_initialize, but as I >> cannot find the proper source I am a bit lost... >> >> .text.n_fpc_initialize >> 0x0000000010001758 0x144 >> /Users/tgdrimi9/fpcupdeluxe/fpc/units/arm-embedded/armv6m/eabi/rtl/system.o >> 0x0000000010001758 fpc_initialize >> 0x0000000010001758 FPC_INITIALIZE >> .text.n_fpc_finalize >> 0x000000001000189c 0x164 >> /Users/tgdrimi9/fpcupdeluxe/fpc/units/arm-embedded/armv6m/eabi/rtl/system.o >> >> Any help appreciated, > > Can you post some more context? fpc_initalize is not that big so it should be > possible to identify where this comes from.
Ok, I think I found it, it is one for Gareth: var i : longint; begin case i of 1: writeln(1); 2: writeln(2); 3: writeln(2); 4: writeln(2); 5: writeln(2); end; end. ppcarm -Cparmv6m -al -O2 t.pp -Tlinux -Oonopeephole results in: ... sub r1,#1 lsl r1,r1,#2 ldr r0,.Lj11 ldr r0,[r0, r1] mov r15,r0 .balign 4 .La1: .long .Lj4 .long .Lj5 .long .Lj6 .long .Lj7 .long .Lj8 … The peephole removes the alignment before case jump tables: if no -Oonopeephole is passed, the .balign 4 is gone.
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel