diff options
author | Maxim Ostapenko <m.ostapenko@samsung.com> | 2016-11-08 22:09:33 +0000 |
---|---|---|
committer | Maxim Ostapenko <chefmax@gcc.gnu.org> | 2016-11-09 00:09:33 +0200 |
commit | 8f16b6ca77d55ee47e256070b1efe34f03d08f9a (patch) | |
tree | fc259c154a7e47cb3ef4104068c84d998d0265da /libsanitizer | |
parent | 789306de0fa860eebe32a2677d87d1203bbb81f4 (diff) | |
download | gcc-8f16b6ca77d55ee47e256070b1efe34f03d08f9a.zip gcc-8f16b6ca77d55ee47e256070b1efe34f03d08f9a.tar.gz gcc-8f16b6ca77d55ee47e256070b1efe34f03d08f9a.tar.bz2 |
asan_globals.cc (RegisterGlobal): Do not call CheckODRViolationViaPoisoning.
libsanitizer/
* asan/asan_globals.cc (RegisterGlobal): Do not call
CheckODRViolationViaPoisoning.
(CheckODRViolationViaPoisoning): Remove.
From-SVN: r241981
Diffstat (limited to 'libsanitizer')
-rw-r--r-- | libsanitizer/ChangeLog | 6 | ||||
-rw-r--r-- | libsanitizer/asan/asan_globals.cc | 19 |
2 files changed, 6 insertions, 19 deletions
diff --git a/libsanitizer/ChangeLog b/libsanitizer/ChangeLog index 7881ac7..dad373e 100644 --- a/libsanitizer/ChangeLog +++ b/libsanitizer/ChangeLog @@ -1,5 +1,11 @@ 2016-11-09 Maxim Ostapenko <m.ostapenko@samsung.com> + * asan/asan_globals.cc (RegisterGlobal): Do not call + CheckODRViolationViaPoisoning. + (CheckODRViolationViaPoisoning): Remove. + +2016-11-09 Maxim Ostapenko <m.ostapenko@samsung.com> + * sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when extracting the caller PC for ARM if no valid frame pointer is available. diff --git a/libsanitizer/asan/asan_globals.cc b/libsanitizer/asan/asan_globals.cc index 007fce72..f229292 100644 --- a/libsanitizer/asan/asan_globals.cc +++ b/libsanitizer/asan/asan_globals.cc @@ -147,23 +147,6 @@ static void CheckODRViolationViaIndicator(const Global *g) { } } -// Check ODR violation for given global G by checking if it's already poisoned. -// We use this method in case compiler doesn't use private aliases for global -// variables. -static void CheckODRViolationViaPoisoning(const Global *g) { - if (__asan_region_is_poisoned(g->beg, g->size_with_redzone)) { - // This check may not be enough: if the first global is much larger - // the entire redzone of the second global may be within the first global. - for (ListOfGlobals *l = list_of_all_globals; l; l = l->next) { - if (g->beg == l->g->beg && - (flags()->detect_odr_violation >= 2 || g->size != l->g->size) && - !IsODRViolationSuppressed(g->name)) - ReportODRViolation(g, FindRegistrationSite(g), - l->g, FindRegistrationSite(l->g)); - } - } -} - // Clang provides two different ways for global variables protection: // it can poison the global itself or its private alias. In former // case we may poison same symbol multiple times, that can help us to @@ -211,8 +194,6 @@ static void RegisterGlobal(const Global *g) { // where two globals with the same name are defined in different modules. if (UseODRIndicator(g)) CheckODRViolationViaIndicator(g); - else - CheckODRViolationViaPoisoning(g); } if (CanPoisonMemory()) PoisonRedZones(*g); |