diff options
author | Vitaly Buka <vitalybuka@google.com> | 2019-03-12 21:02:15 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2019-03-12 21:02:15 +0000 |
commit | 5ae9f865b298b0d3ce8dbf31f2511a4e1e458c57 (patch) | |
tree | 1ef8dbd18f6f6f7ce4caacb603af1d0a405c23c9 | |
parent | d3ed66dfb37c93b4bbcb1497fe89e2311b9bc784 (diff) | |
download | bcm5719-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.cc | 4 |
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++; |