mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-16 11:30:51 +00:00
3f6dea4864
Windows supports a restricted set of relocations (compared to ARM ELF). In some cases, we may end up generating an unsupported relocation. This can occur with bad input to the assembler in particular (the frontend should never generate code that cannot be compiled). Generate an error rather than just aborting. The change in the API is driven by the desire to provide a slightly more helpful message for debugging purposes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226779 91177308-0d34-0410-b5e6-96231b3b80d8
47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
//===-- llvm/MC/MCWinCOFFObjectWriter.h - Win COFF Object Writer *- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_MC_MCWINCOFFOBJECTWRITER_H
|
|
#define LLVM_MC_MCWINCOFFOBJECTWRITER_H
|
|
|
|
namespace llvm {
|
|
class MCAsmBackend;
|
|
class MCFixup;
|
|
class MCObjectWriter;
|
|
class MCValue;
|
|
class raw_ostream;
|
|
|
|
class MCWinCOFFObjectTargetWriter {
|
|
virtual void anchor();
|
|
const unsigned Machine;
|
|
|
|
protected:
|
|
MCWinCOFFObjectTargetWriter(unsigned Machine_);
|
|
|
|
public:
|
|
virtual ~MCWinCOFFObjectTargetWriter() {}
|
|
|
|
unsigned getMachine() const { return Machine; }
|
|
virtual unsigned getRelocType(const MCValue &Target, const MCFixup &Fixup,
|
|
bool IsCrossSection,
|
|
const MCAsmBackend &MAB) const = 0;
|
|
virtual bool recordRelocation(const MCFixup &) const { return true; }
|
|
};
|
|
|
|
/// \brief Construct a new Win COFF writer instance.
|
|
///
|
|
/// \param MOTW - The target specific WinCOFF writer subclass.
|
|
/// \param OS - The stream to write to.
|
|
/// \returns The constructed object writer.
|
|
MCObjectWriter *createWinCOFFObjectWriter(MCWinCOFFObjectTargetWriter *MOTW,
|
|
raw_ostream &OS);
|
|
} // End llvm namespace
|
|
|
|
#endif
|