-fPIC and 32-bit dmd.conf settings

Patrick Schluter via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Apr 9 00:12:51 PDT 2017


On Saturday, 8 April 2017 at 21:31:31 UTC, Joseph Rushton 
Wakeling wrote:
> Hello folks,
>
> The default dmd.conf settings for 64-bit environments include 
> the -fPIC flag (for good reason), but the settings for 32-bit 
> environments do not.  Any particular reason for this?
>
> Thanks & best wishes,
>
>     -- Joe

32 bit modes support for PIC is painful because the RIP relative 
addressing mode does not exist. AMD introduced it when they added 
64 bit support in the Opteron processors. In 32 bit mode it was 
possible to generate PIC code but it required some ugly hacks 
(CALL 0) which broke some hardware optimization (the return 
address target cache) and adds a layer of indirection for shared 
libraries (GOT), which had the consequence of breaking the 
sharing, i.e. .so and .dll weren't really shared in 32 bit mode.
Here an in depth article that I haven't yet read but seem to be 
interesting on the subject 
https://www.technovelty.org/c/position-independent-code-and-x86-64-libraries.html
Of course, this has nothing to do with D per se.



More information about the Digitalmars-d-learn mailing list