lldb 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -3
  3. data/README.md +86 -2
  4. data/Rakefile +36 -0
  5. data/bindings/constants.yml +137 -0
  6. data/bindings/surface.yml +3072 -0
  7. data/ext/lldb/discovery.rb +101 -0
  8. data/ext/lldb/extconf.rb +206 -88
  9. data/ext/lldb/lldb_wrapper.cpp +7977 -856
  10. data/ext/lldb/lldb_wrapper.h +599 -324
  11. data/lib/lldb/address.rb +81 -0
  12. data/lib/lldb/api_support.rb +91 -0
  13. data/lib/lldb/attach_info.rb +122 -0
  14. data/lib/lldb/block.rb +121 -0
  15. data/lib/lldb/breakpoint.rb +11 -6
  16. data/lib/lldb/breakpoint_location.rb +20 -5
  17. data/lib/lldb/broadcaster.rb +79 -0
  18. data/lib/lldb/command_interpreter.rb +9 -4
  19. data/lib/lldb/command_return_object.rb +24 -5
  20. data/lib/lldb/compile_unit.rb +64 -0
  21. data/lib/lldb/context.rb +81 -0
  22. data/lib/lldb/debugger.rb +55 -12
  23. data/lib/lldb/error.rb +51 -3
  24. data/lib/lldb/event.rb +109 -0
  25. data/lib/lldb/expression_options.rb +124 -0
  26. data/lib/lldb/ffi_bindings.rb +326 -31
  27. data/lib/lldb/file_spec.rb +90 -0
  28. data/lib/lldb/file_spec_list.rb +78 -0
  29. data/lib/lldb/frame.rb +113 -18
  30. data/lib/lldb/function.rb +121 -0
  31. data/lib/lldb/instruction.rb +83 -0
  32. data/lib/lldb/instruction_list.rb +68 -0
  33. data/lib/lldb/launch_info.rb +145 -19
  34. data/lib/lldb/line_entry.rb +75 -0
  35. data/lib/lldb/listener.rb +96 -0
  36. data/lib/lldb/memory_region_info.rb +109 -0
  37. data/lib/lldb/module.rb +46 -5
  38. data/lib/lldb/native.rb +36 -0
  39. data/lib/lldb/native_buffer.rb +32 -0
  40. data/lib/lldb/native_handle.rb +60 -0
  41. data/lib/lldb/native_lifecycle.rb +64 -0
  42. data/lib/lldb/native_string_array.rb +34 -0
  43. data/lib/lldb/process.rb +121 -38
  44. data/lib/lldb/symbol.rb +117 -0
  45. data/lib/lldb/symbol_context.rb +9 -4
  46. data/lib/lldb/target.rb +73 -67
  47. data/lib/lldb/thread.rb +56 -19
  48. data/lib/lldb/type.rb +40 -3
  49. data/lib/lldb/type_member.rb +67 -0
  50. data/lib/lldb/types.rb +69 -4
  51. data/lib/lldb/value.rb +27 -17
  52. data/lib/lldb/value_list.rb +9 -5
  53. data/lib/lldb/version.rb +1 -1
  54. data/lib/lldb/watchpoint.rb +26 -9
  55. data/lib/lldb.rb +80 -10
  56. data/lldb.gemspec +4 -1
  57. data/rbs_collection.yaml +1 -1
  58. data/script/check_bindings +259 -0
  59. data/script/guard_c_exports +139 -0
  60. data/sig/lldb/ffi_bindings.rbs +258 -21
  61. data/sig/lldb/weak_ref.rbs +7 -0
  62. metadata +32 -6
  63. data/ext/lldb/Makefile +0 -24
  64. data/ext/lldb/liblldb_wrapper.dylib +0 -0
  65. data/ext/lldb/lldb_wrapper.o +0 -0
  66. data/ext/lldb/mkmf.log +0 -24
@@ -2,15 +2,32 @@ module LLDB
2
2
  module FFIBindings
3
3
  extend FFI::Library
4
4
 
5
+ EXPECTED_WRAPPER_ABI_VERSION: Integer
6
+ CAPABILITIES: Hash[Symbol, Integer]
7
+ LIBRARY_PATH: String
8
+
5
9
  def self.library_name: () -> String
6
10
  def self.library_path: () -> String
11
+ def self.wrapper_abi_version: () -> Integer
12
+ def self.build_lldb_version: () -> String
13
+ def self.runtime_lldb_version: () -> String
14
+ def self.capability_supported?: (Symbol) -> bool
15
+
16
+ def self.lldb_wrapper_abi_version: () -> Integer
17
+ def self.lldb_wrapper_build_lldb_version: () -> String
18
+ def self.lldb_wrapper_runtime_lldb_version: () -> String
19
+ def self.lldb_wrapper_has_capability: (Integer) -> Integer
20
+ def self.lldb_wrapper_last_error_message: () -> String?
21
+ def self.lldb_wrapper_last_error_code: () -> Integer
22
+ def self.lldb_wrapper_clear_last_error: () -> void
7
23
 
8
24
  # Initialization
9
- def self.lldb_initialize: () -> void
25
+ def self.lldb_initialize: (FFI::Pointer) -> Integer
10
26
  def self.lldb_terminate: () -> void
11
27
 
12
28
  # SBDebugger
13
29
  def self.lldb_debugger_create: () -> FFI::Pointer
30
+ def self.lldb_debugger_create_with_source_init_files: (Integer) -> FFI::Pointer
14
31
  def self.lldb_debugger_destroy: (FFI::Pointer) -> void
15
32
  def self.lldb_debugger_is_valid: (FFI::Pointer) -> Integer
16
33
  def self.lldb_debugger_create_target: (FFI::Pointer, String?, String?, String?, Integer, FFI::Pointer) -> FFI::Pointer
@@ -25,8 +42,40 @@ module LLDB
25
42
  def self.lldb_debugger_get_async: (FFI::Pointer) -> Integer
26
43
  def self.lldb_debugger_get_version_string: () -> String?
27
44
  def self.lldb_debugger_get_command_interpreter: (FFI::Pointer) -> FFI::Pointer
45
+ def self.lldb_debugger_get_broadcaster: (FFI::Pointer) -> FFI::Pointer
46
+ def self.lldb_debugger_get_listener: (FFI::Pointer) -> FFI::Pointer
28
47
  def self.lldb_debugger_handle_command: (FFI::Pointer, String) -> void
29
48
 
49
+ # SBBroadcaster, SBListener, and SBEvent
50
+ def self.lldb_broadcaster_create: (String?) -> FFI::Pointer
51
+ def self.lldb_broadcaster_destroy: (FFI::Pointer) -> void
52
+ def self.lldb_broadcaster_is_valid: (FFI::Pointer) -> Integer
53
+ def self.lldb_broadcaster_get_name: (FFI::Pointer) -> String?
54
+ def self.lldb_broadcaster_add_listener: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
55
+ def self.lldb_broadcaster_remove_listener: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
56
+ def self.lldb_broadcaster_event_type_has_listeners: (FFI::Pointer, Integer) -> Integer
57
+ def self.lldb_broadcaster_broadcast_event_by_type: (FFI::Pointer, Integer, Integer) -> void
58
+ def self.lldb_listener_create: (String?) -> FFI::Pointer
59
+ def self.lldb_listener_destroy: (FFI::Pointer) -> void
60
+ def self.lldb_listener_is_valid: (FFI::Pointer) -> Integer
61
+ def self.lldb_listener_start_listening_for_events: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
62
+ def self.lldb_listener_stop_listening_for_events: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
63
+ def self.lldb_listener_wait_for_event: (FFI::Pointer, Integer) -> FFI::Pointer
64
+ def self.lldb_listener_peek_event: (FFI::Pointer) -> FFI::Pointer
65
+ def self.lldb_listener_next_event: (FFI::Pointer) -> FFI::Pointer
66
+ def self.lldb_event_destroy: (FFI::Pointer) -> void
67
+ def self.lldb_event_is_valid: (FFI::Pointer) -> Integer
68
+ def self.lldb_event_get_type: (FFI::Pointer) -> Integer
69
+ def self.lldb_event_get_data_flavor: (FFI::Pointer) -> String?
70
+ def self.lldb_event_get_broadcaster_class: (FFI::Pointer) -> String?
71
+ def self.lldb_event_get_description: (FFI::Pointer, FFI::Pointer?, Integer) -> Integer
72
+ def self.lldb_event_get_broadcaster: (FFI::Pointer) -> FFI::Pointer
73
+ def self.lldb_event_is_process_event: (FFI::Pointer) -> Integer
74
+ def self.lldb_event_get_process_state: (FFI::Pointer) -> Integer
75
+ def self.lldb_event_get_restarted: (FFI::Pointer) -> Integer
76
+ def self.lldb_event_get_interrupted: (FFI::Pointer) -> Integer
77
+ def self.lldb_event_get_process: (FFI::Pointer) -> FFI::Pointer
78
+
30
79
  # SBTarget
31
80
  def self.lldb_target_destroy: (FFI::Pointer) -> void
32
81
  def self.lldb_target_is_valid: (FFI::Pointer) -> Integer
@@ -34,6 +83,7 @@ module LLDB
34
83
  def self.lldb_target_launch: (FFI::Pointer, FFI::Pointer, FFI::Pointer) -> FFI::Pointer
35
84
  def self.lldb_target_attach_to_process_with_id: (FFI::Pointer, Integer, FFI::Pointer) -> FFI::Pointer
36
85
  def self.lldb_target_attach_to_process_with_name: (FFI::Pointer, String, Integer, FFI::Pointer) -> FFI::Pointer
86
+ def self.lldb_target_attach_with_info: (FFI::Pointer, FFI::Pointer, FFI::Pointer) -> FFI::Pointer
37
87
  def self.lldb_target_breakpoint_create_by_name: (FFI::Pointer, String, String?) -> FFI::Pointer
38
88
  def self.lldb_target_breakpoint_create_by_location: (FFI::Pointer, String, Integer) -> FFI::Pointer
39
89
  def self.lldb_target_breakpoint_create_by_address: (FFI::Pointer, Integer) -> FFI::Pointer
@@ -48,9 +98,11 @@ module LLDB
48
98
  def self.lldb_target_get_breakpoint_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
49
99
  def self.lldb_target_get_process: (FFI::Pointer) -> FFI::Pointer
50
100
  def self.lldb_target_get_executable_path: (FFI::Pointer) -> String?
101
+ def self.lldb_target_get_executable_file: (FFI::Pointer) -> FFI::Pointer
51
102
  def self.lldb_target_get_num_modules: (FFI::Pointer) -> Integer
52
103
  def self.lldb_target_get_module_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
53
104
  def self.lldb_target_evaluate_expression: (FFI::Pointer, String) -> FFI::Pointer
105
+ def self.lldb_target_evaluate_expression_with_options: (FFI::Pointer, String, FFI::Pointer) -> FFI::Pointer
54
106
  def self.lldb_target_read_memory: (FFI::Pointer, Integer, FFI::Pointer, Integer, FFI::Pointer) -> Integer
55
107
  def self.lldb_target_get_address_byte_size: (FFI::Pointer) -> Integer
56
108
  def self.lldb_target_get_triple: (FFI::Pointer) -> String?
@@ -64,20 +116,111 @@ module LLDB
64
116
  # SBLaunchInfo
65
117
  def self.lldb_launch_info_create: (FFI::Pointer?) -> FFI::Pointer
66
118
  def self.lldb_launch_info_destroy: (FFI::Pointer) -> void
119
+ def self.lldb_launch_info_get_num_arguments: (FFI::Pointer) -> Integer
120
+ def self.lldb_launch_info_get_argument_at_index: (FFI::Pointer, Integer) -> String?
67
121
  def self.lldb_launch_info_set_working_directory: (FFI::Pointer, String) -> void
122
+ def self.lldb_launch_info_get_working_directory: (FFI::Pointer) -> String?
68
123
  def self.lldb_launch_info_set_environment_entries: (FFI::Pointer, FFI::Pointer?, Integer) -> void
124
+ def self.lldb_launch_info_get_num_environment_entries: (FFI::Pointer) -> Integer
125
+ def self.lldb_launch_info_get_environment_entry_at_index: (FFI::Pointer, Integer) -> String?
69
126
  def self.lldb_launch_info_get_launch_flags: (FFI::Pointer) -> Integer
70
127
  def self.lldb_launch_info_set_launch_flags: (FFI::Pointer, Integer) -> void
128
+ def self.lldb_launch_info_set_arguments: (FFI::Pointer, FFI::Pointer?, Integer) -> void
129
+ def self.lldb_launch_info_get_executable_file: (FFI::Pointer) -> FFI::Pointer
130
+ def self.lldb_launch_info_set_executable_file: (FFI::Pointer, FFI::Pointer, Integer) -> void
131
+ def self.lldb_launch_info_get_listener: (FFI::Pointer) -> FFI::Pointer
132
+ def self.lldb_launch_info_set_listener: (FFI::Pointer, FFI::Pointer) -> void
133
+ def self.lldb_launch_info_get_process_plugin_name: (FFI::Pointer) -> String?
134
+ def self.lldb_launch_info_set_process_plugin_name: (FFI::Pointer, String) -> void
135
+ def self.lldb_launch_info_get_shell: (FFI::Pointer) -> String?
136
+ def self.lldb_launch_info_set_shell: (FFI::Pointer, String) -> void
137
+ def self.lldb_launch_info_add_close_file_action: (FFI::Pointer, Integer) -> Integer
138
+ def self.lldb_launch_info_add_duplicate_file_action: (FFI::Pointer, Integer, Integer) -> Integer
139
+ def self.lldb_launch_info_add_open_file_action: (FFI::Pointer, Integer, String, Integer, Integer) -> Integer
140
+ def self.lldb_launch_info_add_suppress_file_action: (FFI::Pointer, Integer, Integer, Integer) -> Integer
141
+
142
+ # SBAttachInfo
143
+ def self.lldb_attach_info_create: (Integer) -> FFI::Pointer
144
+ def self.lldb_attach_info_destroy: (FFI::Pointer) -> void
145
+ def self.lldb_attach_info_get_process_id: (FFI::Pointer) -> Integer
146
+ def self.lldb_attach_info_set_process_id: (FFI::Pointer, Integer) -> void
147
+ def self.lldb_attach_info_set_executable: (FFI::Pointer, String) -> void
148
+ def self.lldb_attach_info_set_executable_file: (FFI::Pointer, FFI::Pointer) -> void
149
+ def self.lldb_attach_info_get_wait_for_launch: (FFI::Pointer) -> Integer
150
+ def self.lldb_attach_info_set_wait_for_launch: (FFI::Pointer, Integer) -> void
151
+ def self.lldb_attach_info_get_ignore_existing: (FFI::Pointer) -> Integer
152
+ def self.lldb_attach_info_set_ignore_existing: (FFI::Pointer, Integer) -> void
153
+ def self.lldb_attach_info_get_resume_count: (FFI::Pointer) -> Integer
154
+ def self.lldb_attach_info_set_resume_count: (FFI::Pointer, Integer) -> void
155
+ def self.lldb_attach_info_get_process_plugin_name: (FFI::Pointer) -> String?
156
+ def self.lldb_attach_info_set_process_plugin_name: (FFI::Pointer, String) -> void
157
+ def self.lldb_attach_info_get_listener: (FFI::Pointer) -> FFI::Pointer
158
+ def self.lldb_attach_info_set_listener: (FFI::Pointer, FFI::Pointer) -> void
159
+
160
+ # SBExpressionOptions
161
+ def self.lldb_expression_options_create: () -> FFI::Pointer
162
+ def self.lldb_expression_options_destroy: (FFI::Pointer) -> void
163
+ def self.lldb_expression_options_get_timeout: (FFI::Pointer) -> Integer
164
+ def self.lldb_expression_options_set_timeout: (FFI::Pointer, Integer) -> void
165
+ def self.lldb_expression_options_get_unwind_on_error: (FFI::Pointer) -> Integer
166
+ def self.lldb_expression_options_set_unwind_on_error: (FFI::Pointer, Integer) -> void
167
+ def self.lldb_expression_options_get_ignore_breakpoints: (FFI::Pointer) -> Integer
168
+ def self.lldb_expression_options_set_ignore_breakpoints: (FFI::Pointer, Integer) -> void
169
+ def self.lldb_expression_options_get_fetch_dynamic_value: (FFI::Pointer) -> Integer
170
+ def self.lldb_expression_options_set_fetch_dynamic_value: (FFI::Pointer, Integer) -> void
171
+ def self.lldb_expression_options_get_try_all_threads: (FFI::Pointer) -> Integer
172
+ def self.lldb_expression_options_set_try_all_threads: (FFI::Pointer, Integer) -> void
173
+ def self.lldb_expression_options_get_stop_others: (FFI::Pointer) -> Integer
174
+ def self.lldb_expression_options_set_stop_others: (FFI::Pointer, Integer) -> void
175
+ def self.lldb_expression_options_set_language: (FFI::Pointer, Integer) -> void
176
+ def self.lldb_expression_options_get_suppress_persistent_result: (FFI::Pointer) -> Integer
177
+ def self.lldb_expression_options_set_suppress_persistent_result: (FFI::Pointer, Integer) -> void
178
+
179
+ # SBFileSpec
180
+ def self.lldb_file_spec_create: (String?, Integer) -> FFI::Pointer
181
+ def self.lldb_file_spec_destroy: (FFI::Pointer) -> void
182
+ def self.lldb_file_spec_is_valid: (FFI::Pointer) -> Integer
183
+ def self.lldb_file_spec_exists: (FFI::Pointer) -> Integer
184
+ def self.lldb_file_spec_get_filename: (FFI::Pointer) -> String?
185
+ def self.lldb_file_spec_get_directory: (FFI::Pointer) -> String?
186
+ def self.lldb_file_spec_get_path: (FFI::Pointer, FFI::Pointer?, Integer) -> Integer
187
+ def self.lldb_file_spec_set_filename: (FFI::Pointer, String) -> void
188
+ def self.lldb_file_spec_set_directory: (FFI::Pointer, String) -> void
189
+ def self.lldb_file_spec_list_create: () -> FFI::Pointer
190
+ def self.lldb_file_spec_list_destroy: (FFI::Pointer) -> void
191
+ def self.lldb_file_spec_list_is_valid: (FFI::Pointer) -> Integer
192
+ def self.lldb_file_spec_list_get_size: (FFI::Pointer) -> Integer
193
+ def self.lldb_file_spec_list_append: (FFI::Pointer, FFI::Pointer) -> void
194
+ def self.lldb_file_spec_list_append_if_unique: (FFI::Pointer, FFI::Pointer) -> Integer
195
+ def self.lldb_file_spec_list_clear: (FFI::Pointer) -> void
196
+ def self.lldb_file_spec_list_get_file_spec_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
197
+
198
+ # SBAddress and SBLineEntry
199
+ def self.lldb_address_create: () -> FFI::Pointer
200
+ def self.lldb_address_create_from_load_address: (Integer, FFI::Pointer) -> FFI::Pointer
201
+ def self.lldb_address_destroy: (FFI::Pointer) -> void
202
+ def self.lldb_address_is_valid: (FFI::Pointer) -> Integer
203
+ def self.lldb_address_get_file_address: (FFI::Pointer) -> Integer
204
+ def self.lldb_address_get_load_address: (FFI::Pointer, FFI::Pointer) -> Integer
205
+ def self.lldb_address_get_offset: (FFI::Pointer) -> Integer
206
+ def self.lldb_address_get_line_entry: (FFI::Pointer) -> FFI::Pointer
207
+ def self.lldb_line_entry_destroy: (FFI::Pointer) -> void
208
+ def self.lldb_line_entry_is_valid: (FFI::Pointer) -> Integer
209
+ def self.lldb_line_entry_get_start_address: (FFI::Pointer) -> FFI::Pointer
210
+ def self.lldb_line_entry_get_end_address: (FFI::Pointer) -> FFI::Pointer
211
+ def self.lldb_line_entry_get_file_spec: (FFI::Pointer) -> FFI::Pointer
212
+ def self.lldb_line_entry_get_line: (FFI::Pointer) -> Integer
213
+ def self.lldb_line_entry_get_column: (FFI::Pointer) -> Integer
71
214
 
72
215
  # SBProcess
73
216
  def self.lldb_process_destroy: (FFI::Pointer) -> void
74
217
  def self.lldb_process_is_valid: (FFI::Pointer) -> Integer
75
- def self.lldb_process_continue: (FFI::Pointer) -> Integer
76
- def self.lldb_process_stop: (FFI::Pointer) -> Integer
77
- def self.lldb_process_kill: (FFI::Pointer) -> Integer
78
- def self.lldb_process_detach: (FFI::Pointer) -> Integer
79
- def self.lldb_process_destroy_process: (FFI::Pointer) -> Integer
80
- def self.lldb_process_signal: (FFI::Pointer, Integer) -> Integer
218
+ def self.lldb_process_continue: (FFI::Pointer, FFI::Pointer) -> Integer
219
+ def self.lldb_process_stop: (FFI::Pointer, FFI::Pointer) -> Integer
220
+ def self.lldb_process_kill: (FFI::Pointer, FFI::Pointer) -> Integer
221
+ def self.lldb_process_detach: (FFI::Pointer, FFI::Pointer) -> Integer
222
+ def self.lldb_process_destroy_process: (FFI::Pointer, FFI::Pointer) -> Integer
223
+ def self.lldb_process_signal: (FFI::Pointer, Integer, FFI::Pointer) -> Integer
81
224
  def self.lldb_process_get_state: (FFI::Pointer) -> Integer
82
225
  def self.lldb_process_get_num_threads: (FFI::Pointer) -> Integer
83
226
  def self.lldb_process_get_thread_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
@@ -92,23 +235,35 @@ module LLDB
92
235
  def self.lldb_process_read_memory: (FFI::Pointer, Integer, FFI::Pointer, Integer, FFI::Pointer) -> Integer
93
236
  def self.lldb_process_write_memory: (FFI::Pointer, Integer, FFI::Pointer, Integer, FFI::Pointer) -> Integer
94
237
  def self.lldb_process_allocate_memory: (FFI::Pointer, Integer, Integer, FFI::Pointer) -> Integer
95
- def self.lldb_process_deallocate_memory: (FFI::Pointer, Integer) -> Integer
238
+ def self.lldb_process_deallocate_memory: (FFI::Pointer, Integer, FFI::Pointer) -> Integer
96
239
  def self.lldb_process_read_cstring_from_memory: (FFI::Pointer, Integer, FFI::Pointer, Integer, FFI::Pointer) -> Integer
97
240
  def self.lldb_process_get_stdout: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
98
241
  def self.lldb_process_get_stderr: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
99
- def self.lldb_process_put_stdin: (FFI::Pointer, String, Integer) -> Integer
100
- def self.lldb_process_send_async_interrupt: (FFI::Pointer) -> Integer
101
- def self.lldb_process_get_num_supported_hardware_watchpoints: (FFI::Pointer, FFI::Pointer) -> Integer
242
+ def self.lldb_process_put_stdin: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
243
+ def self.lldb_process_send_async_interrupt: (FFI::Pointer) -> void
244
+ def self.lldb_process_get_broadcaster: (FFI::Pointer) -> FFI::Pointer
245
+ def self.lldb_process_get_num_supported_hardware_watchpoints: (FFI::Pointer, FFI::Pointer, FFI::Pointer) -> Integer
102
246
  def self.lldb_process_get_unique_id: (FFI::Pointer) -> Integer
247
+ def self.lldb_process_get_memory_region_info: (FFI::Pointer, Integer, FFI::Pointer) -> FFI::Pointer
248
+
249
+ # SBMemoryRegionInfo
250
+ def self.lldb_memory_region_info_destroy: (FFI::Pointer) -> void
251
+ def self.lldb_memory_region_info_get_region_base: (FFI::Pointer) -> Integer
252
+ def self.lldb_memory_region_info_get_region_end: (FFI::Pointer) -> Integer
253
+ def self.lldb_memory_region_info_is_readable: (FFI::Pointer) -> Integer
254
+ def self.lldb_memory_region_info_is_writable: (FFI::Pointer) -> Integer
255
+ def self.lldb_memory_region_info_is_executable: (FFI::Pointer) -> Integer
256
+ def self.lldb_memory_region_info_is_mapped: (FFI::Pointer) -> Integer
257
+ def self.lldb_memory_region_info_get_name: (FFI::Pointer) -> String?
103
258
 
104
259
  # SBThread
105
260
  def self.lldb_thread_destroy: (FFI::Pointer) -> void
106
261
  def self.lldb_thread_is_valid: (FFI::Pointer) -> Integer
107
- def self.lldb_thread_step_over: (FFI::Pointer) -> Integer
108
- def self.lldb_thread_step_into: (FFI::Pointer) -> Integer
109
- def self.lldb_thread_step_out: (FFI::Pointer) -> Integer
110
- def self.lldb_thread_step_instruction: (FFI::Pointer, Integer) -> Integer
111
- def self.lldb_thread_run_to_address: (FFI::Pointer, Integer) -> Integer
262
+ def self.lldb_thread_step_over: (FFI::Pointer, Integer, FFI::Pointer) -> Integer
263
+ def self.lldb_thread_step_into: (FFI::Pointer, String?, Integer, Integer, FFI::Pointer) -> Integer
264
+ def self.lldb_thread_step_out: (FFI::Pointer, FFI::Pointer) -> Integer
265
+ def self.lldb_thread_step_instruction: (FFI::Pointer, Integer, FFI::Pointer) -> Integer
266
+ def self.lldb_thread_run_to_address: (FFI::Pointer, Integer, FFI::Pointer) -> Integer
112
267
  def self.lldb_thread_get_num_frames: (FFI::Pointer) -> Integer
113
268
  def self.lldb_thread_get_frame_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
114
269
  def self.lldb_thread_get_selected_frame: (FFI::Pointer) -> FFI::Pointer
@@ -118,7 +273,7 @@ module LLDB
118
273
  def self.lldb_thread_get_name: (FFI::Pointer) -> String?
119
274
  def self.lldb_thread_get_queue_name: (FFI::Pointer) -> String?
120
275
  def self.lldb_thread_get_stop_reason: (FFI::Pointer) -> Integer
121
- def self.lldb_thread_get_stop_description: (FFI::Pointer, Integer) -> String?
276
+ def self.lldb_thread_get_stop_description: (FFI::Pointer, FFI::Pointer?, Integer) -> Integer
122
277
  def self.lldb_thread_get_stop_reason_data_count: (FFI::Pointer) -> Integer
123
278
  def self.lldb_thread_get_stop_reason_data_at_index: (FFI::Pointer, Integer) -> Integer
124
279
  def self.lldb_thread_is_stopped: (FFI::Pointer) -> Integer
@@ -134,6 +289,8 @@ module LLDB
134
289
  def self.lldb_frame_get_display_function_name: (FFI::Pointer) -> String?
135
290
  def self.lldb_frame_get_line: (FFI::Pointer) -> Integer
136
291
  def self.lldb_frame_get_file_path: (FFI::Pointer) -> String?
292
+ def self.lldb_frame_get_file_spec: (FFI::Pointer) -> FFI::Pointer
293
+ def self.lldb_frame_get_line_entry: (FFI::Pointer) -> FFI::Pointer
137
294
  def self.lldb_frame_get_column: (FFI::Pointer) -> Integer
138
295
  def self.lldb_frame_get_pc: (FFI::Pointer) -> Integer
139
296
  def self.lldb_frame_set_pc: (FFI::Pointer, Integer) -> Integer
@@ -141,9 +298,15 @@ module LLDB
141
298
  def self.lldb_frame_get_fp: (FFI::Pointer) -> Integer
142
299
  def self.lldb_frame_find_variable: (FFI::Pointer, String) -> FFI::Pointer
143
300
  def self.lldb_frame_evaluate_expression: (FFI::Pointer, String) -> FFI::Pointer
301
+ def self.lldb_frame_evaluate_expression_with_options: (FFI::Pointer, String, FFI::Pointer) -> FFI::Pointer
144
302
  def self.lldb_frame_get_value_for_variable_path: (FFI::Pointer, String) -> FFI::Pointer
145
303
  def self.lldb_frame_get_frame_id: (FFI::Pointer) -> Integer
146
304
  def self.lldb_frame_get_thread: (FFI::Pointer) -> FFI::Pointer
305
+ def self.lldb_frame_get_function: (FFI::Pointer) -> FFI::Pointer
306
+ def self.lldb_frame_get_symbol: (FFI::Pointer) -> FFI::Pointer
307
+ def self.lldb_frame_get_compile_unit: (FFI::Pointer) -> FFI::Pointer
308
+ def self.lldb_frame_get_block: (FFI::Pointer) -> FFI::Pointer
309
+ def self.lldb_frame_get_instruction_list: (FFI::Pointer, FFI::Pointer) -> FFI::Pointer
147
310
  def self.lldb_frame_get_symbol_context: (FFI::Pointer, Integer) -> FFI::Pointer
148
311
  def self.lldb_frame_get_variables: (FFI::Pointer, Integer, Integer, Integer, Integer) -> FFI::Pointer
149
312
  def self.lldb_frame_get_registers: (FFI::Pointer) -> FFI::Pointer
@@ -182,6 +345,7 @@ module LLDB
182
345
  def self.lldb_breakpoint_location_is_valid: (FFI::Pointer) -> Integer
183
346
  def self.lldb_breakpoint_location_get_id: (FFI::Pointer) -> Integer
184
347
  def self.lldb_breakpoint_location_get_load_address: (FFI::Pointer) -> Integer
348
+ def self.lldb_breakpoint_location_get_address: (FFI::Pointer) -> FFI::Pointer
185
349
  def self.lldb_breakpoint_location_is_enabled: (FFI::Pointer) -> Integer
186
350
  def self.lldb_breakpoint_location_set_enabled: (FFI::Pointer, Integer) -> void
187
351
  def self.lldb_breakpoint_location_get_hit_count: (FFI::Pointer) -> Integer
@@ -202,8 +366,8 @@ module LLDB
202
366
  def self.lldb_value_get_num_children: (FFI::Pointer) -> Integer
203
367
  def self.lldb_value_get_child_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
204
368
  def self.lldb_value_get_child_member_with_name: (FFI::Pointer, String) -> FFI::Pointer
205
- def self.lldb_value_get_value_as_signed: (FFI::Pointer) -> Integer
206
- def self.lldb_value_get_value_as_unsigned: (FFI::Pointer) -> Integer
369
+ def self.lldb_value_get_value_as_signed: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
370
+ def self.lldb_value_get_value_as_unsigned: (FFI::Pointer, FFI::Pointer, Integer) -> Integer
207
371
  def self.lldb_value_get_byte_size: (FFI::Pointer) -> Integer
208
372
  def self.lldb_value_might_have_children: (FFI::Pointer) -> Integer
209
373
  def self.lldb_value_get_error: (FFI::Pointer, FFI::Pointer) -> Integer
@@ -235,6 +399,7 @@ module LLDB
235
399
  def self.lldb_error_fail: (FFI::Pointer) -> Integer
236
400
  def self.lldb_error_get_cstring: (FFI::Pointer) -> String?
237
401
  def self.lldb_error_get_error: (FFI::Pointer) -> Integer
402
+ def self.lldb_error_get_type: (FFI::Pointer) -> Integer
238
403
  def self.lldb_error_clear: (FFI::Pointer) -> void
239
404
  def self.lldb_error_set_error_string: (FFI::Pointer, String) -> void
240
405
 
@@ -243,7 +408,67 @@ module LLDB
243
408
  def self.lldb_module_is_valid: (FFI::Pointer) -> Integer
244
409
  def self.lldb_module_get_file_path: (FFI::Pointer) -> String?
245
410
  def self.lldb_module_get_platform_file_path: (FFI::Pointer) -> String?
411
+ def self.lldb_module_get_file: (FFI::Pointer) -> FFI::Pointer
412
+ def self.lldb_module_get_platform_file: (FFI::Pointer) -> FFI::Pointer
246
413
  def self.lldb_module_get_num_symbols: (FFI::Pointer) -> Integer
414
+ def self.lldb_module_get_symbol_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
415
+
416
+ # SBSymbol, SBFunction, SBCompileUnit, and SBBlock
417
+ def self.lldb_symbol_destroy: (FFI::Pointer) -> void
418
+ def self.lldb_symbol_is_valid: (FFI::Pointer) -> Integer
419
+ def self.lldb_symbol_get_name: (FFI::Pointer) -> String?
420
+ def self.lldb_symbol_get_display_name: (FFI::Pointer) -> String?
421
+ def self.lldb_symbol_get_mangled_name: (FFI::Pointer) -> String?
422
+ def self.lldb_symbol_get_base_name: (FFI::Pointer) -> String?
423
+ def self.lldb_symbol_get_start_address: (FFI::Pointer) -> FFI::Pointer
424
+ def self.lldb_symbol_get_end_address: (FFI::Pointer) -> FFI::Pointer
425
+ def self.lldb_symbol_get_value: (FFI::Pointer) -> Integer
426
+ def self.lldb_symbol_get_size: (FFI::Pointer) -> Integer
427
+ def self.lldb_symbol_get_prologue_byte_size: (FFI::Pointer) -> Integer
428
+ def self.lldb_symbol_get_type: (FFI::Pointer) -> Integer
429
+ def self.lldb_symbol_get_id: (FFI::Pointer) -> Integer
430
+ def self.lldb_function_destroy: (FFI::Pointer) -> void
431
+ def self.lldb_function_is_valid: (FFI::Pointer) -> Integer
432
+ def self.lldb_function_get_name: (FFI::Pointer) -> String?
433
+ def self.lldb_function_get_display_name: (FFI::Pointer) -> String?
434
+ def self.lldb_function_get_mangled_name: (FFI::Pointer) -> String?
435
+ def self.lldb_function_get_base_name: (FFI::Pointer) -> String?
436
+ def self.lldb_function_get_start_address: (FFI::Pointer) -> FFI::Pointer
437
+ def self.lldb_function_get_end_address: (FFI::Pointer) -> FFI::Pointer
438
+ def self.lldb_function_get_prologue_byte_size: (FFI::Pointer) -> Integer
439
+ def self.lldb_function_get_type: (FFI::Pointer) -> FFI::Pointer
440
+ def self.lldb_function_get_block: (FFI::Pointer) -> FFI::Pointer
441
+ def self.lldb_function_is_optimized: (FFI::Pointer) -> Integer
442
+ def self.lldb_function_get_language: (FFI::Pointer) -> Integer
443
+ def self.lldb_compile_unit_destroy: (FFI::Pointer) -> void
444
+ def self.lldb_compile_unit_is_valid: (FFI::Pointer) -> Integer
445
+ def self.lldb_compile_unit_get_file_spec: (FFI::Pointer) -> FFI::Pointer
446
+ def self.lldb_compile_unit_get_num_line_entries: (FFI::Pointer) -> Integer
447
+ def self.lldb_compile_unit_get_line_entry_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
448
+ def self.lldb_block_destroy: (FFI::Pointer) -> void
449
+ def self.lldb_block_is_valid: (FFI::Pointer) -> Integer
450
+ def self.lldb_block_get_inlined_name: (FFI::Pointer) -> String?
451
+ def self.lldb_block_get_inlined_call_site_file: (FFI::Pointer) -> FFI::Pointer
452
+ def self.lldb_block_get_inlined_call_site_line: (FFI::Pointer) -> Integer
453
+ def self.lldb_block_get_inlined_call_site_column: (FFI::Pointer) -> Integer
454
+ def self.lldb_block_get_parent: (FFI::Pointer) -> FFI::Pointer
455
+ def self.lldb_block_get_sibling: (FFI::Pointer) -> FFI::Pointer
456
+ def self.lldb_block_get_first_child: (FFI::Pointer) -> FFI::Pointer
457
+ def self.lldb_block_get_num_ranges: (FFI::Pointer) -> Integer
458
+ def self.lldb_block_get_range_start_address: (FFI::Pointer, Integer) -> FFI::Pointer
459
+ def self.lldb_block_get_range_end_address: (FFI::Pointer, Integer) -> FFI::Pointer
460
+ def self.lldb_instruction_list_destroy: (FFI::Pointer) -> void
461
+ def self.lldb_instruction_list_is_valid: (FFI::Pointer) -> Integer
462
+ def self.lldb_instruction_list_get_size: (FFI::Pointer) -> Integer
463
+ def self.lldb_instruction_list_get_instruction_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
464
+ def self.lldb_instruction_destroy: (FFI::Pointer) -> void
465
+ def self.lldb_instruction_is_valid: (FFI::Pointer) -> Integer
466
+ def self.lldb_instruction_get_address: (FFI::Pointer) -> FFI::Pointer
467
+ def self.lldb_instruction_get_mnemonic: (FFI::Pointer, FFI::Pointer) -> String?
468
+ def self.lldb_instruction_get_operands: (FFI::Pointer, FFI::Pointer) -> String?
469
+ def self.lldb_instruction_get_comment: (FFI::Pointer, FFI::Pointer) -> String?
470
+ def self.lldb_instruction_get_byte_size: (FFI::Pointer) -> Integer
471
+ def self.lldb_instruction_get_bytes: (FFI::Pointer, FFI::Pointer, FFI::Pointer, Integer) -> Integer
247
472
 
248
473
  # SBSymbolContext
249
474
  def self.lldb_symbol_context_destroy: (FFI::Pointer) -> void
@@ -275,7 +500,17 @@ module LLDB
275
500
  def self.lldb_type_get_num_fields: (FFI::Pointer) -> Integer
276
501
  def self.lldb_type_get_num_direct_base_classes: (FFI::Pointer) -> Integer
277
502
  def self.lldb_type_get_num_virtual_base_classes: (FFI::Pointer) -> Integer
503
+ def self.lldb_type_get_field_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
504
+ def self.lldb_type_get_direct_base_class_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
505
+ def self.lldb_type_get_virtual_base_class_at_index: (FFI::Pointer, Integer) -> FFI::Pointer
278
506
  def self.lldb_type_get_basic_type: (FFI::Pointer) -> Integer
507
+ def self.lldb_type_member_destroy: (FFI::Pointer) -> void
508
+ def self.lldb_type_member_is_valid: (FFI::Pointer) -> Integer
509
+ def self.lldb_type_member_get_name: (FFI::Pointer) -> String?
510
+ def self.lldb_type_member_get_type: (FFI::Pointer) -> FFI::Pointer
511
+ def self.lldb_type_member_get_offset_in_bytes: (FFI::Pointer) -> Integer
512
+ def self.lldb_type_member_get_offset_in_bits: (FFI::Pointer) -> Integer
513
+ def self.lldb_type_member_get_bitfield_size_in_bits: (FFI::Pointer) -> Integer
279
514
 
280
515
  # SBWatchpoint
281
516
  def self.lldb_watchpoint_destroy: (FFI::Pointer) -> void
@@ -290,8 +525,8 @@ module LLDB
290
525
  def self.lldb_watchpoint_set_condition: (FFI::Pointer, String?) -> void
291
526
  def self.lldb_watchpoint_get_watch_address: (FFI::Pointer) -> Integer
292
527
  def self.lldb_watchpoint_get_watch_size: (FFI::Pointer) -> Integer
293
- def self.lldb_watchpoint_is_watching_reads: (FFI::Pointer) -> Integer
294
- def self.lldb_watchpoint_is_watching_writes: (FFI::Pointer) -> Integer
528
+ def self.lldb_watchpoint_is_watching_reads: (FFI::Pointer, FFI::Pointer) -> Integer
529
+ def self.lldb_watchpoint_is_watching_writes: (FFI::Pointer, FFI::Pointer) -> Integer
295
530
 
296
531
  # SBCommandInterpreter
297
532
  def self.lldb_command_interpreter_destroy: (FFI::Pointer) -> void
@@ -306,7 +541,9 @@ module LLDB
306
541
  def self.lldb_command_return_object_is_valid: (FFI::Pointer) -> Integer
307
542
  def self.lldb_command_return_object_get_output: (FFI::Pointer) -> String?
308
543
  def self.lldb_command_return_object_get_error: (FFI::Pointer) -> String?
544
+ def self.lldb_command_return_object_get_status: (FFI::Pointer) -> Integer
309
545
  def self.lldb_command_return_object_succeeded: (FFI::Pointer) -> Integer
546
+ def self.lldb_command_return_object_has_result: (FFI::Pointer) -> Integer
310
547
  def self.lldb_command_return_object_clear: (FFI::Pointer) -> void
311
548
  end
312
549
  end
@@ -0,0 +1,7 @@
1
+ class WeakRef
2
+ def initialize: (untyped) -> void
3
+ def __getobj__: () -> untyped
4
+
5
+ class RefError < RuntimeError
6
+ end
7
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lldb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yudai Takada
@@ -38,33 +38,56 @@ files:
38
38
  - README.md
39
39
  - Rakefile
40
40
  - Steepfile
41
+ - bindings/constants.yml
42
+ - bindings/surface.yml
41
43
  - examples/basic_debug.rb
42
44
  - examples/breakpoints.rb
43
45
  - examples/expression_eval.rb
44
46
  - examples/test_program.c
45
- - ext/lldb/Makefile
47
+ - ext/lldb/discovery.rb
46
48
  - ext/lldb/extconf.rb
47
- - ext/lldb/liblldb_wrapper.dylib
48
49
  - ext/lldb/lldb_wrapper.cpp
49
50
  - ext/lldb/lldb_wrapper.h
50
- - ext/lldb/lldb_wrapper.o
51
- - ext/lldb/mkmf.log
52
51
  - lib/lldb.rb
52
+ - lib/lldb/address.rb
53
+ - lib/lldb/api_support.rb
54
+ - lib/lldb/attach_info.rb
55
+ - lib/lldb/block.rb
53
56
  - lib/lldb/breakpoint.rb
54
57
  - lib/lldb/breakpoint_location.rb
58
+ - lib/lldb/broadcaster.rb
55
59
  - lib/lldb/command_interpreter.rb
56
60
  - lib/lldb/command_return_object.rb
61
+ - lib/lldb/compile_unit.rb
62
+ - lib/lldb/context.rb
57
63
  - lib/lldb/debugger.rb
58
64
  - lib/lldb/error.rb
65
+ - lib/lldb/event.rb
66
+ - lib/lldb/expression_options.rb
59
67
  - lib/lldb/ffi_bindings.rb
68
+ - lib/lldb/file_spec.rb
69
+ - lib/lldb/file_spec_list.rb
60
70
  - lib/lldb/frame.rb
71
+ - lib/lldb/function.rb
72
+ - lib/lldb/instruction.rb
73
+ - lib/lldb/instruction_list.rb
61
74
  - lib/lldb/launch_info.rb
75
+ - lib/lldb/line_entry.rb
76
+ - lib/lldb/listener.rb
77
+ - lib/lldb/memory_region_info.rb
62
78
  - lib/lldb/module.rb
79
+ - lib/lldb/native.rb
80
+ - lib/lldb/native_buffer.rb
81
+ - lib/lldb/native_handle.rb
82
+ - lib/lldb/native_lifecycle.rb
83
+ - lib/lldb/native_string_array.rb
63
84
  - lib/lldb/process.rb
85
+ - lib/lldb/symbol.rb
64
86
  - lib/lldb/symbol_context.rb
65
87
  - lib/lldb/target.rb
66
88
  - lib/lldb/thread.rb
67
89
  - lib/lldb/type.rb
90
+ - lib/lldb/type_member.rb
68
91
  - lib/lldb/types.rb
69
92
  - lib/lldb/value.rb
70
93
  - lib/lldb/value_list.rb
@@ -73,7 +96,10 @@ files:
73
96
  - lldb.gemspec
74
97
  - rbs_collection.lock.yaml
75
98
  - rbs_collection.yaml
99
+ - script/check_bindings
100
+ - script/guard_c_exports
76
101
  - sig/lldb/ffi_bindings.rbs
102
+ - sig/lldb/weak_ref.rbs
77
103
  homepage: https://github.com/ydah/lldb-ruby
78
104
  licenses:
79
105
  - MIT
@@ -96,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
122
  - !ruby/object:Gem::Version
97
123
  version: '0'
98
124
  requirements: []
99
- rubygems_version: 4.0.3
125
+ rubygems_version: 4.0.6
100
126
  specification_version: 4
101
127
  summary: Ruby bindings for LLDB debugger
102
128
  test_files: []
data/ext/lldb/Makefile DELETED
@@ -1,24 +0,0 @@
1
- CXX = clang++
2
- CXXFLAGS = -fdeclspec -std=c++17 -I/opt/homebrew/opt/llvm/include -fPIC
3
- LDFLAGS = -L. -fstack-protector-strong -L/opt/homebrew/Cellar/gmp/6.3.0/lib -L/opt/homebrew/opt/llvm/lib -llldb -Wl,-rpath,/opt/homebrew/opt/llvm/lib -lc++ -L/opt/homebrew/Cellar/gmp/6.3.0/lib -Wl,-undefined,dynamic_lookup -dynamiclib
4
-
5
- TARGET = liblldb_wrapper.dylib
6
- SRCS = lldb_wrapper.cpp
7
- OBJS = lldb_wrapper.o
8
-
9
- all: $(TARGET)
10
-
11
- $(TARGET): $(OBJS)
12
- $(CXX) $(LDFLAGS) -o $@ $(OBJS)
13
-
14
- %.o: %.cpp
15
- $(CXX) $(CXXFLAGS) -c -o $@ $<
16
-
17
- install: $(TARGET)
18
- mkdir -p $(DESTDIR)/Users/yudai.takada/.rbenv/versions/4.0.0/lib/ruby/site_ruby/4.0.0/lldb
19
- cp $(TARGET) $(DESTDIR)/Users/yudai.takada/.rbenv/versions/4.0.0/lib/ruby/site_ruby/4.0.0/lldb/
20
-
21
- clean:
22
- rm -f $(OBJS) $(TARGET)
23
-
24
- .PHONY: all install clean
Binary file
Binary file
data/ext/lldb/mkmf.log DELETED
@@ -1,24 +0,0 @@
1
- find_executable: checking for llvm-config... -------------------- no
2
-
3
- --------------------
4
-
5
- find_executable: checking for llvm-config-18... -------------------- no
6
-
7
- --------------------
8
-
9
- find_executable: checking for llvm-config-17... -------------------- no
10
-
11
- --------------------
12
-
13
- find_executable: checking for llvm-config-16... -------------------- no
14
-
15
- --------------------
16
-
17
- find_executable: checking for llvm-config-15... -------------------- no
18
-
19
- --------------------
20
-
21
- find_executable: checking for llvm-config-14... -------------------- no
22
-
23
- --------------------
24
-