August 04, 2014
https://issues.dlang.org/show_bug.cgi?id=13178

--- Comment #11 from Jacob Carlborg <doob@me.com> ---
(In reply to Dicebot from comment #10)

> You can but using --exclude=pkgname for those is necessary - rdmd itself can't know relation between static library file and package names of compiled sources. Phobos is excluded by default and tango was only non-standard pre-defined exclusion until recently. All other static libraries have needed it all the time.

Shouldn't the linker only search for undefined symbols in libraries? If rdmd compiled Tango it shouldn't need to search any symbols.

BTW, I think it was a bit strange that only compiler generated symbols resulted in conflicts.

--
August 04, 2014
https://issues.dlang.org/show_bug.cgi?id=13178

--- Comment #12 from Dicebot <public@dicebot.lv> ---
Depends on the (In reply to Jacob Carlborg from comment #11)
> Shouldn't the linker only search for undefined symbols in libraries? If rdmd compiled Tango it shouldn't need to search any symbols.

It does. But when it searches for undefined symbol it finds two definitions in the text section - one in local object files and one in static library. Static libraries are really nothing but just collection of object files packaged together and are processed by linker in a same way. At this point of time there is no "application vs library" distinction, just many object files to merge into single binary. This is not something D can affect.

Linker can ignore duplicates for weak symbols ('W' in nm output, usually done for templates) but those are considerably slower to process.

--
1 2
Next ›   Last »