[Sanitizer] Be more careful with arch-specific defines in StopTheWorld code

llvm-svn: 178630
This commit is contained in:
Alexey Samsonov 2013-04-03 08:26:03 +00:00
parent 21cb74318c
commit 60adc1781e
2 changed files with 7 additions and 4 deletions

View File

@ -59,6 +59,7 @@
# define SANITIZER_INTERCEPT_FREXPF_FREXPL SI_NOT_WINDOWS
# define SANITIZER_INTERCEPT_GETPWNAM_GETPWUID SI_NOT_WINDOWS
# define SANITIZER_INTERCEPT_GETPWNAM_R_GETPWUID_R SI_MAC || SI_LINUX_NOT_ANDROID
# define SANITIZER_INTERCEPT_GETPWNAM_R_GETPWUID_R \
SI_MAC || SI_LINUX_NOT_ANDROID
# define SANITIZER_INTERCEPT_CLOCK_GETTIME SI_LINUX
# define SANITIZER_INTERCEPT_GETITIMER SI_NOT_WINDOWS

View File

@ -350,7 +350,7 @@ void StopTheWorld(StopTheWorldCallback callback, void *argument) {
}
// Platform-specific methods from SuspendedThreadsList.
#if defined(SANITIZER_ANDROID) && defined(__arm__)
#if defined(__arm__)
typedef pt_regs regs_struct;
#else
typedef user_regs_struct regs_struct;
@ -368,10 +368,12 @@ int SuspendedThreadsList::GetRegistersAndSP(uptr index,
}
#if defined(__arm__)
*sp = regs.ARM_sp;
#elif SANITIZER_WORDSIZE == 32
#elif defined(__i386__)
*sp = regs.esp;
#else
#elif defined(__x86_64__)
*sp = regs.rsp;
#else
UNIMPLEMENTED("Unknown architecture");
#endif
internal_memcpy(buffer, &regs, sizeof(regs));
return 0;