[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