1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

[WebAssembly] Update MCObjectWriter and associated interfaces after r315327

llvm-svn: 315335
This commit is contained in:
Derek Schuff 2017-10-10 17:31:43 +00:00
parent 703ceb23d9
commit 5a4fc044a6
4 changed files with 22 additions and 13 deletions

View File

@ -41,7 +41,8 @@ public:
const MCValue &Target, MutableArrayRef<char> Data, const MCValue &Target, MutableArrayRef<char> Data,
uint64_t Value, bool IsPCRel) const override; uint64_t Value, bool IsPCRel) const override;
MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override; std::unique_ptr<MCObjectWriter>
createObjectWriter(raw_pwrite_stream &OS) const override;
// No instruction requires relaxation // No instruction requires relaxation
bool fixupNeedsRelaxation(const MCFixup &Fixup, uint64_t Value, bool fixupNeedsRelaxation(const MCFixup &Fixup, uint64_t Value,
@ -82,7 +83,8 @@ public:
const MCValue &Target, MutableArrayRef<char> Data, const MCValue &Target, MutableArrayRef<char> Data,
uint64_t Value, bool IsPCRel) const override; uint64_t Value, bool IsPCRel) const override;
MCObjectWriter *createObjectWriter(raw_pwrite_stream &OS) const override; std::unique_ptr<MCObjectWriter>
createObjectWriter(raw_pwrite_stream &OS) const override;
// No instruction requires relaxation // No instruction requires relaxation
bool fixupNeedsRelaxation(const MCFixup &Fixup, uint64_t Value, bool fixupNeedsRelaxation(const MCFixup &Fixup, uint64_t Value,
@ -131,7 +133,7 @@ void WebAssemblyAsmBackendELF::applyFixup(const MCAssembler &Asm,
Data[Offset + i] |= uint8_t((Value >> (i * 8)) & 0xff); Data[Offset + i] |= uint8_t((Value >> (i * 8)) & 0xff);
} }
MCObjectWriter * std::unique_ptr<MCObjectWriter>
WebAssemblyAsmBackendELF::createObjectWriter(raw_pwrite_stream &OS) const { WebAssemblyAsmBackendELF::createObjectWriter(raw_pwrite_stream &OS) const {
return createWebAssemblyELFObjectWriter(OS, Is64Bit, 0); return createWebAssemblyELFObjectWriter(OS, Is64Bit, 0);
} }
@ -191,7 +193,7 @@ void WebAssemblyAsmBackend::applyFixup(const MCAssembler &Asm,
Data[Offset + i] |= uint8_t((Value >> (i * 8)) & 0xff); Data[Offset + i] |= uint8_t((Value >> (i * 8)) & 0xff);
} }
MCObjectWriter * std::unique_ptr<MCObjectWriter>
WebAssemblyAsmBackend::createObjectWriter(raw_pwrite_stream &OS) const { WebAssemblyAsmBackend::createObjectWriter(raw_pwrite_stream &OS) const {
return createWebAssemblyWasmObjectWriter(OS, Is64Bit); return createWebAssemblyWasmObjectWriter(OS, Is64Bit);
} }

View File

@ -16,6 +16,7 @@
#include "MCTargetDesc/WebAssemblyMCTargetDesc.h" #include "MCTargetDesc/WebAssemblyMCTargetDesc.h"
#include "llvm/MC/MCELFObjectWriter.h" #include "llvm/MC/MCELFObjectWriter.h"
#include "llvm/MC/MCFixup.h" #include "llvm/MC/MCFixup.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/Support/ErrorHandling.h" #include "llvm/Support/ErrorHandling.h"
using namespace llvm; using namespace llvm;
@ -58,9 +59,10 @@ unsigned WebAssemblyELFObjectWriter::getRelocType(MCContext &Ctx,
} }
} }
MCObjectWriter *llvm::createWebAssemblyELFObjectWriter(raw_pwrite_stream &OS, std::unique_ptr<MCObjectWriter>
bool Is64Bit, llvm::createWebAssemblyELFObjectWriter(raw_pwrite_stream &OS,
uint8_t OSABI) { bool Is64Bit,
uint8_t OSABI) {
auto MOTW = llvm::make_unique<WebAssemblyELFObjectWriter>(Is64Bit, OSABI); auto MOTW = llvm::make_unique<WebAssemblyELFObjectWriter>(Is64Bit, OSABI);
return createELFObjectWriter(std::move(MOTW), OS, /*IsLittleEndian=*/true); return createELFObjectWriter(std::move(MOTW), OS, /*IsLittleEndian=*/true);
} }

View File

@ -18,6 +18,7 @@
#include "llvm/BinaryFormat/Wasm.h" #include "llvm/BinaryFormat/Wasm.h"
#include "llvm/MC/MCInstrDesc.h" #include "llvm/MC/MCInstrDesc.h"
#include "llvm/Support/DataTypes.h" #include "llvm/Support/DataTypes.h"
#include <memory>
namespace llvm { namespace llvm {
@ -39,11 +40,13 @@ MCCodeEmitter *createWebAssemblyMCCodeEmitter(const MCInstrInfo &MCII);
MCAsmBackend *createWebAssemblyAsmBackend(const Triple &TT); MCAsmBackend *createWebAssemblyAsmBackend(const Triple &TT);
MCObjectWriter *createWebAssemblyELFObjectWriter(raw_pwrite_stream &OS, std::unique_ptr<MCObjectWriter>
bool Is64Bit, uint8_t OSABI); createWebAssemblyELFObjectWriter(raw_pwrite_stream &OS,
bool Is64Bit, uint8_t OSABI);
MCObjectWriter *createWebAssemblyWasmObjectWriter(raw_pwrite_stream &OS, std::unique_ptr<MCObjectWriter>
bool Is64Bit); createWebAssemblyWasmObjectWriter(raw_pwrite_stream &OS,
bool Is64Bit);
namespace WebAssembly { namespace WebAssembly {
enum OperandType { enum OperandType {

View File

@ -19,6 +19,7 @@
#include "llvm/MC/MCAsmBackend.h" #include "llvm/MC/MCAsmBackend.h"
#include "llvm/MC/MCFixup.h" #include "llvm/MC/MCFixup.h"
#include "llvm/MC/MCFixupKindInfo.h" #include "llvm/MC/MCFixupKindInfo.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/MC/MCSymbolWasm.h" #include "llvm/MC/MCSymbolWasm.h"
#include "llvm/MC/MCWasmObjectWriter.h" #include "llvm/MC/MCWasmObjectWriter.h"
#include "llvm/MC/MCValue.h" #include "llvm/MC/MCValue.h"
@ -93,8 +94,9 @@ WebAssemblyWasmObjectWriter::getRelocType(const MCValue &Target,
} }
} }
MCObjectWriter *llvm::createWebAssemblyWasmObjectWriter(raw_pwrite_stream &OS, std::unique_ptr<MCObjectWriter>
bool Is64Bit) { llvm::createWebAssemblyWasmObjectWriter(raw_pwrite_stream &OS,
bool Is64Bit) {
auto MOTW = llvm::make_unique<WebAssemblyWasmObjectWriter>(Is64Bit); auto MOTW = llvm::make_unique<WebAssemblyWasmObjectWriter>(Is64Bit);
return createWasmObjectWriter(std::move(MOTW), OS); return createWasmObjectWriter(std::move(MOTW), OS);
} }