Fix printing of common symbols.
[oota-llvm.git] / tools / llvm-nm / llvm-nm.cpp
index cf6746109954de9db4c712851c3161047db5c24e..4edb4efa8d086dcea21ac493d9bfa06b6872eebd 100644 (file)
@@ -901,10 +901,15 @@ static void dumpSymbolNamesFromObject(SymbolicFile &Obj, bool printName,
         S.Size = ELFSymbolRef(Sym).getSize();
     }
     if (PrintAddress && isa<ObjectFile>(Obj)) {
-      ErrorOr<uint64_t> AddressOrErr = SymbolRef(Sym).getAddress();
-      if (error(AddressOrErr.getError()))
-        break;
-      S.Address = *AddressOrErr;
+      SymbolRef SymRef(Sym);
+      if (SymFlags & SymbolRef::SF_Common) {
+        S.Address = SymRef.getCommonSize();
+      } else {
+        ErrorOr<uint64_t> AddressOrErr = SymRef.getAddress();
+        if (error(AddressOrErr.getError()))
+          break;
+        S.Address = *AddressOrErr;
+      }
     }
     S.TypeChar = getNMTypeChar(Obj, Sym);
     if (error(Sym.printName(OS)))