blob: b6333d44d9f2a7ccd462aecdc704baa60f4a22b0 [file] [log] [blame]
Johnny Chenebd63b22011-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 Clayton0a8dcac2012-02-24 05:03:03 +000012class SBLaunchInfo
13{
Greg Clayton98ca1e62012-02-24 20:59:25 +000014public:
15 SBLaunchInfo (const char **argv);
Greg Clayton0a8dcac2012-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 Clayton0a8dcac2012-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
128 uint32_t
129 GetResumeCount ();
130
131 void
132 SetResumeCount (uint32_t c);
133
134 const char *
135 GetProcessPluginName ();
136
137 void
138 SetProcessPluginName (const char *plugin_name);
139
140 uint32_t
Greg Clayton80efa5e2012-02-24 23:56:06 +0000141 GetUserID();
142
143 uint32_t
144 GetGroupID();
145
146 bool
147 UserIDIsValid ();
148
149 bool
150 GroupIDIsValid ();
151
152 void
153 SetUserID (uint32_t uid);
154
155 void
156 SetGroupID (uint32_t gid);
157
158 uint32_t
Greg Clayton0a8dcac2012-02-24 05:03:03 +0000159 GetEffectiveUserID();
160
161 uint32_t
162 GetEffectiveGroupID();
163
164 bool
165 EffectiveUserIDIsValid ();
166
167 bool
168 EffectiveGroupIDIsValid ();
169
170 void
171 SetEffectiveUserID (uint32_t uid);
172
173 void
174 SetEffectiveGroupID (uint32_t gid);
175
176 lldb::pid_t
177 GetParentProcessID ();
178
179 void
180 SetParentProcessID (lldb::pid_t pid);
181
182 bool
183 ParentProcessIDIsValid();
184};
185
186
Johnny Chenebd63b22011-07-16 21:15:39 +0000187%feature("docstring",
188"Represents the target program running under the debugger.
189
Johnny Chenecd4feb2011-10-14 00:42:25 +0000190SBTarget supports module, breakpoint, and watchpoint iterations. For example,
Johnny Chenebd63b22011-07-16 21:15:39 +0000191
192 for m in target.module_iter():
193 print m
194
195produces:
196
197(x86_64) /Volumes/data/lldb/svn/trunk/test/python_api/lldbutil/iter/a.out
198(x86_64) /usr/lib/dyld
199(x86_64) /usr/lib/libstdc++.6.dylib
200(x86_64) /usr/lib/libSystem.B.dylib
201(x86_64) /usr/lib/system/libmathCommon.A.dylib
202(x86_64) /usr/lib/libSystem.B.dylib(__commpage)
203
204and,
205
206 for b in target.breakpoint_iter():
207 print b
208
209produces:
210
211SBBreakpoint: id = 1, file ='main.cpp', line = 66, locations = 1
Johnny Chen092bd152011-09-27 01:19:20 +0000212SBBreakpoint: id = 2, file ='main.cpp', line = 85, locations = 1
213
214and,
215
Johnny Chenecd4feb2011-10-14 00:42:25 +0000216 for wp_loc in target.watchpoint_iter():
Johnny Chen092bd152011-09-27 01:19:20 +0000217 print wp_loc
218
219produces:
220
Johnny Chenecd4feb2011-10-14 00:42:25 +0000221Watchpoint 1: addr = 0x1034ca048 size = 4 state = enabled type = rw
Johnny Chen092bd152011-09-27 01:19:20 +0000222 declare @ '/Volumes/data/lldb/svn/trunk/test/python_api/watchpoint/main.c:12'
Johnny Chenecd4feb2011-10-14 00:42:25 +0000223 hw_index = 0 hit_count = 2 ignore_count = 0"
Johnny Chenc3fba812011-07-18 20:13:38 +0000224) SBTarget;
Johnny Chenebd63b22011-07-16 21:15:39 +0000225class SBTarget
226{
Johnny Chenebd63b22011-07-16 21:15:39 +0000227public:
228 //------------------------------------------------------------------
229 // Broadcaster bits.
230 //------------------------------------------------------------------
231 enum
232 {
233 eBroadcastBitBreakpointChanged = (1 << 0),
234 eBroadcastBitModulesLoaded = (1 << 1),
235 eBroadcastBitModulesUnloaded = (1 << 2)
236 };
237
238 //------------------------------------------------------------------
239 // Constructors
240 //------------------------------------------------------------------
241 SBTarget ();
242
243 SBTarget (const lldb::SBTarget& rhs);
244
Johnny Chenebd63b22011-07-16 21:15:39 +0000245 //------------------------------------------------------------------
246 // Destructor
247 //------------------------------------------------------------------
248 ~SBTarget();
249
Jim Ingham5a15e692012-02-16 06:50:00 +0000250 static const char *
251 GetBroadcasterClassName ();
252
Johnny Chenebd63b22011-07-16 21:15:39 +0000253 bool
254 IsValid() const;
255
256 lldb::SBProcess
257 GetProcess ();
258
259 %feature("docstring", "
260 //------------------------------------------------------------------
261 /// Launch a new process.
262 ///
263 /// Launch a new process by spawning a new process using the
264 /// target object's executable module's file as the file to launch.
265 /// Arguments are given in \a argv, and the environment variables
266 /// are in \a envp. Standard input and output files can be
267 /// optionally re-directed to \a stdin_path, \a stdout_path, and
268 /// \a stderr_path.
269 ///
270 /// @param[in] listener
271 /// An optional listener that will receive all process events.
272 /// If \a listener is valid then \a listener will listen to all
273 /// process events. If not valid, then this target's debugger
274 /// (SBTarget::GetDebugger()) will listen to all process events.
275 ///
276 /// @param[in] argv
277 /// The argument array.
278 ///
279 /// @param[in] envp
280 /// The environment array.
281 ///
282 /// @param[in] launch_flags
283 /// Flags to modify the launch (@see lldb::LaunchFlags)
284 ///
285 /// @param[in] stdin_path
286 /// The path to use when re-directing the STDIN of the new
287 /// process. If all stdXX_path arguments are NULL, a pseudo
288 /// terminal will be used.
289 ///
290 /// @param[in] stdout_path
291 /// The path to use when re-directing the STDOUT of the new
292 /// process. If all stdXX_path arguments are NULL, a pseudo
293 /// terminal will be used.
294 ///
295 /// @param[in] stderr_path
296 /// The path to use when re-directing the STDERR of the new
297 /// process. If all stdXX_path arguments are NULL, a pseudo
298 /// terminal will be used.
299 ///
300 /// @param[in] working_directory
301 /// The working directory to have the child process run in
302 ///
303 /// @param[in] launch_flags
304 /// Some launch options specified by logical OR'ing
305 /// lldb::LaunchFlags enumeration values together.
306 ///
307 /// @param[in] stop_at_endtry
308 /// If false do not stop the inferior at the entry point.
309 ///
310 /// @param[out]
311 /// An error object. Contains the reason if there is some failure.
312 ///
313 /// @return
314 /// A process object for the newly created process.
315 //------------------------------------------------------------------
316
317 For example,
318
319 process = target.Launch(self.dbg.GetListener(), None, None,
320 None, '/tmp/stdout.txt', None,
321 None, 0, False, error)
322
323 launches a new process by passing nothing for both the args and the envs
324 and redirect the standard output of the inferior to the /tmp/stdout.txt
325 file. It does not specify a working directory so that the debug server
326 will use its idea of what the current working directory is for the
327 inferior. Also, we ask the debugger not to stop the inferior at the
328 entry point. If no breakpoint is specified for the inferior, it should
329 run to completion if no user interaction is required.
330 ") Launch;
331 lldb::SBProcess
332 Launch (SBListener &listener,
333 char const **argv,
334 char const **envp,
335 const char *stdin_path,
336 const char *stdout_path,
337 const char *stderr_path,
338 const char *working_directory,
339 uint32_t launch_flags, // See LaunchFlags
340 bool stop_at_entry,
341 lldb::SBError& error);
342
343 %feature("docstring", "
344 //------------------------------------------------------------------
345 /// Launch a new process with sensible defaults.
346 ///
347 /// @param[in] argv
348 /// The argument array.
349 ///
350 /// @param[in] envp
351 /// The environment array.
352 ///
353 /// @param[in] working_directory
354 /// The working directory to have the child process run in
355 ///
356 /// Default: listener
357 /// Set to the target's debugger (SBTarget::GetDebugger())
358 ///
359 /// Default: launch_flags
360 /// Empty launch flags
361 ///
362 /// Default: stdin_path
363 /// Default: stdout_path
364 /// Default: stderr_path
365 /// A pseudo terminal will be used.
366 ///
367 /// @return
368 /// A process object for the newly created process.
369 //------------------------------------------------------------------
370
371 For example,
372
373 process = target.LaunchSimple(['X', 'Y', 'Z'], None, os.getcwd())
374
375 launches a new process by passing 'X', 'Y', 'Z' as the args to the
376 executable.
377 ") LaunchSimple;
378 lldb::SBProcess
379 LaunchSimple (const char **argv,
380 const char **envp,
381 const char *working_directory);
382
Greg Clayton0a8dcac2012-02-24 05:03:03 +0000383 lldb::SBProcess
384 Launch (lldb::SBLaunchInfo &launch_info, lldb::SBError& error);
385
386 lldb::SBProcess
387 Attach (lldb::SBAttachInfo &attach_info, lldb::SBError& error);
388
389
Johnny Chenebd63b22011-07-16 21:15:39 +0000390 %feature("docstring", "
391 //------------------------------------------------------------------
392 /// Attach to process with pid.
393 ///
394 /// @param[in] listener
395 /// An optional listener that will receive all process events.
396 /// If \a listener is valid then \a listener will listen to all
397 /// process events. If not valid, then this target's debugger
398 /// (SBTarget::GetDebugger()) will listen to all process events.
399 ///
400 /// @param[in] pid
401 /// The process ID to attach to.
402 ///
403 /// @param[out]
404 /// An error explaining what went wrong if attach fails.
405 ///
406 /// @return
407 /// A process object for the attached process.
408 //------------------------------------------------------------------
409 ") AttachToProcessWithID;
410 lldb::SBProcess
411 AttachToProcessWithID (SBListener &listener,
412 lldb::pid_t pid,
413 lldb::SBError& error);
414
415 %feature("docstring", "
416 //------------------------------------------------------------------
417 /// Attach to process with name.
418 ///
419 /// @param[in] listener
420 /// An optional listener that will receive all process events.
421 /// If \a listener is valid then \a listener will listen to all
422 /// process events. If not valid, then this target's debugger
423 /// (SBTarget::GetDebugger()) will listen to all process events.
424 ///
425 /// @param[in] name
426 /// Basename of process to attach to.
427 ///
428 /// @param[in] wait_for
429 /// If true wait for a new instance of 'name' to be launched.
430 ///
431 /// @param[out]
432 /// An error explaining what went wrong if attach fails.
433 ///
434 /// @return
435 /// A process object for the attached process.
436 //------------------------------------------------------------------
437 ") AttachToProcessWithName;
438 lldb::SBProcess
439 AttachToProcessWithName (SBListener &listener,
440 const char *name,
441 bool wait_for,
442 lldb::SBError& error);
443
444 %feature("docstring", "
445 //------------------------------------------------------------------
446 /// Connect to a remote debug server with url.
447 ///
448 /// @param[in] listener
449 /// An optional listener that will receive all process events.
450 /// If \a listener is valid then \a listener will listen to all
451 /// process events. If not valid, then this target's debugger
452 /// (SBTarget::GetDebugger()) will listen to all process events.
453 ///
454 /// @param[in] url
455 /// The url to connect to, e.g., 'connect://localhost:12345'.
456 ///
457 /// @param[in] plugin_name
458 /// The plugin name to be used; can be NULL.
459 ///
460 /// @param[out]
461 /// An error explaining what went wrong if the connect fails.
462 ///
463 /// @return
464 /// A process object for the connected process.
465 //------------------------------------------------------------------
466 ") ConnectRemote;
467 lldb::SBProcess
468 ConnectRemote (SBListener &listener,
469 const char *url,
470 const char *plugin_name,
471 SBError& error);
472
473 lldb::SBFileSpec
474 GetExecutable ();
475
Greg Clayton3e8c25f2011-09-24 00:52:29 +0000476 bool
477 AddModule (lldb::SBModule &module);
478
479 lldb::SBModule
480 AddModule (const char *path,
481 const char *triple,
482 const char *uuid);
483
Johnny Chenebd63b22011-07-16 21:15:39 +0000484 uint32_t
485 GetNumModules () const;
486
487 lldb::SBModule
488 GetModuleAtIndex (uint32_t idx);
489
Greg Clayton3e8c25f2011-09-24 00:52:29 +0000490 bool
491 RemoveModule (lldb::SBModule module);
492
Johnny Chenebd63b22011-07-16 21:15:39 +0000493 lldb::SBDebugger
494 GetDebugger() const;
495
496 lldb::SBModule
497 FindModule (const lldb::SBFileSpec &file_spec);
498
Greg Clayton1b925202012-01-29 06:07:39 +0000499 lldb::ByteOrder
500 GetByteOrder ();
501
502 uint32_t
503 GetAddressByteSize();
504
505 const char *
506 GetTriple ();
507
Greg Clayton3e8c25f2011-09-24 00:52:29 +0000508 lldb::SBError
509 SetSectionLoadAddress (lldb::SBSection section,
510 lldb::addr_t section_base_addr);
511
512 lldb::SBError
513 ClearSectionLoadAddress (lldb::SBSection section);
514
515 lldb::SBError
516 SetModuleLoadAddress (lldb::SBModule module,
517 int64_t sections_offset);
518
519 lldb::SBError
520 ClearModuleLoadAddress (lldb::SBModule module);
521
Johnny Chenebd63b22011-07-16 21:15:39 +0000522 %feature("docstring", "
523 //------------------------------------------------------------------
524 /// Find functions by name.
525 ///
526 /// @param[in] name
527 /// The name of the function we are looking for.
528 ///
529 /// @param[in] name_type_mask
530 /// A logical OR of one or more FunctionNameType enum bits that
531 /// indicate what kind of names should be used when doing the
532 /// lookup. Bits include fully qualified names, base names,
533 /// C++ methods, or ObjC selectors.
534 /// See FunctionNameType for more details.
535 ///
Johnny Chenebd63b22011-07-16 21:15:39 +0000536 /// @return
Greg Clayton7dd5c512012-02-06 01:44:54 +0000537 /// A lldb::SBSymbolContextList that gets filled in with all of
538 /// the symbol contexts for all the matches.
Johnny Chenebd63b22011-07-16 21:15:39 +0000539 //------------------------------------------------------------------
540 ") FindFunctions;
Greg Clayton7dd5c512012-02-06 01:44:54 +0000541 lldb::SBSymbolContextList
Johnny Chenebd63b22011-07-16 21:15:39 +0000542 FindFunctions (const char *name,
Greg Clayton7dd5c512012-02-06 01:44:54 +0000543 uint32_t name_type_mask = lldb::eFunctionNameTypeAny);
Enrico Granata979e20d2011-07-29 19:53:35 +0000544
545 lldb::SBType
546 FindFirstType (const char* type);
547
548 lldb::SBTypeList
549 FindTypes (const char* type);
Johnny Chenebd63b22011-07-16 21:15:39 +0000550
Jim Inghamcc637462011-09-13 00:29:56 +0000551 lldb::SBSourceManager
552 GetSourceManager ();
553
Johnny Chenebd63b22011-07-16 21:15:39 +0000554 %feature("docstring", "
555 //------------------------------------------------------------------
556 /// Find global and static variables by name.
557 ///
558 /// @param[in] name
559 /// The name of the global or static variable we are looking
560 /// for.
561 ///
562 /// @param[in] max_matches
563 /// Allow the number of matches to be limited to \a max_matches.
564 ///
565 /// @return
566 /// A list of matched variables in an SBValueList.
567 //------------------------------------------------------------------
568 ") FindGlobalVariables;
569 lldb::SBValueList
570 FindGlobalVariables (const char *name,
571 uint32_t max_matches);
572
573 void
574 Clear ();
575
Greg Claytona3955062011-07-22 16:46:35 +0000576 lldb::SBAddress
577 ResolveLoadAddress (lldb::addr_t vm_addr);
Johnny Chenebd63b22011-07-16 21:15:39 +0000578
579 SBSymbolContext
580 ResolveSymbolContextForAddress (const SBAddress& addr,
581 uint32_t resolve_scope);
582
583 lldb::SBBreakpoint
584 BreakpointCreateByLocation (const char *file, uint32_t line);
585
586 lldb::SBBreakpoint
587 BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
588
589 lldb::SBBreakpoint
590 BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
591
592 lldb::SBBreakpoint
Jim Ingham1fb8a2d2011-10-11 01:18:55 +0000593 BreakpointCreateByName (const char *symbol_name,
594 uint32_t func_name_type, // Logical OR one or more FunctionNameType enum bits
595 const SBFileSpecList &module_list,
596 const SBFileSpecList &comp_unit_list);
597
598 lldb::SBBreakpoint
Jim Ingham4722b102012-03-06 00:37:27 +0000599 BreakpointCreateByNames (const char *symbol_name[],
600 uint32_t num_names,
601 uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
602 const SBFileSpecList &module_list,
603 const SBFileSpecList &comp_unit_list);
604
605 lldb::SBBreakpoint
Johnny Chenebd63b22011-07-16 21:15:39 +0000606 BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
607
608 lldb::SBBreakpoint
Jim Ingham03c8ee52011-09-21 01:17:13 +0000609 BreakpointCreateBySourceRegex (const char *source_regex, const lldb::SBFileSpec &source_file, const char *module_name = NULL);
610
611 lldb::SBBreakpoint
Jim Ingham4722b102012-03-06 00:37:27 +0000612 BreakpointCreateForException (lldb::LanguageType language,
613 bool catch_bp,
614 bool throw_bp);
615
616 lldb::SBBreakpoint
Johnny Chenebd63b22011-07-16 21:15:39 +0000617 BreakpointCreateByAddress (addr_t address);
618
619 uint32_t
620 GetNumBreakpoints () const;
621
622 lldb::SBBreakpoint
623 GetBreakpointAtIndex (uint32_t idx) const;
624
625 bool
626 BreakpointDelete (break_id_t break_id);
627
628 lldb::SBBreakpoint
629 FindBreakpointByID (break_id_t break_id);
630
631 bool
632 EnableAllBreakpoints ();
633
634 bool
635 DisableAllBreakpoints ();
636
637 bool
638 DeleteAllBreakpoints ();
639
Johnny Chen092bd152011-09-27 01:19:20 +0000640 uint32_t
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000641 GetNumWatchpoints () const;
642
643 lldb::SBWatchpoint
644 GetWatchpointAtIndex (uint32_t idx) const;
645
Johnny Chen092bd152011-09-27 01:19:20 +0000646 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000647 DeleteWatchpoint (lldb::watch_id_t watch_id);
648
649 lldb::SBWatchpoint
650 FindWatchpointByID (lldb::watch_id_t watch_id);
651
Johnny Chen092bd152011-09-27 01:19:20 +0000652 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000653 EnableAllWatchpoints ();
654
Johnny Chen092bd152011-09-27 01:19:20 +0000655 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000656 DisableAllWatchpoints ();
657
Johnny Chen092bd152011-09-27 01:19:20 +0000658 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000659 DeleteAllWatchpoints ();
660
661 lldb::SBWatchpoint
662 WatchAddress (lldb::addr_t addr,
663 size_t size,
664 bool read,
665 bool write);
666
Johnny Chen092bd152011-09-27 01:19:20 +0000667
Johnny Chenebd63b22011-07-16 21:15:39 +0000668 lldb::SBBroadcaster
669 GetBroadcaster () const;
Sean Callananef1f6902011-12-14 23:49:37 +0000670
671 lldb::SBInstructionList
672 GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
673
Johnny Chenebd63b22011-07-16 21:15:39 +0000674 bool
Greg Clayton96154be2011-11-13 06:57:31 +0000675 GetDescription (lldb::SBStream &description, lldb::DescriptionLevel description_level);
Greg Clayton1b925202012-01-29 06:07:39 +0000676
677 %pythoncode %{
Greg Claytonb302dff2012-02-01 08:09:32 +0000678 class modules_access(object):
679 '''A helper object that will lazily hand out lldb.SBModule objects for a target when supplied an index, or by full or partial path.'''
680 def __init__(self, sbtarget):
681 self.sbtarget = sbtarget
682
683 def __len__(self):
684 if self.sbtarget:
685 return self.sbtarget.GetNumModules()
686 return 0
687
688 def __getitem__(self, key):
689 num_modules = self.sbtarget.GetNumModules()
690 if type(key) is int:
691 if key < num_modules:
692 return self.sbtarget.GetModuleAtIndex(key)
693 elif type(key) is str:
694 if key.find('/') == -1:
695 for idx in range(num_modules):
696 module = self.sbtarget.GetModuleAtIndex(idx)
697 if module.file.basename == key:
698 return module
699 else:
700 for idx in range(num_modules):
701 module = self.sbtarget.GetModuleAtIndex(idx)
702 if module.file.fullpath == key:
703 return module
704 # See if the string is a UUID
705 the_uuid = uuid.UUID(key)
706 if the_uuid:
707 for idx in range(num_modules):
708 module = self.sbtarget.GetModuleAtIndex(idx)
709 if module.uuid == the_uuid:
710 return module
711 elif type(key) is uuid.UUID:
712 for idx in range(num_modules):
713 module = self.sbtarget.GetModuleAtIndex(idx)
714 if module.uuid == key:
715 return module
716 elif type(key) is re.SRE_Pattern:
717 matching_modules = []
718 for idx in range(num_modules):
719 module = self.sbtarget.GetModuleAtIndex(idx)
720 re_match = key.search(module.path.fullpath)
721 if re_match:
722 matching_modules.append(module)
723 return matching_modules
724 else:
725 print "error: unsupported item type: %s" % type(key)
726 return None
727
728 def get_modules_access_object(self):
Greg Claytonb6a5ba62012-02-03 03:22:53 +0000729 '''An accessor function that returns a modules_access() object which allows lazy module access from a lldb.SBTarget object.'''
Greg Claytonb302dff2012-02-01 08:09:32 +0000730 return self.modules_access (self)
731
732 def get_modules_array(self):
Greg Claytonb6a5ba62012-02-03 03:22:53 +0000733 '''An accessor function that returns a list() that contains all modules in a lldb.SBTarget object.'''
Greg Claytonb302dff2012-02-01 08:09:32 +0000734 modules = []
735 for idx in range(self.GetNumModules()):
736 modules.append(self.GetModuleAtIndex(idx))
737 return modules
738
739 __swig_getmethods__["modules"] = get_modules_array
740 if _newclass: x = property(get_modules_array, None)
741
742 __swig_getmethods__["module"] = get_modules_access_object
743 if _newclass: x = property(get_modules_access_object, None)
744
Greg Clayton1b925202012-01-29 06:07:39 +0000745 __swig_getmethods__["process"] = GetProcess
746 if _newclass: x = property(GetProcess, None)
747
748 __swig_getmethods__["executable"] = GetExecutable
749 if _newclass: x = property(GetExecutable, None)
750
751 __swig_getmethods__["debugger"] = GetDebugger
752 if _newclass: x = property(GetDebugger, None)
753
Greg Clayton1b925202012-01-29 06:07:39 +0000754 __swig_getmethods__["num_breakpoints"] = GetNumBreakpoints
755 if _newclass: x = property(GetNumBreakpoints, None)
756
757 __swig_getmethods__["num_watchpoints"] = GetNumWatchpoints
758 if _newclass: x = property(GetNumWatchpoints, None)
759
760 __swig_getmethods__["broadcaster"] = GetBroadcaster
761 if _newclass: x = property(GetBroadcaster, None)
762
763 __swig_getmethods__["byte_order"] = GetByteOrder
764 if _newclass: x = property(GetByteOrder, None)
765
766 __swig_getmethods__["addr_size"] = GetAddressByteSize
767 if _newclass: x = property(GetAddressByteSize, None)
768
769 __swig_getmethods__["triple"] = GetTriple
770 if _newclass: x = property(GetTriple, None)
771 %}
772
Johnny Chenebd63b22011-07-16 21:15:39 +0000773};
774
775} // namespace lldb