https://issues.dlang.org/show_bug.cgi?id=14748
--- Comment #15 from Kenji Hara <[email protected]> --- (In reply to Martin Nowak from comment #13) > When I remove stream.o from libphobos2.a > > If I also remove curl.o > binary. > > Both modules define weak definitions of the following symbols, which is > likely the reason why they got dragged into the binary. > > _D3std8internal7cstring15__unittest_failFiZv > _D3std8internal7cstring7__arrayZ > _D3std8internal7cstring8__assertFiZv I'm mostly sure that it's same with issue 14828. The COMDAT module helper functions of std.internal.cstring should be placed in its own obj file. Otherwise, if a user code requires them, that might drag stream.o or curl.o into the user program. (Whether the file size issue happens, would depend on the symbol name list order in libphobos.a. If stream.o and curl.o are listed in the back of in it, linker would pull the first found symbol and stream.o and curl.o are not pulled). --
