17#include "llvm/Config/llvm-config.h" 
   28#define DEBUG_TYPE "dwarfdebug" 
   39  ID.AddInteger(
unsigned(Attribute));
 
   40  ID.AddInteger(
unsigned(Form));
 
   41  if (Form == dwarf::DW_FORM_implicit_const)
 
 
   52  ID.AddInteger(
unsigned(Tag));
 
   53  ID.AddInteger(
unsigned(Children));
 
 
   91    if (AttrData.getForm() == dwarf::DW_FORM_implicit_const)
 
 
  102  O << 
"Abbreviation @" 
  103    << 
format(
"0x%lx", (
long)(intptr_t)
this)
 
  114    if (
D.getForm() == dwarf::DW_FORM_implicit_const)
 
  115      O << 
" " << 
D.getValue();
 
 
  121#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) 
  133    Abbrev->~DIEAbbrev();
 
 
  144          AbbreviationsSet.FindNodeOrInsertPos(
ID, InsertPos)) {
 
  151  Abbreviations.push_back(New);
 
  152  New->setNumber(Abbreviations.size());
 
  156  AbbreviationsSet.InsertNode(New, InsertPos);
 
 
  161  if (!Abbreviations.empty()) {
 
 
  177    if (V.getForm() == dwarf::DW_FORM_implicit_const)
 
  179                                       V.getDIEInteger().getValue());
 
 
  187  assert(Unit && 
"DIE must be owned by a DIEUnit to get its absolute offset");
 
  188  return Unit->getDebugSectionOffset() + 
getOffset();
 
 
  194    if (p->getTag() == dwarf::DW_TAG_compile_unit ||
 
  195        p->getTag() == dwarf::DW_TAG_skeleton_unit ||
 
  196        p->getTag() == dwarf::DW_TAG_type_unit)
 
 
  213  for (
const auto &V : 
values())
 
 
  222  O << 
Type << 
": Size: " << 
Size << 
"\n";
 
  225  const std::string Indent(IndentCount, 
' ');
 
  226  for (
const auto &V : Values.
values()) {
 
  228    O << 
"Blk[" << 
I++ << 
"]";
 
 
  237  const std::string Indent(IndentCount, 
' ');
 
  238  O << Indent << 
"Die: " << 
format(
"0x%lx", (
long)(intptr_t) 
this)
 
  239    << 
", Offset: " << Offset << 
", Size: " << Size << 
"\n";
 
  245  for (
const auto &V : 
values()) {
 
  254  for (
const auto &Child : 
children())
 
  255    Child.print(O, IndentCount + 4);
 
 
  260#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) 
  280  for (
const auto &V : 
values())
 
  281    CUOffset += V.sizeOf(FormParams);
 
  290          Child.computeOffsetsAndAbbrevs(FormParams, AbbrevSet, CUOffset);
 
  293    CUOffset += 
sizeof(int8_t);
 
 
  308  assert((UnitTag == dwarf::DW_TAG_compile_unit ||
 
  309          UnitTag == dwarf::DW_TAG_skeleton_unit ||
 
  310          UnitTag == dwarf::DW_TAG_type_unit ||
 
  311          UnitTag == dwarf::DW_TAG_partial_unit) &&
 
  312         "expected a unit TAG");
 
 
  319#define HANDLE_DIEVALUE(T)                                                     \ 
  321    getDIE##T().emitValue(AP, Form);                                           \ 
  323#include "llvm/CodeGen/DIEValue.def" 
 
  331#define HANDLE_DIEVALUE(T)                                                     \ 
  333    return getDIE##T().sizeOf(FormParams, Form); 
  334#include "llvm/CodeGen/DIEValue.def" 
 
  344#define HANDLE_DIEVALUE(T)                                                     \ 
  346    getDIE##T().print(O);                                                      \ 
  348#include "llvm/CodeGen/DIEValue.def" 
 
  352#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) 
  366  case dwarf::DW_FORM_implicit_const:
 
  367  case dwarf::DW_FORM_flag_present:
 
  370    Asm->OutStreamer->addBlankLine();
 
  372  case dwarf::DW_FORM_flag:
 
  373  case dwarf::DW_FORM_ref1:
 
  374  case dwarf::DW_FORM_data1:
 
  375  case dwarf::DW_FORM_strx1:
 
  376  case dwarf::DW_FORM_addrx1:
 
  377  case dwarf::DW_FORM_ref2:
 
  378  case dwarf::DW_FORM_data2:
 
  379  case dwarf::DW_FORM_strx2:
 
  380  case dwarf::DW_FORM_addrx2:
 
  381  case dwarf::DW_FORM_strx3:
 
  382  case dwarf::DW_FORM_addrx3:
 
  383  case dwarf::DW_FORM_strp:
 
  384  case dwarf::DW_FORM_ref4:
 
  385  case dwarf::DW_FORM_data4:
 
  386  case dwarf::DW_FORM_ref_sup4:
 
  387  case dwarf::DW_FORM_strx4:
 
  388  case dwarf::DW_FORM_addrx4:
 
  389  case dwarf::DW_FORM_ref8:
 
  390  case dwarf::DW_FORM_ref_sig8:
 
  391  case dwarf::DW_FORM_data8:
 
  392  case dwarf::DW_FORM_ref_sup8:
 
  393  case dwarf::DW_FORM_GNU_ref_alt:
 
  394  case dwarf::DW_FORM_GNU_strp_alt:
 
  395  case dwarf::DW_FORM_line_strp:
 
  396  case dwarf::DW_FORM_sec_offset:
 
  397  case dwarf::DW_FORM_strp_sup:
 
  398  case dwarf::DW_FORM_addr:
 
  399  case dwarf::DW_FORM_ref_addr:
 
  400    Asm->OutStreamer->emitIntValue(Integer,
 
  401                                   sizeOf(Asm->getDwarfFormParams(), Form));
 
  403  case dwarf::DW_FORM_GNU_str_index:
 
  404  case dwarf::DW_FORM_GNU_addr_index:
 
  405  case dwarf::DW_FORM_ref_udata:
 
  406  case dwarf::DW_FORM_strx:
 
  407  case dwarf::DW_FORM_addrx:
 
  408  case dwarf::DW_FORM_rnglistx:
 
  409  case dwarf::DW_FORM_udata:
 
  410    Asm->emitULEB128(Integer);
 
  412  case dwarf::DW_FORM_sdata:
 
  413    Asm->emitSLEB128(Integer);
 
 
  423  if (std::optional<uint8_t> FixedSize =
 
  428  case dwarf::DW_FORM_GNU_str_index:
 
  429  case dwarf::DW_FORM_GNU_addr_index:
 
  430  case dwarf::DW_FORM_ref_udata:
 
  431  case dwarf::DW_FORM_strx:
 
  432  case dwarf::DW_FORM_addrx:
 
  433  case dwarf::DW_FORM_rnglistx:
 
  434  case dwarf::DW_FORM_udata:
 
  436  case dwarf::DW_FORM_sdata:
 
 
  444  O << 
"Int: " << (int64_t)Integer << 
"  0x";
 
  445  O.write_hex(Integer);
 
 
  463  case dwarf::DW_FORM_data4:
 
  465  case dwarf::DW_FORM_data8:
 
  467  case dwarf::DW_FORM_sec_offset:
 
 
  487  bool IsSectionRelative = Form != dwarf::DW_FORM_addr;
 
 
  497  case dwarf::DW_FORM_data4:
 
  499  case dwarf::DW_FORM_data8:
 
  501  case dwarf::DW_FORM_sec_offset:
 
  502  case dwarf::DW_FORM_strp:
 
  504  case dwarf::DW_FORM_addr:
 
 
  520  assert(
Offset < (1ULL << (ULEB128PadSize * 7)) && 
"Offset wont fit");
 
 
  525  return ULEB128PadSize;
 
 
  547  case dwarf::DW_FORM_data4:
 
  549  case dwarf::DW_FORM_data8:
 
  551  case dwarf::DW_FORM_sec_offset:
 
 
  560  O << 
"Del: " << LabelHi->getName() << 
"-" << LabelLo->getName();
 
 
  572  case dwarf::DW_FORM_GNU_str_index:
 
  573  case dwarf::DW_FORM_strx:
 
  574  case dwarf::DW_FORM_strx1:
 
  575  case dwarf::DW_FORM_strx2:
 
  576  case dwarf::DW_FORM_strx3:
 
  577  case dwarf::DW_FORM_strx4:
 
  580  case dwarf::DW_FORM_strp:
 
 
  597  case dwarf::DW_FORM_GNU_str_index:
 
  598  case dwarf::DW_FORM_strx:
 
  599  case dwarf::DW_FORM_strx1:
 
  600  case dwarf::DW_FORM_strx2:
 
  601  case dwarf::DW_FORM_strx3:
 
  602  case dwarf::DW_FORM_strx4:
 
  604  case dwarf::DW_FORM_strp:
 
 
  615  O << 
"String: " << S.getString();
 
 
  622  if (Form == dwarf::DW_FORM_string) {
 
 
  637  O << 
"InlineString: " << S;
 
 
  649  case dwarf::DW_FORM_ref1:
 
  650  case dwarf::DW_FORM_ref2:
 
  651  case dwarf::DW_FORM_ref4:
 
  652  case dwarf::DW_FORM_ref8:
 
  657  case dwarf::DW_FORM_ref_udata:
 
  661  case dwarf::DW_FORM_ref_addr: {
 
  663    uint64_t Addr = Entry->getDebugSectionOffset();
 
  665            Entry->getUnit()->getCrossSectionRelativeBaseAddress()) {
 
 
  682  case dwarf::DW_FORM_ref1:
 
  684  case dwarf::DW_FORM_ref2:
 
  686  case dwarf::DW_FORM_ref4:
 
  688  case dwarf::DW_FORM_ref8:
 
  690  case dwarf::DW_FORM_ref_udata:
 
  692  case dwarf::DW_FORM_ref_addr:
 
 
  702  O << 
format(
"Die: 0x%lx", (
long)(intptr_t)&Entry);
 
 
  711    for (
const auto &V : 
values())
 
  712      Size += V.sizeOf(FormParams);
 
 
  723  case dwarf::DW_FORM_block1: Asm->emitInt8(Size);    
break;
 
  724  case dwarf::DW_FORM_block2: Asm->emitInt16(Size);   
break;
 
  725  case dwarf::DW_FORM_block4: Asm->emitInt32(Size);   
break;
 
  726  case dwarf::DW_FORM_block:
 
  727  case dwarf::DW_FORM_exprloc:
 
  728    Asm->emitULEB128(Size);
 
  732  for (
const auto &V : 
values())
 
 
  740  case dwarf::DW_FORM_block1: 
return Size + 
sizeof(int8_t);
 
  741  case dwarf::DW_FORM_block2: 
return Size + 
sizeof(int16_t);
 
  742  case dwarf::DW_FORM_block4: 
return Size + 
sizeof(int32_t);
 
  743  case dwarf::DW_FORM_block:
 
  744  case dwarf::DW_FORM_exprloc:
 
 
  761    for (
const auto &V : 
values())
 
  762      Size += V.sizeOf(FormParams);
 
 
  773  case dwarf::DW_FORM_block1: Asm->emitInt8(Size);    
break;
 
  774  case dwarf::DW_FORM_block2: Asm->emitInt16(Size);   
break;
 
  775  case dwarf::DW_FORM_block4: Asm->emitInt32(Size);   
break;
 
  776  case dwarf::DW_FORM_exprloc:
 
  777  case dwarf::DW_FORM_block:
 
  778    Asm->emitULEB128(Size);
 
  780  case dwarf::DW_FORM_string: 
break;
 
  781  case dwarf::DW_FORM_data16: 
break;
 
  784  for (
const auto &V : 
values())
 
 
  792  case dwarf::DW_FORM_block1: 
return Size + 
sizeof(int8_t);
 
  793  case dwarf::DW_FORM_block2: 
return Size + 
sizeof(int16_t);
 
  794  case dwarf::DW_FORM_block4: 
return Size + 
sizeof(int32_t);
 
  795  case dwarf::DW_FORM_exprloc:
 
  797  case dwarf::DW_FORM_data16: 
return 16;
 
 
  814  case dwarf::DW_FORM_loclistx:
 
  816  case dwarf::DW_FORM_data4:
 
  818           "DW_FORM_data4 is not suitable to emit a pointer to a location list " 
  819           "in the 64-bit DWARF format");
 
  821  case dwarf::DW_FORM_data8:
 
  823           "DW_FORM_data8 is not suitable to emit a pointer to a location list " 
  824           "in the 32-bit DWARF format");
 
  826  case dwarf::DW_FORM_sec_offset:
 
 
  836  if (Form == dwarf::DW_FORM_loclistx) {
 
 
  854  return Addr.sizeOf(FormParams, dwarf::DW_FORM_addrx) +
 
  855         Offset.sizeOf(FormParams, dwarf::DW_FORM_data4);
 
 
  861  Addr.emitValue(AP, dwarf::DW_FORM_addrx);
 
  862  Offset.emitValue(AP, dwarf::DW_FORM_data4);
 
 
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
 
static GCRegistry::Add< StatepointGC > D("statepoint-example", "an example strategy for statepoint")
 
#define LLVM_DUMP_METHOD
Mark debug helper function definitions like dump() that should not be stripped from debug builds.
 
static LLVM_DUMP_METHOD void printValues(raw_ostream &O, const DIEValueList &Values, StringRef Type, unsigned Size, unsigned IndentCount)
 
This class is intended to be used as a driving class for all asm writers.
 
void emitULEB128(uint64_t Value, const char *Desc=nullptr, unsigned PadTo=0) const
Emit the specified unsigned leb128 value.
 
void emitDwarfSymbolReference(const MCSymbol *Label, bool ForceOffset=false) const
Emit a reference to a symbol for use in dwarf.
 
virtual void emitDebugValue(const MCExpr *Value, unsigned Size) const
Emit the directive and value for debug thread local expression.
 
DwarfDebug * getDwarfDebug()
 
void emitLabelPlusOffset(const MCSymbol *Label, uint64_t Offset, unsigned Size, bool IsSectionRelative=false) const
Emit something like ".long Label+Offset" where the size in bytes of the directive is specified by Siz...
 
void emitLabelDifference(const MCSymbol *Hi, const MCSymbol *Lo, unsigned Size) const
Emit something like ".long Hi-Lo" where the size in bytes of the directive is specified by Size and H...
 
void emitInt8(int Value) const
Emit a byte directive and value.
 
void emitDwarfAbbrevs(const T &Abbrevs) const
Emit Dwarf abbreviation table.
 
void emitSLEB128(int64_t Value, const char *Desc=nullptr) const
Emit the specified signed leb128 value.
 
std::unique_ptr< MCStreamer > OutStreamer
This is the MCStreamer object for the file we are generating.
 
void emitLabelReference(const MCSymbol *Label, unsigned Size, bool IsSectionRelative=false) const
Emit something like ".long Label" where the size in bytes of the directive is specified by Size and L...
 
uint16_t getDwarfVersion() const
 
dwarf::FormParams getDwarfFormParams() const
Returns information about the byte size of DW_FORM values.
 
bool doesDwarfUseRelocationsAcrossSections() const
 
Functions, function parameters, and return types can have attributes to indicate how they should be t...
 
Dwarf abbreviation data, describes one attribute of a Dwarf abbreviation.
 
LLVM_ABI void Profile(FoldingSetNodeID &ID) const
Used to gather unique data for the abbreviation folding set.
 
Helps unique DIEAbbrev objects and assigns abbreviation numbers.
 
LLVM_ABI void Emit(const AsmPrinter *AP, MCSection *Section) const
Print all abbreviations using the specified asm printer.
 
LLVM_ABI DIEAbbrev & uniqueAbbreviation(DIE &Die)
Generate the abbreviation declaration for a DIE and return a pointer to the generated abbreviation.
 
Dwarf abbreviation, describes the organization of a debug information object.
 
LLVM_ABI void print(raw_ostream &O) const
 
void AddImplicitConstAttribute(dwarf::Attribute Attribute, int64_t Value)
Adds attribute with DW_FORM_implicit_const value.
 
LLVM_ABI void Emit(const AsmPrinter *AP) const
Print the abbreviation using the specified asm printer.
 
void AddAttribute(dwarf::Attribute Attribute, dwarf::Form Form)
Adds another set of attribute information to the abbreviation.
 
LLVM_ABI void dump() const
 
LLVM_ABI void Profile(FoldingSetNodeID &ID) const
Used to gather unique data for the abbreviation folding set.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit label value.
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit base type reference.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &, dwarf::Form) const
sizeOf - Determine size of the base type reference in bytes.
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &, dwarf::Form Form) const
sizeOf - Determine size of block data in bytes.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI void emitValue(const AsmPrinter *Asm, dwarf::Form Form) const
EmitValue - Emit block data.
 
LLVM_ABI unsigned computeSize(const dwarf::FormParams &FormParams) const
Calculate the size of the location expression.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
SizeOf - Determine size of delta value in bytes.
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit delta value.
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit debug information entry offset.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit expression value.
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
SizeOf - Determine size of expression value in bytes.
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &, dwarf::Form) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
sizeOf - Determine size of integer value in bytes.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI void emitValue(const AsmPrinter *Asm, dwarf::Form Form) const
EmitValue - Emit integer of appropriate size.
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit label value.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
sizeOf - Determine size of label value in bytes.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit label value.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &, dwarf::Form Form) const
sizeOf - Determine size of location data in bytes.
 
LLVM_ABI void emitValue(const AsmPrinter *Asm, dwarf::Form Form) const
EmitValue - Emit location data.
 
LLVM_ABI unsigned computeSize(const dwarf::FormParams &FormParams) const
Calculate the size of the location expression.
 
LLVM_ABI void emitValue(const AsmPrinter *AP, dwarf::Form Form) const
EmitValue - Emit string value.
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams, dwarf::Form Form) const
sizeOf - Determine size of delta value in bytes.
 
LLVM_ABI DIEUnit(dwarf::Tag UnitTag)
 
LLVM_ABI void print(raw_ostream &O) const
 
LLVM_ABI void emitValue(const AsmPrinter *AP) const
Emit value via the Dwarf writer.
 
LLVM_ABI unsigned sizeOf(const dwarf::FormParams &FormParams) const
Return the size of a value in bytes.
 
LLVM_ABI void dump() const
 
A structured debug information entry.
 
LLVM_ABI DIEValue findAttribute(dwarf::Attribute Attribute) const
Find a value in the DIE with the attribute given.
 
LLVM_ABI void print(raw_ostream &O, unsigned IndentCount=0) const
 
unsigned getAbbrevNumber() const
 
LLVM_ABI DIEAbbrev generateAbbrev() const
Generate the abbreviation for this DIE.
 
LLVM_ABI unsigned computeOffsetsAndAbbrevs(const dwarf::FormParams &FormParams, DIEAbbrevSet &AbbrevSet, unsigned CUOffset)
Compute the offset of this DIE and all its children.
 
LLVM_ABI DIEUnit * getUnit() const
Climb up the parent chain to get the compile unit or type unit that this DIE belongs to.
 
LLVM_ABI const DIE * getUnitDie() const
Climb up the parent chain to get the compile unit or type unit DIE that this DIE belongs to.
 
void setAbbrevNumber(unsigned I)
Set the abbreviation number for this DIE.
 
unsigned getOffset() const
Get the compile/type unit relative offset of this DIE.
 
void setOffset(unsigned O)
 
LLVM_ABI uint64_t getDebugSectionOffset() const
Get the absolute offset within the .debug_info or .debug_types section for this DIE.
 
dwarf::Tag getTag() const
 
LLVM_ABI void dump() const
 
LLVM_ABI DIE * getParent() const
 
const List & getList(size_t LI) const
 
Collects and handles dwarf debug information.
 
const DebugLocStream & getDebugLocs() const
Returns the entries for the .debug_loc section.
 
bool useSplitDwarf() const
Returns whether or not to change the current debug info for the split dwarf proposal support.
 
FoldingSetNodeID - This class is used to gather all the unique data bits of a node.
 
This class is intended to be used as a base class for asm properties and features specific to the tar...
 
void printExpr(raw_ostream &, const MCExpr &) const
 
Instances of this class represent a uniqued identifier for a section in the current translation unit.
 
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
 
StringRef - Represent a constant reference to a string, i.e.
 
The instances of the Type class are immutable: once they are created, they are never changed.
 
This class implements an extremely fast bulk output stream that can only output to a stream.
 
LLVM_ABI StringRef AttributeString(unsigned Attribute)
 
LLVM_ABI StringRef FormEncodingString(unsigned Encoding)
 
LLVM_ABI StringRef ChildrenString(unsigned Children)
 
LLVM_ABI StringRef TagString(unsigned Tag)
 
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
 
unsigned ID
LLVM IR allows to use arbitrary numbers as calling convention identifiers.
 
LLVM_ABI bool isValidFormForVersion(Form F, unsigned Version, bool ExtensionsOk=true)
Tells whether the specified form is defined in the specified version, or is an extension if extension...
 
LLVM_ABI std::optional< uint8_t > getFixedFormByteSize(dwarf::Form Form, FormParams Params)
Get the fixed byte size for a given form.
 
This is an optimization pass for GlobalISel generic memory operations.
 
auto dyn_cast_if_present(const Y &Val)
dyn_cast_if_present<X> - Functionally identical to dyn_cast, except that a null (or none in the case ...
 
LLVM_ABI raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
 
format_object< Ts... > format(const char *Fmt, const Ts &... Vals)
These are helper functions used to produce formatted output.
 
LLVM_ABI unsigned getULEB128Size(uint64_t Value)
Utility function to get the size of the ULEB128-encoded value.
 
LLVM_ABI unsigned getSLEB128Size(int64_t Value)
Utility function to get the size of the SLEB128-encoded value.