Thread overview
[Issue 13] ARM: can't cast _argptr / va_list to pointer
Sep 25, 2012
Iain Buclaw
Sep 26, 2012
Johannes Pfau
Sep 26, 2012
Iain Buclaw
Sep 27, 2012
Johannes Pfau
Oct 27, 2012
Johannes Pfau
September 25, 2012
http://gdcproject.org/bugzilla/show_bug.cgi?id=13

--- Comment #1 from Iain Buclaw <ibuclaw@gdcproject.org> 2012-09-25 20:31:59 UTC ---
ARM va_list type is void*
ARM EABI va_list type is {void*}

As such, you need to be a little more creative about getting it's value the x86-way.

byte *p = *cast(byte**)&argptr;
byte b = *p;

Works for both the old and embedded ABI's.

-- 
Configure issuemail: http://gdcproject.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all issue changes.
September 26, 2012
http://gdcproject.org/bugzilla/show_bug.cgi?id=13

--- Comment #2 from Johannes Pfau <johannespfau@gmail.com> 2012-09-26 09:26:55 UTC ---
So D doesn't make any guarantees that casting va_list to a pointer is portable, right?

But what does that mean for the test suite? Change it to use the portable va_arg or is that test meant to be platform specific and we should add a version(ARM) block to test the ARM behaviour?

https://github.com/D-Programming-GDC/GDC/blob/master/gcc/testsuite/gdc.test/runnable/test20.d#L595 https://github.com/D-Programming-GDC/GDC/blob/master/gcc/testsuite/gdc.test/runnable/testdstress.d#L209

-- 
Configure issuemail: http://gdcproject.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all issue changes.
September 26, 2012
http://gdcproject.org/bugzilla/show_bug.cgi?id=13

--- Comment #3 from Iain Buclaw <ibuclaw@gdcproject.org> 2012-09-26 13:34:12 UTC ---
(In reply to comment #2)
> So D doesn't make any guarantees that casting va_list to a pointer is portable, right?
> 
> But what does that mean for the test suite? Change it to use the portable va_arg or is that test meant to be platform specific and we should add a version(ARM) block to test the ARM behaviour?
> 
> https://github.com/D-Programming-GDC/GDC/blob/master/gcc/testsuite/gdc.test/runnable/test20.d#L595 https://github.com/D-Programming-GDC/GDC/blob/master/gcc/testsuite/gdc.test/runnable/testdstress.d#L209

Both look fishy... how it is passing for 64bit, I do not know.

-- 
Configure issuemail: http://gdcproject.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all issue changes.
September 27, 2012
http://gdcproject.org/bugzilla/show_bug.cgi?id=13

Johannes Pfau <johannespfau@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
         AssignedTo|ibuclaw@gdcproject.org      |johannespfau@gmail.com

--- Comment #4 from Johannes Pfau <johannespfau@gmail.com> 2012-09-27 18:02:33 UTC ---
https://github.com/D-Programming-Language/dmd/pull/1149

-- 
Configure issuemail: http://gdcproject.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all issue changes.
October 27, 2012
http://gdcproject.org/bugzilla/show_bug.cgi?id=13

Johannes Pfau <johannespfau@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|                            |FIXED

--- Comment #5 from Johannes Pfau <johannespfau@gmail.com> 2012-10-27 17:53:41 UTC ---
Fixed in upstream dmd: https://github.com/D-Programming-Language/dmd/commit/f804036586e3c5a363c29f47f1e9407304c75f9e

-- 
Configure issuemail: http://gdcproject.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all issue changes.