gcc version 4.9.x 20150123 (prerelease) (GCC)Which is the gcc (with libs) that is included in the Android NDK R13b. The following was used for compiling:
aarch64-linux-android-gcc -Wall -g ${1}.c -o ${1}_arm64 -staticThe problem is that siglongjmp() doesn't restore the sigprocmask. It's necessary to use "-static" for these binaries and the libc code in the NDK doesn't contain the call sigprocmask() which my Ubuntu libc does.
Reference: http://sourceware.org/git/?p=glibc.git;a=blob;f=setjmp/longjmp.c;h=2453c2c1249954eaceb43ebc02e7b77b02c96045;hb=HEAD
Thus the following is necessary to include:
static void sigsegvhandler(int sig, siginfo_t *siginfo, void *ptr) {
sigset_t set;
sigemptyset(&set);
sigaddset(&set, SIGSEGV);
sigprocmask(SIG_UNBLOCK, &set, NULL);
siglongjmp(env, 1);
}
No comments:
Post a Comment