[challenge] Linker surgery

Dmitry Olshansky dmitry.olsh at gmail.com
Sun May 19 03:22:24 PDT 2013


19-May-2013 11:02, Rainer Schuetze пишет:
>
>
> On 18.05.2013 09:46, Dmitry Olshansky wrote:
>> 18-May-2013 10:40, Rainer Schuetze пишет:
>>>
>>>
>>> If you compile all the files on the command line for the executable
>>> everything gets dragged in.
>>
>> Then the only question would be - why we need this behavior?
>> It looks painfully clear to me that -lib style should be the default.
>
> I guess it is the compilation model inherited from C++.

Facepalm. :)

> Putting
> everything into libraries has its own share of issues like not linking
> in modules that are only accessed via the object factory or that
> register with some other system in a static constructor.
>

I thought these are just hooked up in some fake static this constructors 
(and these get pulled with import alone).

Anyway - we then already have the same issues with classes from 
libraries that are loaded only via object factory. Meaning that it's not 
a new problem.


> On 17.05.2013 19:57, Rainer Schuetze wrote:
>  > Yes, if you build a library the functions in a module are split into
>  > separate object files, but data is always written into the object
>  > file of the original module. The linker cannot split these afterwards
>  > if any data in the module is referenced (which might happen by just
>  > importing the module).
>
> It seems I was wrong here. Function local data is written into the same
> object file as the function.

Yes, which is nice. Your advice was priceless, now I just need to 
re-arrange some code to put everything as local to these functions.
Since it goes to Phobos it'll be a library automatically.

-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list