diff options
author | Kostya Kortchinsky <kostyak@google.com> | 2017-12-14 21:32:57 +0000 |
---|---|---|
committer | Kostya Kortchinsky <kostyak@google.com> | 2017-12-14 21:32:57 +0000 |
commit | e202bd43ff2e7d87641984ac165a2a52d1c6b6d3 (patch) | |
tree | 88eab16f76297ee6bb0b4d51ea1dbb787af18709 /test/tsan/race_on_heap.cc | |
parent | 1c21b6330ea33fbe97a33afea12c2aca8dc8cd25 (diff) |
[scudo] Refactor ScudoChunk
Summary:
The initial implementation used an ASan like Chunk class that was deriving from
a Header class. Due to potential races, we ended up working with local copies
of the Header and never using the parent class fields. ScudoChunk was never
constructed but cast, and we were using `this` as the pointer needed for our
computations. This was meh.
So we refactored ScudoChunk to be now a series of static functions within the
namespace `__scudo::Chunk` that take a "user" pointer as first parameter (former
`this`). A compiled binary doesn't really change, but the code is more sensible.
Clang tends to inline all those small function (in -O2), but GCC left a few not
inlined, so we add the `INLINE` keyword to all.
Since we don't have `ScudoChunk` pointers anymore, a few variables were renamed
here and there to introduce a clearer distinction between a user pointer
(usually `Ptr`) and a backend pointer (`BackendPtr`).
Reviewers: alekseyshl, flowerhack
Reviewed By: alekseyshl
Subscribers: #sanitizers, llvm-commits
Differential Revision: https://reviews.llvm.org/D41200
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@320745 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/tsan/race_on_heap.cc')
0 files changed, 0 insertions, 0 deletions