http://d.puremagic.com/issues/show_bug.cgi?id=10462

           Summary: interface thunk doesn't preserve EBX
           Product: D
           Version: D2
          Platform: x86
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: [email protected]
        ReportedBy: [email protected]


--- Comment #0 from Martin Nowak <[email protected]> 2013-06-24 06:13:55 PDT ---
This is a followup of Bug 9729.
The generated interface thunk now look like this.

_TMP3   LABEL NEAR
        sub     eax, 8                                  ; 0050 _ 83. E8, 08
        call    ?_007                                   ; 0053 _ E8, 00000000

?_007   LABEL NEAR
        pop     ebx                                     ; 0058 _ 5B
        add     ebx, offset _GLOBAL_OFFSET_TABLE_-$+1H  ; 0059 _ 81. C3,
00000003(GOT r)
        jmp     _D3bug4Lock4lockMFZv                    ; 005F _ E9,
FFFFFFFC(PLT r)

The problem here is that the EBX is not restored after the direct jump which
leads to bug when it was used in the calling function.
Not sure what the best solution to this is. Replacing the jump with a call is
not a good solution because of it alters the stack, i.e. parameters and return
values don't fit.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to