From 74143893ce2ac238b5d3fd473c24720d6ad798f3 Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <slyfox@gentoo.org>
Date: Sun, 23 Jun 2019 21:48:26 +0100
Subject: [PATCH 1/2] 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.

Signed-off-by: Sergei Trofimovich <slyfox@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:
-- 
2.22.0