Sebastian Lackner sebastian@fds-team.de writes:
I am not sure why you think it is questionable. We have compiler support for variadic functions, so why should we not use it? Please note that on x86_64 this does more than just grabbing a pointer to the variadic arguments, the declaration as WINAPIV also ensures that the compiler stores the register values ecx/edx/r8/r9 back onto the stack:
If you need them on the stack, you should be putting them there from assembly, not relying on the compiler implementation of va_list or assuming that va_list is a pointer to the first argument.
va_list is supposed to be an opaque type, so if you want to use it you'd have to access the arguments from C code too, which AFAICS is not possible in this case.
Moreover, implementing the whole logic of _vcomp_fork in Assembler seems unreasonable. Do you mean a second Assembler wrapper, one to grab the "valist" pointer, and one to copy the arguments again on the target stack to execute the function?
Probably something like that, or something along the lines of the existing relay code.