|
From: | Michael Matz |
Subject: | Re: [Tinycc-devel] RE :Re: New test 73_arm64 hangs if ran on RPi |
Date: | Mon, 9 Mar 2015 11:36:01 +0100 (CET) |
User-agent: | Alpine 2.00 (LNX 1167 2008-08-23) |
Hi, On Mon, 9 Mar 2015, Edmund Grimley Evans wrote:
Michael Matz <address@hidden>:And some more fixes for more tests in 73_arm64, namely stdarg passing of structs passed in purely integer registers. structs passed in fp regs or mixed int/fp regs are unfortunately not consecutive in the reg_save_area, and hence need temporary memory, but this requires some more involved changes in libtcc1.On arm64 a struct is sometimes not consecutive in memory. Code is generated in gen_va_arg() in arm64-gen.c to rearrange the data. I get more stack space using the global variable "loc".
Yes, I know. I just wanted to avoid having to open-code a va_arg in x86-64, it currently uses a C implementation from libtcc1. With that approach I can't allocate stack in the calling routine, of course, and would have to resort to a static buffer, which in turn would break multi-threaded use, or use malloc which would create a leak, or use malloc with reuse, which requires a global list, again creating multi-threaded problems :-/ Over that set of stones and hard places I went to bed. (I now think the only realistic option is indeed to generate va_arg from the backend).
Ciao, Michael.
[Prev in Thread] | Current Thread | [Next in Thread] |