Created attachment 34151 [details] Preprocessed source The preprocessed output attached generates invalid code for the -O2 optimisation level and RTEMS fails to boot. The generated code is: clr.l 0.w trap #7 The full .s file can be seen in the attachments of RTEMS ticket https://devel.rtems.org/ticket/2204. Moving the second nested block of code that copies the vector table out of the file results in correct code. Also selecting -O seems to work.
You need -fno-delete-null-pointer-checks since you are accessing NULL pointers through out the code.
Thanks for the quick response. The clean trap instruction did confuse me. I suppose my work around to move the code into another file stops gcc detecting the access. Is this true ? I am happy to build our code with the check enabled because accessing 0 is something we trap for with MMU targets such as ARM and PowerPC.
(In reply to Chris Johns from comment #2) > Thanks for the quick response. The clean trap instruction did confuse me. > > I suppose my work around to move the code into another file stops gcc > detecting the access. Is this true ? > > I am happy to build our code with the check enabled because accessing 0 is > something we trap for with MMU targets such as ARM and PowerPC. It looks like it is just the startup code in the Init5235 function which needs this extra option, you can use the #pragma's too. Code like: *((short *)(0x00000000)) = 0; Will produce the trap.