[llvm] r319133 - Reland r319090, "COFF: Do not create SectionChunks for discarded comdat sections." with a fix for debug sections.
Peter Collingbourne via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 27 17:30:07 PST 2017
Author: pcc
Date: Mon Nov 27 17:30:07 2017
New Revision: 319133
URL: http://llvm.org/viewvc/llvm-project?rev=319133&view=rev
Log:
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
Modified:
llvm/trunk/include/llvm/Object/COFF.h
Modified: llvm/trunk/include/llvm/Object/COFF.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/COFF.h?rev=319133&r1=319132&r2=319133&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/COFF.h (original)
+++ llvm/trunk/include/llvm/Object/COFF.h Mon Nov 27 17:30:07 2017
@@ -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 <typename T> const T *getAux() const {
+ return CS16 ? reinterpret_cast<const T *>(CS16 + 1)
+ : reinterpret_cast<const T *>(CS32 + 1);
+ }
+
+ const coff_aux_section_definition *getSectionDefinition() const {
+ if (!getNumberOfAuxSymbols() ||
+ getStorageClass() != COFF::IMAGE_SYM_CLASS_STATIC)
+ return nullptr;
+ return getAux<coff_aux_section_definition>();
+ }
+
bool isAbsolute() const {
return getSectionNumber() == -1;
}
More information about the llvm-commits
mailing list