December 12, 2017 [Issue 18066] New: regression: duplicate symbol __Dmain : worked in dmd.071.2, fails in dmd.072 | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=18066 Issue ID: 18066 Summary: regression: duplicate symbol __Dmain : worked in dmd.071.2, fails in dmd.072 Product: D Version: D2 Hardware: x86 OS: Mac OS X Status: NEW Severity: regression Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: timothee.cour2@gmail.com it worked in dmd2_071_2, it fails in dmd2_072_0. reduced case: ``` fun1.d: module fun1; import std.file; // NOTE: other modules (eg std.stdio) don't have this error fun2.d: module fun2; main_aux.d: module main_aux; void main(){} ``` ``` dmd -of=./build//app.o -c -g fun1.d fun2.d main_aux.d libtool -static ./build//app.o -o ./build//libapp.a dmd -of=./build//app -g -L./build//libapp.a main_aux.d duplicate symbol __Dmain in: ./build//app.o ./build//libapp.a(app.o) duplicate symbol _D8main_aux12__ModuleInfoZ in: ./build//app.o ./build//libapp.a(app.o) duplicate symbol _D8main_aux7__arrayZ in: ./build//app.o ./build//libapp.a(app.o) duplicate symbol _D8main_aux8__assertFiZv in: ./build//app.o ./build//libapp.a(app.o) duplicate symbol _D8main_aux15__unittest_failFiZv in: ./build//app.o ./build//libapp.a(app.o) duplicate symbol _main in: ./build//app.o ./build//libapp.a(app.o) ``` NOTE: works if building library directly in this particular case, eg: `dmd -of=./build//libapp.a -lib -g fun1.d fun2.d main_aux.d` but this isn't always desirable to do so. NOTE: I am passing main_aux.d twice but this shouldn't be a problem because it's first passed as ".o" and then as part of a ".a" which should avoid duplicate symbol errors: https://stackoverflow.com/questions/34454355/why-doesnt-the-linker-complain-of-duplicate-symbols NOTE: this pattern (recompiling a file already part of a library) is *essential* to support speedy partial recompilation and avoid recompiling the whole app (eg if we want to speed up edit/recompile cycle) and must be supported. -- |
Copyright © 1999-2021 by the D Language Foundation