Thread overview
[Issue 16295] REG since 2.069: undefined symbol that should be defined prevents separate compilation
Jul 19, 2016
Timothee Cour
Jul 27, 2016
Walter Bright
Jul 27, 2016
Timothee Cour
Feb 13, 2020
Walter Bright
July 19, 2016
https://issues.dlang.org/show_bug.cgi?id=16295

Timothee Cour <timothee.cour2@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |timothee.cour2@gmail.com
            Summary|REG since 2.069: undefined  |REG since 2.069: undefined
                   |symbol that should be       |symbol that should be
                   |defined                     |defined prevents separate
                   |                            |compilation

--- Comment #1 from Timothee Cour <timothee.cour2@gmail.com> ---
NOTE: this is very bad because it prevents separate compilation model.

this removes the undefined symbols:
$dmd -c -of$out_D/main.o main.d fund.d

this has undefined symbols:
$dmd -c -of$out_D/main.o main.d
$dmd -c -of$out_D/fun.o fun.d

_D4main8__T1AThZ1A8__T1BThZ1B5frontMFNaNbNiNfZPv is undefined in both main.o and fun.o

--
July 27, 2016
https://issues.dlang.org/show_bug.cgi?id=16295

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bugzilla@digitalmars.com

--- Comment #2 from Walter Bright <bugzilla@digitalmars.com> ---
Does it work if you compile with -allinst ?

--
July 27, 2016
https://issues.dlang.org/show_bug.cgi?id=16295

--- Comment #3 from Timothee Cour <timothee.cour2@gmail.com> ---
(In reply to Walter Bright from comment #2)
> Does it work if you compile with -allinst ?

no, IIRC I had tried and that didn't work.

--
February 13, 2020
https://issues.dlang.org/show_bug.cgi?id=16295

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |WORKSFORME

--- Comment #4 from Walter Bright <bugzilla@digitalmars.com> ---
(In reply to Timothee Cour from comment #0)
> out_D=/tmp/
> 
> dmd=$dmd_069_X
> # dmd=$dmd_068_X
> # dmd=$ldc_X
> 
> $dmd -c -of$out_D/main.o main.d && nm $out_D/main.o | grep ' U _D4main8__'
> 
> For dmd v2.071.1 and dmd v2.069, we these undefined symbols; the ones starting with _D4main8_ should not be undefined:
> 
> U _D4main8__T1AThZ1A8__T1BThZ1B5emptyMFNaNbNdNiNfZi
> U _D4main8__T1AThZ1A8__T1BThZ1B5frontMFNaNbNiNfZPv
> U _D4main8__T1AThZ1A8__T1BThZ1B8popFrontMFNaNbNiNfZv

I see those in fun.o:

> nm fun.o
0000000000000000 t
0000000000000000 V __bzeroBytes
                 U _D15TypeInfo_Struct6__vtblZ
0000000000000000 V _D25TypeInfo_S4main__T1AThZQf6__initZ
0000000000000000 V _D35TypeInfo_S4main__T1AThZQf__T1BThZQf6__initZ
0000000000000000 R _D3fun12__ModuleInfoZ
0000000000000000 W _D3funQeFS4main__T1AThZQfZv
0000000000000000 W _D4main__T1AThZQf4testMFNaNbNiNfZv
0000000000000000 W _D4main__T1AThZQf4testMFZ14__foreachbody1MFNaNbNiNfhZi
0000000000000000 W _D4main__T1AThZQf5rangeMFNaNbNiNfZSQBh__TQBfThZQBl__T1BThZQf
0000000000000000 W _D4main__T1AThZQf7opApplyMFNaNbNiNfDFhZiZi
0000000000000000 W _D4main__T1AThZQf__T1BThZQf5emptyMFNaNbNdNiNfZi
0000000000000000 W _D4main__T1AThZQf__T1BThZQf5frontMFNaNbNiNfZPv
0000000000000000 W _D4main__T1AThZQf__T1BThZQf8popFrontMFNaNbNiNfZv
                 U _d_dso_registry
                 U __start_minfo
                 U __stop_minfo

with the current master. I'm going to resolve it as WORKSFORME. If it shows up again, we can revisit it.

--