From: Peter Collingbourne Date: Tue, 28 Nov 2017 01:30:07 +0000 (+0000) Subject: Reland r319090, "COFF: Do not create SectionChunks for discarded comdat sections... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=81e548c8a41bf77319ad533b223ca9971abb47c4;p=llvm Reland r319090, "COFF: Do not create SectionChunks for discarded comdat sections." with a fix for debug sections. If /debug was not specified, readSection will return a null pointer for debug sections. If the debug section is associative with another section, we need to make sure that the section returned from readSection is not a null pointer before adding it as an associative section. Differential Revision: https://reviews.llvm.org/D40533 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@319133 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Object/COFF.h b/include/llvm/Object/COFF.h index 3ad60b05b6f..2fb896eed97 100644 --- a/include/llvm/Object/COFF.h +++ b/include/llvm/Object/COFF.h @@ -275,6 +275,8 @@ struct coff_symbol_generic { support::ulittle32_t Value; }; +struct coff_aux_section_definition; + class COFFSymbolRef { public: COFFSymbolRef() = default; @@ -346,6 +348,18 @@ public: return (getType() & 0xF0) >> COFF::SCT_COMPLEX_TYPE_SHIFT; } + template const T *getAux() const { + return CS16 ? reinterpret_cast(CS16 + 1) + : reinterpret_cast(CS32 + 1); + } + + const coff_aux_section_definition *getSectionDefinition() const { + if (!getNumberOfAuxSymbols() || + getStorageClass() != COFF::IMAGE_SYM_CLASS_STATIC) + return nullptr; + return getAux(); + } + bool isAbsolute() const { return getSectionNumber() == -1; }