uClibc-0.9.30.1-fix-varargs-in-prctl-syscall.patch.avr32 804 B

1234567891011121314151617181920212223242526272829
  1. --- a/libc/sysdeps/linux/common/prctl.c
  2. +++ b/libc/sysdeps/linux/common/prctl.c
  3. @@ -12,6 +12,24 @@
  4. /* psm: including sys/prctl.h would depend on kernel headers */
  5. #ifdef __NR_prctl
  6. -extern int prctl (int, long, long, long, long);
  7. -_syscall5(int, prctl, int, option, long, arg2, long, arg3, long, arg4, long, arg5)
  8. +#define __NR___syscall_prctl __NR_prctl
  9. +static inline _syscall5(int, __syscall_prctl, int, option, long, arg2, long, arg3, long,
  10. + arg4, long, arg5);
  11. +
  12. +int prctl(int option, ...) {
  13. + long arg2 = 0;
  14. + long arg3 = 0;
  15. + long arg4 = 0;
  16. + long arg5 = 0;
  17. + va_list ap;
  18. +
  19. + va_start(ap, option);
  20. + arg2 = va_arg(ap, long);
  21. + arg3 = va_arg(ap, long);
  22. + arg4 = va_arg(ap, long);
  23. + arg5 = va_arg(ap, long);
  24. + va_end(ap);
  25. +
  26. + return __syscall_prctl(option, arg2, arg3, arg4, arg5);
  27. +}
  28. #endif