FB missing some linking options when building Delphi 11.2 project

Hello,

Due to a bug in Delphi 11.2, we need to compile all 64-bit EXEs that call a DLL with the following linker options turned OFF:

• Support address space layout randomization (ASLR)
• Support high-entropy 64-bit address space layout randomization (ASLR)

This works fine when compiling in the Delphi 11.2 IDE, but if I use FB8 (latest build 8.0.0.3127) then these 2 linker options are linked in, although I load all settings from the project file.

Indeed, if I use BeyondCompare to compare the EXE generated in the Delphi IDE and the one from FB8, using all the settings from the project, the one compiled from FB8 shows:

DLL Flags: Dynamic base (ASLR), NX compatible (DEP)

While the one from the Delphi IDE correctly shows:

DLL Flags: NX compatible (DEP)

Can you have a look at the reason why this linker setting is not being read-in from the project ?

Very best regards,

Olivier Beltrami

Hi Olivier

We missed these new options, will add them for the next update. In the mean time the work around is to use the Action Properties view and use the ExtraCommandLine property

image

1 Like

Hi Vincent,

Thank you very much for your prompt reply.

Your solution works like a charm. In fact it is better than setting it in the Delphi IDE, as I now need to change those linker options for all my projects, and it’s easier to grep those into the existing FBP8 projects (where I already have the -gd ExtraCommandLine entry) than in the DPROJ ones, where they do not appear due to being true by default.

Very best regards,

Olivier

Hi Olivier

What is the bug in 11.2? Is there a qc entry for it I can look at? I have contacts at embarcadero and might be able chase that up (since there will aparently be an 11.3 release).

Also curious why you needed to use the extra command line options for -gd as that option (detailed map file) has been in FinalBuilder since version 1 (on the Linker tab). Just to be sure I just looked at the code

 case FMapfile of
    mfNone:;
    mfSegments : sList.Add('-GS');
    mfPublics :  sList.Add('-GP');
    mfDetailed :  sList.Add('-GD');
  end;

so it’s definitely producing the correct command line option for it.

Hi Vincent,

The JIRA entry is Log in - Embarcadero Technologies (the JIRA moderators seem quite agressive about it) and there are reports from the NexusDB and NexusDB users near the bottom of the following thread https://www.nexusdb.com/forums/showthread.php?t=21418.

The -gd must be for the MadExcept error reporting (madshi.net - madExcept description). It might have been need at the beginning, as I have been using FinalBuilder since version 1 (when the splash screen displayed the World Trade Center Twin Towers), and I probably never bothered to change it. In any case, the presence of the -gd extra command line option made it easier for me to grep-in the additional linker options :-).

Very best regards,

Olivier