[fpc-devel] Smart-linking on linux/x86-64

Martin Frb lazarus at mfriebe.de
Mon Jul 4 21:26:15 CEST 2022


On 04/07/2022 21:11, Michael Van Canneyt via fpc-devel wrote:
>
>
> On Mon, 4 Jul 2022, Joost van der Sluis via fpc-devel wrote:
>
>> Hi all,
>>
>> I have a very small application, see below. One procedure is not 
>> called at all.
>>
>> But when I compile with
>>
>> ppcx64 -XX -CX testcfi.pp
>>
>> The P$TESTCFI_$$_NEVERCALLES symbol is still in the executable.
>>
>> On Windows (internal linker) this code is omitted from the 
>> executable, but not on Linux.
>
> It's omitted here as well:

Not 100% on topic (sorry) but talking about symbols that are (or are 
not) included/excluded from the exe...

There are cases were (imho) too many symbols are omitted, and it has 
gotten worse from 3.2.3 to 3.3.1.

https://gitlab.com/freepascal.org/fpc/source/-/issues/39824
There may not be a variable of the class in question, but the class is 
created. Therefore it exists in the app, and could be needed by a debugger.

Yet while both 2.3.2 and 3.3.1 omit the info itself, an effort was made 
in 3.3.1 to clean up the $$vmt info too, imho that should be reverted, 
and the full info included.



More information about the fpc-devel mailing list