1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00

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

llvm-svn: 319133
This commit is contained in:
Peter Collingbourne 2017-11-28 01:30:07 +00:00
parent 799174df2d
commit 280d46dc97

View File

@ -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;
}