blob: 8f9ea2ee63967502d261f5ef174ead3b8e6b1825 [file] [log] [blame]
Johnny Chendc7d3c12011-07-16 21:15:39 +00001//===-- SWIG Interface for SBTarget -----------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10namespace lldb {
11
Greg Clayton0e615682012-02-24 05:03:03 +000012class SBLaunchInfo
13{
Greg Clayton38d1f052012-02-24 20:59:25 +000014public:
15 SBLaunchInfo (const char **argv);
Greg Clayton0e615682012-02-24 05:03:03 +000016
17 uint32_t
18 GetUserID();
19
20 uint32_t
21 GetGroupID();
22
23 bool
24 UserIDIsValid ();
25
26 bool
27 GroupIDIsValid ();
28
29 void
30 SetUserID (uint32_t uid);
31
32 void
33 SetGroupID (uint32_t gid);
34
Greg Clayton0e615682012-02-24 05:03:03 +000035 uint32_t
36 GetNumArguments ();
37
38 const char *
39 GetArgumentAtIndex (uint32_t idx);
40
41 void
42 SetArguments (const char **argv, bool append);
43
44 uint32_t
45 GetNumEnvironmentEntries ();
46
47 const char *
48 GetEnvironmentEntryAtIndex (uint32_t idx);
49
50 void
51 SetEnvironmentEntries (const char **envp, bool append);
52
53 void
54 Clear ();
55
56 const char *
57 GetWorkingDirectory () const;
58
59 void
60 SetWorkingDirectory (const char *working_dir);
61
62 uint32_t
63 GetLaunchFlags ();
64
65 void
66 SetLaunchFlags (uint32_t flags);
67
68 const char *
69 GetProcessPluginName ();
70
71 void
72 SetProcessPluginName (const char *plugin_name);
73
74 const char *
75 GetShell ();
76
77 void
78 SetShell (const char * path);
79
80 uint32_t
81 GetResumeCount ();
82
83 void
84 SetResumeCount (uint32_t c);
85
86 bool
87 AddCloseFileAction (int fd);
88
89 bool
90 AddDuplicateFileAction (int fd, int dup_fd);
91
92 bool
93 AddOpenFileAction (int fd, const char *path, bool read, bool write);
94
95 bool
96 AddSuppressFileAction (int fd, bool read, bool write);
97};
98
99class SBAttachInfo
100{
101public:
102 SBAttachInfo ();
103
104 SBAttachInfo (lldb::pid_t pid);
105
106 SBAttachInfo (const char *path, bool wait_for);
107
108 SBAttachInfo (const lldb::SBAttachInfo &rhs);
109
110 lldb::pid_t
111 GetProcessID ();
112
113 void
114 SetProcessID (lldb::pid_t pid);
115
116 void
117 SetExecutable (const char *path);
118
119 void
120 SetExecutable (lldb::SBFileSpec exe_file);
121
122 bool
123 GetWaitForLaunch ();
124
125 void
126 SetWaitForLaunch (bool b);
127
Jim Inghamcd16df92012-07-20 21:37:13 +0000128 bool
129 GetIgnoreExisting ();
130
131 void
132 SetIgnoreExisting (bool b);
133
Greg Clayton0e615682012-02-24 05:03:03 +0000134 uint32_t
135 GetResumeCount ();
136
137 void
138 SetResumeCount (uint32_t c);
139
140 const char *
141 GetProcessPluginName ();
142
143 void
144 SetProcessPluginName (const char *plugin_name);
145
146 uint32_t
Greg Clayton41bd8ac2012-02-24 23:56:06 +0000147 GetUserID();
148
149 uint32_t
150 GetGroupID();
151
152 bool
153 UserIDIsValid ();
154
155 bool
156 GroupIDIsValid ();
157
158 void
159 SetUserID (uint32_t uid);
160
161 void
162 SetGroupID (uint32_t gid);
163
164 uint32_t
Greg Clayton0e615682012-02-24 05:03:03 +0000165 GetEffectiveUserID();
166
167 uint32_t
168 GetEffectiveGroupID();
169
170 bool
171 EffectiveUserIDIsValid ();
172
173 bool
174 EffectiveGroupIDIsValid ();
175
176 void
177 SetEffectiveUserID (uint32_t uid);
178
179 void
180 SetEffectiveGroupID (uint32_t gid);
181
182 lldb::pid_t
183 GetParentProcessID ();
184
185 void
186 SetParentProcessID (lldb::pid_t pid);
187
188 bool
189 ParentProcessIDIsValid();
190};
191
192
Johnny Chendc7d3c12011-07-16 21:15:39 +0000193%feature("docstring",
194"Represents the target program running under the debugger.
195
Johnny Chen01a67862011-10-14 00:42:25 +0000196SBTarget supports module, breakpoint, and watchpoint iterations. For example,
Johnny Chendc7d3c12011-07-16 21:15:39 +0000197
198 for m in target.module_iter():
199 print m
200
201produces:
202
203(x86_64) /Volumes/data/lldb/svn/trunk/test/python_api/lldbutil/iter/a.out
204(x86_64) /usr/lib/dyld
205(x86_64) /usr/lib/libstdc++.6.dylib
206(x86_64) /usr/lib/libSystem.B.dylib
207(x86_64) /usr/lib/system/libmathCommon.A.dylib
208(x86_64) /usr/lib/libSystem.B.dylib(__commpage)
209
210and,
211
212 for b in target.breakpoint_iter():
213 print b
214
215produces:
216
217SBBreakpoint: id = 1, file ='main.cpp', line = 66, locations = 1
Johnny Chend4dd7992011-09-27 01:19:20 +0000218SBBreakpoint: id = 2, file ='main.cpp', line = 85, locations = 1
219
220and,
221
Johnny Chen01a67862011-10-14 00:42:25 +0000222 for wp_loc in target.watchpoint_iter():
Johnny Chend4dd7992011-09-27 01:19:20 +0000223 print wp_loc
224
225produces:
226
Johnny Chen01a67862011-10-14 00:42:25 +0000227Watchpoint 1: addr = 0x1034ca048 size = 4 state = enabled type = rw
Johnny Chend4dd7992011-09-27 01:19:20 +0000228 declare @ '/Volumes/data/lldb/svn/trunk/test/python_api/watchpoint/main.c:12'
Johnny Chen01a67862011-10-14 00:42:25 +0000229 hw_index = 0 hit_count = 2 ignore_count = 0"
Johnny Chen357033b2011-07-18 20:13:38 +0000230) SBTarget;
Johnny Chendc7d3c12011-07-16 21:15:39 +0000231class SBTarget
232{
Johnny Chendc7d3c12011-07-16 21:15:39 +0000233public:
234 //------------------------------------------------------------------
235 // Broadcaster bits.
236 //------------------------------------------------------------------
237 enum
238 {
239 eBroadcastBitBreakpointChanged = (1 << 0),
240 eBroadcastBitModulesLoaded = (1 << 1),
Jim Ingham1b5792e2012-12-18 02:03:49 +0000241 eBroadcastBitModulesUnloaded = (1 << 2),
242 eBroadcastBitWatchpointChanged = (1 << 3)
Johnny Chendc7d3c12011-07-16 21:15:39 +0000243 };
244
245 //------------------------------------------------------------------
246 // Constructors
247 //------------------------------------------------------------------
248 SBTarget ();
249
250 SBTarget (const lldb::SBTarget& rhs);
251
Johnny Chendc7d3c12011-07-16 21:15:39 +0000252 //------------------------------------------------------------------
253 // Destructor
254 //------------------------------------------------------------------
255 ~SBTarget();
256
Jim Ingham4bddaeb2012-02-16 06:50:00 +0000257 static const char *
258 GetBroadcasterClassName ();
259
Johnny Chendc7d3c12011-07-16 21:15:39 +0000260 bool
261 IsValid() const;
262
263 lldb::SBProcess
264 GetProcess ();
265
266 %feature("docstring", "
267 //------------------------------------------------------------------
268 /// Launch a new process.
269 ///
270 /// Launch a new process by spawning a new process using the
271 /// target object's executable module's file as the file to launch.
272 /// Arguments are given in \a argv, and the environment variables
273 /// are in \a envp. Standard input and output files can be
274 /// optionally re-directed to \a stdin_path, \a stdout_path, and
275 /// \a stderr_path.
276 ///
277 /// @param[in] listener
278 /// An optional listener that will receive all process events.
279 /// If \a listener is valid then \a listener will listen to all
280 /// process events. If not valid, then this target's debugger
281 /// (SBTarget::GetDebugger()) will listen to all process events.
282 ///
283 /// @param[in] argv
284 /// The argument array.
285 ///
286 /// @param[in] envp
287 /// The environment array.
288 ///
289 /// @param[in] launch_flags
290 /// Flags to modify the launch (@see lldb::LaunchFlags)
291 ///
292 /// @param[in] stdin_path
293 /// The path to use when re-directing the STDIN of the new
294 /// process. If all stdXX_path arguments are NULL, a pseudo
295 /// terminal will be used.
296 ///
297 /// @param[in] stdout_path
298 /// The path to use when re-directing the STDOUT of the new
299 /// process. If all stdXX_path arguments are NULL, a pseudo
300 /// terminal will be used.
301 ///
302 /// @param[in] stderr_path
303 /// The path to use when re-directing the STDERR of the new
304 /// process. If all stdXX_path arguments are NULL, a pseudo
305 /// terminal will be used.
306 ///
307 /// @param[in] working_directory
308 /// The working directory to have the child process run in
309 ///
310 /// @param[in] launch_flags
311 /// Some launch options specified by logical OR'ing
312 /// lldb::LaunchFlags enumeration values together.
313 ///
314 /// @param[in] stop_at_endtry
315 /// If false do not stop the inferior at the entry point.
316 ///
317 /// @param[out]
318 /// An error object. Contains the reason if there is some failure.
319 ///
320 /// @return
321 /// A process object for the newly created process.
322 //------------------------------------------------------------------
323
324 For example,
325
326 process = target.Launch(self.dbg.GetListener(), None, None,
327 None, '/tmp/stdout.txt', None,
328 None, 0, False, error)
329
330 launches a new process by passing nothing for both the args and the envs
331 and redirect the standard output of the inferior to the /tmp/stdout.txt
332 file. It does not specify a working directory so that the debug server
333 will use its idea of what the current working directory is for the
334 inferior. Also, we ask the debugger not to stop the inferior at the
335 entry point. If no breakpoint is specified for the inferior, it should
336 run to completion if no user interaction is required.
337 ") Launch;
338 lldb::SBProcess
339 Launch (SBListener &listener,
340 char const **argv,
341 char const **envp,
342 const char *stdin_path,
343 const char *stdout_path,
344 const char *stderr_path,
345 const char *working_directory,
346 uint32_t launch_flags, // See LaunchFlags
347 bool stop_at_entry,
348 lldb::SBError& error);
349
350 %feature("docstring", "
351 //------------------------------------------------------------------
352 /// Launch a new process with sensible defaults.
353 ///
354 /// @param[in] argv
355 /// The argument array.
356 ///
357 /// @param[in] envp
358 /// The environment array.
359 ///
360 /// @param[in] working_directory
361 /// The working directory to have the child process run in
362 ///
363 /// Default: listener
364 /// Set to the target's debugger (SBTarget::GetDebugger())
365 ///
366 /// Default: launch_flags
367 /// Empty launch flags
368 ///
369 /// Default: stdin_path
370 /// Default: stdout_path
371 /// Default: stderr_path
372 /// A pseudo terminal will be used.
373 ///
374 /// @return
375 /// A process object for the newly created process.
376 //------------------------------------------------------------------
377
378 For example,
379
380 process = target.LaunchSimple(['X', 'Y', 'Z'], None, os.getcwd())
381
382 launches a new process by passing 'X', 'Y', 'Z' as the args to the
383 executable.
384 ") LaunchSimple;
385 lldb::SBProcess
386 LaunchSimple (const char **argv,
387 const char **envp,
388 const char *working_directory);
389
Greg Clayton0e615682012-02-24 05:03:03 +0000390 lldb::SBProcess
391 Launch (lldb::SBLaunchInfo &launch_info, lldb::SBError& error);
392
393 lldb::SBProcess
394 Attach (lldb::SBAttachInfo &attach_info, lldb::SBError& error);
395
396
Johnny Chendc7d3c12011-07-16 21:15:39 +0000397 %feature("docstring", "
398 //------------------------------------------------------------------
399 /// Attach to process with pid.
400 ///
401 /// @param[in] listener
402 /// An optional listener that will receive all process events.
403 /// If \a listener is valid then \a listener will listen to all
404 /// process events. If not valid, then this target's debugger
405 /// (SBTarget::GetDebugger()) will listen to all process events.
406 ///
407 /// @param[in] pid
408 /// The process ID to attach to.
409 ///
410 /// @param[out]
411 /// An error explaining what went wrong if attach fails.
412 ///
413 /// @return
414 /// A process object for the attached process.
415 //------------------------------------------------------------------
416 ") AttachToProcessWithID;
417 lldb::SBProcess
418 AttachToProcessWithID (SBListener &listener,
419 lldb::pid_t pid,
420 lldb::SBError& error);
421
422 %feature("docstring", "
423 //------------------------------------------------------------------
424 /// Attach to process with name.
425 ///
426 /// @param[in] listener
427 /// An optional listener that will receive all process events.
428 /// If \a listener is valid then \a listener will listen to all
429 /// process events. If not valid, then this target's debugger
430 /// (SBTarget::GetDebugger()) will listen to all process events.
431 ///
432 /// @param[in] name
433 /// Basename of process to attach to.
434 ///
435 /// @param[in] wait_for
436 /// If true wait for a new instance of 'name' to be launched.
437 ///
438 /// @param[out]
439 /// An error explaining what went wrong if attach fails.
440 ///
441 /// @return
442 /// A process object for the attached process.
443 //------------------------------------------------------------------
444 ") AttachToProcessWithName;
445 lldb::SBProcess
446 AttachToProcessWithName (SBListener &listener,
447 const char *name,
448 bool wait_for,
449 lldb::SBError& error);
450
451 %feature("docstring", "
452 //------------------------------------------------------------------
453 /// Connect to a remote debug server with url.
454 ///
455 /// @param[in] listener
456 /// An optional listener that will receive all process events.
457 /// If \a listener is valid then \a listener will listen to all
458 /// process events. If not valid, then this target's debugger
459 /// (SBTarget::GetDebugger()) will listen to all process events.
460 ///
461 /// @param[in] url
462 /// The url to connect to, e.g., 'connect://localhost:12345'.
463 ///
464 /// @param[in] plugin_name
465 /// The plugin name to be used; can be NULL.
466 ///
467 /// @param[out]
468 /// An error explaining what went wrong if the connect fails.
469 ///
470 /// @return
471 /// A process object for the connected process.
472 //------------------------------------------------------------------
473 ") ConnectRemote;
474 lldb::SBProcess
475 ConnectRemote (SBListener &listener,
476 const char *url,
477 const char *plugin_name,
478 SBError& error);
479
480 lldb::SBFileSpec
481 GetExecutable ();
482
Greg Claytoncac9c5f2011-09-24 00:52:29 +0000483 bool
484 AddModule (lldb::SBModule &module);
485
486 lldb::SBModule
487 AddModule (const char *path,
488 const char *triple,
489 const char *uuid);
490
Greg Claytonb210aec2012-04-23 20:23:39 +0000491 lldb::SBModule
492 AddModule (const char *path,
493 const char *triple,
494 const char *uuid_cstr,
495 const char *symfile);
496
Johnny Chendc7d3c12011-07-16 21:15:39 +0000497 uint32_t
498 GetNumModules () const;
499
500 lldb::SBModule
501 GetModuleAtIndex (uint32_t idx);
502
Greg Claytoncac9c5f2011-09-24 00:52:29 +0000503 bool
504 RemoveModule (lldb::SBModule module);
505
Johnny Chendc7d3c12011-07-16 21:15:39 +0000506 lldb::SBDebugger
507 GetDebugger() const;
508
509 lldb::SBModule
510 FindModule (const lldb::SBFileSpec &file_spec);
511
Greg Clayton13d19502012-01-29 06:07:39 +0000512 lldb::ByteOrder
513 GetByteOrder ();
514
515 uint32_t
516 GetAddressByteSize();
517
518 const char *
519 GetTriple ();
520
Greg Claytoncac9c5f2011-09-24 00:52:29 +0000521 lldb::SBError
522 SetSectionLoadAddress (lldb::SBSection section,
523 lldb::addr_t section_base_addr);
524
525 lldb::SBError
526 ClearSectionLoadAddress (lldb::SBSection section);
527
528 lldb::SBError
529 SetModuleLoadAddress (lldb::SBModule module,
530 int64_t sections_offset);
531
532 lldb::SBError
533 ClearModuleLoadAddress (lldb::SBModule module);
534
Johnny Chendc7d3c12011-07-16 21:15:39 +0000535 %feature("docstring", "
536 //------------------------------------------------------------------
537 /// Find functions by name.
538 ///
539 /// @param[in] name
540 /// The name of the function we are looking for.
541 ///
542 /// @param[in] name_type_mask
543 /// A logical OR of one or more FunctionNameType enum bits that
544 /// indicate what kind of names should be used when doing the
545 /// lookup. Bits include fully qualified names, base names,
546 /// C++ methods, or ObjC selectors.
547 /// See FunctionNameType for more details.
548 ///
Johnny Chendc7d3c12011-07-16 21:15:39 +0000549 /// @return
Greg Clayton5569e642012-02-06 01:44:54 +0000550 /// A lldb::SBSymbolContextList that gets filled in with all of
551 /// the symbol contexts for all the matches.
Johnny Chendc7d3c12011-07-16 21:15:39 +0000552 //------------------------------------------------------------------
553 ") FindFunctions;
Greg Clayton5569e642012-02-06 01:44:54 +0000554 lldb::SBSymbolContextList
Johnny Chendc7d3c12011-07-16 21:15:39 +0000555 FindFunctions (const char *name,
Greg Clayton5569e642012-02-06 01:44:54 +0000556 uint32_t name_type_mask = lldb::eFunctionNameTypeAny);
Enrico Granata6f3533f2011-07-29 19:53:35 +0000557
558 lldb::SBType
559 FindFirstType (const char* type);
560
561 lldb::SBTypeList
562 FindTypes (const char* type);
Johnny Chendc7d3c12011-07-16 21:15:39 +0000563
Greg Claytonb43165b2012-12-05 21:24:42 +0000564 lldb::SBType
565 GetBasicType(lldb::BasicType type);
566
Jim Inghame37d6052011-09-13 00:29:56 +0000567 lldb::SBSourceManager
568 GetSourceManager ();
569
Johnny Chendc7d3c12011-07-16 21:15:39 +0000570 %feature("docstring", "
571 //------------------------------------------------------------------
572 /// Find global and static variables by name.
573 ///
574 /// @param[in] name
575 /// The name of the global or static variable we are looking
576 /// for.
577 ///
578 /// @param[in] max_matches
579 /// Allow the number of matches to be limited to \a max_matches.
580 ///
581 /// @return
582 /// A list of matched variables in an SBValueList.
583 //------------------------------------------------------------------
584 ") FindGlobalVariables;
585 lldb::SBValueList
586 FindGlobalVariables (const char *name,
587 uint32_t max_matches);
588
Enrico Granatabcd80b42013-01-16 18:53:52 +0000589 %feature("docstring", "
590 //------------------------------------------------------------------
591 /// Find the first global (or static) variable by name.
592 ///
593 /// @param[in] name
594 /// The name of the global or static variable we are looking
595 /// for.
596 ///
597 /// @return
598 /// An SBValue that gets filled in with the found variable (if any).
599 //------------------------------------------------------------------
600 ") FindFirstGlobalVariable;
601 lldb::SBValue
602 FindFirstGlobalVariable (const char* name);
603
Johnny Chendc7d3c12011-07-16 21:15:39 +0000604 void
605 Clear ();
606
Greg Clayton00e6fbf2011-07-22 16:46:35 +0000607 lldb::SBAddress
608 ResolveLoadAddress (lldb::addr_t vm_addr);
Johnny Chendc7d3c12011-07-16 21:15:39 +0000609
610 SBSymbolContext
611 ResolveSymbolContextForAddress (const SBAddress& addr,
612 uint32_t resolve_scope);
613
614 lldb::SBBreakpoint
615 BreakpointCreateByLocation (const char *file, uint32_t line);
616
617 lldb::SBBreakpoint
618 BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
619
620 lldb::SBBreakpoint
621 BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
622
623 lldb::SBBreakpoint
Jim Ingham2dd7f7f2011-10-11 01:18:55 +0000624 BreakpointCreateByName (const char *symbol_name,
625 uint32_t func_name_type, // Logical OR one or more FunctionNameType enum bits
626 const SBFileSpecList &module_list,
627 const SBFileSpecList &comp_unit_list);
628
629 lldb::SBBreakpoint
Jim Inghamfab10e82012-03-06 00:37:27 +0000630 BreakpointCreateByNames (const char *symbol_name[],
631 uint32_t num_names,
632 uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
633 const SBFileSpecList &module_list,
634 const SBFileSpecList &comp_unit_list);
635
636 lldb::SBBreakpoint
Johnny Chendc7d3c12011-07-16 21:15:39 +0000637 BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
638
639 lldb::SBBreakpoint
Jim Ingham969795f2011-09-21 01:17:13 +0000640 BreakpointCreateBySourceRegex (const char *source_regex, const lldb::SBFileSpec &source_file, const char *module_name = NULL);
641
642 lldb::SBBreakpoint
Jim Inghamfab10e82012-03-06 00:37:27 +0000643 BreakpointCreateForException (lldb::LanguageType language,
644 bool catch_bp,
645 bool throw_bp);
646
647 lldb::SBBreakpoint
Johnny Chendc7d3c12011-07-16 21:15:39 +0000648 BreakpointCreateByAddress (addr_t address);
649
650 uint32_t
651 GetNumBreakpoints () const;
652
653 lldb::SBBreakpoint
654 GetBreakpointAtIndex (uint32_t idx) const;
655
656 bool
657 BreakpointDelete (break_id_t break_id);
658
659 lldb::SBBreakpoint
660 FindBreakpointByID (break_id_t break_id);
661
662 bool
663 EnableAllBreakpoints ();
664
665 bool
666 DisableAllBreakpoints ();
667
668 bool
669 DeleteAllBreakpoints ();
670
Johnny Chend4dd7992011-09-27 01:19:20 +0000671 uint32_t
Greg Clayton1b282f92011-10-13 18:08:26 +0000672 GetNumWatchpoints () const;
673
674 lldb::SBWatchpoint
675 GetWatchpointAtIndex (uint32_t idx) const;
676
Johnny Chend4dd7992011-09-27 01:19:20 +0000677 bool
Greg Clayton1b282f92011-10-13 18:08:26 +0000678 DeleteWatchpoint (lldb::watch_id_t watch_id);
679
680 lldb::SBWatchpoint
681 FindWatchpointByID (lldb::watch_id_t watch_id);
682
Johnny Chend4dd7992011-09-27 01:19:20 +0000683 bool
Greg Clayton1b282f92011-10-13 18:08:26 +0000684 EnableAllWatchpoints ();
685
Johnny Chend4dd7992011-09-27 01:19:20 +0000686 bool
Greg Clayton1b282f92011-10-13 18:08:26 +0000687 DisableAllWatchpoints ();
688
Johnny Chend4dd7992011-09-27 01:19:20 +0000689 bool
Greg Clayton1b282f92011-10-13 18:08:26 +0000690 DeleteAllWatchpoints ();
691
692 lldb::SBWatchpoint
693 WatchAddress (lldb::addr_t addr,
694 size_t size,
695 bool read,
Johnny Chenb90827e2012-06-04 23:19:54 +0000696 bool write,
697 SBError &error);
Greg Clayton1b282f92011-10-13 18:08:26 +0000698
Johnny Chend4dd7992011-09-27 01:19:20 +0000699
Johnny Chendc7d3c12011-07-16 21:15:39 +0000700 lldb::SBBroadcaster
701 GetBroadcaster () const;
Sean Callanan50952e92011-12-14 23:49:37 +0000702
703 lldb::SBInstructionList
Greg Clayton9c766112012-03-06 22:24:44 +0000704 ReadInstructions (lldb::SBAddress base_addr, uint32_t count);
705
706 lldb::SBInstructionList
Jim Ingham0f063ba2013-03-02 00:26:47 +0000707 ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string);
708
709 lldb::SBInstructionList
Sean Callanan50952e92011-12-14 23:49:37 +0000710 GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
711
Jim Ingham0f063ba2013-03-02 00:26:47 +0000712 lldb::SBInstructionList
713 GetInstructionsWithFlavor (lldb::SBAddress base_addr, const char *flavor_string, const void *buf, size_t size);
714
Greg Claytone14e1922012-12-04 02:22:16 +0000715 lldb::SBSymbolContextList
716 FindSymbols (const char *name, lldb::SymbolType type = eSymbolTypeAny);
717
Johnny Chendc7d3c12011-07-16 21:15:39 +0000718 bool
Greg Claytonda7bc7d2011-11-13 06:57:31 +0000719 GetDescription (lldb::SBStream &description, lldb::DescriptionLevel description_level);
Greg Clayton13d19502012-01-29 06:07:39 +0000720
Greg Clayton13fbb992013-02-01 00:47:49 +0000721 lldb::addr_t
722 GetStackRedZoneSize();
723
Greg Clayton4b63a5c2013-01-04 18:10:18 +0000724 lldb::SBValue
725 EvaluateExpression (const char *expr, const lldb::SBExpressionOptions &options);
Greg Clayton13d19502012-01-29 06:07:39 +0000726 %pythoncode %{
Greg Clayton6b2bd932012-02-01 08:09:32 +0000727 class modules_access(object):
728 '''A helper object that will lazily hand out lldb.SBModule objects for a target when supplied an index, or by full or partial path.'''
729 def __init__(self, sbtarget):
730 self.sbtarget = sbtarget
731
732 def __len__(self):
733 if self.sbtarget:
Filipe Cabecinhas1a96ef82012-05-11 20:39:42 +0000734 return int(self.sbtarget.GetNumModules())
Greg Clayton6b2bd932012-02-01 08:09:32 +0000735 return 0
736
737 def __getitem__(self, key):
738 num_modules = self.sbtarget.GetNumModules()
739 if type(key) is int:
740 if key < num_modules:
741 return self.sbtarget.GetModuleAtIndex(key)
742 elif type(key) is str:
743 if key.find('/') == -1:
744 for idx in range(num_modules):
745 module = self.sbtarget.GetModuleAtIndex(idx)
746 if module.file.basename == key:
747 return module
748 else:
749 for idx in range(num_modules):
750 module = self.sbtarget.GetModuleAtIndex(idx)
751 if module.file.fullpath == key:
752 return module
753 # See if the string is a UUID
Greg Clayton1fb7c622013-03-07 02:58:47 +0000754 try:
755 the_uuid = uuid.UUID(key)
756 if the_uuid:
757 for idx in range(num_modules):
758 module = self.sbtarget.GetModuleAtIndex(idx)
759 if module.uuid == the_uuid:
760 return module
761 except:
762 return None
Greg Clayton6b2bd932012-02-01 08:09:32 +0000763 elif type(key) is uuid.UUID:
764 for idx in range(num_modules):
765 module = self.sbtarget.GetModuleAtIndex(idx)
766 if module.uuid == key:
767 return module
768 elif type(key) is re.SRE_Pattern:
769 matching_modules = []
770 for idx in range(num_modules):
771 module = self.sbtarget.GetModuleAtIndex(idx)
772 re_match = key.search(module.path.fullpath)
773 if re_match:
774 matching_modules.append(module)
775 return matching_modules
776 else:
777 print "error: unsupported item type: %s" % type(key)
778 return None
779
780 def get_modules_access_object(self):
Greg Claytonb62bb8c2012-02-03 03:22:53 +0000781 '''An accessor function that returns a modules_access() object which allows lazy module access from a lldb.SBTarget object.'''
Greg Clayton6b2bd932012-02-01 08:09:32 +0000782 return self.modules_access (self)
783
784 def get_modules_array(self):
Greg Claytonb62bb8c2012-02-03 03:22:53 +0000785 '''An accessor function that returns a list() that contains all modules in a lldb.SBTarget object.'''
Greg Clayton6b2bd932012-02-01 08:09:32 +0000786 modules = []
787 for idx in range(self.GetNumModules()):
788 modules.append(self.GetModuleAtIndex(idx))
789 return modules
790
791 __swig_getmethods__["modules"] = get_modules_array
Greg Clayton5ef31a92012-06-29 22:00:42 +0000792 if _newclass: modules = property(get_modules_array, None, doc='''A read only property that returns a list() of lldb.SBModule objects contained in this target. This list is a list all modules that the target currently is tracking (the main executable and all dependent shared libraries).''')
Greg Clayton6b2bd932012-02-01 08:09:32 +0000793
794 __swig_getmethods__["module"] = get_modules_access_object
Greg Clayton5ef31a92012-06-29 22:00:42 +0000795 if _newclass: module = property(get_modules_access_object, None, doc=r'''A read only property that returns an object that implements python operator overloading with the square brackets().\n target.module[<int>] allows array access to any modules.\n target.module[<str>] allows access to modules by basename, full path, or uuid string value.\n target.module[uuid.UUID()] allows module access by UUID.\n target.module[re] allows module access using a regular expression that matches the module full path.''')
Greg Clayton6b2bd932012-02-01 08:09:32 +0000796
Greg Clayton13d19502012-01-29 06:07:39 +0000797 __swig_getmethods__["process"] = GetProcess
Greg Clayton5ef31a92012-06-29 22:00:42 +0000798 if _newclass: process = property(GetProcess, None, doc='''A read only property that returns an lldb object that represents the process (lldb.SBProcess) that this target owns.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000799
800 __swig_getmethods__["executable"] = GetExecutable
Greg Clayton5ef31a92012-06-29 22:00:42 +0000801 if _newclass: executable = property(GetExecutable, None, doc='''A read only property that returns an lldb object that represents the main executable module (lldb.SBModule) for this target.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000802
803 __swig_getmethods__["debugger"] = GetDebugger
Greg Clayton5ef31a92012-06-29 22:00:42 +0000804 if _newclass: debugger = property(GetDebugger, None, doc='''A read only property that returns an lldb object that represents the debugger (lldb.SBDebugger) that owns this target.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000805
Greg Clayton13d19502012-01-29 06:07:39 +0000806 __swig_getmethods__["num_breakpoints"] = GetNumBreakpoints
Greg Clayton5ef31a92012-06-29 22:00:42 +0000807 if _newclass: num_breakpoints = property(GetNumBreakpoints, None, doc='''A read only property that returns the number of breakpoints that this target has as an integer.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000808
809 __swig_getmethods__["num_watchpoints"] = GetNumWatchpoints
Greg Clayton5ef31a92012-06-29 22:00:42 +0000810 if _newclass: num_watchpoints = property(GetNumWatchpoints, None, doc='''A read only property that returns the number of watchpoints that this target has as an integer.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000811
812 __swig_getmethods__["broadcaster"] = GetBroadcaster
Greg Clayton5ef31a92012-06-29 22:00:42 +0000813 if _newclass: broadcaster = property(GetBroadcaster, None, doc='''A read only property that an lldb object that represents the broadcaster (lldb.SBBroadcaster) for this target.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000814
815 __swig_getmethods__["byte_order"] = GetByteOrder
Greg Clayton5ef31a92012-06-29 22:00:42 +0000816 if _newclass: byte_order = property(GetByteOrder, None, doc='''A read only property that returns an lldb enumeration value (lldb.eByteOrderLittle, lldb.eByteOrderBig, lldb.eByteOrderInvalid) that represents the byte order for this target.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000817
818 __swig_getmethods__["addr_size"] = GetAddressByteSize
Greg Clayton5ef31a92012-06-29 22:00:42 +0000819 if _newclass: addr_size = property(GetAddressByteSize, None, doc='''A read only property that returns the size in bytes of an address for this target.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000820
821 __swig_getmethods__["triple"] = GetTriple
Greg Clayton5ef31a92012-06-29 22:00:42 +0000822 if _newclass: triple = property(GetTriple, None, doc='''A read only property that returns the target triple (arch-vendor-os) for this target as a string.''')
Greg Clayton13d19502012-01-29 06:07:39 +0000823 %}
824
Johnny Chendc7d3c12011-07-16 21:15:39 +0000825};
826
827} // namespace lldb