<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Joost van der Sluis via fpc-devel <<a href="mailto:fpc-devel@lists.freepascal.org">fpc-devel@lists.freepascal.org</a>> schrieb am Di., 5. Juli 2022, 00:17:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
But my real issue is this: on Windows, using the internal linker, this <br>
procedure is also omitted *with* Dwarf debug-data. As you implied.<br>
<br>
The problem is, though, that the CFI-information (the FDE) is not <br>
omitted. This is 'solved' in the internal linker by replacing the <br>
address with 0. Gdb doesn't mind and I've adapted FpDebug so that it <br>
allows this too, but this is still invalid, imho.<br>
<br>
But as the FDE is written now, as 'one block', without any sections, I <br>
don't see how the linker could omit the corresponding FDE.<br>
<br>
Any suggestions? Is it possible to place every fde in it's own section <br>
to solve this?<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">The problem is that *something* would need to reference the debug sections otherwise they are stripped as well. But as soon as they're referenced whatever code or data *they* reference is kept as well. </div><div dir="auto">One of the better solutions might be to write these references as weak symbols (on systems that support this) so at least the data/function isn't kept around.</div><div dir="auto">Or the section of the data/function would have to contain a reference to its corresponding debug entry so that it is kept around as long as the function/data is kept around... </div><div dir="auto">How does GCC do this? </div><div dir="auto"><br></div><div dir="auto">Regards, </div><div dir="auto">Sven </div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
</blockquote></div></div></div>