LLVM  3.7.0
Classes | Macros | Enumerations | Functions | Variables
DwarfDebug.cpp File Reference
#include "DwarfDebug.h"
#include "ByteStreamer.h"
#include "DIEHash.h"
#include "DebugLocEntry.h"
#include "DwarfCompileUnit.h"
#include "DwarfExpression.h"
#include "DwarfUnit.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/Triple.h"
#include "llvm/CodeGen/DIE.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DIBuilder.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCSection.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Dwarf.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FormattedStream.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/MD5.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Timer.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetFrameLowering.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetOptions.h"
#include "llvm/Target/TargetRegisterInfo.h"
#include "llvm/Target/TargetSubtargetInfo.h"
Include dependency graph for DwarfDebug.cpp:

Go to the source code of this file.

Classes

struct  ArangeSpan
 

Macros

#define DEBUG_TYPE   "dwarfdebug"
 

Enumerations

enum  DefaultOnOff
 

Functions

static bool isObjCClass (StringRef Name)
 
static bool hasObjCCategory (StringRef Name)
 
static void getObjCClassCategory (StringRef In, StringRef &Class, StringRef &Category)
 
static StringRef getObjCMethodName (StringRef In)
 
template<typename Func >
void forBothCUs (DwarfCompileUnit &CU, Func F)
 
static DebugLocEntry::Value getDebugLocValue (const MachineInstr *MI)
 
static bool piecesOverlap (const DIExpression *P1, const DIExpression *P2)
 Determine whether two variable pieces overlap. More...
 
static DebugLoc findPrologueEndLoc (const MachineFunction *MF)
 
static
dwarf::PubIndexEntryDescriptor 
computeIndexValue (DwarfUnit *CU, const DIE *Die)
 computeIndexValue - Compute the gdb index value for the DIE and CU. More...
 
static void emitDebugLocValue (const AsmPrinter &AP, const DIBasicType *BT, ByteStreamer &Streamer, const DebugLocEntry::Value &Value, unsigned PieceOffsetInBits)
 
static uint64_t makeTypeSignature (StringRef Identifier)
 

Variables

static cl::opt< boolDisableDebugInfoPrinting ("disable-debug-info-print", cl::Hidden, cl::desc("Disable debug info printing"))
 
static cl::opt< boolUnknownLocations ("use-unknown-locations", cl::Hidden, cl::desc("Make an absence of debug location information explicit."), cl::init(false))
 
static cl::opt< boolGenerateGnuPubSections ("generate-gnu-dwarf-pub-sections", cl::Hidden, cl::desc("Generate GNU-style pubnames and pubtypes"), cl::init(false))
 
static cl::opt< boolGenerateARangeSection ("generate-arange-section", cl::Hidden, cl::desc("Generate dwarf aranges"), cl::init(false))
 
static cl::opt< DefaultOnOffDwarfAccelTables ("dwarf-accel-tables", cl::Hidden, cl::desc("Output prototype dwarf accelerator tables."), cl::values(clEnumVal(Default,"Default for platform"), clEnumVal(Enable,"Enabled"), clEnumVal(Disable,"Disabled"), clEnumValEnd), cl::init(Default))
 
static cl::opt< DefaultOnOffSplitDwarf ("split-dwarf", cl::Hidden, cl::desc("Output DWARF5 split debug info."), cl::values(clEnumVal(Default,"Default for platform"), clEnumVal(Enable,"Enabled"), clEnumVal(Disable,"Disabled"), clEnumValEnd), cl::init(Default))
 
static cl::opt< DefaultOnOffDwarfPubSections ("generate-dwarf-pub-sections", cl::Hidden, cl::desc("Generate DWARF pubnames and pubtypes sections"), cl::values(clEnumVal(Default,"Default for platform"), clEnumVal(Enable,"Enabled"), clEnumVal(Disable,"Disabled"), clEnumValEnd), cl::init(Default))
 
static const char *const DWARFGroupName = "DWARF Emission"
 
static const char *const DbgTimerName = "DWARF Debug Writer"
 
static LLVM_CONSTEXPR
DwarfAccelTable::Atom 
TypeAtoms []
 

Macro Definition Documentation

#define DEBUG_TYPE   "dwarfdebug"

Definition at line 58 of file DwarfDebug.cpp.

Enumeration Type Documentation

Definition at line 80 of file DwarfDebug.cpp.

Function Documentation

static dwarf::PubIndexEntryDescriptor computeIndexValue ( DwarfUnit CU,
const DIE Die 
)
static
static void emitDebugLocValue ( const AsmPrinter AP,
const DIBasicType BT,
ByteStreamer Streamer,
const DebugLocEntry::Value Value,
unsigned  PieceOffsetInBits 
)
static
static DebugLoc findPrologueEndLoc ( const MachineFunction MF)
static
template<typename Func >
void forBothCUs ( DwarfCompileUnit CU,
Func  F 
)

Definition at line 334 of file DwarfDebug.cpp.

References F(), and llvm::DwarfCompileUnit::getSkeleton().

static DebugLocEntry::Value getDebugLocValue ( const MachineInstr MI)
static
static void getObjCClassCategory ( StringRef  In,
StringRef Class,
StringRef Category 
)
static
static StringRef getObjCMethodName ( StringRef  In)
static
static bool hasObjCCategory ( StringRef  Name)
static

Definition at line 252 of file DwarfDebug.cpp.

References llvm::StringRef::find(), isObjCClass(), and llvm::StringRef::npos.

Referenced by getObjCClassCategory().

static bool isObjCClass ( StringRef  Name)
static
static uint64_t makeTypeSignature ( StringRef  Identifier)
static
static bool piecesOverlap ( const DIExpression P1,
const DIExpression P2 
)
static

Determine whether two variable pieces overlap.

Definition at line 758 of file DwarfDebug.cpp.

References llvm::DIExpression::getBitPieceOffset(), llvm::DIExpression::getBitPieceSize(), and llvm::DIExpression::isBitPiece().

Referenced by llvm::DwarfDebug::beginFunction().

Variable Documentation

const char* const DbgTimerName = "DWARF Debug Writer"
static

Definition at line 108 of file DwarfDebug.cpp.

Referenced by llvm::DwarfDebug::DwarfDebug().

cl::opt<bool> DisableDebugInfoPrinting("disable-debug-info-print", cl::Hidden, cl::desc("Disable debug info printing"))
static
cl::opt<DefaultOnOff> DwarfAccelTables("dwarf-accel-tables", cl::Hidden, cl::desc("Output prototype dwarf accelerator tables."), cl::values(clEnumVal(Default,"Default for platform"),clEnumVal(Enable,"Enabled"),clEnumVal(Disable,"Disabled"), clEnumValEnd), cl::init(Default))
static
const char* const DWARFGroupName = "DWARF Emission"
static

Definition at line 107 of file DwarfDebug.cpp.

Referenced by llvm::DwarfDebug::DwarfDebug().

cl::opt<DefaultOnOff> DwarfPubSections("generate-dwarf-pub-sections", cl::Hidden, cl::desc("Generate DWARF pubnames and pubtypes sections"), cl::values(clEnumVal(Default,"Default for platform"),clEnumVal(Enable,"Enabled"),clEnumVal(Disable,"Disabled"), clEnumValEnd), cl::init(Default))
static
cl::opt<bool> GenerateARangeSection("generate-arange-section", cl::Hidden, cl::desc("Generate dwarf aranges"), cl::init(false))
static
cl::opt<bool> GenerateGnuPubSections("generate-gnu-dwarf-pub-sections", cl::Hidden, cl::desc("Generate GNU-style pubnames and pubtypes"), cl::init(false))
static
cl::opt<DefaultOnOff> SplitDwarf("split-dwarf", cl::Hidden, cl::desc("Output DWARF5 split debug info."), cl::values(clEnumVal(Default,"Default for platform"),clEnumVal(Enable,"Enabled"),clEnumVal(Disable,"Disabled"), clEnumValEnd), cl::init(Default))
static
cl::opt<bool> UnknownLocations("use-unknown-locations", cl::Hidden, cl::desc("Make an absence of debug location information explicit."), cl::init(false))
static