MC/Mach-O: Shuffle enums a bit to make it harder to inadvertently use the wrong
[oota-llvm.git] / lib / MC / ELFObjectWriter.cpp
index 1bb47751ed4d7425bb31979529bf3a2b56835f11..bb523cefedcc6781cdcb3dc06978ef3a53a697ee 100644 (file)
@@ -518,6 +518,15 @@ static uint64_t SymbolValue(MCSymbolData &Data, const MCAsmLayout &Layout) {
     return Data.getCommonAlignment();
 
   const MCSymbol &Symbol = Data.getSymbol();
+
+  if (Symbol.isAbsolute() && Symbol.isVariable()) {
+    if (const MCExpr *Value = Symbol.getVariableValue()) {
+      int64_t IntValue;
+      if (Value->EvaluateAsAbsolute(IntValue, Layout))
+       return (uint64_t)IntValue;
+    }
+  }
+
   if (!Symbol.isInSection())
     return 0;