diff options
author | Sergei Trofimovich <slyfox@gentoo.org> | 2019-06-23 21:48:26 +0100 |
---|---|---|
committer | Sergei Trofimovich <slyfox@gentoo.org> | 2019-06-25 07:39:05 +0100 |
commit | ed72f5d07f627464a95ab377cd101d90d4d10c7d (patch) | |
tree | d51d873847f11c6c520279db0a3c46d2673d9a39 | |
parent | Bump to 2.17 (diff) | |
download | sandbox-ed72f5d0.tar.gz sandbox-ed72f5d0.tar.bz2 sandbox-ed72f5d0.zip |
libsandbox/trace.c: tweak ptrace command type for musl
glibc defines ptrace as:
long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);
musl defines ptrace as:
long ptrace(int, ...);
This causes build failure in for of:
../../sandbox-2.17/libsandbox/trace/linux/x86_64.c: In function 'trace_set_ret':
../../sandbox-2.17/libsandbox/trace/linux/x86_64.c:99:2: error: type of formal parameter 1 is incomplete
trace_set_regs(regs);
^~~~~~~~~~~~~~
Let's clobber to 'int' lowest common denominator.
Bug: https://bugs.gentoo.org/549108
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
-rw-r--r-- | libsandbox/trace.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/libsandbox/trace.c b/libsandbox/trace.c index fb1fc32..3efef23 100644 --- a/libsandbox/trace.c +++ b/libsandbox/trace.c @@ -10,7 +10,16 @@ #include "sb_nr.h" static long do_peekdata(long offset); -static long _do_ptrace(enum __ptrace_request request, const char *srequest, void *addr, void *data); +/* Note on _do_ptrace argument types: + glibc defines ptrace as: + long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data); + musl defines ptrace as: + long ptrace(int, ...); + + Let's clobber to 'int' lowest common denominator. + */ +typedef int sb_ptrace_req_t; +static long _do_ptrace(sb_ptrace_req_t request, const char *srequest, void *addr, void *data); #define do_ptrace(request, addr, data) _do_ptrace(request, #request, addr, data) #define _trace_possible(data) true @@ -44,7 +53,7 @@ static void trace_exit(int status) _exit(status); } -static long _do_ptrace(enum __ptrace_request request, const char *srequest, void *addr, void *data) +static long _do_ptrace(sb_ptrace_req_t request, const char *srequest, void *addr, void *data) { long ret; try_again: |