[Issue 6758] std.c.stdarg problems with 8 or more integer arguments on x86_64

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Oct 2 11:17:44 PDT 2011


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



--- Comment #3 from Graham <grahamc001uk at yahoo.co.uk> 2011-10-02 11:17:04 PDT ---
Doing a dump of the __va_argsave structure this looks like an alignment
issue. The compiler is aligning string arguments on 16 byte multiples,
so there is an 8 byte gap between the 8 (int) and "9" (string) arguments
of this example.

The stdarg module is not taking this alignment gap into account.

9 variable arguments
argument types [int, int, int, int, int, int, int, immutable(char)[],
immutable(char)[]]
                                Argument value:
regs:
00007FFF922CA110: AA 7F 46 00 00 00 00 00 01 00 00 00 00 00 00 00
00007FFF922CA120: 02 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00   2  3
00007FFF922CA130: 04 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00   4  5
fpregs:
00007FFF922CA140: 50 A4 2C 92 FF 7F 00 00 9D 94 41 00 00 00 00 00
00007FFF922CA150: 14 80 46 00 00 00 00 00 FF FF FF 7F FE FF FF FF
00007FFF922CA160: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF               
00007FFF922CA170: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF               
00007FFF922CA180: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF               
00007FFF922CA190: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF               
00007FFF922CA1A0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF               
00007FFF922CA1B0: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF               
va:
00007FFF922CA1C0: 10 00 00 00 30 00 00 00 60 A2 2C 92 FF 7F 00 00
00007FFF922CA1D0: 10 A1 2C 92 FF 7F 00 00 04 00 00 80 00 00 00 00
00007FFF922CA1E0: 09 00 00 00 00 00 00 00 78 22 6A 00 00 00 00 00
00007FFF922CA1F0: C0 A1 2C 92 FF 7F 00 00 00 00 00 00 00 00 00 00
00007FFF922CA200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00007FFF922CA210: 00 00 00 00 3D 00 00 00 00 00 00 00 00 00 FC 7F
00007FFF922CA220: 28 05 00 2C 3D 00 00 00 40 0B 00 2C 3D 00 00 00
00007FFF922CA230: 68 3C C0 2A 3D 00 00 00 80 2A 6A 00 00 00 00 00
00007FFF922CA240: 01 00 00 00 3D 00 00 00 00 00 00 00 00 00 00 00
00007FFF922CA250: A0 A2 2C 92 FF 7F 00 00 E2 9B 44 00 00 00 00 00
00007FFF922CA260: 06 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00   6  7
00007FFF922CA270: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   8    (gap)
00007FFF922CA280: 01 00 00 00 00 00 00 00 A8 37 49 00 00 00 00 00   "9"
00007FFF922CA290: 02 00 00 00 00 00 00 00 C0 37 49 00 00 00 00 00   "10"
2) int arg = 2
3) int arg = 3
4) int arg = 4
5) int arg = 5
6) int arg = 6
7) int arg = 7
8) int arg = 8
9) string arg = '', length 0
10) string arg = '?', length 4798376

             0x4937A8 = 4798376

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


More information about the Digitalmars-d-bugs mailing list