commit: ed72f5d07f627464a95ab377cd101d90d4d10c7d
Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sun Jun 23 20:48:26 2019 +0000
Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Tue Jun 25 06:39:05 2019 +0000
URL: https://gitweb.gentoo.org/proj/sandbox.git/commit/?id=ed72f5d0
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 <AT> gentoo.org>
libsandbox/trace.c | 13 +++++++++++--
1 file 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: