aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libsandbox/trace.c')
-rw-r--r--libsandbox/trace.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/libsandbox/trace.c b/libsandbox/trace.c
index f2071e0..ea769fd 100644
--- a/libsandbox/trace.c
+++ b/libsandbox/trace.c
@@ -11,6 +11,7 @@
static long _do_ptrace(enum __ptrace_request 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
#ifdef DEBUG
# define SBDEBUG 1
@@ -485,6 +486,16 @@ void trace_main(const char *filename, char *const argv[])
#else
+#undef _trace_possible
+#define _trace_possible(data) false
+
+void trace_main(const char *filename, char *const argv[])
+{
+ /* trace_possible() triggers a warning for us */
+}
+
+#endif
+
static char *flatten_args(char *const argv[])
{
char *ret;
@@ -512,11 +523,13 @@ static char *flatten_args(char *const argv[])
return ret;
}
-void trace_main(const char *filename, char *const argv[])
+bool trace_possible(const char *filename, char *const argv[], const void *data)
{
+ if (_trace_possible(data))
+ return true;
+
char *args = flatten_args(argv);
- sb_eqawarn("Static ELF: %s: %s\n", filename, args);
+ sb_eqawarn("Unable to trace static ELF: %s: %s\n", filename, args);
free(args);
+ return false;
}
-
-#endif