diff options
Diffstat (limited to 'lib/Object/COFFObjectFile.cpp')
-rw-r--r-- | lib/Object/COFFObjectFile.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/Object/COFFObjectFile.cpp b/lib/Object/COFFObjectFile.cpp index 3475ac5c60..a604acda74 100644 --- a/lib/Object/COFFObjectFile.cpp +++ b/lib/Object/COFFObjectFile.cpp @@ -161,9 +161,13 @@ uint32_t COFFObjectFile::getSymbolFlags(DataRefImpl Ref) const { // TODO: Correctly set SF_FormatSpecific, SF_Common - if (Symb->StorageClass == COFF::IMAGE_SYM_CLASS_EXTERNAL && - Symb->SectionNumber == COFF::IMAGE_SYM_UNDEFINED) - Result |= SymbolRef::SF_Undefined; + if (Symb->SectionNumber == COFF::IMAGE_SYM_UNDEFINED) { + if (Symb->Value == 0) + Result |= SymbolRef::SF_Undefined; + else + Result |= SymbolRef::SF_Common; + } + // TODO: This are certainly too restrictive. if (Symb->StorageClass == COFF::IMAGE_SYM_CLASS_EXTERNAL) |