aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Trofimovich <slyfox@gentoo.org>2019-06-23 21:48:26 +0100
committerSergei Trofimovich <slyfox@gentoo.org>2019-06-25 07:39:05 +0100
commited72f5d07f627464a95ab377cd101d90d4d10c7d (patch)
treed51d873847f11c6c520279db0a3c46d2673d9a39
parentBump to 2.17 (diff)
downloadsandbox-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.c13
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: