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
- 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
- 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