[Issue 18774] meta used in .di files causes link errors

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Apr 18 23:26:47 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=18774

kinke at gmx.net changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kinke at gmx.net

--- Comment #9 from kinke at gmx.net ---
Symbol table for Win64 with a manual declaration, without importing test.di
(main.d renamed to current.d, main() renamed to foo()):

010 00000000 SECT5  notype ()    External     | _D7current3fooFZi
011 00000000 SECT6  notype       Static       | $unwind$_D7current3fooFZi
012 00000000 SECT7  notype       Static       | $pdata$_D7current3fooFZi
013 00000000 SECT4  notype       External     | _D7current12__ModuleInfoZ
014 00000000 UNDEF  notype ()    External     | _D7current9test_funcFiiZv

When importing test.di, some TypeInfos incl. accompanying functions
__xopEquals() & __xtoHash() are wrongly emitted into the module, incl. a
reference to the non-emitted struct init symbol in its TypeInfo (emitted into
current.obj), leading to the observed linking error (and referencing a bunch of
symbols in druntime):

040 00000000 SECT5  notype ()    External     | _D7current3fooFZi
041 00000000 SECT6  notype       Static       | $unwind$_D7current3fooFZi
042 00000000 SECT7  notype       Static       | $pdata$_D7current3fooFZi
043 00000000 SECT8  notype       External     | _D11TypeInfo_ya6__initZ
044 00000000 SECT9  notype ()    External     |
_D3std5array__T8AppenderTAyaZQo4Data11__xopEqualsFKxSQBzQBy__TQBvTQBpZQCdQBqKxQBaZb
045 00000000 SECTA  notype       Static       |
$unwind$_D3std5array__T8AppenderTAyaZQo4Data11__xopEqualsFKxSQBzQBy__TQBvTQBpZQCdQBqKxQBaZb
046 00000000 SECTB  notype       Static       |
$pdata$_D3std5array__T8AppenderTAyaZQo4Data11__xopEqualsFKxSQBzQBy__TQBvTQBpZQCdQBqKxQBaZb
047 00000000 SECTC  notype ()    External     |
_D3std5array__T8AppenderTAyaZQo4Data9__xtoHashFNbNeKxSQCaQBz__TQBwTQBqZQCeQBrZm
048 00000000 SECTD  notype       Static       |
$unwind$_D3std5array__T8AppenderTAyaZQo4Data9__xtoHashFNbNeKxSQCaQBz__TQBwTQBqZQCeQBrZm
049 00000000 SECTE  notype       Static       |
$pdata$_D3std5array__T8AppenderTAyaZQo4Data9__xtoHashFNbNeKxSQCaQBz__TQBwTQBqZQCeQBrZm
04A 00000000 SECTF  notype       External     |
_D44TypeInfo_S3std5array__T8AppenderTAyaZQo4Data6__initZ
04B 00000000 SECT10 notype ()    External     |
_D3std5range__T3ZipTAAyaTQfZQn11__xopEqualsFKxSQBtQBs__TQBpTQBoTQBsZQCbKxQBbZb
04C 00000000 SECT11 notype       Static       |
$unwind$_D3std5range__T3ZipTAAyaTQfZQn11__xopEqualsFKxSQBtQBs__TQBpTQBoTQBsZQCbKxQBbZb
04D 00000000 SECT12 notype       Static       |
$pdata$_D3std5range__T3ZipTAAyaTQfZQn11__xopEqualsFKxSQBtQBs__TQBpTQBoTQBsZQCbKxQBbZb
04E 00000000 SECT13 notype ()    External     |
_D3std5range__T3ZipTAAyaTQfZQn9__xtoHashFNbNeKxSQBuQBt__TQBqTQBpTQBtZQCcZm
04F 00000000 SECT14 notype       Static       |
$unwind$_D3std5range__T3ZipTAAyaTQfZQn9__xtoHashFNbNeKxSQBuQBt__TQBqTQBpTQBtZQCcZm
050 00000000 SECT15 notype       Static       |
$pdata$_D3std5range__T3ZipTAAyaTQfZQn9__xtoHashFNbNeKxSQBuQBt__TQBqTQBpTQBtZQCcZm
051 00000000 SECT16 notype       External     |
_D38TypeInfo_S3std5range__T3ZipTAAyaTQfZQn6__initZ
052 00000000 SECT17 notype       External     |
_D39TypeInfo_xS3std5range__T3ZipTAAyaTQfZQn6__initZ
053 00000000 SECT18 notype       External     | _D11TypeInfo_xm6__initZ
054 00000000 SECT19 notype       External     | _D12TypeInfo_xAa6__initZ
055 00000000 SECT1A notype       External     | _D11TypeInfo_xb6__initZ
056 00000000 SECT1B notype       External     | _D13TypeInfo_xAya6__initZ
057 00000000 SECT1C notype       External     | _D14TypeInfo_AxAya6__initZ
058 00000000 SECT1D notype       External     | _D14TypeInfo_xAAya6__initZ
059 00000000 SECT1E notype       External     |
_D36TypeInfo_E3std5range14StoppingPolicy6__initZ
05A 00000000 SECT1F notype       External     |
_D37TypeInfo_xE3std5range14StoppingPolicy6__initZ
05B 00000000 SECT4  notype       External     | _D7current12__ModuleInfoZ
05C 00000000 UNDEF  notype ()    External     | _D7test1239test_funcFiiZv
05D 00000000 UNDEF  notype       External     | _D18TypeInfo_Invariant6__vtblZ
05E 00000000 UNDEF  notype       External     | _D10TypeInfo_a6__initZ
05F 00000000 UNDEF  notype ()    External     |
_D6object__T8__equalsTxaTxaZQqFNaNbNiNfAxaQdZb
060 00000000 UNDEF  notype       External     | _D15TypeInfo_Struct6__vtblZ
061 00000000 UNDEF  notype       External     |
_D3std5array__T8AppenderTAyaZQo4Data6__initZ
062 00000000 UNDEF  notype ()    External     |
_D6object__T8__equalsTxAyaTxQfZQtFNaNbNiNfAxQvQeZb
063 00000000 UNDEF  notype       External     |
_D3std5range__T3ZipTAAyaTQfZQn6__initZ
064 00000000 UNDEF  notype       External     | _D14TypeInfo_Const6__vtblZ
065 00000000 UNDEF  notype       External     | _D10TypeInfo_m6__initZ
066 00000000 UNDEF  notype       External     | _D12TypeInfo_Axa6__initZ
067 00000000 UNDEF  notype       External     | _D10TypeInfo_b6__initZ
068 00000000 UNDEF  notype       External     | _D12TypeInfo_Aya6__initZ
069 00000000 UNDEF  notype       External     | _D14TypeInfo_Array6__vtblZ
06A 00000000 UNDEF  notype       External     | _D13TypeInfo_Enum6__vtblZ
06B 00000000 UNDEF  notype       External     | _D10TypeInfo_i6__initZ

--


More information about the Digitalmars-d-bugs mailing list