asan_globals.cc (RegisterGlobal): Do not call CheckODRViolationViaPoisoning.
authorMaxim Ostapenko <m.ostapenko@samsung.com>
Tue, 8 Nov 2016 22:09:33 +0000 (22:09 +0000)
committerMaxim Ostapenko <chefmax@gcc.gnu.org>
Tue, 8 Nov 2016 22:09:33 +0000 (00:09 +0200)
libsanitizer/

* asan/asan_globals.cc (RegisterGlobal): Do not call
CheckODRViolationViaPoisoning.
(CheckODRViolationViaPoisoning): Remove.

From-SVN: r241981

libsanitizer/ChangeLog
libsanitizer/asan/asan_globals.cc

index 7881ac7da395f889aaefd4de6bc4b376d3cb2f8f..dad373eb96712ad316a151db96f66826372b4a4a 100644 (file)
@@ -1,3 +1,9 @@
+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
index 007fce72be011dcd3a7654ae6dc913f2dab1e23f..f2292926e6af039657d21eabcc17e83b507e80c8 100644 (file)
@@ -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);