ecl/src/h
Marius Gerbershagen 18cb1b3552 fix for calling conventions treating fixed and variadic arguments differently
Previously, we assumed that the fixed and variadic arguments of a
variadic function were passed to the function in the same way. The
arm64 calling convention used by iOS breaks this assumption by passing
fixed arguments in registers or on the stack, depending on the
position, while variadic arguments are always passed on the stack.

Solving this problem while still allowing function redefinition at
runtime requires introducing additional dispatch functions. These
dispatch functions take no fixed arguments and pass all their
arguments to the actual function. This dispatch is enabled by passing
-DECL_C_COMPATIBLE_VARIADIC_DISPATCH to the C compiler.

This problem was originally identified and a solution provided by
thewhimer@gmail.com. This commit based on his work with minor
improvements.
2019-12-08 10:26:52 +01:00
..
impl ieee-fp: remove old floating point environment workarounds 2019-06-30 13:04:18 +02:00
bytecodes.h Remove deprecated 8-bit opcodes 2018-04-29 13:54:38 +02:00
cache.h The ECL code no longer uses tabulator characters, they were replaced 2015-09-03 07:35:47 -04:00
config-internal.h.in cleanup: remove unused code 2019-07-16 09:04:46 +02:00
config.h.in ieee-fp: introduce new macro for toggling between Lisp and C fpe 2019-06-30 13:01:06 +02:00
cons.h The ECL code no longer uses tabulator characters, they were replaced 2015-09-03 07:35:47 -04:00
cs.h The ECL code no longer uses tabulator characters, they were replaced 2015-09-03 07:35:47 -04:00
ecl-cmp.h cmp: remove unused interface *linking-calls* 2019-07-19 14:30:53 +02:00
ecl-inl.h long-float: remove conditionalization 2019-05-24 21:04:59 +00:00
ecl.h ieee-fp: introduce new macro for toggling between Lisp and C fpe 2019-06-30 13:01:06 +02:00
ecl_atomics.h fix header argument names for C++ compilation 2018-11-02 17:31:55 +08:00
external.h fix for calling conventions treating fixed and variadic arguments differently 2019-12-08 10:26:52 +01:00
internal.h fix for calling conventions treating fixed and variadic arguments differently 2019-12-08 10:26:52 +01:00
legacy.h fix for calling conventions treating fixed and variadic arguments differently 2019-12-08 10:26:52 +01:00
number.h long-float: remove conditionalization 2019-05-24 21:04:59 +00:00
object.h fix for calling conventions treating fixed and variadic arguments differently 2019-12-08 10:26:52 +01:00
page.h The ECL code no longer uses tabulator characters, they were replaced 2015-09-03 07:35:47 -04:00
stack-resize.h fix build failures with --disable-threads 2018-03-02 18:56:23 +01:00
stacks.h apply_from_stack_frame: use correct frame base 2019-07-23 18:45:24 +02:00