Commit 8f16b6ca by Maxim Ostapenko Committed by Maxim Ostapenko

asan_globals.cc (RegisterGlobal): Do not call CheckODRViolationViaPoisoning.

libsanitizer/

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

From-SVN: r241981
parent 789306de
2016-11-09 Maxim Ostapenko <m.ostapenko@samsung.com> 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 * sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we
compiled code with GCC when extracting the caller PC for ARM if no compiled code with GCC when extracting the caller PC for ARM if no
valid frame pointer is available. valid frame pointer is available.
......
...@@ -147,23 +147,6 @@ static void CheckODRViolationViaIndicator(const Global *g) { ...@@ -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: // Clang provides two different ways for global variables protection:
// it can poison the global itself or its private alias. In former // 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 // case we may poison same symbol multiple times, that can help us to
...@@ -211,8 +194,6 @@ static void RegisterGlobal(const Global *g) { ...@@ -211,8 +194,6 @@ static void RegisterGlobal(const Global *g) {
// where two globals with the same name are defined in different modules. // where two globals with the same name are defined in different modules.
if (UseODRIndicator(g)) if (UseODRIndicator(g))
CheckODRViolationViaIndicator(g); CheckODRViolationViaIndicator(g);
else
CheckODRViolationViaPoisoning(g);
} }
if (CanPoisonMemory()) if (CanPoisonMemory())
PoisonRedZones(*g); PoisonRedZones(*g);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment