#include "DwarfGenerator.h"
#include "../lib/CodeGen/AsmPrinter/DwarfStringPool.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/CodeGen/AsmPrinter.h"
#include "llvm/CodeGen/DIE.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugLine.h"
#include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
#include "llvm/MC/MCAsmBackend.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCCodeEmitter.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDwarf.h"
#include "llvm/MC/MCInstrInfo.h"
#include "llvm/MC/MCObjectFileInfo.h"
#include "llvm/MC/MCObjectWriter.h"
#include "llvm/MC/MCRegisterInfo.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSubtargetInfo.h"
#include "llvm/MC/MCTargetOptionsCommandFlags.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Pass.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/TargetParser/Triple.h"
usingnamespacellvm;
usingnamespacedwarf;
mc::RegisterMCTargetOptionsFlags MOF;
namespace {}
unsigned dwarfgen::DIE::computeSizeAndOffsets(unsigned Offset) { … }
void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form, uint64_t U) { … }
void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form, const MCExpr &Expr) { … }
void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form,
StringRef String) { … }
void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form,
dwarfgen::DIE &RefDie) { … }
void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form, const void *P,
size_t S) { … }
void dwarfgen::DIE::addAttribute(uint16_t A, dwarf::Form Form) { … }
void dwarfgen::DIE::addStrOffsetsBaseAttribute() { … }
void dwarfgen::DIE::addAddrBaseAttribute() { … }
dwarfgen::DIE dwarfgen::DIE::addChild(dwarf::Tag Tag) { … }
dwarfgen::DIE dwarfgen::CompileUnit::getUnitDIE() { … }
DWARFDebugLine::Prologue dwarfgen::LineTable::createBasicPrologue() const { … }
void dwarfgen::LineTable::setPrologue(DWARFDebugLine::Prologue NewPrologue) { … }
void dwarfgen::LineTable::setCustomPrologue(
ArrayRef<ValueAndLength> NewPrologue) { … }
void dwarfgen::LineTable::addByte(uint8_t Value) { … }
void dwarfgen::LineTable::addStandardOpcode(uint8_t Opcode,
ArrayRef<ValueAndLength> Operands) { … }
void dwarfgen::LineTable::addExtendedOpcode(uint64_t Length, uint8_t Opcode,
ArrayRef<ValueAndLength> Operands) { … }
void dwarfgen::LineTable::generate(MCContext &MC, AsmPrinter &Asm) const { … }
void dwarfgen::LineTable::writeData(ArrayRef<ValueAndLength> Data,
AsmPrinter &Asm) const { … }
size_t dwarfgen::LineTable::getContentsSize() const { … }
MCSymbol *dwarfgen::LineTable::writeDefaultPrologue(AsmPrinter &Asm) const { … }
void dwarfgen::LineTable::writePrologue(AsmPrinter &Asm) const { … }
static void writeCString(StringRef Str, AsmPrinter &Asm) { … }
static void writeV2IncludeAndFileTable(const DWARFDebugLine::Prologue &Prologue,
AsmPrinter &Asm) { … }
static void writeV5IncludeAndFileTable(const DWARFDebugLine::Prologue &Prologue,
AsmPrinter &Asm) { … }
void dwarfgen::LineTable::writeProloguePayload(
const DWARFDebugLine::Prologue &Prologue, AsmPrinter &Asm) const { … }
dwarfgen::Generator::Generator()
: … { … }
dwarfgen::Generator::~Generator() = default;
llvm::Expected<std::unique_ptr<dwarfgen::Generator>>
dwarfgen::Generator::create(Triple TheTriple, uint16_t DwarfVersion) { … }
llvm::Error dwarfgen::Generator::init(Triple TheTriple, uint16_t V) { … }
unsigned dwarfgen::Generator::DummyAddressPool::getIndex(uint64_t Address) { … }
void dwarfgen::Generator::DummyAddressPool::emit(AsmPrinter &Asm,
MCSection *AddrSection,
MCSymbol *StartSym) { … }
StringRef dwarfgen::Generator::generate() { … }
bool dwarfgen::Generator::saveFile(StringRef Path) { … }
dwarfgen::CompileUnit &dwarfgen::Generator::addCompileUnit() { … }
dwarfgen::LineTable &dwarfgen::Generator::addLineTable(DwarfFormat Format) { … }