summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2019-03-12 21:02:15 +0000
committerVitaly Buka <vitalybuka@google.com>2019-03-12 21:02:15 +0000
commit5ae9f865b298b0d3ce8dbf31f2511a4e1e458c57 (patch)
tree1ef8dbd18f6f6f7ce4caacb603af1d0a405c23c9
parentd3ed66dfb37c93b4bbcb1497fe89e2311b9bc784 (diff)
downloadbcm5719-llvm-5ae9f865b298b0d3ce8dbf31f2511a4e1e458c57.tar.gz
bcm5719-llvm-5ae9f865b298b0d3ce8dbf31f2511a4e1e458c57.zip
AddressSanitizer: fix for SPARC with GCC
Summary: This patch contains a fixlet for the AddressSanitizer on the SPARC with GCC, which would otherwise generate a problematic call to the intercepted memcpy routine. It was tested with GCC on SPARC/Solaris and SPARC/Linux. Patch by Eric Botcazou. Reviewers: #sanitizers, vitalybuka Reviewed By: #sanitizers, vitalybuka Subscribers: vitalybuka, ro, jyknight, kubamracek, fedor.sergeev, jdoerfert, llvm-commits, #sanitizers Tags: #sanitizers, #llvm Differential Revision: https://reviews.llvm.org/D58433 llvm-svn: 355979
-rw-r--r--compiler-rt/lib/asan/asan_globals.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/compiler-rt/lib/asan/asan_globals.cc b/compiler-rt/lib/asan/asan_globals.cc
index d9c875550b9..8b2fdb214fe 100644
--- a/compiler-rt/lib/asan/asan_globals.cc
+++ b/compiler-rt/lib/asan/asan_globals.cc
@@ -115,7 +115,11 @@ int GetGlobalsForAddress(uptr addr, Global *globals, u32 *reg_sites,
if (flags()->report_globals >= 2)
ReportGlobal(g, "Search");
if (IsAddressNearGlobal(addr, g)) {
+#if defined(__GNUC__) && defined(__sparc__)
+ internal_memcpy(&globals[res], &g, sizeof(g));
+#else
globals[res] = g;
+#endif
if (reg_sites)
reg_sites[res] = FindRegistrationSite(&g);
res++;
OpenPOWER on IntegriCloud