| //===------------ DebugInfo.h - LLVM C API Debug Info API -----------------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| /// |
| /// This file declares the C API endpoints for generating DWARF Debug Info |
| /// |
| /// Note: This interface is experimental. It is *NOT* stable, and may be |
| /// changed without warning. |
| /// |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_C_DEBUGINFO_H |
| #define LLVM_C_DEBUGINFO_H |
| |
| #include "llvm-c/Core.h" |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /** |
| * Debug info flags. |
| */ |
| typedef enum { |
| LLVMDIFlagZero = 0, |
| LLVMDIFlagPrivate = 1, |
| LLVMDIFlagProtected = 2, |
| LLVMDIFlagPublic = 3, |
| LLVMDIFlagFwdDecl = 1 << 2, |
| LLVMDIFlagAppleBlock = 1 << 3, |
| LLVMDIFlagBlockByrefStruct = 1 << 4, |
| LLVMDIFlagVirtual = 1 << 5, |
| LLVMDIFlagArtificial = 1 << 6, |
| LLVMDIFlagExplicit = 1 << 7, |
| LLVMDIFlagPrototyped = 1 << 8, |
| LLVMDIFlagObjcClassComplete = 1 << 9, |
| LLVMDIFlagObjectPointer = 1 << 10, |
| LLVMDIFlagVector = 1 << 11, |
| LLVMDIFlagStaticMember = 1 << 12, |
| LLVMDIFlagLValueReference = 1 << 13, |
| LLVMDIFlagRValueReference = 1 << 14, |
| LLVMDIFlagReserved = 1 << 15, |
| LLVMDIFlagSingleInheritance = 1 << 16, |
| LLVMDIFlagMultipleInheritance = 2 << 16, |
| LLVMDIFlagVirtualInheritance = 3 << 16, |
| LLVMDIFlagIntroducedVirtual = 1 << 18, |
| LLVMDIFlagBitField = 1 << 19, |
| LLVMDIFlagNoReturn = 1 << 20, |
| LLVMDIFlagMainSubprogram = 1 << 21, |
| LLVMDIFlagTypePassByValue = 1 << 22, |
| LLVMDIFlagTypePassByReference = 1 << 23, |
| LLVMDIFlagIndirectVirtualBase = (1 << 2) | (1 << 5), |
| LLVMDIFlagAccessibility = LLVMDIFlagPrivate | LLVMDIFlagProtected | |
| LLVMDIFlagPublic, |
| LLVMDIFlagPtrToMemberRep = LLVMDIFlagSingleInheritance | |
| LLVMDIFlagMultipleInheritance | |
| LLVMDIFlagVirtualInheritance |
| } LLVMDIFlags; |
| |
| /** |
| * Source languages known by DWARF. |
| */ |
| typedef enum { |
| LLVMDWARFSourceLanguageC89, |
| LLVMDWARFSourceLanguageC, |
| LLVMDWARFSourceLanguageAda83, |
| LLVMDWARFSourceLanguageC_plus_plus, |
| LLVMDWARFSourceLanguageCobol74, |
| LLVMDWARFSourceLanguageCobol85, |
| LLVMDWARFSourceLanguageFortran77, |
| LLVMDWARFSourceLanguageFortran90, |
| LLVMDWARFSourceLanguagePascal83, |
| LLVMDWARFSourceLanguageModula2, |
| // New in DWARF v3: |
| LLVMDWARFSourceLanguageJava, |
| LLVMDWARFSourceLanguageC99, |
| LLVMDWARFSourceLanguageAda95, |
| LLVMDWARFSourceLanguageFortran95, |
| LLVMDWARFSourceLanguagePLI, |
| LLVMDWARFSourceLanguageObjC, |
| LLVMDWARFSourceLanguageObjC_plus_plus, |
| LLVMDWARFSourceLanguageUPC, |
| LLVMDWARFSourceLanguageD, |
| // New in DWARF v4: |
| LLVMDWARFSourceLanguagePython, |
| // New in DWARF v5: |
| LLVMDWARFSourceLanguageOpenCL, |
| LLVMDWARFSourceLanguageGo, |
| LLVMDWARFSourceLanguageModula3, |
| LLVMDWARFSourceLanguageHaskell, |
| LLVMDWARFSourceLanguageC_plus_plus_03, |
| LLVMDWARFSourceLanguageC_plus_plus_11, |
| LLVMDWARFSourceLanguageOCaml, |
| LLVMDWARFSourceLanguageRust, |
| LLVMDWARFSourceLanguageC11, |
| LLVMDWARFSourceLanguageSwift, |
| LLVMDWARFSourceLanguageJulia, |
| LLVMDWARFSourceLanguageDylan, |
| LLVMDWARFSourceLanguageC_plus_plus_14, |
| LLVMDWARFSourceLanguageFortran03, |
| LLVMDWARFSourceLanguageFortran08, |
| LLVMDWARFSourceLanguageRenderScript, |
| LLVMDWARFSourceLanguageBLISS, |
| // Vendor extensions: |
| LLVMDWARFSourceLanguageMips_Assembler, |
| LLVMDWARFSourceLanguageGOOGLE_RenderScript, |
| LLVMDWARFSourceLanguageBORLAND_Delphi |
| } LLVMDWARFSourceLanguage; |
| |
| /** |
| * The amount of debug information to emit. |
| */ |
| typedef enum { |
| LLVMDWARFEmissionNone = 0, |
| LLVMDWARFEmissionFull, |
| LLVMDWARFEmissionLineTablesOnly |
| } LLVMDWARFEmissionKind; |
| |
| /** |
| * An LLVM DWARF type encoding. |
| */ |
| typedef unsigned LLVMDWARFTypeEncoding; |
| |
| /** |
| * The current debug metadata version number. |
| */ |
| unsigned LLVMDebugMetadataVersion(void); |
| |
| /** |
| * The version of debug metadata that's present in the provided \c Module. |
| */ |
| unsigned LLVMGetModuleDebugMetadataVersion(LLVMModuleRef Module); |
| |
| /** |
| * Strip debug info in the module if it exists. |
| * To do this, we remove all calls to the debugger intrinsics and any named |
| * metadata for debugging. We also remove debug locations for instructions. |
| * Return true if module is modified. |
| */ |
| LLVMBool LLVMStripModuleDebugInfo(LLVMModuleRef Module); |
| |
| /** |
| * Construct a builder for a module, and do not allow for unresolved nodes |
| * attached to the module. |
| */ |
| LLVMDIBuilderRef LLVMCreateDIBuilderDisallowUnresolved(LLVMModuleRef M); |
| |
| /** |
| * Construct a builder for a module and collect unresolved nodes attached |
| * to the module in order to resolve cycles during a call to |
| * \c LLVMDIBuilderFinalize. |
| */ |
| LLVMDIBuilderRef LLVMCreateDIBuilder(LLVMModuleRef M); |
| |
| /** |
| * Deallocates the \c DIBuilder and everything it owns. |
| * @note You must call \c LLVMDIBuilderFinalize before this |
| */ |
| void LLVMDisposeDIBuilder(LLVMDIBuilderRef Builder); |
| |
| /** |
| * Construct any deferred debug info descriptors. |
| */ |
| void LLVMDIBuilderFinalize(LLVMDIBuilderRef Builder); |
| |
| /** |
| * A CompileUnit provides an anchor for all debugging |
| * information generated during this instance of compilation. |
| * \param Lang Source programming language, eg. |
| * \c LLVMDWARFSourceLanguageC99 |
| * \param FileRef File info. |
| * \param Producer Identify the producer of debugging information |
| * and code. Usually this is a compiler |
| * version string. |
| * \param ProducerLen The length of the C string passed to \c Producer. |
| * \param isOptimized A boolean flag which indicates whether optimization |
| * is enabled or not. |
| * \param Flags This string lists command line options. This |
| * string is directly embedded in debug info |
| * output which may be used by a tool |
| * analyzing generated debugging information. |
| * \param FlagsLen The length of the C string passed to \c Flags. |
| * \param RuntimeVer This indicates runtime version for languages like |
| * Objective-C. |
| * \param SplitName The name of the file that we'll split debug info |
| * out into. |
| * \param SplitNameLen The length of the C string passed to \c SplitName. |
| * \param Kind The kind of debug information to generate. |
| * \param DWOId The DWOId if this is a split skeleton compile unit. |
| * \param SplitDebugInlining Whether to emit inline debug info. |
| * \param DebugInfoForProfiling Whether to emit extra debug info for |
| * profile collection. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateCompileUnit( |
| LLVMDIBuilderRef Builder, LLVMDWARFSourceLanguage Lang, |
| LLVMMetadataRef FileRef, const char *Producer, size_t ProducerLen, |
| LLVMBool isOptimized, const char *Flags, size_t FlagsLen, |
| unsigned RuntimeVer, const char *SplitName, size_t SplitNameLen, |
| LLVMDWARFEmissionKind Kind, unsigned DWOId, LLVMBool SplitDebugInlining, |
| LLVMBool DebugInfoForProfiling); |
| |
| /** |
| * Create a file descriptor to hold debugging information for a file. |
| * \param Builder The \c DIBuilder. |
| * \param Filename File name. |
| * \param FilenameLen The length of the C string passed to \c Filename. |
| * \param Directory Directory. |
| * \param DirectoryLen The length of the C string passed to \c Directory. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateFile(LLVMDIBuilderRef Builder, const char *Filename, |
| size_t FilenameLen, const char *Directory, |
| size_t DirectoryLen); |
| |
| /** |
| * Create a new descriptor for the specified subprogram. |
| * \param Builder The \c DIBuilder. |
| * \param Scope Function scope. |
| * \param Name Function name. |
| * \param NameLen Length of enumeration name. |
| * \param LinkageName Mangled function name. |
| * \param LinkageNameLen Length of linkage name. |
| * \param File File where this variable is defined. |
| * \param LineNo Line number. |
| * \param Ty Function type. |
| * \param IsLocalToUnit True if this function is not externally visible. |
| * \param IsDefinition True if this is a function definition. |
| * \param ScopeLine Set to the beginning of the scope this starts |
| * \param Flags E.g.: \c LLVMDIFlagLValueReference. These flags are |
| * used to emit dwarf attributes. |
| * \param IsOptimized True if optimization is ON. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateFunction( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, |
| size_t NameLen, const char *LinkageName, size_t LinkageNameLen, |
| LLVMMetadataRef File, unsigned LineNo, LLVMMetadataRef Ty, |
| LLVMBool IsLocalToUnit, LLVMBool IsDefinition, |
| unsigned ScopeLine, LLVMDIFlags Flags, LLVMBool IsOptimized); |
| |
| /** |
| * Create a descriptor for a lexical block with the specified parent context. |
| * \param Builder The \c DIBuilder. |
| * \param Scope Parent lexical block. |
| * \param File Source file. |
| * \param Line The line in the source file. |
| * \param Column The column in the source file. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateLexicalBlock( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, |
| LLVMMetadataRef File, unsigned Line, unsigned Column); |
| |
| /** |
| * Create a descriptor for a lexical block with a new file attached. |
| * \param Builder The \c DIBuilder. |
| * \param Scope Lexical block. |
| * \param File Source file. |
| * \param Discriminator DWARF path discriminator value. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateLexicalBlockFile(LLVMDIBuilderRef Builder, |
| LLVMMetadataRef Scope, |
| LLVMMetadataRef File, |
| unsigned Discriminator); |
| |
| /** |
| * Creates a new DebugLocation that describes a source location. |
| * \param Line The line in the source file. |
| * \param Column The column in the source file. |
| * \param Scope The scope in which the location resides. |
| * \param InlinedAt The scope where this location was inlined, if at all. |
| * (optional). |
| * \note If the item to which this location is attached cannot be |
| * attributed to a source line, pass 0 for the line and column. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateDebugLocation(LLVMContextRef Ctx, unsigned Line, |
| unsigned Column, LLVMMetadataRef Scope, |
| LLVMMetadataRef InlinedAt); |
| |
| /** |
| * Create subroutine type. |
| * \param Builder The DIBuilder. |
| * \param File The file in which the subroutine resides. |
| * \param ParameterTypes An array of subroutine parameter types. This |
| * includes return type at 0th index. |
| * \param NumParameterTypes The number of parameter types in \c ParameterTypes |
| * \param Flags E.g.: \c LLVMDIFlagLValueReference. |
| * These flags are used to emit dwarf attributes. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateSubroutineType(LLVMDIBuilderRef Builder, |
| LLVMMetadataRef File, |
| LLVMMetadataRef *ParameterTypes, |
| unsigned NumParameterTypes, |
| LLVMDIFlags Flags); |
| |
| /** |
| * Create debugging information entry for an enumeration. |
| * \param Builder The DIBuilder. |
| * \param Scope Scope in which this enumeration is defined. |
| * \param Name Enumeration name. |
| * \param NameLen Length of enumeration name. |
| * \param File File where this member is defined. |
| * \param LineNumber Line number. |
| * \param SizeInBits Member size. |
| * \param AlignInBits Member alignment. |
| * \param Elements Enumeration elements. |
| * \param NumElements Number of enumeration elements. |
| * \param ClassTy Underlying type of a C++11/ObjC fixed enum. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateEnumerationType( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, |
| unsigned SizeInBits, unsigned AlignInBits, LLVMMetadataRef *Elements, |
| unsigned NumElements, LLVMMetadataRef ClassTy); |
| |
| /** |
| * Create debugging information entry for a union. |
| * \param Builder The DIBuilder. |
| * \param Scope Scope in which this union is defined. |
| * \param Name Union name. |
| * \param NameLen Length of union name. |
| * \param File File where this member is defined. |
| * \param LineNumber Line number. |
| * \param SizeInBits Member size. |
| * \param AlignInBits Member alignment. |
| * \param Flags Flags to encode member attribute, e.g. private |
| * \param Elements Union elements. |
| * \param NumElements Number of union elements. |
| * \param RunTimeLang Optional parameter, Objective-C runtime version. |
| * \param UniqueId A unique identifier for the union. |
| * \param UniqueIdLen Length of unique identifier. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateUnionType( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, |
| unsigned SizeInBits, unsigned AlignInBits, LLVMDIFlags Flags, |
| LLVMMetadataRef *Elements, unsigned NumElements, unsigned RunTimeLang, |
| const char *UniqueId, size_t UniqueIdLen); |
| |
| |
| /** |
| * Create debugging information entry for an array. |
| * \param Builder The DIBuilder. |
| * \param Size Array size. |
| * \param AlignInBits Alignment. |
| * \param Ty Element type. |
| * \param Subscripts Subscripts. |
| * \param NumSubscripts Number of subscripts. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateArrayType(LLVMDIBuilderRef Builder, unsigned Size, |
| unsigned AlignInBits, LLVMMetadataRef Ty, |
| LLVMMetadataRef *Subscripts, |
| unsigned NumSubscripts); |
| |
| /** |
| * Create debugging information entry for a vector type. |
| * \param Builder The DIBuilder. |
| * \param Size Vector size. |
| * \param AlignInBits Alignment. |
| * \param Ty Element type. |
| * \param Subscripts Subscripts. |
| * \param NumSubscripts Number of subscripts. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateVectorType(LLVMDIBuilderRef Builder, unsigned Size, |
| unsigned AlignInBits, LLVMMetadataRef Ty, |
| LLVMMetadataRef *Subscripts, |
| unsigned NumSubscripts); |
| |
| /** |
| * Create a DWARF unspecified type. |
| * \param Builder The DIBuilder. |
| * \param Name The unspecified type's name. |
| * \param NameLen Length of type name. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateUnspecifiedType(LLVMDIBuilderRef Builder, const char *Name, |
| size_t NameLen); |
| |
| /** |
| * Create debugging information entry for a basic |
| * type. |
| * \param Builder The DIBuilder. |
| * \param Name Type name. |
| * \param NameLen Length of type name. |
| * \param SizeInBits Size of the type. |
| * \param Encoding DWARF encoding code, e.g. \c LLVMDWARFTypeEncoding_float. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateBasicType(LLVMDIBuilderRef Builder, const char *Name, |
| size_t NameLen, unsigned SizeInBits, |
| LLVMDWARFTypeEncoding Encoding); |
| |
| /** |
| * Create debugging information entry for a pointer. |
| * \param Builder The DIBuilder. |
| * \param PointeeTy Type pointed by this pointer. |
| * \param SizeInBits Size. |
| * \param AlignInBits Alignment. (optional, pass 0 to ignore) |
| * \param AddressSpace DWARF address space. (optional, pass 0 to ignore) |
| * \param Name Pointer type name. (optional) |
| * \param NameLen Length of pointer type name. (optional) |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreatePointerType( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef PointeeTy, |
| unsigned SizeInBits, unsigned AlignInBits, unsigned AddressSpace, |
| const char *Name, size_t NameLen); |
| |
| /** |
| * Create debugging information entry for a struct. |
| * \param Builder The DIBuilder. |
| * \param Scope Scope in which this struct is defined. |
| * \param Name Struct name. |
| * \param NameLen Struct name length. |
| * \param File File where this member is defined. |
| * \param LineNumber Line number. |
| * \param SizeInBits Member size. |
| * \param AlignInBits Member alignment. |
| * \param Flags Flags to encode member attribute, e.g. private |
| * \param Elements Struct elements. |
| * \param NumElements Number of struct elements. |
| * \param RunTimeLang Optional parameter, Objective-C runtime version. |
| * \param VTableHolder The object containing the vtable for the struct. |
| * \param UniqueId A unique identifier for the struct. |
| * \param UniqueIdLen Length of the unique identifier for the struct. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateStructType( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, |
| unsigned SizeInBits, unsigned AlignInBits, LLVMDIFlags Flags, |
| LLVMMetadataRef DerivedFrom, LLVMMetadataRef *Elements, |
| unsigned NumElements, unsigned RunTimeLang, LLVMMetadataRef VTableHolder, |
| const char *UniqueId, size_t UniqueIdLen); |
| |
| /** |
| * Create debugging information entry for a member. |
| * \param Builder The DIBuilder. |
| * \param Scope Member scope. |
| * \param Name Member name. |
| * \param NameLen Length of member name. |
| * \param File File where this member is defined. |
| * \param LineNo Line number. |
| * \param SizeInBits Member size. |
| * \param AlignInBits Member alignment. |
| * \param OffsetInBits Member offset. |
| * \param Flags Flags to encode member attribute, e.g. private |
| * \param Ty Parent type. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateMemberType( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNo, |
| unsigned SizeInBits, unsigned AlignInBits, unsigned OffsetInBits, |
| LLVMDIFlags Flags, LLVMMetadataRef Ty); |
| |
| /** |
| * Create debugging information entry for a |
| * C++ static data member. |
| * \param Builder The DIBuilder. |
| * \param Scope Member scope. |
| * \param Name Member name. |
| * \param NameLen Length of member name. |
| * \param File File where this member is declared. |
| * \param LineNumber Line number. |
| * \param Type Type of the static member. |
| * \param Flags Flags to encode member attribute, e.g. private. |
| * \param ConstantVal Const initializer of the member. |
| * \param AlignInBits Member alignment. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateStaticMemberType( |
| LLVMDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, |
| size_t NameLen, LLVMMetadataRef File, unsigned LineNumber, |
| LLVMMetadataRef Type, LLVMDIFlags Flags, LLVMValueRef ConstantVal, |
| unsigned AlignInBits); |
| |
| /** |
| * Create debugging information entry for a pointer to member. |
| * \param Builder The DIBuilder. |
| * \param PointeeType Type pointed to by this pointer. |
| * \param ClassType Type for which this pointer points to members of. |
| * \param SizeInBits Size. |
| * \param AlignInBits Alignment. |
| * \param Flags Flags. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateMemberPointerType(LLVMDIBuilderRef Builder, |
| LLVMMetadataRef PointeeType, |
| LLVMMetadataRef ClassType, |
| unsigned SizeInBits, |
| unsigned AlignInBits, |
| LLVMDIFlags Flags); |
| |
| /** |
| * Create a new DIType* with the "object pointer" |
| * flag set. |
| * \param Builder The DIBuilder. |
| * \param Type The underlying type to which this pointer points. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateObjectPointerType(LLVMDIBuilderRef Builder, |
| LLVMMetadataRef Type); |
| |
| /** |
| * Create debugging information entry for a qualified |
| * type, e.g. 'const int'. |
| * \param Builder The DIBuilder. |
| * \param Tag Tag identifying type, |
| * e.g. LLVMDWARFTypeQualifier_volatile_type |
| * \param Type Base Type. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateQualifiedType(LLVMDIBuilderRef Builder, unsigned Tag, |
| LLVMMetadataRef Type); |
| |
| /** |
| * Create debugging information entry for a c++ |
| * style reference or rvalue reference type. |
| * \param Builder The DIBuilder. |
| * \param Tag Tag identifying type, |
| * \param Type Base Type. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateReferenceType(LLVMDIBuilderRef Builder, unsigned Tag, |
| LLVMMetadataRef Type); |
| |
| /** |
| * Create C++11 nullptr type. |
| * \param Builder The DIBuilder. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateNullPtrType(LLVMDIBuilderRef Builder); |
| |
| /** |
| * Create a temporary forward-declared type. |
| * \param Builder The DIBuilder. |
| * \param Tag A unique tag for this type. |
| * \param Name Type name. |
| * \param NameLen Length of type name. |
| * \param Scope Type scope. |
| * \param File File where this type is defined. |
| * \param Line Line number where this type is defined. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateReplaceableCompositeType( |
| LLVMDIBuilderRef Builder, unsigned Tag, const char *Name, |
| size_t NameLen, LLVMMetadataRef Scope, LLVMMetadataRef File, unsigned Line, |
| unsigned RuntimeLang, unsigned SizeInBits, unsigned AlignInBits, |
| LLVMDIFlags Flags, const char *UniqueIdentifier, |
| size_t UniqueIdentifierLen); |
| |
| /** |
| * Create debugging information entry for a bit field member. |
| * \param Builder The DIBuilder. |
| * \param Scope Member scope. |
| * \param Name Member name. |
| * \param NameLen Length of member name. |
| * \param File File where this member is defined. |
| * \param LineNumber Line number. |
| * \param SizeInBits Member size. |
| * \param OffsetInBits Member offset. |
| * \param StorageOffsetInBits Member storage offset. |
| * \param Flags Flags to encode member attribute. |
| * \param Type Parent type. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateBitFieldMemberType(LLVMDIBuilderRef Builder, |
| LLVMMetadataRef Scope, |
| const char *Name, size_t NameLen, |
| LLVMMetadataRef File, unsigned LineNumber, |
| unsigned SizeInBits, |
| unsigned OffsetInBits, |
| unsigned StorageOffsetInBits, |
| LLVMDIFlags Flags, LLVMMetadataRef Type); |
| |
| /** |
| * Create debugging information entry for a class. |
| * \param Scope Scope in which this class is defined. |
| * \param Name class name. |
| * \param File File where this member is defined. |
| * \param LineNumber Line number. |
| * \param SizeInBits Member size. |
| * \param AlignInBits Member alignment. |
| * \param OffsetInBits Member offset. |
| * \param Flags Flags to encode member attribute, e.g. private |
| * \param Elements class members. |
| * \param NumElements Number of class elements. |
| * \param DerivedFrom Debug info of the base class of this type. |
| * \param TemplateParamsNode Template type parameters. |
| */ |
| LLVMMetadataRef LLVMDIBuilderCreateClassType(LLVMDIBuilderRef Builder, |
| LLVMMetadataRef Scope, const char *Name, size_t NameLen, |
| LLVMMetadataRef File, unsigned LineNumber, unsigned SizeInBits, |
| unsigned AlignInBits, unsigned OffsetInBits, LLVMDIFlags Flags, |
| LLVMMetadataRef *Elements, unsigned NumElements, |
| LLVMMetadataRef DerivedFrom, LLVMMetadataRef TemplateParamsNode); |
| |
| /** |
| * Create a new DIType* with "artificial" flag set. |
| * \param Builder The DIBuilder. |
| * \param Type The underlying type. |
| */ |
| LLVMMetadataRef |
| LLVMDIBuilderCreateArtificialType(LLVMDIBuilderRef Builder, |
| LLVMMetadataRef Type); |
| |
| /** |
| * Get the metadata of the subprogram attached to a function. |
| * |
| * @see llvm::Function::getSubprogram() |
| */ |
| LLVMMetadataRef LLVMGetSubprogram(LLVMValueRef Func); |
| |
| /** |
| * Set the subprogram attached to a function. |
| * |
| * @see llvm::Function::setSubprogram() |
| */ |
| void LLVMSetSubprogram(LLVMValueRef Func, LLVMMetadataRef SP); |
| |
| #ifdef __cplusplus |
| } /* end extern "C" */ |
| #endif |
| |
| #endif |