From 8e5fbd755fbf489b4b7702938bfe7a7fd9289951 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Wed, 8 Oct 2014 17:37:19 +0000 Subject: [PATCH] Correctly compute the size of common symbols in COFF. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219324 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Object/COFFObjectFile.cpp | 13 +++++++++---- test/Object/nm-trivial-object.test | 2 +- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 3e668552d9c..ebf24a931ce 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -222,12 +222,17 @@ std::error_code COFFObjectFile::getSymbolSize(DataRefImpl Ref, if (std::error_code EC = getSection(Symb.getSectionNumber(), Section)) return EC; - if (Symb.getSectionNumber() == COFF::IMAGE_SYM_UNDEFINED) - Result = UnknownAddressOrSize; - else if (Section) + if (Symb.getSectionNumber() == COFF::IMAGE_SYM_UNDEFINED) { + if (Symb.getValue() == 0) + Result = UnknownAddressOrSize; + else + Result = Symb.getValue(); + } else if (Section) { Result = Section->SizeOfRawData - Symb.getValue(); - else + } else { Result = 0; + } + return object_error::success; } diff --git a/test/Object/nm-trivial-object.test b/test/Object/nm-trivial-object.test index 52b207abc4a..fffb1bf1259 100644 --- a/test/Object/nm-trivial-object.test +++ b/test/Object/nm-trivial-object.test @@ -62,7 +62,7 @@ COFF-COMMON-NEXT: 00000000 00000014 d .drectve COFF-COMMON-NEXT: 00000000 00000000 n .file COFF-COMMON-NEXT: 00000000 00000014 r .rdata$zzz COFF-COMMON-NEXT: 00000000 00000000 t .text -COFF-COMMON-NEXT: C _a +COFF-COMMON-NEXT: 00000004 C _a ELF-NOT: U -- 2.34.1