Dub issue with D-Scanner (libdmd)
AlbertG
albert.guiman at protonmail.com
Sun Sep 14 15:59:59 UTC 2025
I am trying to fix dub compilation of D-Scanner for the fork that
uses libdmd
[[1]](https://github.com/dlang-community/D-Scanner/pull/971).
Executing just `dub build` yields this error:
```
collect2: error: ld returned 1 exit status
Error: undefined reference to `ModuleInfo for dmd.iasm`
Error: undefined reference to
`dmd.iasm.asmSemantic(dmd.dsymbol.CAsmDeclaration,
dmd.dscope.Scope*)`
referenced from
`_ZN22DsymbolSemanticVisitor5visitEP15CAsmDeclaration`
Error: undefined reference to `ModuleInfo for dmd.iasm`
Error: undefined reference to
`dmd.iasm.asmSemantic(dmd.statement.AsmStatement,
dmd.dscope.Scope*)`
referenced from `void
dmd.statementsem.statementSemanticVisit(dmd.statement.Statement,
dmd.dscope.Scope*).visitAsm(dmd.statement.AsmStatement)`
Error: undefined reference to `initializer for
dmd.astenums.Edition`
perhaps a library needs to be added with the `-L` flag or
`pragma(lib, ...)`
Error: linker exited with status 1
```
Adding the missing files in `dub.sdl` solved the issue:
```
- excludedSourceFiles "compiler/src/dmd/iasm/*"
+ excludedSourceFiles "compiler/src/dmd/iasm/dmd*"
```
Now there is a new error showing up:
```
collect2: error: ld returned 1 exit status
Error: undefined reference to `structalign_t::setPack()`
referenced from `void
dmd.cparse.CParser!(dmd.astcodegen.ASTCodegen).CParser.cparseDeclspec(ref dmd.cparse.CParser!(dmd.astcodegen.ASTCodegen).CParser.Specifier)`
Error: undefined reference to `structalign_t::setPack()`
referenced from `void
dmd.cparse.CParser!(dmd.astcodegen.ASTCodegen).CParser.cparseGnuAttribute(ref dmd.cparse.CParser!(dmd.astcodegen.ASTCodegen).CParser.Specifier)`
Error: undefined reference to `structalign_t::setAlignas()`
referenced from `dmd.dsymbol.Dsymbol
dmd.cparse.CParser!(dmd.astcodegen.ASTCodegen).CParser.applySpecifier(dmd.dsymbol.Dsymbol, ref dmd.cparse.CParser!(dmd.astcodegen.ASTCodegen).CParser.Specifier)`
Error: undefined reference to `structalign_t::setPack()`
referenced from `nothrow void
dmd.cparse.CParser!(dmd.astcodegen.ASTCodegen).CParser.pragmaPack(dmd.location.Loc, bool).setPackAlign(ref const(dmd.tokens.Token))`
Error: undefined reference to `initializer for
dmd.astenums.Edition`
perhaps a library needs to be added with the `-L` flag or
`pragma(lib, ...)`
Error: linker exited with status 1
```
This made me think the file that defines `structalign_t`
(`astenums.d`) is somehow ignored, but from the `dub.sdl` file it
looks like it's not the case.
Do you have any idea how to sort this out? Perhaps there is
something more to consider to make the fork compilable via dub?
More information about the Digitalmars-d
mailing list