mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-25 14:32:53 +00:00
622520e70f
Rename the routines to reflect the reality that they are more related to call frame information than to Win64 EH. Although EH is implemented in an intertwined manner by augmenting with an exception handler and an associated parameter, the majority of these routines emit information required to unwind the frames. This also helps identify that these routines are generic for most windows platforms (they apply equally to nearly all architectures except x86) although the encoding of the information is architecture dependent. Unwinding data is emitted via EmitWinCFI* and exception handling information via EmitWinEH*. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211994 91177308-0d34-0410-b5e6-96231b3b80d8
75 lines
2.5 KiB
C++
75 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 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 EmitWinEHHandlerData() 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
|
|
|