Why is mangling different for separate compilation?
Jacob Carlborg via Digitalmars-d
digitalmars-d at puremagic.com
Fri Feb 26 06:56:04 PST 2016
On 2016-02-26 13:45, Atila Neves wrote:
> foo.d:
> -----
> void main() {
> import bar;
> foreach(ut; __traits(getUnitTests, bar)) ut();
> }
> -----
>
> bar.d:
> -----
> unittest { assert(1 == 2); }
> -----
>
>
> # compile all at once
> dmd -unittest foo.d bar.d # fine
>
>
> # compile separately
> dmd -c -unittest foo.d
> dmd -c -unittest bar.d
> dmd foo.o bar.o
> foo.o:foo.d:function _Dmain: error: undefined reference to
> '_D3bar16__unittestL2_531FZv'
> collect2: error: ld returned 1 exit status
> --- errorlevel 1
>
>
> objdump shows me that bar.o has a '_D3bar14__unittestL2_1FZv' symbol,
> which is nearly, but not quite, what foo.o is trying to call.
What is the mangling when it succeeds.
--
/Jacob Carlborg
More information about the Digitalmars-d
mailing list