Module Name: src Committed By: christos Date: Wed Oct 22 16:53:16 UTC 2014
Modified Files: src/external/gpl3/gcc/dist/libsanitizer/asan: asan_linux.cc Log Message: Do the mcontext stuff differently so that we don't fail compilation. To generate a diff of this commit: cvs rdiff -u -r1.2 -r1.3 \ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc diff -u src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc:1.2 src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc:1.3 --- src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc:1.2 Wed Oct 15 14:44:49 2014 +++ src/external/gpl3/gcc/dist/libsanitizer/asan/asan_linux.cc Wed Oct 22 12:53:16 2014 @@ -48,15 +48,42 @@ void *AsanDoesNotSupportStaticLinkage() return &_DYNAMIC; // defined in link.h } +void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) { #ifdef __NetBSD__ -#define gregs __gregs -#define REG_RIP _REG_RIP -#define REG_RBP _REG_RBP -#define REG_RSP _REG_RSP +# if defined(__arm__) +# define REG_PC _REG_PC +# define REG_BP _REG_FP +# define REG_SP _REG_SP +# elif defined(__x86_64__) +# define REG_PC _REG_RIP +# define REG_BP _REG_RBP +# define REG_SP _REG_RSP +# elif defined(__i386__) +# define REG_PC _REG_EIP +# define REG_BP _REG_EBP +# define REG_SP _REG_ESP +# elif defined(__powerpc__) || defined(__powerpc64__) +# define REG_PC _REG_PC +# define REG_BP _REG_R1 +# define REG_SP _REG_R31 +# elif defined(__sparc__) + ucontext_t *ucontext = (ucontext_t*)context; + *pc = _UC_MACHINE_PC(ucontext); + *sp = _UC_MACHINE_SP(ucontext); + *bp = sp[15]; // XXX: christos +# else + // Lot's are missing, please add more. #endif -void GetPcSpBp(void *context, uptr *pc, uptr *sp, uptr *bp) { -#if ASAN_ANDROID +# ifdef REG_PC + ucontext_t *ucontext = (ucontext_t*)context; + *pc = ucontext->uc_mcontext.__gregs[REG_PC]; + *bp = ucontext->uc_mcontext.__gregs[REG_BP]; + *sp = ucontext->uc_mcontext.__gregs[REG_SP]; +# else + *pc = *bp = *sp = 0; +# endif +#elif ASAN_ANDROID *pc = *sp = *bp = 0; #elif defined(__arm__) ucontext_t *ucontext = (ucontext_t*)context;