aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libtcc1.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/libtcc1.c b/lib/libtcc1.c
index 159c401..53dbec4 100644
--- a/lib/libtcc1.c
+++ b/lib/libtcc1.c
@@ -645,9 +645,10 @@ void *__va_start(void *fp)
void *__va_arg(struct __va_list_struct *ap,
enum __va_arg_type arg_type,
- int size)
+ int size, int align)
{
size = (size + 7) & ~7;
+ align = (align + 7) & ~7;
switch (arg_type) {
case __va_gen_reg:
if (ap->gp_offset < 48) {
@@ -668,6 +669,7 @@ void *__va_arg(struct __va_list_struct *ap,
case __va_stack:
use_overflow_area:
ap->overflow_arg_area += size;
+ ap->overflow_arg_area = (char*)((long long)(ap->overflow_arg_area + align - 1) & -(long long)align);
return ap->overflow_arg_area - size;
default: