aboutsummaryrefslogtreecommitdiffstats
path: root/symtab.cc
diff options
context:
space:
mode:
Diffstat (limited to 'symtab.cc')
-rw-r--r--symtab.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/symtab.cc b/symtab.cc
index fb81bfe..edb6752 100644
--- a/symtab.cc
+++ b/symtab.cc
@@ -18,6 +18,8 @@
#include "symtab.h"
+#include <iostream>
+
#ifdef ENABLE_TID_CHECK
#include <pthread.h>
#endif
@@ -59,13 +61,14 @@ Var* Symbol::GetGlobalVar() const {
return v;
}
-void Symbol::SetGlobalVar(Var* v) const {
+void Symbol::SetGlobalVar(Var* v, bool is_override) const {
if (static_cast<size_t>(v_) >= g_symbol_data.size()) {
g_symbol_data.resize(v_ + 1);
}
Var* orig = g_symbol_data[v_].gv;
- if (orig->Origin() == VarOrigin::OVERRIDE ||
- orig->Origin() == VarOrigin::ENVIRONMENT_OVERRIDE) {
+ if (!is_override &&
+ (orig->Origin() == VarOrigin::OVERRIDE ||
+ orig->Origin() == VarOrigin::ENVIRONMENT_OVERRIDE)) {
return;
}
if (orig->Origin() == VarOrigin::AUTOMATIC) {