mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-09 00:02:17 +03:00
use syscall_arg_t for arguments in public syscall() function
on x32, this change allows programs which use syscall() with pointers or 64-bit values as arguments to work correctly, i.e. without truncation or incorrect sign extension. on all other supported archs, syscall_arg_t is defined as long, so this change is a no-op.
This commit is contained in:
parent
f162c064ab
commit
5f95f965e9
@ -6,14 +6,14 @@
|
||||
long syscall(long n, ...)
|
||||
{
|
||||
va_list ap;
|
||||
long a,b,c,d,e,f;
|
||||
syscall_arg_t a,b,c,d,e,f;
|
||||
va_start(ap, n);
|
||||
a=va_arg(ap, long);
|
||||
b=va_arg(ap, long);
|
||||
c=va_arg(ap, long);
|
||||
d=va_arg(ap, long);
|
||||
e=va_arg(ap, long);
|
||||
f=va_arg(ap, long);
|
||||
a=va_arg(ap, syscall_arg_t);
|
||||
b=va_arg(ap, syscall_arg_t);
|
||||
c=va_arg(ap, syscall_arg_t);
|
||||
d=va_arg(ap, syscall_arg_t);
|
||||
e=va_arg(ap, syscall_arg_t);
|
||||
f=va_arg(ap, syscall_arg_t);
|
||||
va_end(ap);
|
||||
return __syscall_ret(__syscall(n,a,b,c,d,e,f));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user