brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.3 KiB · 3e9a829 Raw
632 lines · plain
1(*===-- llvm_debuginfo.ml - LLVM OCaml Interface --------------*- OCaml -*-===*2 *3 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4 * See https://llvm.org/LICENSE.txt for license information.5 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6 *7 *===----------------------------------------------------------------------===*)8 9type lldibuilder10 11(** Source languages known by DWARF. *)12module DWARFSourceLanguageKind = struct13  type t =14    | C8915    | C16    | Ada8317    | C_plus_plus18    | Cobol7419    | Cobol8520    | Fortran7721    | Fortran9022    | Pascal8323    | Modula224    (*  New in DWARF v3: *)25    | LLVMJava26    | C9927    | Ada9528    | Fortran9529    | PLI30    | ObjC31    | ObjC_plus_plus32    | UPC33    | D34    (*  New in DWARF v4: *)35    | LLVMPython36    (*  New in DWARF v5: *)37    | LLVMOpenCL38    | Go39    | Modula340    | Haskell41    | C_plus_plus_0342    | C_plus_plus_1143    | OCaml44    | Rust45    | C1146    | Swift47    | Julia48    | Dylan49    | C_plus_plus_1450    | Fortran0351    | Fortran0852    | RenderScript53    | BLISS54    (*  Vendor extensions: *)55    | LLVMMips_Assembler56    | GOOGLE_RenderScript57    | BORLAND_Delphi58end59 60module DIFlag = struct61  type t =62    | Zero63    | Private64    | Protected65    | Public66    | FwdDecl67    | AppleBlock68    | ReservedBit469    | Virtual70    | Artificial71    | Explicit72    | Prototyped73    | ObjcClassComplete74    | ObjectPointer75    | Vector76    | StaticMember77    | LValueReference78    | RValueReference79    | Reserved80    | SingleInheritance81    | MultipleInheritance82    | VirtualInheritance83    | IntroducedVirtual84    | BitField85    | NoReturn86    | TypePassByValue87    | TypePassByReference88    | EnumClass89    | FixedEnum90    | Thunk91    | NonTrivial92    | BigEndian93    | LittleEndian94    | IndirectVirtualBase95    | Accessibility96    | PtrToMemberRep97end98 99type lldiflags100 101external diflags_get : DIFlag.t -> lldiflags = "llvm_diflags_get"102 103external diflags_set : lldiflags -> DIFlag.t -> lldiflags = "llvm_diflags_set"104 105external diflags_test : lldiflags -> DIFlag.t -> bool = "llvm_diflags_test"106 107(** The kind of metadata nodes. *)108module MetadataKind = struct109  type t =110    | MDStringMetadataKind111    | ConstantAsMetadataMetadataKind112    | LocalAsMetadataMetadataKind113    | DistinctMDOperandPlaceholderMetadataKind114    | MDTupleMetadataKind115    | DILocationMetadataKind116    | DIExpressionMetadataKind117    | DIGlobalVariableExpressionMetadataKind118    | GenericDINodeMetadataKind119    | DISubrangeMetadataKind120    | DIEnumeratorMetadataKind121    | DIBasicTypeMetadataKind122    | DIDerivedTypeMetadataKind123    | DICompositeTypeMetadataKind124    | DISubroutineTypeMetadataKind125    | DIFileMetadataKind126    | DICompileUnitMetadataKind127    | DISubprogramMetadataKind128    | DILexicalBlockMetadataKind129    | DILexicalBlockFileMetadataKind130    | DINamespaceMetadataKind131    | DIModuleMetadataKind132    | DITemplateTypeParameterMetadataKind133    | DITemplateValueParameterMetadataKind134    | DIGlobalVariableMetadataKind135    | DILocalVariableMetadataKind136    | DILabelMetadataKind137    | DIObjCPropertyMetadataKind138    | DIImportedEntityMetadataKind139    | DIMacroMetadataKind140    | DIMacroFileMetadataKind141    | DICommonBlockMetadataKind142    | DIStringTypeMetadataKind143    | DIGenericSubrangeMetadataKind144    | DIArgListMetadataKind145    | DIAssignIDMetadataKind146    | DISubrangeTypeMetadataKind147    | DIFixedPointTypeMetadataKind148end149 150(** The amount of debug information to emit. *)151module DWARFEmissionKind = struct152  type t = None | Full | LineTablesOnly153end154 155external debug_metadata_version : unit -> int = "llvm_debug_metadata_version"156 157external get_module_debug_metadata_version : Llvm.llmodule -> int158  = "llvm_get_module_debug_metadata_version"159 160external dibuilder : Llvm.llmodule -> lldibuilder = "llvm_dibuilder"161 162external dibuild_finalize : lldibuilder -> unit = "llvm_dibuild_finalize"163 164(* See LLVMDIBuilderCreateCompileUnit for argument details. *)165external dibuild_create_compile_unit :166  lldibuilder ->167  DWARFSourceLanguageKind.t ->168  file_ref:Llvm.llmetadata ->169  producer:string ->170  is_optimized:bool ->171  flags:string ->172  runtime_ver:int ->173  split_name:string ->174  DWARFEmissionKind.t ->175  dwoid:int ->176  di_inlining:bool ->177  di_profiling:bool ->178  sys_root:string ->179  sdk:string ->180  Llvm.llmetadata181  = "llvm_dibuild_create_compile_unit_bytecode" "llvm_dibuild_create_compile_unit_native"182 183external dibuild_create_file :184  lldibuilder -> filename:string -> directory:string -> Llvm.llmetadata185  = "llvm_dibuild_create_file"186 187external dibuild_create_module :188  lldibuilder ->189  parent_ref:Llvm.llmetadata ->190  name:string ->191  config_macros:string ->192  include_path:string ->193  sys_root:string ->194  Llvm.llmetadata195  = "llvm_dibuild_create_module_bytecode" "llvm_dibuild_create_module_native"196 197external dibuild_create_namespace :198  lldibuilder ->199  parent_ref:Llvm.llmetadata ->200  name:string ->201  export_symbols:bool ->202  Llvm.llmetadata = "llvm_dibuild_create_namespace"203 204external dibuild_create_function :205  lldibuilder ->206  scope:Llvm.llmetadata ->207  name:string ->208  linkage_name:string ->209  file:Llvm.llmetadata ->210  line_no:int ->211  ty:Llvm.llmetadata ->212  is_local_to_unit:bool ->213  is_definition:bool ->214  scope_line:int ->215  flags:lldiflags ->216  is_optimized:bool ->217  Llvm.llmetadata218  = "llvm_dibuild_create_function_bytecode" "llvm_dibuild_create_function_native"219 220external dibuild_create_lexical_block :221  lldibuilder ->222  scope:Llvm.llmetadata ->223  file:Llvm.llmetadata ->224  line:int ->225  column:int ->226  Llvm.llmetadata = "llvm_dibuild_create_lexical_block"227 228external dibuild_create_debug_location_helper :229  Llvm.llcontext ->230  line:int ->231  column:int ->232  scope:Llvm.llmetadata ->233  inlined_at:Llvm.llmetadata ->234  Llvm.llmetadata = "llvm_dibuild_create_debug_location"235 236external llmetadata_null : unit -> Llvm.llmetadata = "llvm_metadata_null"237 238let dibuild_create_debug_location ?(inlined_at = llmetadata_null ()) llctx ~line239    ~column ~scope =240  dibuild_create_debug_location_helper llctx ~line ~column ~scope ~inlined_at241 242external di_location_get_line : location:Llvm.llmetadata -> int243  = "llvm_di_location_get_line"244 245external di_location_get_column : location:Llvm.llmetadata -> int246  = "llvm_di_location_get_column"247 248external di_location_get_scope : location:Llvm.llmetadata -> Llvm.llmetadata249  = "llvm_di_location_get_scope"250 251external di_location_get_inlined_at :252  location:Llvm.llmetadata -> Llvm.llmetadata option253  = "llvm_di_location_get_inlined_at"254 255external di_scope_get_file : scope:Llvm.llmetadata -> Llvm.llmetadata option256  = "llvm_di_scope_get_file"257 258external di_file_get_directory : file:Llvm.llmetadata -> string259  = "llvm_di_file_get_directory"260 261external di_file_get_filename : file:Llvm.llmetadata -> string262  = "llvm_di_file_get_filename"263 264external di_file_get_source : file:Llvm.llmetadata -> string265  = "llvm_di_file_get_source"266 267external dibuild_get_or_create_type_array :268  lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata269  = "llvm_dibuild_get_or_create_type_array"270 271external dibuild_get_or_create_array :272  lldibuilder -> data:Llvm.llmetadata array -> Llvm.llmetadata273  = "llvm_dibuild_get_or_create_array"274 275external dibuild_create_subroutine_type :276  lldibuilder ->277  file:Llvm.llmetadata ->278  param_types:Llvm.llmetadata array ->279  lldiflags ->280  Llvm.llmetadata = "llvm_dibuild_create_subroutine_type"281 282external dibuild_create_enumerator :283  lldibuilder -> name:string -> value:int -> is_unsigned:bool -> Llvm.llmetadata284  = "llvm_dibuild_create_enumerator"285 286external dibuild_create_enumeration_type :287  lldibuilder ->288  scope:Llvm.llmetadata ->289  name:string ->290  file:Llvm.llmetadata ->291  line_number:int ->292  size_in_bits:int ->293  align_in_bits:int ->294  elements:Llvm.llmetadata array ->295  class_ty:Llvm.llmetadata ->296  Llvm.llmetadata297  = "llvm_dibuild_create_enumeration_type_bytecode" "llvm_dibuild_create_enumeration_type_native"298 299external dibuild_create_union_type :300  lldibuilder ->301  scope:Llvm.llmetadata ->302  name:string ->303  file:Llvm.llmetadata ->304  line_number:int ->305  size_in_bits:int ->306  align_in_bits:int ->307  lldiflags ->308  elements:Llvm.llmetadata array ->309  run_time_language:int ->310  unique_id:string ->311  Llvm.llmetadata312  = "llvm_dibuild_create_union_type_bytecode" "llvm_dibuild_create_union_type_native"313 314external dibuild_create_array_type :315  lldibuilder ->316  size:int ->317  align_in_bits:int ->318  ty:Llvm.llmetadata ->319  subscripts:Llvm.llmetadata array ->320  Llvm.llmetadata = "llvm_dibuild_create_array_type"321 322external dibuild_create_vector_type :323  lldibuilder ->324  size:int ->325  align_in_bits:int ->326  ty:Llvm.llmetadata ->327  subscripts:Llvm.llmetadata array ->328  Llvm.llmetadata = "llvm_dibuild_create_array_type"329 330external dibuild_create_unspecified_type :331  lldibuilder -> name:string -> Llvm.llmetadata332  = "llvm_dibuild_create_unspecified_type"333 334external dibuild_create_basic_type :335  lldibuilder ->336  name:string ->337  size_in_bits:int ->338  encoding:int ->339  lldiflags ->340  Llvm.llmetadata = "llvm_dibuild_create_basic_type"341 342external dibuild_create_pointer_type :343  lldibuilder ->344  pointee_ty:Llvm.llmetadata ->345  size_in_bits:int ->346  align_in_bits:int ->347  address_space:int ->348  name:string ->349  Llvm.llmetadata350  = "llvm_dibuild_create_pointer_type_bytecode" "llvm_dibuild_create_pointer_type_native"351 352external dibuild_create_struct_type :353  lldibuilder ->354  scope:Llvm.llmetadata ->355  name:string ->356  file:Llvm.llmetadata ->357  line_number:int ->358  size_in_bits:int ->359  align_in_bits:int ->360  lldiflags ->361  derived_from:Llvm.llmetadata ->362  elements:Llvm.llmetadata array ->363  DWARFSourceLanguageKind.t ->364  vtable_holder:Llvm.llmetadata ->365  unique_id:string ->366  Llvm.llmetadata367  = "llvm_dibuild_create_struct_type_bytecode" "llvm_dibuild_create_struct_type_native"368 369external dibuild_create_member_type :370  lldibuilder ->371  scope:Llvm.llmetadata ->372  name:string ->373  file:Llvm.llmetadata ->374  line_number:int ->375  size_in_bits:int ->376  align_in_bits:int ->377  offset_in_bits:int ->378  lldiflags ->379  ty:Llvm.llmetadata ->380  Llvm.llmetadata381  = "llvm_dibuild_create_member_type_bytecode" "llvm_dibuild_create_member_type_native"382 383external dibuild_create_static_member_type :384  lldibuilder ->385  scope:Llvm.llmetadata ->386  name:string ->387  file:Llvm.llmetadata ->388  line_number:int ->389  ty:Llvm.llmetadata ->390  lldiflags ->391  const_val:Llvm.llvalue ->392  align_in_bits:int ->393  Llvm.llmetadata394  = "llvm_dibuild_create_static_member_type_bytecode" "llvm_dibuild_create_static_member_type_native"395 396external dibuild_create_member_pointer_type :397  lldibuilder ->398  pointee_type:Llvm.llmetadata ->399  class_type:Llvm.llmetadata ->400  size_in_bits:int ->401  align_in_bits:int ->402  lldiflags ->403  Llvm.llmetadata404  = "llvm_dibuild_create_member_pointer_type_bytecode" "llvm_dibuild_create_member_pointer_type_native"405 406external dibuild_create_object_pointer_type :407  lldibuilder -> Llvm.llmetadata -> implicit:bool -> Llvm.llmetadata408  = "llvm_dibuild_create_object_pointer_type"409 410external dibuild_create_qualified_type :411  lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata412  = "llvm_dibuild_create_qualified_type"413 414external dibuild_create_reference_type :415  lldibuilder -> tag:int -> Llvm.llmetadata -> Llvm.llmetadata416  = "llvm_dibuild_create_reference_type"417 418external dibuild_create_null_ptr_type : lldibuilder -> Llvm.llmetadata419  = "llvm_dibuild_create_null_ptr_type"420 421external dibuild_create_typedef :422  lldibuilder ->423  ty:Llvm.llmetadata ->424  name:string ->425  file:Llvm.llmetadata ->426  line_no:int ->427  scope:Llvm.llmetadata ->428  align_in_bits:int ->429  Llvm.llmetadata430  = "llvm_dibuild_create_typedef_bytecode" "llvm_dibuild_create_typedef_native"431 432external dibuild_create_inheritance :433  lldibuilder ->434  ty:Llvm.llmetadata ->435  base_ty:Llvm.llmetadata ->436  base_offset:int ->437  vb_ptr_offset:int ->438  lldiflags ->439  Llvm.llmetadata440  = "llvm_dibuild_create_inheritance_bytecode" "llvm_dibuild_create_inheritance_native"441 442external dibuild_create_forward_decl :443  lldibuilder ->444  tag:int ->445  name:string ->446  scope:Llvm.llmetadata ->447  file:Llvm.llmetadata ->448  line:int ->449  runtime_lang:int ->450  size_in_bits:int ->451  align_in_bits:int ->452  unique_identifier:string ->453  Llvm.llmetadata454  = "llvm_dibuild_create_forward_decl_bytecode" "llvm_dibuild_create_forward_decl_native"455 456external dibuild_create_replaceable_composite_type :457  lldibuilder ->458  tag:int ->459  name:string ->460  scope:Llvm.llmetadata ->461  file:Llvm.llmetadata ->462  line:int ->463  runtime_lang:int ->464  size_in_bits:int ->465  align_in_bits:int ->466  lldiflags ->467  unique_identifier:string ->468  Llvm.llmetadata469  = "llvm_dibuild_create_replaceable_composite_type_bytecode" "llvm_dibuild_create_replaceable_composite_type_native"470 471external dibuild_create_bit_field_member_type :472  lldibuilder ->473  scope:Llvm.llmetadata ->474  name:string ->475  file:Llvm.llmetadata ->476  line_num:int ->477  size_in_bits:int ->478  offset_in_bits:int ->479  storage_offset_in_bits:int ->480  lldiflags ->481  ty:Llvm.llmetadata ->482  Llvm.llmetadata483  = "llvm_dibuild_create_bit_field_member_type_bytecode" "llvm_dibuild_create_bit_field_member_type_native"484 485external dibuild_create_class_type :486  lldibuilder ->487  scope:Llvm.llmetadata ->488  name:string ->489  file:Llvm.llmetadata ->490  line_number:int ->491  size_in_bits:int ->492  align_in_bits:int ->493  offset_in_bits:int ->494  lldiflags ->495  derived_from:Llvm.llmetadata ->496  elements:Llvm.llmetadata array ->497  vtable_holder:Llvm.llmetadata ->498  template_params_node:Llvm.llmetadata ->499  unique_identifier:string ->500  Llvm.llmetadata501  = "llvm_dibuild_create_class_type_bytecode" "llvm_dibuild_create_class_type_native"502 503external dibuild_create_artificial_type :504  lldibuilder -> ty:Llvm.llmetadata -> Llvm.llmetadata505  = "llvm_dibuild_create_artificial_type"506 507external di_type_get_name : Llvm.llmetadata -> string = "llvm_di_type_get_name"508 509external di_type_get_size_in_bits : Llvm.llmetadata -> int510  = "llvm_di_type_get_size_in_bits"511 512external di_type_get_offset_in_bits : Llvm.llmetadata -> int513  = "llvm_di_type_get_offset_in_bits"514 515external di_type_get_align_in_bits : Llvm.llmetadata -> int516  = "llvm_di_type_get_align_in_bits"517 518external di_type_get_line : Llvm.llmetadata -> int = "llvm_di_type_get_line"519 520external di_type_get_flags : Llvm.llmetadata -> lldiflags521  = "llvm_di_type_get_flags"522 523external get_subprogram : Llvm.llvalue -> Llvm.llmetadata option524  = "llvm_get_subprogram"525 526external set_subprogram : Llvm.llvalue -> Llvm.llmetadata -> unit527  = "llvm_set_subprogram"528 529external di_subprogram_get_line : Llvm.llmetadata -> int530  = "llvm_di_subprogram_get_line"531 532external instr_get_debug_loc : Llvm.llvalue -> Llvm.llmetadata option533  = "llvm_instr_get_debug_loc"534 535external instr_set_debug_loc_helper : Llvm.llvalue -> Llvm.llmetadata -> unit536  = "llvm_instr_set_debug_loc"537 538let instr_set_debug_loc i mopt =539  match mopt with540  | None -> instr_set_debug_loc_helper i (llmetadata_null ())541  | Some m -> instr_set_debug_loc_helper i m542 543external dibuild_create_constant_value_expression :544  lldibuilder -> int -> Llvm.llmetadata545  = "llvm_dibuild_create_constant_value_expression"546 547external dibuild_create_global_variable_expression :548  lldibuilder ->549  scope:Llvm.llmetadata ->550  name:string ->551  linkage:string ->552  file:Llvm.llmetadata ->553  line:int ->554  ty:Llvm.llmetadata ->555  is_local_to_unit:bool ->556  expr:Llvm.llmetadata ->557  decl:Llvm.llmetadata ->558  align_in_bits:int ->559  Llvm.llmetadata560  = "llvm_dibuild_create_global_variable_expression_bytecode" "llvm_dibuild_create_global_variable_expression_native"561 562external di_global_variable_expression_get_variable :563  Llvm.llmetadata -> Llvm.llmetadata option564  = "llvm_di_global_variable_expression_get_variable"565 566external di_variable_get_line : Llvm.llmetadata -> int567  = "llvm_di_variable_get_line"568 569external di_variable_get_file : Llvm.llmetadata -> Llvm.llmetadata option570  = "llvm_di_variable_get_file"571 572external get_metadata_kind : Llvm.llmetadata -> MetadataKind.t573  = "llvm_get_metadata_kind"574 575external dibuild_create_auto_variable :576  lldibuilder ->577  scope:Llvm.llmetadata ->578  name:string ->579  file:Llvm.llmetadata ->580  line:int ->581  ty:Llvm.llmetadata ->582  always_preserve:bool ->583  lldiflags ->584  align_in_bits:int ->585  Llvm.llmetadata586  = "llvm_dibuild_create_auto_variable_bytecode" "llvm_dibuild_create_auto_variable_native"587 588external dibuild_create_parameter_variable :589  lldibuilder ->590  scope:Llvm.llmetadata ->591  name:string ->592  argno:int ->593  file:Llvm.llmetadata ->594  line:int ->595  ty:Llvm.llmetadata ->596  always_preserve:bool ->597  lldiflags ->598  Llvm.llmetadata599  = "llvm_dibuild_create_parameter_variable_bytecode" "llvm_dibuild_create_parameter_variable_native"600 601external dibuild_insert_declare_before :602  lldibuilder ->603  storage:Llvm.llvalue ->604  var_info:Llvm.llmetadata ->605  expr:Llvm.llmetadata ->606  location:Llvm.llmetadata ->607  instr:Llvm.llvalue ->608  Llvm.lldbgrecord609  = "llvm_dibuild_insert_declare_before_bytecode" "llvm_dibuild_insert_declare_before_native"610 611external dibuild_insert_declare_at_end :612  lldibuilder ->613  storage:Llvm.llvalue ->614  var_info:Llvm.llmetadata ->615  expr:Llvm.llmetadata ->616  location:Llvm.llmetadata ->617  block:Llvm.llbasicblock ->618  Llvm.lldbgrecord619  = "llvm_dibuild_insert_declare_at_end_bytecode" "llvm_dibuild_insert_declare_at_end_native"620 621external dibuild_expression :622  lldibuilder ->623  Int64.t array ->624  Llvm.llmetadata625  = "llvm_dibuild_expression"626 627external is_new_dbg_info_format : Llvm.llmodule -> bool628                                = "llvm_is_new_dbg_info_format"629 630external set_is_new_dbg_info_format : Llvm.llmodule -> bool -> unit631                                    = "llvm_set_is_new_dbg_info_format"632