The value is offset from the start of the section for non-common symbols, submitted...
authorBenjamin Kramer <benny.kra@googlemail.com>
Mon, 30 Aug 2010 12:00:16 +0000 (12:00 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Mon, 30 Aug 2010 12:00:16 +0000 (12:00 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112473 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/ELFObjectWriter.cpp

index 97604176b2295ecbed4faa3616f5992cb6c4e046..dd2419fa051c90394d5c7acc8c1dae7a79576b68 100644 (file)
@@ -384,6 +384,8 @@ void ELFObjectWriterImpl::WriteSymbol(MCDataFragment *F, ELFSymbolData &MSD,
       }
     } else if (ESize->getKind() == MCExpr::Constant) {
       Size = static_cast<const MCConstantExpr *>(ESize)->getValue();
+      MCFragment *F = Data.getFragment();
+      Value = Layout.getSymbolAddress(&Data) - Layout.getSectionAddress(F->getParent());
     } else {
       assert(0 && "Unsupported size expression");
     }