Table of Contents

Namespace Ubiquity.NET.Llvm.DebugInfo

This namespace contains all the support for the LLVM representation of debugging information.

Differences from previous release

A critical difference is that a Module does NOT own a DIBuilder That was a customized extension that was more accidental as a result of the former releases using object interning. However, once that was removed it was found that Module instances were attempting to hold fields or properties of things that were NOT part of the underlying native object. So, the pattern of use was changed to better match how the underlying LLVM API worked. In particular a DIBuilder is a ref struct that is ONLY allowed on the stack as it is intended for short term use. It can (and does) own a DICompileUnit and it can reference the module it was created from. Since it is a ref struct it is not allowed to store instances of a DIBuilder in the heap in any way. (Kaleidoscope Chapter 9 provides a sample of use in a visitor pattern where the instance is provided as an in parameter to ref readonly functions. This ability was added to the visitor pattern specifically for this case.)

Classes

DIBasicType

Debug information for a basic type

DIBuilder

DIBuilder is a factory class for creating DebugInformation for an LLVM Module

DICompileUnit

Debug Information Compile Unit, which acts as the containing parent for debug information in a module

DICompositeType

Debug information for a composite type

DICompositeTypeArray

Array of DICompositeType debug information nodes for use with DIBuilder methods

DIDerivedType

Derived type

DIEnumerator

Debug Information for a name value par of an enumerated type

DIExpression

Debug information expression

DIFile

Debug information for a source file

DIGlobalVariable

Debug information for a global variable

DIGlobalVariableExpression

Debug Global variable expression

DIGlobalVariableExpressionArray

Array of DIGlobalVariableExpression debug information nodes for use with DIBuilder methods

DIImportedEntity

Debug information from an imported entity

DIImportedEntityArray

Array of DIImportedEntity debug information nodes for use with DIBuilder methods

DILexicalBlock

Debug information for a Lexical block

DILexicalBlockBase

Base for lexical blocks

DILexicalBlockFile

Debug information for a file lexical block

DILocalScope

Legal scope for lexical blocks, local variables, and debug info locations

DILocalVariable

Debug information for a local variable

DILocalVariableArray

Array of DILocalVariable nodes for use with see DIBuilder methods

DILocation

Debug source location information

DIMacro

Pre-Processor macro

DIMacroFile

Macro file included by a unit

DIMacroNode

Base class for macro related nodes in the debug hierarchy

DIMacroNodeArray

Array of DIMacroNode debug information nodes for use with DIBuilder methods

DIModule

A source module that is imported by a compile unit

DINamespace

Debug information namespace scope

DINode

Root of the object hierarchy for Debug information metadata nodes

DINodeArray

Array of DINode debug information nodes for use with DIBuilder methods

DIObjCProperty

Objective-C Property

DIScope

Base class for all Debug information scopes

DIScopeArray

Array of DIScope debug information nodes for use with DIBuilder methods

DISubProgram

Debug information for a SubProgram

DISubRange

Sub range

DISubroutineType

Debug information for a function signature

DITemplateParameter

Base class for template parameter information

DITemplateParameterArray

Array of DITemplateParameter nodes for use with see DIBuilder methods

DITemplateTypeParameter

Template type parameter

DITemplateValueParameter

Template Value parameter

DIType

Base class for Debug info types

DITypeArray

Array of DIType nodes for use with see DIBuilder methods

DIVariable

Debug information for a variable

DebugArrayType

Provides debug information binding between an IArrayType and a DICompositeType

DebugBasicType

Debug information binding between an LLVM native ITypeRef and a DIBasicType

DebugFunctionType

This class provides debug information binding for an IFunctionType and a DISubroutineType

DebugMemberInfo

Describes a member/field of a type for creating debug information

DebugMemberLayout

DebugMemberLayout is used to define custom layout information for structure members

DebugPointerType

Binding between a DIType and an IPointerType

DebugStructType

Debug information for a structure type

DebugType

Utility class to provide mix-in type extensions and support for Debug Types

DebugType<TNative, TDebug>

Base class for Debug types bound with an LLVM type

DebugUnionType

Debug representation of a union type

GenericDINode

Generic tagged DWARF-like IrMetadata node

TupleTypedArrayWrapper<T>

Generic wrapper to treat an MDTuple as an array of elements of a specific type

Structs

DebugRecord

Managed wrapper for the new LLVM Debug Record format

Interfaces

IDIBuilder

DIBuilder is a factory class for creating DebugInformation for an LLVM Module

IDebugType<TNative, TDebug>

Provides pairing of a ITypeRef with a DebugInfoType for function signatures

Enums

DebugInfoFlags

Debug information flags

DiTypeKind

Primitive type supported by the debug information

DwarfEmissionKind

Defines the amount of debug information to emit

ExpressionOp

Debug information expression operator

MacroKind

Describes the kind of macro declaration

QualifiedTypeTag

Tags for qualified types

SourceLanguage

DWARF Debug information language

Tag