LLVMDIBuilder.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 30 Aug 2016 16:57:29 +0100
changeset 78 7a4c769a9fea
parent 55 41b3437f1fc7
permissions -rw-r--r--
llvm_c_ext: Improved `LLVMSetMetadata2()` to support also function values ...in addition to instruction values. This is handy to attach data to functions, such as debugging information. Added Smalltalk API for setting metadata nodes on instructions and functions.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
    Copyright (C) 2015-now Jan Vrany
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
    This code is not an open-source (yet). You may use this code
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
    for your own experiments and projects, given that:
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
    * all modification to the code will be sent to the
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
      original author for inclusion in future releases
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
    * this is not used in any commercial software
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
    This license is provisional and may (will) change in
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
    a future.
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ Package: 'jv:llvm_s' }"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
"{ NameSpace: Smalltalk }"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    18
LLVMDisposableObject subclass:#LLVMDIBuilder
29
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	instanceVariableNames:''
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	classVariableNames:''
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    21
	poolDictionaries:'LLVMModuleFlagBehavior'
29
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
	category:'LLVM-S-Core'
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
!LLVMDIBuilder class methodsFor:'documentation'!
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
copyright
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    Copyright (C) 2015-now Jan Vrany
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    This code is not an open-source (yet). You may use this code
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    for your own experiments and projects, given that:
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    * all modification to the code will be sent to the
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
      original author for inclusion in future releases
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    * this is not used in any commercial software
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    This license is provisional and may (will) change in
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    a future.
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
"
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
! !
6ea02617c9ab Added bindings to LLVM C API Extensions library.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    43
!LLVMDIBuilder class methodsFor:'instance creation'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    44
48
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    45
new
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    46
    self shouldNotImplement. "/ use newForModule: instead
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    47
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    48
    "Created: / 05-10-2015 / 09:29:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    49
!
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
    50
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    51
newForModule: module
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    52
    | dib |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    53
    dib := LLVMCEXT NewDIBuilder: module.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    54
    "/ Now we have to add module flags otherwise llc won't
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    55
    "/ produce debug info.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    56
    "/ See http://lists.llvm.org/pipermail/llvm-dev/2014-October/077815.html
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    57
    module addFlag: 'Dwarf Version' value: (LLVMConstant uint32: 4) asLLVMMetadata behavior: LLVMModuleFlagBehaviorWarning.  
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    58
    module addFlag: 'Debug Info Version' value: (LLVMConstant uint32: 3) asLLVMMetadata behavior: LLVMModuleFlagBehaviorError.  
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    59
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    60
    ^ dib
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    61
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    62
    "Created: / 13-08-2015 / 06:35:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    63
    "Modified: / 15-08-2015 / 23:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    64
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    65
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    66
!LLVMDIBuilder methodsFor:'assertions'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    67
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    68
assertIsStringOrFilename: value
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    69
    <resource: #skipInDebuggersWalkback>
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    70
    self assert: (value isString or:[ value isFilename ]) message: 'value is not a String or Filename'
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    71
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    72
    "Created: / 13-08-2015 / 06:47:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    73
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    74
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    75
!LLVMDIBuilder methodsFor:'building'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    76
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    77
createAutomaticVariable: name in: scope file: file line: line type: type
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    78
    ^ self createAutomaticVariable: name in: scope file: file line: line type: type flags: 0
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    79
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    80
    "Created: / 14-08-2015 / 13:58:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    81
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    82
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    83
createAutomaticVariable: name in: scope file: file line: line type: type flags: flags
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    84
    ^ self createAutomaticVariable: name in: scope file: file line: line type: type flags: flags preserve: true.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    85
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    86
    "Created: / 14-08-2015 / 13:57:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    87
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    88
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    89
createAutomaticVariable: name in: scope file: file line: line type: type flags: flags preserve: preserve
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    90
    "Creates a debg info metadata describing a local variable"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    91
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    92
    self assertIsString: name.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    93
    self assertIsDILocalScope: scope.  
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    94
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    95
    self assertIsIntegerUnsigned: line.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
    96
    self assertIsDIType: type.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    97
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    98
    self assertIsBoolean: preserve.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
    99
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   100
    ^ LLVMCEXT DIBuilderCreateAutoVariable: self _: scope _: name _: file _: line _: type _: (preserve ifTrue:[1] ifFalse:[0]) _: flags
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   101
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   102
    "Created: / 14-08-2015 / 13:56:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   103
    "Modified: / 17-09-2015 / 17:00:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   104
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   105
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   106
createCompilationUnit: path language: lang producer: producer
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   107
    ^ self createCompilationUnit: path language: lang producer: producer runtimeVersion: 0 optimized: false flags: ''
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   108
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   109
    "Created: / 13-08-2015 / 06:58:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   110
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   111
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   112
createCompilationUnit: path language: lang producer: producer runtimeVersion: rv optimized: isOptimized flags: compilerFlags
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   113
    | filename |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   114
    self assertIsStringOrFilename: path.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   115
    self assertIsIntegerUnsigned: lang.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   116
    self assertIsString: producer.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   117
    self assertIsIntegerUnsigned: rv.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   118
    self assertIsBoolean: isOptimized.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   119
    self assertIsString: compilerFlags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   120
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   121
    filename := path asFilename.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   122
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   123
    ^ LLVMCEXT DIBuilderCreateCompileUnit: self _: lang _: filename baseName _: filename directory pathName _: producer _: (isOptimized ifTrue:[1] ifFalse:[0]) _: compilerFlags _: rv
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   124
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   125
    "Created: / 13-08-2015 / 06:47:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   126
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   127
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   128
createExpression
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   129
    ^ LLVMCEXT DIBuilderCreateExpression: self _: ExternalAddress new _: 0
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   130
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   131
    "Created: / 14-08-2015 / 14:06:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   132
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   133
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   134
createFile: path
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   135
    | filename |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   136
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   137
    self assertIsStringOrFilename: path.    
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   138
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   139
    filename := path asFilename.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   140
    ^ LLVMCEXT DIBuilderCreateFile: self _: filename baseName _: filename directory pathName
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   141
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   142
    "Created: / 15-08-2015 / 22:08:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   143
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   144
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   145
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   146
    ^ self createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: 0
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   147
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   148
    "Created: / 07-02-2016 / 07:59:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   149
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   150
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   151
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   152
    ^ self createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: line
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   153
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   154
    "Created: / 07-02-2016 / 07:59:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   155
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   156
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   157
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   158
    ^ self createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: name
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   159
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   160
    "Created: / 07-02-2016 / 07:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   161
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   162
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   163
createFunction: name in: scope file: file  line: line type: type local: isLocal definition: isDefinition optimized: isOptimized flags: flags scopeLine: scopeLine linkageName: linkageName
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   164
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   165
    self assertIsDIScope: scope.          
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   166
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   167
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   168
    self assertIsIntegerUnsigned: line.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   169
    self assertIsBoolean: isLocal.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   170
    self assertIsBoolean: isDefinition.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   171
    self assertIsBoolean: isOptimized.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   172
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   173
    self assertIsIntegerUnsigned: scopeLine.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   174
    self assertIsString: linkageName.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   175
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   176
    ^ LLVMCEXT DIBuilderCreateFunction: self  _: scope _: name _: linkageName _: file _: line _: type _: (isLocal ifTrue:[1] ifFalse:[0]) _: (isDefinition ifTrue:[1] ifFalse:[0]) _: scopeLine _: flags _: (isOptimized ifTrue:[1] ifFalse:[0])
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   177
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   178
    "Created: / 07-02-2016 / 07:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   179
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   180
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   181
createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   182
    ^  self createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index preserve: true
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   183
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   184
    "Created: / 14-08-2015 / 13:54:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   185
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   186
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   187
createParameterVariable: name in: scope file: file line: line type: type flags: flags index: index  preserve: preserve
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   188
    "Creates a debg info metadata describing a local variable"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   189
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   190
    self assertIsString: name.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   191
    self assertIsDILocalScope: scope.  
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   192
    self assertIsDIFile: file.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   193
    self assertIsIntegerUnsigned: line.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   194
    self assertIsDIType: type.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   195
    self assertIsIntegerUnsigned: flags.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   196
    self assertIsIntegerUnsigned: index.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   197
    self assertIsBoolean: preserve.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   198
42
23ae490859cd Fixed LLVMExamples>>example7_factorial_with_debug_info
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   199
    ^ LLVMCEXT DIBuilderCreateParameterVariable: self _: scope _: name _: file _: line _: type _: (preserve ifTrue:[1] ifFalse:[0]) _: flags _: index
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   200
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   201
    "Created: / 14-08-2015 / 13:54:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
42
23ae490859cd Fixed LLVMExamples>>example7_factorial_with_debug_info
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 41
diff changeset
   202
    "Modified: / 17-09-2015 / 17:13:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   203
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   204
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   205
createTypeFunction: parameterTypes
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   206
    | parameterTypesAsTuple |
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   207
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   208
    self assertIsDITypeArray: parameterTypes.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   209
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   210
    parameterTypesAsTuple := LLVMCEXT MDNode2: LLVM GetGlobalContext _: parameterTypes asLLVMObjectArray _: parameterTypes size.
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   211
    ^ LLVMCEXT DIBuilderCreateSubroutineType: self _: parameterTypesAsTuple
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   212
55
41b3437f1fc7 LLVM C API Extensions: Updated Smalltalk API to reflect LLVM 3.9 API.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 48
diff changeset
   213
    "Created: / 06-02-2016 / 15:25:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   214
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   215
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   216
createTypeScalar: name size: sizeInBits alignment: alignmentInBits encoding: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   217
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   218
    self assertIsInteger64Unsigned: sizeInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   219
    self assertIsInteger64Unsigned: alignmentInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   220
    self assertIsIntegerUnsigned: alignmentInBits.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   221
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   222
    ^ LLVMCEXT DIBuilderCreateBasicType: self _: name _: sizeInBits _: alignmentInBits _: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   223
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   224
    "Created: / 14-08-2015 / 07:32:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   225
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   226
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   227
createTypeScalar: name type: type encoding: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   228
    self assertIsString: name.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   229
    self assertIsType: type.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   230
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   231
    ^ self createTypeScalar: name size: type sizeInBits alignment:type alignmentInBits encoding: encoding
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   232
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   233
    "Created: / 14-08-2015 / 09:17:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   234
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   235
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   236
finish
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   237
    LLVMCEXT DIBuilderFinalize: self
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   238
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   239
    "Created: / 14-08-2015 / 13:11:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   240
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   241
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   242
insertDeclare: alloca variable: variable expression: expr location: location atEndOf: basicblock
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   243
    "Inserts @llvm.dbg.declare() intrinsic at the end of given `basicblock`"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   244
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   245
    self assertIsValue: alloca.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   246
    self assertIsDILocalVariable: variable.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   247
    self assertIsDIExpression: expr.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   248
    self assertIsDILocation: location.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   249
    self assertIsBasicBlock: basicblock.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   250
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   251
    ^ LLVMCEXT DIBuilderInsertDeclareAtEnd: self  _: alloca _: variable _: expr _: location _: basicblock
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   252
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   253
    "Created: / 15-08-2015 / 23:44:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   254
    "Modified: / 17-09-2015 / 17:03:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   255
!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   256
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   257
insertValue: alloca variable: variable expression: expr location: location atEndOf: basicblock offset: offset
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   258
    "Inserts @llvm.dbg.value() intrinsic at the end of given `basicblock`"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   259
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   260
    self assertIsValue: alloca.
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   261
    self assertIsDILocalVariable: variable.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   262
    self assertIsDIExpression: expr.
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   263
    self assertIsDILocation: location.
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   264
    self assertIsBasicBlock: basicblock.
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   265
    self assertIsInteger64Unsigned: offset.  
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   266
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   267
    ^ LLVMCEXT DIBuilderInsertValueAtEnd: self _: alloca _: offset _: variable _: expr _: location _: basicblock
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   268
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   269
    "Created: / 15-08-2015 / 23:49:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
41
e4cbc8e75207 Added testing and assestion methods to test metadata nodes for their type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 33
diff changeset
   270
    "Modified: / 17-09-2015 / 17:03:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
33
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   271
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   272
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   273
!LLVMDIBuilder methodsFor:'initialization & release'!
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   274
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   275
dispose
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   276
    "superclass LLVMDisposableObject says that I am responsible to implement this method"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   277
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   278
    ^ LLVMCEXT DIBuilderDestroy: self
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   279
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   280
    "Modified: / 14-08-2015 / 13:20:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   281
! !
feabf14b6c1d Initial support for generating (DWARF) debug info.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 29
diff changeset
   282
48
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   283
!LLVMDIBuilder class methodsFor:'documentation'!
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   284
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   285
version_HG
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   286
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   287
    ^ '$Changeset: <not expanded> $'
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   288
! !
86d3a994614f Prevent instantiation of LLVMDIBuilder with #new
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 42
diff changeset
   289