www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19304] New: [Reg 2.081.0] Linker arguments order changed in


          Issue ID: 19304
           Summary: [Reg 2.081.0] Linker arguments order changed in issue
                    15574 hinders using --whole-archive linker directive
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: regression
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: llucenic gmail.com

As I mentioned in my comment to the commit fixing issue 15574:


the change of linker arguments order merged there by that commit disallows the
use of --whole-archive linker directive effectively from version 2.081.0 of
The changed order of arguments causes linker error:

 /usr/local/bin/ld: error: ext/arinas/bin/libarinas.a(core.o): multiple
definition of '_D6arinas4core12__ModuleInfoZ'
 /usr/local/bin/ld: ext/arinas/.dub/build/library-debug-linux.posix-x86_64-dmd_2082-9AC63FE218354D87B48C0AED4255478E/
ibarinas.a(core.o): previous definition here
I assume the original implementation positioned the (in dub.sdl defined lflags "--whole-archive" "ext/arinas/bin/libarinas.a" "--no-whole-archive") directive before the *.a libraries built as dub project's dependecies on the linker command line. I am not aware of any means how to pass this directive on to the linker being placed before static libraries other than changing the dmd/link.d code for branches 2.081 and 2.082. I have fixed the code of DMD for my specific purpose assuming also not interfering with the original intention of the fix for issue 15574. I am going to propose my change on github as PR for review to ensure my understanding of the touched code is correct. --
Oct 12 2018