[compiler-rt] r181697 - [sanitizer] Fix StopTheWorld build on non-Android ARM.
Abdoulaye Walsimou Gaye
awg at embtoolkit.org
Tue May 14 11:39:34 PDT 2013
Hi Sergey,
release-3.3 also needs this fix.
Thanks,
AWG
On 05/13/2013 12:35 PM, Sergey Matveev wrote:
> Author: smatveev
> Date: Mon May 13 05:35:20 2013
> New Revision: 181697
>
> URL: http://llvm.org/viewvc/llvm-project?rev=181697&view=rev
> Log:
> [sanitizer] Fix StopTheWorld build on non-Android ARM.
>
> Original patch by Abdoulaye Walsimou Gaye.
>
> Modified:
> compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld_linux.cc
>
> Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld_linux.cc
> URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld_linux.cc?rev=181697&r1=181696&r2=181697&view=diff
> ==============================================================================
> --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld_linux.cc (original)
> +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld_linux.cc Mon May 13 05:35:20 2013
> @@ -24,7 +24,7 @@
> #include <sys/prctl.h> // for PR_* definitions
> #include <sys/ptrace.h> // for PTRACE_* definitions
> #include <sys/types.h> // for pid_t
> -#if defined(SANITIZER_ANDROID) && defined(__arm__)
> +#if SANITIZER_ANDROID && defined(__arm__)
> # include <linux/user.h> // for pt_regs
> #else
> # include <sys/user.h> // for user_regs_struct
> @@ -353,12 +353,26 @@ void StopTheWorld(StopTheWorldCallback c
> }
>
> // Platform-specific methods from SuspendedThreadsList.
> -#if defined(__arm__)
> +#if SANITIZER_ANDROID && defined(__arm__)
> typedef pt_regs regs_struct;
> -#else
> +#define REG_SP ARM_sp
> +
> +#elif SANITIZER_LINUX && defined(__arm__)
> +typedef user_regs regs_struct;
> +#define REG_SP uregs[13]
> +
> +#elif defined(__i386__) || defined(__x86_64__)
> typedef user_regs_struct regs_struct;
> +#if defined(__i386__)
> +#define REG_SP esp
> +#else
> +#define REG_SP rsp
> #endif
>
> +#else
> +#error "Unsupported architecture"
> +#endif // SANITIZER_ANDROID && defined(__arm__)
> +
> int SuspendedThreadsList::GetRegistersAndSP(uptr index,
> uptr *buffer,
> uptr *sp) const {
> @@ -371,15 +385,8 @@ int SuspendedThreadsList::GetRegistersAn
> tid, pterrno);
> return -1;
> }
> -#if defined(__arm__)
> - *sp = regs.ARM_sp;
> -#elif defined(__i386__)
> - *sp = regs.esp;
> -#elif defined(__x86_64__)
> - *sp = regs.rsp;
> -#else
> - UNIMPLEMENTED("Unknown architecture");
> -#endif
> +
> + *sp = regs.REG_SP;
> internal_memcpy(buffer, ®s, sizeof(regs));
> return 0;
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list