[Issue 20012] export inside mixin doesn't seem to work

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Jul 23 08:34:10 UTC 2019


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

Walter Bright <bugzilla at digitalmars.com> changed:

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

--- Comment #1 from Walter Bright <bugzilla at digitalmars.com> ---
It is exported, just as:

  __D4test8__mixin43fooUZv

instead of:

  _foo

You can see what's exported by running obj2asm on the .obj file, don't need to
use GetProcAddress. For example:

---
  export extern(C) void fun() {}
  mixin template M() {
    export extern(C) void bar() {}
  }
  mixin M!();

---
  dmd -c test.d
  obj2asm test.obj
---
    _TEXT       segment dword use32 public 'CODE'       ;size is 0
    _TEXT       ends
    _DATA       segment para use32 public 'DATA'        ;size is 0
    _DATA       ends
    CONST       segment para use32 public 'CONST'       ;size is 13
    CONST       ends
    _BSS        segment para use32 public 'BSS' ;size is 0
    _BSS        ends
    FLAT        group   
    extrn       _fun
    ;expdef expflag=x00, export '_fun', internal '', ordinal=x0
    extrn       __D4test8__mixin43barUZv
    ;expdef expflag=x00, export '__D4test8__mixin43barUZv', internal '',
ordinal=x0
    FMB segment dword use32 public 'DATA'       ;size is 0
    FMB ends
    FM  segment dword use32 public 'DATA'       ;size is 4
    FM  ends
    FME segment dword use32 public 'DATA'       ;size is 0
    FME ends

            public      __D4test12__ModuleInfoZ
    _fun        COMDAT flags=x0 attr=x0 align=x0 
    __D4test8__mixin43barUZv    COMDAT flags=x0 attr=x10 align=x0 

    _TEXT       segment
            assume      CS:_TEXT
    _TEXT       ends
    _DATA       segment
    _DATA       ends
    CONST       segment
    __D4test12__ModuleInfoZ:
            db  004h,010h,000h,000h,000h,000h,000h,000h ;........
            db  074h,065h,073h,074h,000h        ;test.
    CONST       ends
    _BSS        segment
    _BSS        ends
    FMB segment
    FMB ends
    FM  segment
            dd  offset FLAT:__D4test12__ModuleInfoZ
    FM  ends
    FME segment
    FME ends
    _fun        comdat
            assume      CS:_fun
                    ret
    _fun        ends
    __D4test8__mixin43barUZv    comdat
            assume      CS:__D4test8__mixin43barUZv
                    ret
    __D4test8__mixin43barUZv    ends
            end
---

--


More information about the Digitalmars-d-bugs mailing list