www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 2648] New: Unnecessary struct ABI inconsistency

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2648

           Summary: Unnecessary struct ABI inconsistency
           Product: D
           Version: unspecified
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: clugdbug yahoo.com.au


There is a horrible ABI difference between Linux and Windows which seems to be
completely unjustified. Although extern(C) needs to be different between the
systems, there's no reason for extern(D) to.

Linux and Windows should use the same return algorithm for 1,2,4, and 8-byte
structs. This is the only point at which the ABI differs (except for the fact
that real.sizeof is different, but that's something dictacted by the OS).

---
# For Windows, 1, 2 and 4 byte structs are returned in EAX.
# For Windows, 8 byte structs are returned in EDX,EAX, where EDX gets the most
significant half.
# For other struct sizes, the return value is stored through a hidden pointer
passed as an argument to the function.
---


-- 
Feb 06 2009
next sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2648


dhasenan gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |spec




------- Comment #1 from dhasenan gmail.com  2009-04-25 15:25 -------
The ABI as implemented in DMD with regards to returning structs appears to be
as the spec describes for Windows, as confirmed by mucking about with obj2asm.
(Note that, to create a 3-byte struct, you need to use align(1).)

I ascertained this using dmd2.029; other versions might have different
behavior.


-- 
Apr 25 2009
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2648


Walter Bright <bugzilla digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla digitalmars.com
         Resolution|                            |DUPLICATE


--- Comment #2 from Walter Bright <bugzilla digitalmars.com> 2010-11-08
01:03:29 PST ---
*** This issue has been marked as a duplicate of issue 2385 ***

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