Introduce parameter pack flavors and parameter pack backend callbacks
The issue this is trying to solve is that some backends (Itanium in
particular) change the parameter passing convention depending on whether
given parameter is part of varargs parameter or not. Therefore the
backend needs to know a) that any give argument is part of parameter pack,
and b) if it is, whether it's a varargs-type pack, or something else.
Backends that wish to use this should add #define ARCH_HAVE_FETCH_PACK and
define functions arch_fetch_param_pack_{start,end} (with the same interface
as fetch_param_pack_{start,end} from fetch.h).
diff --git a/param.c b/param.c
index 7715571..a712dad 100644
--- a/param.c
+++ b/param.c
@@ -41,7 +41,7 @@
}
void
-param_init_pack(struct param *param,
+param_init_pack(struct param *param, enum param_pack_flavor ppflavor,
struct expr_node *args, size_t nargs, int own_args,
struct param_enum *(*init)(struct value *cb_args,
size_t nargs,
@@ -57,6 +57,7 @@
param->u.pack.args = args;
param->u.pack.nargs = nargs;
param->u.pack.own_args = own_args;
+ param->u.pack.ppflavor = ppflavor;
param->u.pack.init = init;
param->u.pack.next = next;
param->u.pack.stop = stop;