blob: e8b6a00bdb80d6ade08d43cd02cfb44560479fa0 [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
Greg Claytonf0bc8152012-04-23 20:23:39 +0000484 lldb::SBModule
485 AddModule (const char *path,
486 const char *triple,
487 const char *uuid_cstr,
488 const char *symfile);
489
Johnny Chenebd63b22011-07-16 21:15:39 +0000490 uint32_t
491 GetNumModules () const;
492
493 lldb::SBModule
494 GetModuleAtIndex (uint32_t idx);
495
Greg Clayton3e8c25f2011-09-24 00:52:29 +0000496 bool
497 RemoveModule (lldb::SBModule module);
498
Johnny Chenebd63b22011-07-16 21:15:39 +0000499 lldb::SBDebugger
500 GetDebugger() const;
501
502 lldb::SBModule
503 FindModule (const lldb::SBFileSpec &file_spec);
504
Greg Clayton1b925202012-01-29 06:07:39 +0000505 lldb::ByteOrder
506 GetByteOrder ();
507
508 uint32_t
509 GetAddressByteSize();
510
511 const char *
512 GetTriple ();
513
Greg Clayton3e8c25f2011-09-24 00:52:29 +0000514 lldb::SBError
515 SetSectionLoadAddress (lldb::SBSection section,
516 lldb::addr_t section_base_addr);
517
518 lldb::SBError
519 ClearSectionLoadAddress (lldb::SBSection section);
520
521 lldb::SBError
522 SetModuleLoadAddress (lldb::SBModule module,
523 int64_t sections_offset);
524
525 lldb::SBError
526 ClearModuleLoadAddress (lldb::SBModule module);
527
Johnny Chenebd63b22011-07-16 21:15:39 +0000528 %feature("docstring", "
529 //------------------------------------------------------------------
530 /// Find functions by name.
531 ///
532 /// @param[in] name
533 /// The name of the function we are looking for.
534 ///
535 /// @param[in] name_type_mask
536 /// A logical OR of one or more FunctionNameType enum bits that
537 /// indicate what kind of names should be used when doing the
538 /// lookup. Bits include fully qualified names, base names,
539 /// C++ methods, or ObjC selectors.
540 /// See FunctionNameType for more details.
541 ///
Johnny Chenebd63b22011-07-16 21:15:39 +0000542 /// @return
Greg Clayton7dd5c512012-02-06 01:44:54 +0000543 /// A lldb::SBSymbolContextList that gets filled in with all of
544 /// the symbol contexts for all the matches.
Johnny Chenebd63b22011-07-16 21:15:39 +0000545 //------------------------------------------------------------------
546 ") FindFunctions;
Greg Clayton7dd5c512012-02-06 01:44:54 +0000547 lldb::SBSymbolContextList
Johnny Chenebd63b22011-07-16 21:15:39 +0000548 FindFunctions (const char *name,
Greg Clayton7dd5c512012-02-06 01:44:54 +0000549 uint32_t name_type_mask = lldb::eFunctionNameTypeAny);
Enrico Granata979e20d2011-07-29 19:53:35 +0000550
551 lldb::SBType
552 FindFirstType (const char* type);
553
554 lldb::SBTypeList
555 FindTypes (const char* type);
Johnny Chenebd63b22011-07-16 21:15:39 +0000556
Jim Inghamcc637462011-09-13 00:29:56 +0000557 lldb::SBSourceManager
558 GetSourceManager ();
559
Johnny Chenebd63b22011-07-16 21:15:39 +0000560 %feature("docstring", "
561 //------------------------------------------------------------------
562 /// Find global and static variables by name.
563 ///
564 /// @param[in] name
565 /// The name of the global or static variable we are looking
566 /// for.
567 ///
568 /// @param[in] max_matches
569 /// Allow the number of matches to be limited to \a max_matches.
570 ///
571 /// @return
572 /// A list of matched variables in an SBValueList.
573 //------------------------------------------------------------------
574 ") FindGlobalVariables;
575 lldb::SBValueList
576 FindGlobalVariables (const char *name,
577 uint32_t max_matches);
578
579 void
580 Clear ();
581
Greg Claytona3955062011-07-22 16:46:35 +0000582 lldb::SBAddress
583 ResolveLoadAddress (lldb::addr_t vm_addr);
Johnny Chenebd63b22011-07-16 21:15:39 +0000584
585 SBSymbolContext
586 ResolveSymbolContextForAddress (const SBAddress& addr,
587 uint32_t resolve_scope);
588
589 lldb::SBBreakpoint
590 BreakpointCreateByLocation (const char *file, uint32_t line);
591
592 lldb::SBBreakpoint
593 BreakpointCreateByLocation (const lldb::SBFileSpec &file_spec, uint32_t line);
594
595 lldb::SBBreakpoint
596 BreakpointCreateByName (const char *symbol_name, const char *module_name = NULL);
597
598 lldb::SBBreakpoint
Jim Ingham1fb8a2d2011-10-11 01:18:55 +0000599 BreakpointCreateByName (const char *symbol_name,
600 uint32_t func_name_type, // Logical OR one or more FunctionNameType enum bits
601 const SBFileSpecList &module_list,
602 const SBFileSpecList &comp_unit_list);
603
604 lldb::SBBreakpoint
Jim Ingham4722b102012-03-06 00:37:27 +0000605 BreakpointCreateByNames (const char *symbol_name[],
606 uint32_t num_names,
607 uint32_t name_type_mask, // Logical OR one or more FunctionNameType enum bits
608 const SBFileSpecList &module_list,
609 const SBFileSpecList &comp_unit_list);
610
611 lldb::SBBreakpoint
Johnny Chenebd63b22011-07-16 21:15:39 +0000612 BreakpointCreateByRegex (const char *symbol_name_regex, const char *module_name = NULL);
613
614 lldb::SBBreakpoint
Jim Ingham03c8ee52011-09-21 01:17:13 +0000615 BreakpointCreateBySourceRegex (const char *source_regex, const lldb::SBFileSpec &source_file, const char *module_name = NULL);
616
617 lldb::SBBreakpoint
Jim Ingham4722b102012-03-06 00:37:27 +0000618 BreakpointCreateForException (lldb::LanguageType language,
619 bool catch_bp,
620 bool throw_bp);
621
622 lldb::SBBreakpoint
Johnny Chenebd63b22011-07-16 21:15:39 +0000623 BreakpointCreateByAddress (addr_t address);
624
625 uint32_t
626 GetNumBreakpoints () const;
627
628 lldb::SBBreakpoint
629 GetBreakpointAtIndex (uint32_t idx) const;
630
631 bool
632 BreakpointDelete (break_id_t break_id);
633
634 lldb::SBBreakpoint
635 FindBreakpointByID (break_id_t break_id);
636
637 bool
638 EnableAllBreakpoints ();
639
640 bool
641 DisableAllBreakpoints ();
642
643 bool
644 DeleteAllBreakpoints ();
645
Johnny Chen092bd152011-09-27 01:19:20 +0000646 uint32_t
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000647 GetNumWatchpoints () const;
648
649 lldb::SBWatchpoint
650 GetWatchpointAtIndex (uint32_t idx) const;
651
Johnny Chen092bd152011-09-27 01:19:20 +0000652 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000653 DeleteWatchpoint (lldb::watch_id_t watch_id);
654
655 lldb::SBWatchpoint
656 FindWatchpointByID (lldb::watch_id_t watch_id);
657
Johnny Chen092bd152011-09-27 01:19:20 +0000658 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000659 EnableAllWatchpoints ();
660
Johnny Chen092bd152011-09-27 01:19:20 +0000661 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000662 DisableAllWatchpoints ();
663
Johnny Chen092bd152011-09-27 01:19:20 +0000664 bool
Greg Clayton1fa6b3d2011-10-13 18:08:26 +0000665 DeleteAllWatchpoints ();
666
667 lldb::SBWatchpoint
668 WatchAddress (lldb::addr_t addr,
669 size_t size,
670 bool read,
671 bool write);
672
Johnny Chen092bd152011-09-27 01:19:20 +0000673
Johnny Chenebd63b22011-07-16 21:15:39 +0000674 lldb::SBBroadcaster
675 GetBroadcaster () const;
Sean Callananef1f6902011-12-14 23:49:37 +0000676
677 lldb::SBInstructionList
Greg Claytona9893072012-03-06 22:24:44 +0000678 ReadInstructions (lldb::SBAddress base_addr, uint32_t count);
679
680 lldb::SBInstructionList
Sean Callananef1f6902011-12-14 23:49:37 +0000681 GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size);
682
Johnny Chenebd63b22011-07-16 21:15:39 +0000683 bool
Greg Clayton96154be2011-11-13 06:57:31 +0000684 GetDescription (lldb::SBStream &description, lldb::DescriptionLevel description_level);
Greg Clayton1b925202012-01-29 06:07:39 +0000685
686 %pythoncode %{
Greg Claytonb302dff2012-02-01 08:09:32 +0000687 class modules_access(object):
688 '''A helper object that will lazily hand out lldb.SBModule objects for a target when supplied an index, or by full or partial path.'''
689 def __init__(self, sbtarget):
690 self.sbtarget = sbtarget
691
692 def __len__(self):
693 if self.sbtarget:
Filipe Cabecinhas3cae38b2012-05-11 20:39:42 +0000694 return int(self.sbtarget.GetNumModules())
Greg Claytonb302dff2012-02-01 08:09:32 +0000695 return 0
696
697 def __getitem__(self, key):
698 num_modules = self.sbtarget.GetNumModules()
699 if type(key) is int:
700 if key < num_modules:
701 return self.sbtarget.GetModuleAtIndex(key)
702 elif type(key) is str:
703 if key.find('/') == -1:
704 for idx in range(num_modules):
705 module = self.sbtarget.GetModuleAtIndex(idx)
706 if module.file.basename == key:
707 return module
708 else:
709 for idx in range(num_modules):
710 module = self.sbtarget.GetModuleAtIndex(idx)
711 if module.file.fullpath == key:
712 return module
713 # See if the string is a UUID
714 the_uuid = uuid.UUID(key)
715 if the_uuid:
716 for idx in range(num_modules):
717 module = self.sbtarget.GetModuleAtIndex(idx)
718 if module.uuid == the_uuid:
719 return module
720 elif type(key) is uuid.UUID:
721 for idx in range(num_modules):
722 module = self.sbtarget.GetModuleAtIndex(idx)
723 if module.uuid == key:
724 return module
725 elif type(key) is re.SRE_Pattern:
726 matching_modules = []
727 for idx in range(num_modules):
728 module = self.sbtarget.GetModuleAtIndex(idx)
729 re_match = key.search(module.path.fullpath)
730 if re_match:
731 matching_modules.append(module)
732 return matching_modules
733 else:
734 print "error: unsupported item type: %s" % type(key)
735 return None
736
737 def get_modules_access_object(self):
Greg Claytonb6a5ba62012-02-03 03:22:53 +0000738 '''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 +0000739 return self.modules_access (self)
740
741 def get_modules_array(self):
Greg Claytonb6a5ba62012-02-03 03:22:53 +0000742 '''An accessor function that returns a list() that contains all modules in a lldb.SBTarget object.'''
Greg Claytonb302dff2012-02-01 08:09:32 +0000743 modules = []
744 for idx in range(self.GetNumModules()):
745 modules.append(self.GetModuleAtIndex(idx))
746 return modules
747
748 __swig_getmethods__["modules"] = get_modules_array
749 if _newclass: x = property(get_modules_array, None)
750
751 __swig_getmethods__["module"] = get_modules_access_object
752 if _newclass: x = property(get_modules_access_object, None)
753
Greg Clayton1b925202012-01-29 06:07:39 +0000754 __swig_getmethods__["process"] = GetProcess
755 if _newclass: x = property(GetProcess, None)
756
757 __swig_getmethods__["executable"] = GetExecutable
758 if _newclass: x = property(GetExecutable, None)
759
760 __swig_getmethods__["debugger"] = GetDebugger
761 if _newclass: x = property(GetDebugger, None)
762
Greg Clayton1b925202012-01-29 06:07:39 +0000763 __swig_getmethods__["num_breakpoints"] = GetNumBreakpoints
764 if _newclass: x = property(GetNumBreakpoints, None)
765
766 __swig_getmethods__["num_watchpoints"] = GetNumWatchpoints
767 if _newclass: x = property(GetNumWatchpoints, None)
768
769 __swig_getmethods__["broadcaster"] = GetBroadcaster
770 if _newclass: x = property(GetBroadcaster, None)
771
772 __swig_getmethods__["byte_order"] = GetByteOrder
773 if _newclass: x = property(GetByteOrder, None)
774
775 __swig_getmethods__["addr_size"] = GetAddressByteSize
776 if _newclass: x = property(GetAddressByteSize, None)
777
778 __swig_getmethods__["triple"] = GetTriple
779 if _newclass: x = property(GetTriple, None)
780 %}
781
Johnny Chenebd63b22011-07-16 21:15:39 +0000782};
783
784} // namespace lldb