How to build a package as application ?

Les De Ridder les at lesderid.net
Tue Jul 2 19:49:32 UTC 2019


On Tuesday, 2 July 2019 at 17:29:51 UTC, guiguidu60 wrote:
> On Tuesday, 2 July 2019 at 17:14:23 UTC, Les De Ridder wrote:
>> On Tuesday, 2 July 2019 at 16:56:52 UTC, guiguidu60 wrote:
>>> On Tuesday, 2 July 2019 at 16:44:12 UTC, Les De Ridder wrote:
>>>> On Tuesday, 2 July 2019 at 14:49:49 UTC, guiguidu60 wrote:
>>>>> [...]
>>>>
>>>> What file manager are you using?
>>>>
>>>> Could you perhaps upload an example binary that gets 
>>>> detected wrong?
>>>
>>> I'm on Debian 10, with Nautilus (v3.30.5) as file explorer.
>>> You can download the helloworld program with this link: 
>>> https://mega.nz/#!rY1QWIhK!lKyIX192OEfKM8MsZ_WW_QNryl39yCQebkXts2qn7E0
>>
>> As I suspected, it's because it's a PIE executable, so this 
>> issue is
>> not specific to D.
>>
>> Going down the rabbit hole:
>> https://bugzilla.gnome.org/show_bug.cgi?id=737849
>> https://bugs.freedesktop.org/show_bug.cgi?id=97226
>> https://gitlab.freedesktop.org/xdg/shared-mime-info/issues/11
>
> Ahh ok, thanks !
> The bug is old... how can I develop D applications without 
> having to suffer this bug ?

Currently you can't, AFAICT.

Many Linux distros these days make PIE the default for Clang/GCC,
because PIE allows for more ASLR, a common modern security 
hardening
measure.

Because D uses the C compiler to link your application, this 
default
will be passed down to the linker. Because of the order in which D
passes args down to the linker, there doesn't seem to be a way to
override this (unless you link manually, e.g. by appending 
`-no-pie` to
the clang/gcc command you get with `dmd -v <sources>`).

It might make sense to change dmd's behaviour so it explicitly 
passes
`-no-pie` to the C compiler when it's not being called with 
`-fPIC`.

In any case, the bug is still not D's fault and will also occur 
with
e.g. C programs compiled without `-no-pie` (and probably most
executables in /usr/bin!).


More information about the Digitalmars-d-learn mailing list