summaryrefslogtreecommitdiffstats
path: root/lldb/scripts
Commit message (Collapse)AuthorAgeFilesLines
...
* When outputting hex values use unsigned integer values so we don't getGreg Clayton2012-02-021-2/+7
| | | | | | | negative hex values. Also added a very rudimentary version of the == and != operators to the lldb.value helper class. llvm-svn: 149564
* Added many more python convenience accessors:Greg Clayton2012-02-0113-8/+361
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | You can now access a frame in a thread using: lldb.SBThread.frame[int] -> lldb.SBFrame object for a frame in a thread Where "int" is an integer index. You can also access a list object with all of the frames using: lldb.SBThread.frames => list() of lldb.SBFrame objects All SB objects that give out SBAddress objects have properties named "addr" lldb.SBInstructionList now has the following convenience accessors for len() and instruction access using an index: insts = lldb.frame.function.instructions for idx in range(len(insts)): print insts[idx] Instruction lists can also lookup an isntruction using a lldb.SBAddress as the key: pc_inst = lldb.frame.function.instructions[lldb.frame.addr] lldb.SBProcess now exposes: lldb.SBProcess.is_alive => BOOL Check if a process is exists and is alive lldb.SBProcess.is_running => BOOL check if a process is running (or stepping): lldb.SBProcess.is_running => BOOL check if a process is currently stopped or crashed: lldb.SBProcess.thread[int] => lldb.SBThreads for a given "int" zero based index lldb.SBProcess.threads => list() containing all lldb.SBThread objects in a process SBInstruction now exposes: lldb.SBInstruction.mnemonic => python string for instruction mnemonic lldb.SBInstruction.operands => python string for instruction operands lldb.SBInstruction.command => python string for instruction comment SBModule now exposes: lldb.SBModule.uuid => uuid.UUID(), an UUID object from the "uuid" python module lldb.SBModule.symbol[int] => lldb.Symbol, lookup symbol by zero based index lldb.SBModule.symbol[str] => list() of lldb.Symbol objects that match "str" lldb.SBModule.symbol[re] => list() of lldb.Symbol objecxts that match the regex lldb.SBModule.symbols => list() of all symbols in a module SBAddress objects can now access the current load address with the "lldb.SBAddress.load_addr" property. The current "lldb.target" will be used to try and resolve the load address. Load addresses can also be set using this accessor: addr = lldb.SBAddress() addd.load_addr = 0x123023 Then you can check the section and offset to see if the address got resolved. SBTarget now exposes: lldb.SBTarget.module[int] => lldb.SBModule from zero based module index lldb.SBTarget.module[str] => lldb.SBModule by basename or fullpath or uuid string lldb.SBTarget.module[uuid.UUID()] => lldb.SBModule whose UUID matches lldb.SBTarget.module[re] => list() of lldb.SBModule objects that match the regex lldb.SBTarget.modules => list() of all lldb.SBModule objects in the target SBSymbol now exposes: lldb.SBSymbol.name => python string for demangled symbol name lldb.SBSymbol.mangled => python string for mangled symbol name or None if there is none lldb.SBSymbol.type => lldb.eSymbolType enum value lldb.SBSymbol.addr => SBAddress object that represents the start address for this symbol (if there is one) lldb.SBSymbol.end_addr => SBAddress for the end address of the symbol (if there is one) lldb.SBSymbol.prologue_size => pythin int containing The size of the prologue in bytes lldb.SBSymbol.instructions => SBInstructionList containing all instructions for this symbol SBFunction now also has these new properties in addition to what is already has: lldb.SBFunction.addr => SBAddress object that represents the start address for this function lldb.SBFunction.end_addr => SBAddress for the end address of the function lldb.SBFunction.instructions => SBInstructionList containing all instructions for this function SBFrame now exposes the SBAddress for the frame: lldb.SBFrame.addr => SBAddress which is the section offset address for the current frame PC These are all in addition to what was already added. Documentation and website updates coming soon. llvm-svn: 149489
* Added a new convenience property on lldb.SBThread names "frames" which ↵Greg Clayton2012-02-012-26/+192
| | | | | | | | | | | | | always returns a complete list of all lldb.SBFrame objects: (lldb) script >>> frames = lldb.thread.frames >>> for frame in frames: ... print frame Also changed all of the "__repr__" methods to strip any trailing newline characters so we don't end up with entra newlines. llvm-svn: 149466
* Added a new class to the lldb python module:Greg Clayton2012-02-011-0/+184
| | | | | | | | | | | | | | | | | | | | | | | | | | | lldb.value() It it designed to be given a lldb.SBValue object and it allows natural use of a variable value: pt = lldb.value(lldb.frame.FindVariable("pt")) print pt print pt.x print pt.y pt = lldb.frame.FindVariable("rectangle_array") print rectangle_array[12] print rectangle_array[5].origin.x Note that array access works just fine and works on arrays or pointers: pt = lldb.frame.FindVariable("point_ptr") print point_ptr[5].y Also note that pointer child accesses are done using a "." instead of "->": print point_ptr.x llvm-svn: 149464
* Added fuzz testing for when we call API calls with an invalid object.Greg Clayton2012-01-311-0/+2
| | | | | | | | | We previously weren't catching that SBValue::Cast(...) would crash if we had an invalid (empty) SBValue object. Cleaned up the SBType API a bit. llvm-svn: 149447
* This commit provides a new default summary for Objective-C boolean ↵Enrico Granata2012-01-311-0/+15
| | | | | | variables, which shows YES or NO instead of the character value. A new category named objc is added to contain this summary provider. Any future Objective-C related formatters would probably fit here llvm-svn: 149388
* Removed the "lldb-forward-rtti.h" header file as it was designed to containGreg Clayton2012-01-301-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | all RTTI types, and since we don't use RTTI anymore since clang and llvm don't we don't really need this header file. All shared pointer definitions have been moved into "lldb-forward.h". Defined std::tr1::weak_ptr definitions for all of the types that inherit from enable_shared_from_this() in "lldb-forward.h" in preparation for thread hardening our public API. The first in the thread hardening check-ins. First we start with SBThread. We have issues in our lldb::SB API right now where if you have one object that is being used by two threads we have a race condition. Consider the following code: 1 int 2 SBThread::SomeFunction() 3 { 4 int result = -1; 5 if (m_opaque_sp) 6 { 7 result = m_opaque_sp->DoSomething(); 8 } 9 return result; 10 } And now this happens: Thread 1 enters any SBThread function and checks its m_opaque_sp and is about to execute the code on line 7 but hasn't yet Thread 2 gets to run and class sb_thread.Clear() which calls m_opaque_sp.clear() and clears the contents of the shared pointer member Thread 1 now crashes when it resumes. The solution is to use std::tr1::weak_ptr. Now the SBThread class contains a lldb::ThreadWP (weak pointer to our lldb_private::Thread class) and this function would look like: 1 int 2 SBThread::SomeFunction() 3 { 4 int result = -1; 5 ThreadSP thread_sp(m_opaque_wp.lock()); 6 if (thread_sp) 7 { 8 result = m_opaque_sp->DoSomething(); 9 } 10 return result; 11 } Now we have a solid thread safe API where we get a local copy of our thread shared pointer from our weak_ptr and then we are guaranteed it can't go away during our function. So lldb::SBThread has been thread hardened, more checkins to follow shortly. llvm-svn: 149218
* Removed an incorrectly added property from SBTarget.iGreg Clayton2012-01-291-3/+0
| | | | llvm-svn: 149192
* Added the ability to get the target triple, byte order and address byte sizeGreg Clayton2012-01-2916-0/+455
| | | | | | | from the SBTarget and SBModule interfaces. Also added many python properties for easier access to many things from many SB objects. llvm-svn: 149191
* <rdar://problem/10750012>Greg Clayton2012-01-271-8/+0
| | | | | | | | Remove a pseudo terminal master open and slave file descriptor that was being used for pythong stdin. It was not hooked up correctly and was causing file descriptor leaks. llvm-svn: 149098
* If timestamps are enabled when logging GDB remote packets ("log enable -T -f ↵Greg Clayton2012-01-251-2/+97
| | | | | | | | | | | | | | | | | | | | | | | /tmp/packets.log gdb-remote logs") then get the amount of time spent executing each packet and summarize at the end of a dump. Sample timing output looks like: ---------------------------------------------------------------------- Packet timing summary: ---------------------------------------------------------------------- Packet Time % ---------------------- -------- ------ qThreadStopInfo 0.363844 35.35 m 0.281967 27.39 s 0.147160 14.30 qfThreadInfo 0.070865 6.88 qsThreadInfo 0.061608 5.99 z 0.036796 3.57 Z 0.036271 3.52 c 0.018410 1.79 H 0.012418 1.21 ---------------------- -------- ------ Total 1.029339 100.00 llvm-svn: 148983
* Handle 's' packets correctly when disassembling GDB packet output.Greg Clayton2012-01-251-5/+15
| | | | llvm-svn: 148911
* Integrated a patch for the MCJIT that inhibitsSean Callanan2012-01-191-0/+12
| | | | | | a memory leak. llvm-svn: 148507
* Patch from Enrico Granata that moves SBData related functions into the SBDataGreg Clayton2012-01-072-21/+46
| | | | | | | class instead of requiring a live process in order to be able to create useful SBData objects. llvm-svn: 147702
* http://llvm.org/bugs/show_bug.cgi?id=11619Johnny Chen2012-01-062-0/+172
| | | | | | | | Allow creating SBData values from arrays or primitives in Python Patch submitted by Enrico Granata. llvm-svn: 147639
* Fixed a problem in our local Clang's method forSean Callanan2012-01-051-0/+19
| | | | | | | | | | | | performing Objective-C instance variable lookup. Previously, it only completed the derived class that was the beginning of the search. Now, as it walks up the superclass chain looking for the ivar, it completes each superclass in turn. Also added a testcase covering this issue. llvm-svn: 147621
* <rdar://problem/10507811>Greg Clayton2012-01-041-4/+5
| | | | | | | | | | Be better at detecting when DWARF changes and handle this more gracefully than asserting and exiting. Also fixed up a bunch of system calls that weren't properly checking for EINTR. llvm-svn: 147559
* Cleaned up the usage to show the BuildAndIntegration configuration.Greg Clayton2011-12-281-3/+3
| | | | llvm-svn: 147325
* The "desired result type" code in the expressionSean Callanan2011-12-211-0/+25
| | | | | | | | | | | | | | | | | | | | | | parser has hitherto been an implementation waiting for a use. I have now tied the '-o' option for the expression command -- which indicates that the result is an Objective-C object and needs to be printed -- to the ExpressionParser, which communicates the desired type to Clang. Now, if the result of an expression is determined by an Objective-C method call for which there is no type information, that result is implicitly cast to id if and only if the -o option is passed to the expression command. (Otherwise if there is no explicit cast Clang will issue an error. This behavior is identical to what happened before r146756.) Also added a testcase for -o enabled and disabled. llvm-svn: 147099
* Tightened Clang against a bug in which RecordDeclsSean Callanan2011-12-211-0/+14
| | | | | | | | with incomplete definition data were being converted. Now Clang attempts to complete RecordDecls before converting them, avoiding a nasty crash. llvm-svn: 147029
* Add needed Clear methods.Jim Ingham2011-12-193-0/+9
| | | | | | <rdar://problem/10596340> llvm-svn: 146902
* Fix Python docstring for SBThread.GetStopDescription().Johnny Chen2011-12-191-0/+4
| | | | llvm-svn: 146890
* Fixed code rot pointed out by Jim.Johnny Chen2011-12-171-1/+1
| | | | | | SBThread::GetStopReasonDataCount/GetStopReasonDataAtIndex() need to handle eStopReasonWatchpoint. llvm-svn: 146812
* Added a version of the LLVM/Clang checkout andSean Callanan2011-12-171-0/+73
| | | | | | | build script that applies any local patches to LLVM/Clang. llvm-svn: 146811
* Add the ability to capture the return value in a thread's stop info, and ↵Jim Ingham2011-12-171-0/+3
| | | | | | | | | | | | | print it as part of the thread format output. Currently this is only done for the ThreadPlanStepOut. Add a convenience API ABI::GetReturnValueObject. Change the ValueObject::EvaluationPoint to BE an ExecutionContextScope, rather than trying to hand out one of its subsidiary object's pointers. That way this will always be good. llvm-svn: 146806
* I have added a new patch to LLVM that makes theSean Callanan2011-12-171-0/+199
| | | | | | | | | | | enhanced disassembler classify disassemblers by target triple (as a string) rather than just by the architecture component of the triple. This fixes a problem where different variants of the Thumb instruction set were lumped into the same hash bucket. llvm-svn: 146799
* Updated Clang to take an enhancement to the waySean Callanan2011-12-163-12/+12
| | | | | | | | | | | | | | we handle Objective-C method calls. Currently, LLDB treats the result of an Objective-C method as unknown if the type information doesn't have the method's signature. Now Clang can cast the result to id if it isn't explicitly cast. I also added a test case for this, as well as a fix for a type import problem that this feature exposed. llvm-svn: 146756
* Add fuzz calls for newly added SBProcess methods. Fix a typo in the audodoc ↵Johnny Chen2011-12-151-1/+1
| | | | | | of SBProcess.ReadCStringFromMemory(). llvm-svn: 146695
* <rdar://problem/10584789>Greg Clayton2011-12-151-0/+3
| | | | | | | | | | Added a static memory pressure function in SBDebugger: void SBDebugger::MemoryPressureDetected () This can be called by applications that detect memory pressure to cause LLDB to release cached information. llvm-svn: 146640
* Expose new read memory fucntion through python in SBProcess:Greg Clayton2011-12-151-0/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | size_t SBProcess::ReadCStringFromMemory (addr_t addr, void *buf, size_t size, lldb::SBError &error); uint64_t SBProcess::ReadUnsignedFromMemory (addr_t addr, uint32_t byte_size, lldb::SBError &error); lldb::addr_t SBProcess::ReadPointerFromMemory (addr_t addr, lldb::SBError &error); These ReadCStringFromMemory() has some SWIG type magic that makes it return the python string directly and the "buf" is not needed: error = SBError() max_cstr_len = 256 cstr = lldb.process.ReadCStringFromMemory (0x1000, max_cstr_len, error) if error.Success(): .... The other two functions behave as expteced. This will make it easier to get integer values from the inferior process that are correctly byte swapped. Also for pointers, the correct pointer byte size will be used. Also cleaned up a few printf style warnings for the 32 bit lldb build on darwin. llvm-svn: 146636
* I have added a function to SBTarget that allowsSean Callanan2011-12-142-16/+37
| | | | | | | | | | | | | | | clients to disassemble a series of raw bytes as demonstrated by a new testcase. In the future, this API will also allow clients to provide a callback that adds comments for addresses in the disassembly. I also modified the SWIG harness to ensure that Python ByteArrays work as well as strings as sources of raw data. llvm-svn: 146611
* Add more robustness - use PyString_CheckExact(pvalue) to check whether ↵Johnny Chen2011-12-141-1/+1
| | | | | | | | pvalue is a Python string before calling PyString_AsString(pvalue). Similar to http://llvm.org/viewvc/llvm-project?rev=146584&view=rev. llvm-svn: 146606
* http://llvm.org/bugs/show_bug.cgi?id=11569Johnny Chen2011-12-141-2/+4
| | | | | | | | | | LLDBSwigPythonCallCommand crashes when a command script returns an object Add more robustness to LLDBSwigPythonCallCommand. It should check whether the returned Python object is a string, and only assign it as the error msg when the check holds. Also add a regression test. llvm-svn: 146584
* Add SBValue::GetDynamicValue and SBValue::GetStaticValue API's.Jim Ingham2011-12-081-0/+9
| | | | | | <rdar://problem/10545069> llvm-svn: 146173
* Picked up a new revision of Clang to pull in Objective-CSean Callanan2011-12-015-13/+13
| | | | | | | | | | | | | | | | | enhancements. With these enhancements, the return values of Objective-C methods with unknown return types can be implicitly cast to id for the purpose of making method calls. So what would have required this: (int)[(id)[ClassWithNoDebugInfo methodReturningObject] methodReturningInt] can now be written as: (int)[[ClassWithNoDebugInfo methodReturningObject] methodReturningInt] llvm-svn: 145567
* SBProcess.PutSTDIN() needs to be properly typemapped when swigging,Johnny Chen2011-11-283-0/+15
| | | | | | | | | | | | | | | | | so that we can do Python scripting like this: target = self.dbg.CreateTarget(self.exe) self.dbg.SetAsync(True) process = target.LaunchSimple(None, None, os.getcwd()) process.PutSTDIN("Line 1 Entered.\n") process.PutSTDIN("Line 2 Entered.\n") process.PutSTDIN("Line 3 Entered.\n") Add TestProcessIO.py to exercise the process IO API: PutSTDIN()/GetSTDOUT()/GetSTDERR(). llvm-svn: 145282
* Clarify the SBProcess Python API GetSTDOUT()/GetSTDERR(). They look ↵Johnny Chen2011-11-281-0/+10
| | | | | | | | different from the C++ API due to swig typemapping. llvm-svn: 145260
* Pulled in a new revision of LLVM/Clang and addedSean Callanan2011-11-196-66/+143
| | | | | | | | | | | | | several patches. These patches fix a problem where templated types were not being completed the first time they were used, and fix a variety of minor issues I discovered while fixing that problem. One of the previous local patches was resolved in the most recent Clang, so I removed it. The others will be removed in due course. llvm-svn: 144984
* This commit completes the rearchitecting of ClangASTSourceSean Callanan2011-11-183-1/+114
| | | | | | | | | | | | | | | | | | | | | to allow variables in the persistent variable store to know how to complete themselves from debug information. That fixes a variety of bugs during dematerialization of expression results and also makes persistent variable and result variables ($foo, $4, ...) more useful. I have also added logging improvements that make it much easier to figure out how types are moving from place to place, and made some checking a little more aggressive. The commit includes patches to Clang which are currently being integrated into Clang proper; once these fixes are in Clang top-of-tree, these patches will be removed. The patches don't fix API; rather, they fix some internal bugs in Clang's ASTImporter that were exposed when LLDB was moving types from place to place multiple times. llvm-svn: 144969
* Pulled in a new version of LLVM/Clang to solve a varietySean Callanan2011-11-151-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | of problems with Objective-C object completion. To go along with the LLVM/Clang-side fixes, we have a variety of Objective-C improvements. Fixes include: - It is now possible to run expressions when stopped in an Objective-C class method and have "self" act just like "self" would act in the class method itself (i.e., [self classMethod] works without casting the return type if debug info is present). To accomplish this, the expression masquerades as a class method added by a category. - Objective-C objects can now provide methods and properties and methods to Clang on demand (i.e., the ASTImporter sets hasExternalVisibleDecls on Objective-C interface objects). - Objective-C built-in types, which had long been a bone of contention (should we be using "id"? "id*"?), are now fetched correctly using accessor functions on ClangASTContext. We inhibit searches for them in the debug information. There are also a variety of logging fixes, and I made two changes to the test suite: - Enabled a test case for Objective-C properties in the current translation unit. - Added a test case for calling Objective-C class methods when stopped in a class method. llvm-svn: 144607
* <rdar://problem/10126482>Greg Clayton2011-11-133-3/+20
| | | | | | | | | | | | | | | Fixed an issues with the SBType and SBTypeMember classes: - Fixed SBType to be able to dump itself from python - Fixed SBType::GetNumberOfFields() to return the correct value for objective C interfaces - Fixed SBTypeMember to be able to dump itself from python - Fixed the SBTypeMember ability to get a field offset in bytes (the value being returned was wrong) - Added the SBTypeMember ability to get a field offset in bits Cleaned up a lot of the Stream usage in the SB API files. llvm-svn: 144493
* Updated LLVM/Clang to pull in a fix for Objective-CSean Callanan2011-11-111-2/+2
| | | | | | | | | | interfaces. This allows us to pull in Objective-C method types on demand, which is also now implemented. Also added a minor fix to prevent multiple-definition errors for "Class" and "id". llvm-svn: 144405
* <rdar://problem/9334299>Greg Clayton2011-11-101-0/+3
| | | | | | Added the ability to get a type without qualifiers (const, volatile, restrict, etc). llvm-svn: 144302
* Add a missing ')' in the comment.Johnny Chen2011-11-081-1/+1
| | | | llvm-svn: 144145
* Updated LLVM/Clang to pick up a fix for imports ofSean Callanan2011-11-042-33/+59
| | | | | | | | | | | | | | | C++ vtables, fixing a record layout problem in the expression parser. Also fixed various problems with the generation and unpacking of llvm.zip given our new better handling of multiple architectures in the LLVM build. (And added a log message that will hopefully catch record layout problems in the future.) llvm-svn: 143741
* Fixed the Xcode project building of LLVM to be a bit more user friendly:Greg Clayton2011-11-043-95/+138
| | | | | | | | | | | | | | | | | | | - If you download and build the sources in the Xcode project, x86_64 builds by default using the "llvm.zip" checkpointed LLVM. - If you delete the "lldb/llvm.zip" and the "lldb/llvm" folder, and build the Xcode project will download the right LLVM sources and build them from scratch - If you have a "lldb/llvm" folder already that contains a "lldb/llvm/lib" directory, we will use the sources you have placed in the LLDB directory. Python can now be disabled for platforms that don't support it. Changed the way the libllvmclang.a files get used. They now all get built into arch specific directories and never get merged into universal binaries as this was causing issues where you would have to go and delete the file if you wanted to build an extra architecture slice. llvm-svn: 143678
* ...And forgot to check in build-llvm.pl. Sigh.Sean Callanan2011-11-021-2/+2
| | | | llvm-svn: 143586
* Fix typo in the docstring.Johnny Chen2011-10-261-2/+2
| | | | llvm-svn: 142996
* Updated LLVM/Clang to pull in a variety of typeSean Callanan2011-10-211-2/+2
| | | | | | | | importation fixes, reducing the amount of requests made to LLDB for unknown types and increasing fidelity of the expression parser. llvm-svn: 142639
* Add docstrings for SetCondition() and GetCondition() APIs.Johnny Chen2011-10-183-0/+31
| | | | llvm-svn: 142396
OpenPOWER on IntegriCloud