Gentoo Archives: gentoo-commits

From: Sergei Trofimovich <slyfox@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/sandbox:master commit in: libsandbox/
Date: Tue, 25 Jun 2019 06:42:17
Message-Id: 1561444745.ed72f5d07f627464a95ab377cd101d90d4d10c7d.slyfox@gentoo
1 commit: ed72f5d07f627464a95ab377cd101d90d4d10c7d
2 Author: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jun 23 20:48:26 2019 +0000
4 Commit: Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
5 CommitDate: Tue Jun 25 06:39:05 2019 +0000
6 URL: https://gitweb.gentoo.org/proj/sandbox.git/commit/?id=ed72f5d0
7
8 libsandbox/trace.c: tweak ptrace command type for musl
9
10 glibc defines ptrace as:
11 long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);
12 musl defines ptrace as:
13 long ptrace(int, ...);
14
15 This causes build failure in for of:
16 ../../sandbox-2.17/libsandbox/trace/linux/x86_64.c: In function 'trace_set_ret':
17 ../../sandbox-2.17/libsandbox/trace/linux/x86_64.c:99:2: error: type of formal parameter 1 is incomplete
18 trace_set_regs(regs);
19 ^~~~~~~~~~~~~~
20
21 Let's clobber to 'int' lowest common denominator.
22
23 Bug: https://bugs.gentoo.org/549108
24 Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>
25
26 libsandbox/trace.c | 13 +++++++++++--
27 1 file changed, 11 insertions(+), 2 deletions(-)
28
29 diff --git a/libsandbox/trace.c b/libsandbox/trace.c
30 index fb1fc32..3efef23 100644
31 --- a/libsandbox/trace.c
32 +++ b/libsandbox/trace.c
33 @@ -10,7 +10,16 @@
34 #include "sb_nr.h"
35
36 static long do_peekdata(long offset);
37 -static long _do_ptrace(enum __ptrace_request request, const char *srequest, void *addr, void *data);
38 +/* Note on _do_ptrace argument types:
39 + glibc defines ptrace as:
40 + long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);
41 + musl defines ptrace as:
42 + long ptrace(int, ...);
43 +
44 + Let's clobber to 'int' lowest common denominator.
45 + */
46 +typedef int sb_ptrace_req_t;
47 +static long _do_ptrace(sb_ptrace_req_t request, const char *srequest, void *addr, void *data);
48 #define do_ptrace(request, addr, data) _do_ptrace(request, #request, addr, data)
49 #define _trace_possible(data) true
50
51 @@ -44,7 +53,7 @@ static void trace_exit(int status)
52 _exit(status);
53 }
54
55 -static long _do_ptrace(enum __ptrace_request request, const char *srequest, void *addr, void *data)
56 +static long _do_ptrace(sb_ptrace_req_t request, const char *srequest, void *addr, void *data)
57 {
58 long ret;
59 try_again: