Viewing file: MCWinCOFFStreamer.h (3.25 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
//===- MCWinCOFFStreamer.h - COFF Object File Interface ---------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===//
#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 MCInst; class MCSection; class MCSubtargetInfo; class MCSymbol; class StringRef; class WinCOFFObjectWriter; class raw_pwrite_stream;
class MCWinCOFFStreamer : public MCObjectStreamer { public: MCWinCOFFStreamer(MCContext &Context, std::unique_ptr<MCAsmBackend> MAB, std::unique_ptr<MCCodeEmitter> CE, std::unique_ptr<MCObjectWriter> OW);
/// state management void reset() override { CurSymbol = nullptr; MCObjectStreamer::reset(); }
WinCOFFObjectWriter &getWriter();
/// \name MCStreamer interface /// \{
void initSections(bool NoExecStack, const MCSubtargetInfo &STI) override; void changeSection(MCSection *Section, uint32_t Subsection = 0) override; void emitLabel(MCSymbol *Symbol, SMLoc Loc = SMLoc()) 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 emitCOFFSafeSEH(MCSymbol const *Symbol) override; void emitCOFFSymbolIndex(MCSymbol const *Symbol) override; void emitCOFFSectionIndex(MCSymbol const *Symbol) override; void emitCOFFSecRel32(MCSymbol const *Symbol, uint64_t Offset) override; void emitCOFFImgRel32(MCSymbol const *Symbol, int64_t Offset) override; void emitCommonSymbol(MCSymbol *Symbol, uint64_t Size, Align ByteAlignment) override; void emitLocalCommonSymbol(MCSymbol *Symbol, uint64_t Size, Align ByteAlignment) override; void emitWeakReference(MCSymbol *Alias, const MCSymbol *Symbol) override; void emitZerofill(MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment, SMLoc Loc = SMLoc()) override; void emitTBSSSymbol(MCSection *Section, MCSymbol *Symbol, uint64_t Size, Align ByteAlignment) override; void emitIdent(StringRef IdentString) override; void emitWinEHHandlerData(SMLoc Loc) override; void emitCGProfileEntry(const MCSymbolRefExpr *From, const MCSymbolRefExpr *To, uint64_t Count) override; void finishImpl() override;
/// \}
protected: const MCSymbol *CurSymbol;
void emitInstToData(const MCInst &Inst, const MCSubtargetInfo &STI) override;
void finalizeCGProfileEntry(const MCSymbolRefExpr *&S);
private: void Error(const Twine &Msg) const; };
} // end namespace llvm
#endif // LLVM_MC_MCWINCOFFSTREAMER_H
|