21 lines
601 B
C
21 lines
601 B
C
// trace_hook.c — intercept signal handler to log VM state
|
|
#define _GNU_SOURCE
|
|
#include <signal.h>
|
|
#include <stdio.h>
|
|
#include <dlfcn.h>
|
|
|
|
static FILE *trace;
|
|
|
|
int sigaction(int signum, const struct sigaction *act,
|
|
struct sigaction *oldact) {
|
|
// Log which signals are being registered
|
|
if (!trace) trace = fopen("/tmp/vm_trace.txt", "w");
|
|
fprintf(trace, "sigaction(%d)\n", signum);
|
|
fflush(trace);
|
|
|
|
// Call real sigaction
|
|
int (*real)(int, const struct sigaction*, struct sigaction*) =
|
|
dlsym(RTLD_NEXT, "sigaction");
|
|
return real(signum, act, oldact);
|
|
}
|