| (*===-- llvm_debuginfo.ml - LLVM OCaml Interface --------------*- OCaml -*-===* |
| * |
| * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| * See https://llvm.org/LICENSE.txt for license information. |
| * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| * |
| *===----------------------------------------------------------------------===*) |
| |
| type lldibuilder |
| |
| (** Source languages known by DWARF. *) |
| module DWARFSourceLanguageKind = struct |
| type t = |
| | C89 |
| | C |
| | Ada83 |
| | C_plus_plus |
| | Cobol74 |
| | Cobol85 |
| | Fortran77 |
| | Fortran90 |
| | Pascal83 |
| | Modula2 |
| (* New in DWARF v3: *) |
| | LLVMJava |
| | C99 |
| | Ada95 |
| | Fortran95 |
| | PLI |
| | ObjC |
| | ObjC_plus_plus |
| | UPC |
| | D |
| (* New in DWARF v4: *) |
| | LLVMPython |
| (* New in DWARF v5: *) |
| | LLVMOpenCL |
| | Go |
| | Modula3 |
| | Haskell |
| | C_plus_plus_03 |
| | C_plus_plus_11 |
| | OCaml |
| | Rust |
| | C11 |
| | Swift |
| | Julia |
| | Dylan |
| | C_plus_plus_14 |
| | Fortran03 |
| | Fortran08 |
| | RenderScript |
| | BLISS |
| (* Vendor extensions: *) |
| | LLVMMips_Assembler |
| | GOOGLE_RenderScript |
| | BORLAND_Delphi |
| end |
| |
| module DIFlag = struct |
| type t = |
| | Zero |
| | Private |
| | Protected |
| | Public |
| | FwdDecl |
| | AppleBlock |
| | ReservedBit4 |
| | Virtual |
| | Artificial |
| | Explicit |
| | Prototyped |
| | ObjcClassComplete |
| | ObjectPointer |
| | Vector |
| | StaticMember |
| | LValueReference |
| | RValueReference |
| | Reserved |
| | SingleInheritance |
| | MultipleInheritance |
| | VirtualInheritance |
| | IntroducedVirtual |
| | BitField |
| | NoReturn |
| | TypePassByValue |
| | TypePassByReference |
| | EnumClass |
| | FixedEnum |
| | Thunk |
| | NonTrivial |
| | BigEndian |
| | LittleEndian |
| | IndirectVirtualBase |
| | Accessibility |
| | PtrToMemberRep |
| end |
| |
| type lldiflags |
| |
| external diflags_get : DIFlag.t -> lldiflags = "llvm_diflags_get" |
| |
| external diflags_set : lldiflags -> DIFlag.t -> lldiflags = "llvm_diflags_set" |
| |
| external diflags_test : lldiflags -> DIFlag.t -> bool = "llvm_diflags_test" |
| |
| (** The kind of metadata nodes. *) |
| module MetadataKind = struct |
| type t = |
| | MDStringMetadataKind |
| | ConstantAsMetadataMetadataKind |
| | LocalAsMetadataMetadataKind |
| | DistinctMDOperandPlaceholderMetadataKind |
| | MDTupleMetadataKind |
| | DILocationMetadataKind |
| | DIExpressionMetadataKind |
| | DIGlobalVariableExpressionMetadataKind |
| | GenericDINodeMetadataKind |
| | DISubrangeMetadataKind |
| | DIEnumeratorMetadataKind |
| | DIBasicTypeMetadataKind |
| | DIDerivedTypeMetadataKind |
| | DICompositeTypeMetadataKind |
| | DISubroutineTypeMetadataKind |
| | DIFileMetadataKind |
| | DICompileUnitMetadataKind |
| | DISubprogramMetadataKind |
| | DILexicalBlockMetadataKind |
| | DILexicalBlockFileMetadataKind |
| | DINamespaceMetadataKind |
| | DIModuleMetadataKind |
| | DITemplateTypeParameterMetadataKind |
| | DITemplateValueParameterMetadataKind |
| | DIGlobalVariableMetadataKind |
| | DILocalVariableMetadataKind |
| | DILabelMetadataKind |
| | DIObjCPropertyMetadataKind |
| | DIImportedEntityMetadataKind |
| | DIMacroMetadataKind |
| | DIMacroFileMetadataKind |
| | DICommonBlockMetadataKind |
| end |
| |
| (** The amount of debug information to emit. *) |
| module DWARFEmissionKind = struct |
| type t = None | Full | LineTablesOnly |
| end |
| |
| external debug_metadata_version : unit -> int = "llvm_debug_metadata_version" |
| |
| external get_module_debug_metadata_version : Llvm.llmodule -> int |
| = "llvm_get_module_debug_metadata_version" |
| |
| external dibuilder : Llvm.llmodule -> lldibuilder = "llvm_dibuilder" |
| |
| external dibuild_finalize : lldibuilder -> unit = "llvm_dibuild_finalize" |
| |
| (* See LLVMDIBuilderCreateCompileUnit for argument details. *) |
| external dibuild_create_compile_unit : |
| lldibuilder -> |
| DWARFSourceLanguageKind.t -> |
| file_ref:Llvm.llmetadata -> |
| producer:string -> |
| is_optimized:bool -> |
| flags:string -> |
| runtime_ver:int -> |
| split_name:string -> |
| DWARFEmissionKind.t -> |
| dwoid:int -> |
| di_inlining:bool -> |
| di_profiling:bool -> |
| sys_root:string -> |
| sdk:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_compile_unit_bytecode" "llvm_dibuild_create_compile_unit_native" |
| |
| external dibuild_create_file : |
| lldibuilder -> filename:string -> directory:string -> Llvm.llmetadata |
| = "llvm_dibuild_create_file" |
| |
| external dibuild_create_module : |
| lldibuilder -> |
| parent_ref:Llvm.llmetadata -> |
| name:string -> |
| config_macros:string -> |
| include_path:string -> |
| sys_root:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_module_bytecode" "llvm_dibuild_create_module_native" |
| |
| external dibuild_create_namespace : |
| lldibuilder -> |
| parent_ref:Llvm.llmetadata -> |
| name:string -> |
| export_symbols:bool -> |
| Llvm.llmetadata = "llvm_dibuild_create_namespace" |
| |
| external dibuild_create_function : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| linkage_name:string -> |
| file:Llvm.llmetadata -> |
| line_no:int -> |
| ty:Llvm.llmetadata -> |
| is_local_to_unit:bool -> |
| is_definition:bool -> |
| scope_line:int -> |
| flags:lldiflags -> |
| is_optimized:bool -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_function_bytecode" "llvm_dibuild_create_function_native" |
| |
| external dibuild_create_lexical_block : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| file:Llvm.llmetadata -> |
| line:int -> |
| column:int -> |
| Llvm.llmetadata = "llvm_dibuild_create_lexical_block" |
| |
| external dibuild_create_debug_location_helper : |
| Llvm.llcontext -> |
| line:int -> |
| column:int -> |
| scope:Llvm.llmetadata -> |
| inlined_at:Llvm.llmetadata -> |
| Llvm.llmetadata = "llvm_dibuild_create_debug_location" |
| |
| external llmetadata_null : unit -> Llvm.llmetadata = "llvm_metadata_null" |
| |
| let dibuild_create_debug_location ?(inlined_at = llmetadata_null ()) llctx ~line |
| ~column ~scope = |
| dibuild_create_debug_location_helper llctx ~line ~column ~scope ~inlined_at |
| |
| external di_location_get_line : location:Llvm.llmetadata -> int |
| = "llvm_di_location_get_line" |
| |
| external di_location_get_column : location:Llvm.llmetadata -> int |
| = "llvm_di_location_get_column" |
| |
| external di_location_get_scope : location:Llvm.llmetadata -> Llvm.llmetadata |
| = "llvm_di_location_get_scope" |
| |
| external di_location_get_inlined_at : |
| location:Llvm.llmetadata -> Llvm.llmetadata option |
| = "llvm_di_location_get_inlined_at" |
| |
| external di_scope_get_file : scope:Llvm.llmetadata -> Llvm.llmetadata option |
| = "llvm_di_scope_get_file" |
| |
| external di_file_get_directory : file:Llvm.llmetadata -> string |
| = "llvm_di_file_get_directory" |
| |
| external di_file_get_filename : file:Llvm.llmetadata -> string |
| = "llvm_di_file_get_filename" |
| |
| external di_file_get_source : file:Llvm.llmetadata -> string |
| = "llvm_di_file_get_source" |
| |
| external dibuild_get_or_create_type_array : |
| lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata |
| = "llvm_dibuild_get_or_create_type_array" |
| |
| external dibuild_get_or_create_array : |
| lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata |
| = "llvm_dibuild_get_or_create_array" |
| |
| external dibuild_create_subroutine_type : |
| lldibuilder -> |
| file:Llvm.llmetadata -> |
| param_types:Llvm.llmetadata array -> |
| lldiflags -> |
| Llvm.llmetadata = "llvm_dibuild_create_subroutine_type" |
| |
| external dibuild_create_enumerator : |
| lldibuilder -> name:string -> value:int -> is_unsigned:bool -> Llvm.llmetadata |
| = "llvm_dibuild_create_enumerator" |
| |
| external dibuild_create_enumeration_type : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_number:int -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| elements:Llvm.llmetadata array -> |
| class_ty:Llvm.llmetadata -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_enumeration_type_bytecode" "llvm_dibuild_create_enumeration_type_native" |
| |
| external dibuild_create_union_type : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_number:int -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| lldiflags -> |
| elements:Llvm.llmetadata array -> |
| run_time_language:int -> |
| unique_id:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_union_type_bytecode" "llvm_dibuild_create_union_type_native" |
| |
| external dibuild_create_array_type : |
| lldibuilder -> |
| size:int -> |
| align_in_bits:int -> |
| ty:Llvm.llmetadata -> |
| subscripts:Llvm.llmetadata array -> |
| Llvm.llmetadata = "llvm_dibuild_create_array_type" |
| |
| external dibuild_create_vector_type : |
| lldibuilder -> |
| size:int -> |
| align_in_bits:int -> |
| ty:Llvm.llmetadata -> |
| subscripts:Llvm.llmetadata array -> |
| Llvm.llmetadata = "llvm_dibuild_create_array_type" |
| |
| external dibuild_create_unspecified_type : |
| lldibuilder -> name:string -> Llvm.llmetadata |
| = "llvm_dibuild_create_unspecified_type" |
| |
| external dibuild_create_basic_type : |
| lldibuilder -> |
| name:string -> |
| size_in_bits:int -> |
| encoding:int -> |
| lldiflags -> |
| Llvm.llmetadata = "llvm_dibuild_create_basic_type" |
| |
| external dibuild_create_pointer_type : |
| lldibuilder -> |
| pointee_ty:Llvm.llmetadata -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| address_space:int -> |
| name:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_pointer_type_bytecode" "llvm_dibuild_create_pointer_type_native" |
| |
| external dibuild_create_struct_type : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_number:int -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| lldiflags -> |
| derived_from:Llvm.llmetadata -> |
| elements:Llvm.llmetadata array -> |
| DWARFSourceLanguageKind.t -> |
| vtable_holder:Llvm.llmetadata -> |
| unique_id:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_struct_type_bytecode" "llvm_dibuild_create_struct_type_native" |
| |
| external dibuild_create_member_type : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_number:int -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| offset_in_bits:int -> |
| lldiflags -> |
| ty:Llvm.llmetadata -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_member_type_bytecode" "llvm_dibuild_create_member_type_native" |
| |
| external dibuild_create_static_member_type : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_number:int -> |
| ty:Llvm.llmetadata -> |
| lldiflags -> |
| const_val:Llvm.llvalue -> |
| align_in_bits:int -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_static_member_type_bytecode" "llvm_dibuild_create_static_member_type_native" |
| |
| external dibuild_create_member_pointer_type : |
| lldibuilder -> |
| pointee_type:Llvm.llmetadata -> |
| class_type:Llvm.llmetadata -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| lldiflags -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_member_pointer_type_bytecode" "llvm_dibuild_create_member_pointer_type_native" |
| |
| external dibuild_create_object_pointer_type : |
| lldibuilder -> Llvm.llmetadata -> Llvm.llmetadata |
| = "llvm_dibuild_create_object_pointer_type" |
| |
| external dibuild_create_qualified_type : |
| lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata |
| = "llvm_dibuild_create_qualified_type" |
| |
| external dibuild_create_reference_type : |
| lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata |
| = "llvm_dibuild_create_reference_type" |
| |
| external dibuild_create_null_ptr_type : lldibuilder -> Llvm.llmetadata |
| = "llvm_dibuild_create_null_ptr_type" |
| |
| external dibuild_create_typedef : |
| lldibuilder -> |
| ty:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_no:int -> |
| scope:Llvm.llmetadata -> |
| align_in_bits:int -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_typedef_bytecode" "llvm_dibuild_create_typedef_native" |
| |
| external dibuild_create_inheritance : |
| lldibuilder -> |
| ty:Llvm.llmetadata -> |
| base_ty:Llvm.llmetadata -> |
| base_offset:int -> |
| vb_ptr_offset:int -> |
| lldiflags -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_inheritance_bytecode" "llvm_dibuild_create_inheritance_native" |
| |
| external dibuild_create_forward_decl : |
| lldibuilder -> |
| tag:int -> |
| name:string -> |
| scope:Llvm.llmetadata -> |
| file:Llvm.llmetadata -> |
| line:int -> |
| runtime_lang:int -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| unique_identifier:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_forward_decl_bytecode" "llvm_dibuild_create_forward_decl_native" |
| |
| external dibuild_create_replaceable_composite_type : |
| lldibuilder -> |
| tag:int -> |
| name:string -> |
| scope:Llvm.llmetadata -> |
| file:Llvm.llmetadata -> |
| line:int -> |
| runtime_lang:int -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| lldiflags -> |
| unique_identifier:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_replaceable_composite_type_bytecode" "llvm_dibuild_create_replaceable_composite_type_native" |
| |
| external dibuild_create_bit_field_member_type : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_num:int -> |
| size_in_bits:int -> |
| offset_in_bits:int -> |
| storage_offset_in_bits:int -> |
| lldiflags -> |
| ty:Llvm.llmetadata -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_bit_field_member_type_bytecode" "llvm_dibuild_create_bit_field_member_type_native" |
| |
| external dibuild_create_class_type : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line_number:int -> |
| size_in_bits:int -> |
| align_in_bits:int -> |
| offset_in_bits:int -> |
| lldiflags -> |
| derived_from:Llvm.llmetadata -> |
| elements:Llvm.llmetadata array -> |
| vtable_holder:Llvm.llmetadata -> |
| template_params_node:Llvm.llmetadata -> |
| unique_identifier:string -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_class_type_bytecode" "llvm_dibuild_create_class_type_native" |
| |
| external dibuild_create_artificial_type : |
| lldibuilder -> ty:Llvm.llmetadata -> Llvm.llmetadata |
| = "llvm_dibuild_create_artificial_type" |
| |
| external di_type_get_name : Llvm.llmetadata -> string = "llvm_di_type_get_name" |
| |
| external di_type_get_size_in_bits : Llvm.llmetadata -> int |
| = "llvm_di_type_get_size_in_bits" |
| |
| external di_type_get_offset_in_bits : Llvm.llmetadata -> int |
| = "llvm_di_type_get_offset_in_bits" |
| |
| external di_type_get_align_in_bits : Llvm.llmetadata -> int |
| = "llvm_di_type_get_align_in_bits" |
| |
| external di_type_get_line : Llvm.llmetadata -> int = "llvm_di_type_get_line" |
| |
| external di_type_get_flags : Llvm.llmetadata -> lldiflags |
| = "llvm_di_type_get_flags" |
| |
| external get_subprogram : Llvm.llvalue -> Llvm.llmetadata option |
| = "llvm_get_subprogram" |
| |
| external set_subprogram : Llvm.llvalue -> Llvm.llmetadata -> unit |
| = "llvm_set_subprogram" |
| |
| external di_subprogram_get_line : Llvm.llmetadata -> int |
| = "llvm_di_subprogram_get_line" |
| |
| external instr_get_debug_loc : Llvm.llvalue -> Llvm.llmetadata option |
| = "llvm_instr_get_debug_loc" |
| |
| external instr_set_debug_loc_helper : Llvm.llvalue -> Llvm.llmetadata -> unit |
| = "llvm_instr_set_debug_loc" |
| |
| let instr_set_debug_loc i mopt = |
| match mopt with |
| | None -> instr_set_debug_loc_helper i (llmetadata_null ()) |
| | Some m -> instr_set_debug_loc_helper i m |
| |
| external dibuild_create_constant_value_expression : |
| lldibuilder -> int -> Llvm.llmetadata |
| = "llvm_dibuild_create_constant_value_expression" |
| |
| external dibuild_create_global_variable_expression : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| linkage:string -> |
| file:Llvm.llmetadata -> |
| line:int -> |
| ty:Llvm.llmetadata -> |
| is_local_to_unit:bool -> |
| expr:Llvm.llmetadata -> |
| decl:Llvm.llmetadata -> |
| align_in_bits:int -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_global_variable_expression_bytecode" "llvm_dibuild_create_global_variable_expression_native" |
| |
| external di_global_variable_expression_get_variable : |
| Llvm.llmetadata -> Llvm.llmetadata option |
| = "llvm_di_global_variable_expression_get_variable" |
| |
| external di_variable_get_line : Llvm.llmetadata -> int |
| = "llvm_di_variable_get_line" |
| |
| external di_variable_get_file : Llvm.llmetadata -> Llvm.llmetadata option |
| = "llvm_di_variable_get_file" |
| |
| external get_metadata_kind : Llvm.llmetadata -> MetadataKind.t |
| = "llvm_get_metadata_kind" |
| |
| external dibuild_create_auto_variable : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| file:Llvm.llmetadata -> |
| line:int -> |
| ty:Llvm.llmetadata -> |
| always_preserve:bool -> |
| lldiflags -> |
| align_in_bits:int -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_auto_variable_bytecode" "llvm_dibuild_create_auto_variable_native" |
| |
| external dibuild_create_parameter_variable : |
| lldibuilder -> |
| scope:Llvm.llmetadata -> |
| name:string -> |
| argno:int -> |
| file:Llvm.llmetadata -> |
| line:int -> |
| ty:Llvm.llmetadata -> |
| always_preserve:bool -> |
| lldiflags -> |
| Llvm.llmetadata |
| = "llvm_dibuild_create_parameter_variable_bytecode" "llvm_dibuild_create_parameter_variable_native" |
| |
| external dibuild_insert_declare_before : |
| lldibuilder -> |
| storage:Llvm.llvalue -> |
| var_info:Llvm.llmetadata -> |
| expr:Llvm.llmetadata -> |
| location:Llvm.llmetadata -> |
| instr:Llvm.llvalue -> |
| Llvm.llvalue |
| = "llvm_dibuild_insert_declare_before_bytecode" "llvm_dibuild_insert_declare_before_native" |
| |
| external dibuild_insert_declare_at_end : |
| lldibuilder -> |
| storage:Llvm.llvalue -> |
| var_info:Llvm.llmetadata -> |
| expr:Llvm.llmetadata -> |
| location:Llvm.llmetadata -> |
| block:Llvm.llbasicblock -> |
| Llvm.llvalue |
| = "llvm_dibuild_insert_declare_at_end_bytecode" "llvm_dibuild_insert_declare_at_end_native" |
| |
| external dibuild_expression : |
| lldibuilder -> |
| Int64.t array -> |
| Llvm.llmetadata |
| = "llvm_dibuild_expression" |