#include <signal.h>
#include <stdint.h>
#include <unistd.h>
void sigbus_handler(int signo) { _exit(47); }
int target_function() { return 47; }
int main() {
signal(SIGBUS, sigbus_handler);
// Generate a SIGBUS by deliverately calling through an unaligned function
// pointer.
union {
int (*t)();
uintptr_t p;
} u;
u.t = target_function;
u.p |= 1;
return u.t();
}