<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>As a workaround I compiled rtl with -Oonopeephole and verified
that the balign is there, looking good!</p>
<p>Should I open an issue on gitlab or will you take care?</p>
<p>Many thanks and have a nice rest of Easter holidays,</p>
<p>Michael<br>
</p>
<div class="moz-cite-prefix">Am 31.03.24 um 21:58 schrieb Michael
Ring via fpc-devel:<br>
</div>
<blockquote type="cite"
cite="mid:1eeba004-87de-4a58-bad5-3953aa4d8187@michael-ring.org">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<p>This is what I see (guess the same thing):<br>
<br>
New Compiler:</p>
<p>FPC_INITIALIZE:<br>
.Lc3882:<br>
# path: /Users/ring/devel/fpc/rtl/inc/<br>
# file: rtti.inc<br>
# indx: 19<br>
.Ll10741:<br>
push {r4,r5,r14}<br>
...</p>
<p> ldr r0,[r0, r1]<br>
mov r15,r0<br>
.La5:<br>
.long .Lj13323</p>
<p>Old Compiler (2 years old):</p>
<p>FPC_INITIALIZE:<br>
.Lc3594:<br>
# path: /Users/ring/devel/freepascal-sources/rtl/inc/<br>
# file: rtti.inc<br>
# indx: 19<br>
.Ll10488:<br>
push {r4,r5,r14}<br>
...</p>
<p> mov r15,r0<br>
<b> .balign 4</b><br>
.La5:<br>
.long .Lj12924<br>
</p>
<div class="moz-cite-prefix">Am 31.03.24 um 21:50 schrieb Florian
Klämpfl via fpc-devel:<br>
</div>
<blockquote type="cite"
cite="mid:DE236F9C-0283-425B-8366-A7DA0C35D93E@freepascal.org">
<meta http-equiv="content-type"
content="text/html; charset=UTF-8">
<br id="lineBreakAtBeginningOfMessage">
<div><br>
<blockquote type="cite">
<div>Am 31.03.2024 um 21:35 schrieb Florian Klämpfl via
fpc-devel <a class="moz-txt-link-rfc2396E"
href="mailto:fpc-devel@lists.freepascal.org"
moz-do-not-send="true"><fpc-devel@lists.freepascal.org></a>:</div>
<br class="Apple-interchange-newline">
<div>
<div><br>
<br>
<blockquote type="cite">Am 31.03.2024 um 17:11 schrieb
Michael Ring via fpc-devel <a
class="moz-txt-link-rfc2396E"
href="mailto:fpc-devel@lists.freepascal.org"
moz-do-not-send="true"><fpc-devel@lists.freepascal.org></a>:<br>
<br>
Hi,<br>
<br>
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...<br>
<br>
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...<br>
<br>
In that case fpc_initialize (for rtti?) is called and
I cannot find source code for fpc_initialize<br>
<br>
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.<br>
<br>
10001778 4648 ldr r0,
[pc, #280] ; (0x10001894 <fpc_initialize+316>)<br>
1000177A 4058 ldr r0,
[r0, r1] ; Crash Boom Bang !!!!!<br>
<br>
Looking at the map file the address is within
fpc_initialize, but as I cannot find the proper source
I am a bit lost...<br>
<br>
.text.n_fpc_initialize<br>
0x0000000010001758 0x144
/Users/tgdrimi9/fpcupdeluxe/fpc/units/arm-embedded/armv6m/eabi/rtl/system.o<br>
0x0000000010001758
fpc_initialize<br>
0x0000000010001758
FPC_INITIALIZE<br>
.text.n_fpc_finalize<br>
0x000000001000189c 0x164
/Users/tgdrimi9/fpcupdeluxe/fpc/units/arm-embedded/armv6m/eabi/rtl/system.o<br>
<br>
Any help appreciated,<br>
</blockquote>
<br>
Can you post some more context? fpc_initalize is not
that big so it should be possible to identify where this
comes from.<br>
</div>
</div>
</blockquote>
<div><br>
</div>
Ok, I think I found it, it is one for Gareth:</div>
<div><br>
</div>
<div>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures">var</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> i :
longint;</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures">begin</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> case
i of </span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> 1:
writeln(1);</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> 2:
writeln(2);</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> 3:
writeln(2);</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> 4:
writeln(2);</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> 5:
writeln(2);</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"> end;</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures">end.</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"><br>
</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"></span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures">ppcarm
-Cparmv6m -al -O2 t.pp -Tlinux -Oonopeephole</span></p>
<p
style="margin: 0px; font-style: normal; font-variant-caps: normal; font-stretch: normal; font-size: 11px; line-height: normal; font-family: Menlo; font-size-adjust: none; font-kerning: auto; font-variant-alternates: normal; font-variant-ligatures: normal; font-variant-numeric: normal; font-variant-east-asian: normal; font-variant-position: normal; font-variant-emoji: normal; font-feature-settings: normal; font-optical-sizing: auto; font-variation-settings: normal;"><span
style="font-variant-ligatures: no-common-ligatures"><br>
</span></p>
</div>
<div>results in: </div>
<div>...</div>
<div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>sub<span
class="Apple-tab-span" style="white-space:pre"> </span>r1,#1</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>lsl<span
class="Apple-tab-span" style="white-space:pre"> </span>r1,r1,#2</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>ldr<span
class="Apple-tab-span" style="white-space:pre"> </span>r0,.Lj11</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>ldr<span
class="Apple-tab-span" style="white-space:pre"> </span>r0,[r0,
r1]</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>mov<span
class="Apple-tab-span" style="white-space:pre"> </span>r15,r0</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>.balign
4</div>
<div>.La1:</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>.long<span
class="Apple-tab-span" style="white-space:pre"> </span>.Lj4</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>.long<span
class="Apple-tab-span" style="white-space:pre"> </span>.Lj5</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>.long<span
class="Apple-tab-span" style="white-space:pre"> </span>.Lj6</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>.long<span
class="Apple-tab-span" style="white-space:pre"> </span>.Lj7</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>.long<span
class="Apple-tab-span" style="white-space:pre"> </span>.Lj8</div>
<div>…</div>
<div><br>
</div>
<div>
<div>The peephole removes the alignment before case jump
tables: if no -Oonopeephole is passed, the .balign 4 is
gone.</div>
<div><br>
</div>
</div>
</div>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
fpc-devel maillist - <a
class="moz-txt-link-abbreviated moz-txt-link-freetext"
href="mailto:fpc-devel@lists.freepascal.org"
moz-do-not-send="true">fpc-devel@lists.freepascal.org</a>
<a class="moz-txt-link-freetext"
href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel"
moz-do-not-send="true">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel</a>
</pre>
</blockquote>
<br>
<fieldset class="moz-mime-attachment-header"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
fpc-devel maillist - <a class="moz-txt-link-abbreviated" href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel">https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel</a>
</pre>
</blockquote>
</body>
</html>