<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 14, 2013 at 10:39 PM, Abdoulaye Walsimou Gaye <span dir="ltr"><<a href="mailto:awg@embtoolkit.org" target="_blank">awg@embtoolkit.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hi Sergey,<br>
release-3.3 also needs this fix.<br></blockquote><div><br></div><div style>For the 3.3 branch we can simply disable this code (<span style="font-size:13px;font-family:arial,sans-serif">sanitizer_</span><span style="font-size:13px;font-family:arial,sans-serif">stoptheworld_linux.cc</span>) entirely (it is not fully functional anyway).</div>
<div style><br></div><div style> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<br>
Thanks,<br>
AWG<div class=""><div class="h5"><br>
<br>
On 05/13/2013 12:35 PM, Sergey Matveev wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Author: smatveev<br>
Date: Mon May 13 05:35:20 2013<br>
New Revision: 181697<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=181697&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=181697&view=rev</a><br>
Log:<br>
[sanitizer] Fix StopTheWorld build on non-Android ARM.<br>
<br>
Original patch by Abdoulaye Walsimou Gaye.<br>
<br>
Modified:<br>
     compiler-rt/trunk/lib/<u></u>sanitizer_common/sanitizer_<u></u>stoptheworld_linux.cc<br>
<br>
Modified: compiler-rt/trunk/lib/<u></u>sanitizer_common/sanitizer_<u></u>stoptheworld_linux.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_stoptheworld_linux.cc?rev=181697&r1=181696&r2=181697&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/compiler-rt/trunk/lib/<u></u>sanitizer_common/sanitizer_<u></u>stoptheworld_linux.cc?rev=<u></u>181697&r1=181696&r2=181697&<u></u>view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- compiler-rt/trunk/lib/<u></u>sanitizer_common/sanitizer_<u></u>stoptheworld_linux.cc (original)<br>
+++ compiler-rt/trunk/lib/<u></u>sanitizer_common/sanitizer_<u></u>stoptheworld_linux.cc Mon May 13 05:35:20 2013<br>
@@ -24,7 +24,7 @@<br>
  #include <sys/prctl.h> // for PR_* definitions<br>
  #include <sys/ptrace.h> // for PTRACE_* definitions<br>
  #include <sys/types.h> // for pid_t<br>
-#if defined(SANITIZER_ANDROID) && defined(__arm__)<br>
+#if SANITIZER_ANDROID && defined(__arm__)<br>
  # include <linux/user.h>  // for pt_regs<br>
  #else<br>
  # include <sys/user.h>  // for user_regs_struct<br>
@@ -353,12 +353,26 @@ void StopTheWorld(<u></u>StopTheWorldCallback c<br>
  }<br>
    // Platform-specific methods from SuspendedThreadsList.<br>
-#if defined(__arm__)<br>
+#if SANITIZER_ANDROID && defined(__arm__)<br>
  typedef pt_regs regs_struct;<br>
-#else<br>
+#define REG_SP ARM_sp<br>
+<br>
+#elif SANITIZER_LINUX && defined(__arm__)<br>
+typedef user_regs regs_struct;<br>
+#define REG_SP uregs[13]<br>
+<br>
+#elif defined(__i386__) || defined(__x86_64__)<br>
  typedef user_regs_struct regs_struct;<br>
+#if defined(__i386__)<br>
+#define REG_SP esp<br>
+#else<br>
+#define REG_SP rsp<br>
  #endif<br>
  +#else<br>
+#error "Unsupported architecture"<br>
+#endif // SANITIZER_ANDROID && defined(__arm__)<br>
+<br>
  int SuspendedThreadsList::<u></u>GetRegistersAndSP(uptr index,<br>
                                              uptr *buffer,<br>
                                              uptr *sp) const {<br>
@@ -371,15 +385,8 @@ int SuspendedThreadsList::<u></u>GetRegistersAn<br>
             tid, pterrno);<br>
      return -1;<br>
    }<br>
-#if defined(__arm__)<br>
-  *sp = regs.ARM_sp;<br>
-#elif defined(__i386__)<br>
-  *sp = regs.esp;<br>
-#elif defined(__x86_64__)<br>
-  *sp = regs.rsp;<br>
-#else<br>
-  UNIMPLEMENTED("Unknown architecture");<br>
-#endif<br>
+<br>
+  *sp = regs.REG_SP;<br>
    internal_memcpy(buffer, &regs, sizeof(regs));<br>
    return 0;<br>
  }<br>
<br>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
</blockquote>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div></div>