| Index: src/IceELFObjectWriter.cpp
|
| diff --git a/src/IceELFObjectWriter.cpp b/src/IceELFObjectWriter.cpp
|
| index 9c75482def48ede32edf4d4d097cd5b04e14e768..2f86c8dffe1234d7ca93299bb14a14baa22f1397 100644
|
| --- a/src/IceELFObjectWriter.cpp
|
| +++ b/src/IceELFObjectWriter.cpp
|
| @@ -383,8 +383,9 @@ void ELFObjectWriter::writeDataOfType(SectionType ST,
|
| for (VariableDeclaration::Initializer *Init : Var->getInitializers()) {
|
| switch (Init->getKind()) {
|
| case VariableDeclaration::Initializer::DataInitializerKind: {
|
| - const auto Data = llvm::cast<VariableDeclaration::DataInitializer>(
|
| - Init)->getContents();
|
| + const auto Data =
|
| + llvm::cast<VariableDeclaration::DataInitializer>(Init)
|
| + ->getContents();
|
| Section->appendData(Str, llvm::StringRef(Data.data(), Data.size()));
|
| break;
|
| }
|
| @@ -487,7 +488,8 @@ template <typename ConstType> void ELFObjectWriter::writeConstantPool(Type Ty) {
|
| // between entries.
|
| assert(WriteAmt % Align == 0);
|
| // Check that we write the full PrimType.
|
| - assert(WriteAmt == sizeof(typename ConstType::PrimType));
|
| + assert(WriteAmt == sizeof(typename ConstType::PrimType) ||
|
| + WriteAmt == sizeof(short) || WriteAmt == sizeof(char));
|
| const Elf64_Xword ShFlags = SHF_ALLOC | SHF_MERGE;
|
| std::string SecBuffer;
|
| llvm::raw_string_ostream SecStrBuf(SecBuffer);
|
| @@ -503,6 +505,8 @@ template <typename ConstType> void ELFObjectWriter::writeConstantPool(Type Ty) {
|
|
|
| // Write the data.
|
| for (Constant *C : Pool) {
|
| + if (!C->shouldBePooled)
|
| + continue;
|
| auto Const = llvm::cast<ConstType>(C);
|
| std::string SymBuffer;
|
| llvm::raw_string_ostream SymStrBuf(SymBuffer);
|
| @@ -528,6 +532,8 @@ template void ELFObjectWriter::writeConstantPool<ConstantFloat>(Type Ty);
|
|
|
| template void ELFObjectWriter::writeConstantPool<ConstantDouble>(Type Ty);
|
|
|
| +template void ELFObjectWriter::writeConstantPool<ConstantInteger32>(Type Ty);
|
| +
|
| void ELFObjectWriter::writeAllRelocationSections() {
|
| writeRelocationSections(RelTextSections);
|
| writeRelocationSections(RelDataSections);
|
|
|