mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
f4f930c795
Now that clang can be used as an assembler via the IAS, invalid assembler inputs would cause the assertions to trigger. Although we cannot recover from the errors here, nor provide caret diagnostics, attempt to handle them slightly more gracefully by reporting a fatal error. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209387 91177308-0d34-0410-b5e6-96231b3b80d8
76 lines
2.5 KiB
C++
76 lines
2.5 KiB
C++
//===- MCWinCOFFStreamer.h - COFF Object File Interface ---------*- 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_MCWINCOFFSTREAMER_H
|
|
#define LLVM_MC_MCWINCOFFSTREAMER_H
|
|
|
|
#include "llvm/MC/MCDirectives.h"
|
|
#include "llvm/MC/MCObjectStreamer.h"
|
|
|
|
namespace llvm {
|
|
class MCAsmBackend;
|
|
class MCContext;
|
|
class MCCodeEmitter;
|
|
class MCExpr;
|
|
class MCInst;
|
|
class MCSection;
|
|
class MCSubtargetInfo;
|
|
class MCSymbol;
|
|
class StringRef;
|
|
class raw_ostream;
|
|
|
|
class MCWinCOFFStreamer : public MCObjectStreamer {
|
|
public:
|
|
MCWinCOFFStreamer(MCContext &Context, MCAsmBackend &MAB, MCCodeEmitter &CE,
|
|
raw_ostream &OS);
|
|
|
|
/// \name MCStreamer interface
|
|
/// \{
|
|
|
|
void InitSections() override;
|
|
void EmitLabel(MCSymbol *Symbol) override;
|
|
void EmitDebugLabel(MCSymbol *Symbol) override;
|
|
void EmitAssemblerFlag(MCAssemblerFlag Flag) override;
|
|
void EmitThumbFunc(MCSymbol *Func) override;
|
|
bool EmitSymbolAttribute(MCSymbol *Symbol, MCSymbolAttr Attribute) override;
|
|
void EmitSymbolDesc(MCSymbol *Symbol, unsigned DescValue) override;
|
|
void BeginCOFFSymbolDef(MCSymbol const *Symbol) override;
|
|
void EmitCOFFSymbolStorageClass(int StorageClass) override;
|
|
void EmitCOFFSymbolType(int Type) override;
|
|
void EndCOFFSymbolDef() override;
|
|
void EmitCOFFSectionIndex(MCSymbol const *Symbol) override;
|
|
void EmitCOFFSecRel32(MCSymbol const *Symbol) override;
|
|
void EmitELFSize(MCSymbol *Symbol, const MCExpr *Value) override;
|
|
void EmitCommonSymbol(MCSymbol *Symbol, uint64_t Size,
|
|
unsigned ByteAlignment) override;
|
|
void EmitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size,
|
|
unsigned ByteAlignment) override;
|
|
void EmitZerofill(const MCSection *Section, MCSymbol *Symbol, uint64_t Size,
|
|
unsigned ByteAlignment) override;
|
|
void EmitTBSSSymbol(const MCSection *Section, MCSymbol *Symbol, uint64_t Size,
|
|
unsigned ByteAlignment) override;
|
|
void EmitFileDirective(StringRef Filename) override;
|
|
void EmitIdent(StringRef IdentString) override;
|
|
void EmitWin64EHHandlerData() override;
|
|
void FinishImpl() override;
|
|
|
|
/// \}
|
|
|
|
protected:
|
|
const MCSymbol *CurSymbol;
|
|
void EmitInstToData(const MCInst &Inst, const MCSubtargetInfo &STI) override;
|
|
|
|
private:
|
|
LLVM_ATTRIBUTE_NORETURN void FatalError(const Twine &Msg) const;
|
|
};
|
|
}
|
|
|
|
#endif
|
|
|