summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/ELFObjectWriter.cpp
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@freebsd.org>2010-12-20 21:14:39 +0000
committerRoman Divacky <rdivacky@freebsd.org>2010-12-20 21:14:39 +0000
commit55184ddd357c4a43db33bfded6dfeeaa96436312 (patch)
treeec3f8b82dab29b8eb4bc11aa622daafddf2ed46c /llvm/lib/MC/ELFObjectWriter.cpp
parentb0602a6b0ff9b3363cf3aa04277154df1b91f83b (diff)
downloadbcm5719-llvm-55184ddd357c4a43db33bfded6dfeeaa96436312.tar.gz
bcm5719-llvm-55184ddd357c4a43db33bfded6dfeeaa96436312.zip
Set the value of absolute symbols.
llvm-svn: 122268
Diffstat (limited to 'llvm/lib/MC/ELFObjectWriter.cpp')
-rw-r--r--llvm/lib/MC/ELFObjectWriter.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/MC/ELFObjectWriter.cpp b/llvm/lib/MC/ELFObjectWriter.cpp
index 1bb47751ed4..bb523cefedc 100644
--- a/llvm/lib/MC/ELFObjectWriter.cpp
+++ b/llvm/lib/MC/ELFObjectWriter.cpp
@@ -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;
OpenPOWER on IntegriCloud