Johnny Chen
1cd81bf9e5
Fix typos in comment.
...
llvm-svn: 138179
2011-08-20 01:02:31 +00:00
Johnny Chen
8fff33615d
Use os.walk(), available since 2.3, instead of os.path.walk(), removed in 3.0,
...
to walk the directory tree. Plus, we can concentrate only on leaf nodes, i.e., files.
llvm-svn: 138178
2011-08-20 01:00:16 +00:00
Johnny Chen
20f19d1d02
No need to look further if the file is a symbolic link. Look for the real file.
...
Plus add some comments.
llvm-svn: 138159
2011-08-20 00:12:13 +00:00
Johnny Chen
758f288cdd
Add a Python script to locate each binary file under a root directory which matches some pathname pattern
...
and to invoke lldb-disasm.py on the binary file to disassemble its symbols. The number of symbols can
be specified by, for example, '-n 10000', to specify 10,000 symbols to disassemble for each module.
By default, only 1000 symbols from each module are disassembled.
Example:
utils/test/run-dis.py -r '/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3/Symbols' -p '^/System/Library/.*Frameworks/.*\.framework/[^/]+$'
tries to disassemble every public/private frameworks (by default only 1000 symbols are disassembled) under iOS4.3.
llvm-svn: 138078
2011-08-19 20:51:15 +00:00
Johnny Chen
4c35b711da
Fix TypeError exception for re.compile().
...
llvm-svn: 138045
2011-08-19 17:28:25 +00:00
Johnny Chen
293683b6c4
Add an option (-p regexp-pattern) to specify the regular expression symbol pattern we're interested in disassembling.
...
An example:
utils/test/lldb-disasm.py -C "platform select remote-ios" -o "-b -n" -e '~/CoreFoundation' -n 20 -p '-\[NSArray .+\]'
disassembles the first 20 NSArray instance methods found in the CoreFoundation module.
llvm-svn: 138002
2011-08-18 22:46:50 +00:00
Johnny Chen
901209dcca
Add an option '-q' to have quiet disassembly by not printing out the disassembled result.
...
This could be useful by reducing the strain on standard output.
Example:
utils/test/lldb-disasm.py -C "platform select remote-ios" -o "-b -n" -e '~/CoreFoundation' -n 50 -q
llvm-svn: 137988
2011-08-18 22:04:27 +00:00
Johnny Chen
f7626eff37
Turn off printing of command sent to the pexpect-spawned child process to make the script more robotic.
...
llvm-svn: 132441
2011-06-01 23:53:57 +00:00
Johnny Chen
8831e18b17
Make 'run-until-faulted.py' script more interesting by modifying the example main.c program
...
to seg fault randomly instead of deterministically.
Example:
[15:10:43] johnny:/Volumes/data/lldb/svn/trunk/utils/test $ clang -g main.c
[15:10:46] johnny:/Volumes/data/lldb/svn/trunk/utils/test $ ./run-until-faulted.py -l $PWD/../../build/Debug/lldb -e a.out
lldb command: /Volumes/data/lldb/svn/trunk/utils/test/../../build/Debug/lldb
executable: a.out
executable options:
(lldb) sending 'file a.out' command...
file a.out
Current executable set to 'a.out' (x86_64).
(lldb) sending 'process launch -- ' command... (iteration: 0)
process launch --
Process 63630 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64)
Hello, fault!
val=9
Better luck next time!
[KProcess 63630 exited with status = 0 (0x00000000)
(lldb) sending 'process launch -- ' command... (iteration: 1)
process launch --
Process 63633 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64)
[KProcess 63633 exited with status = 0 (0x00000000)
sending 'process launch -- ' command... (iteration: 2)
[KHello, fault!
val=0
Better luck next time!
(lldb) process launch --
Process 63637 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64)
Hello, fault!
val=15
Better luck next time!
[KProcess 63637 exited with status = 0 (0x00000000)
(lldb) sending 'process launch -- ' command... (iteration: 3)
process launch --
Process 63640 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64)
Hello, fault!
val=2
Better luck next time!
[KProcess 63640 exited with status = 0 (0x00000000)
sending 'process launch -- ' command... (iteration: 4)
(lldb) process launch --
Process 63643 launched: '/Volumes/data/lldb/svn/trunk/utils/test/a.out' (x86_64)
[KProcess 63643 stopped
* thread #1 : tid = 0x2d03, 0x0000000100000e93 a.out`main + 99 at main.c:11, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0 : 0x0000000100000e93 a.out`main + 99 at main.c:11
8 u_int32_t val = (arc4random() & 0x0f);
9 printf("val=%u\n", val);
10 if (val == 0x07) // Lucky 7 :-)
-> 11 printf("Now segfault %d\n", *null_ptr);
12 else
13 printf("Better luck next time!\n");
14 }
(lldb)
* thread #1 : tid = 0x2d03, 0x0000000100000e93 a.out`main + 99 at main.c:11, stop reason = EXC_BAD_ACCESS (code=1, address=0x0)
frame #0 : 0x0000000100000e93 a.out`main + 99 at main.c:11
8 u_int32_t val = (arc4random() & 0x0f);
9 printf("val=%u\n", val);
10 if (val == 0x07) // Lucky 7 :-)
-> 11 printf("Now segfault %d\n", *null_ptr);
12 else
13 printf("Better luck next time!\n");
14 }
[KHello, fault!
val=7
(lldb)
llvm-svn: 132430
2011-06-01 22:12:27 +00:00
Johnny Chen
26fc16b032
Use built-in truth value testing.
...
llvm-svn: 132078
2011-05-25 20:47:27 +00:00
Johnny Chen
b5aa97ecc5
Add a Python utility to help convert the Mail.app saved 'Raw Message Source' .eml file to a git-am friendly file.
...
llvm-svn: 131924
2011-05-23 21:50:12 +00:00
Johnny Chen
6cd4d1d85a
Modified to take advantage of the iteration protocol for our lldb container objects.
...
llvm-svn: 130457
2011-04-28 23:34:58 +00:00
Johnny Chen
511e8c0d36
Add a Python script which launches a program from within lldb and loop until the
...
process stops for some reason. main.c (compiled into a.out) is used as an example in
the README-run-until-faulted file.
llvm-svn: 128755
2011-04-02 01:20:28 +00:00
Johnny Chen
d16c105c3d
Take advantage of the newly added SBSymbol.GetType() API to check whether we
...
have a Code symbol and do disassembly on it.
llvm-svn: 128604
2011-03-31 01:34:55 +00:00
Johnny Chen
0e43f321b6
Add a generator to iterate through the code symbols for a given target.
...
To be modified to take advantage of the new SBSymbol API which checks a symbol for its type.
llvm-svn: 128601
2011-03-31 01:06:28 +00:00
Johnny Chen
318e7ba65d
Add an option to specify the symbols to disassemble instead of the existing 'num of symbols to disassemble'
...
option. If both are present, the 'symbols to disassemble' overrides the 'num of symbols to disassemble'.
An example usage:
$ ./lldb-disasm.py -C 'platform create remote-ios' -e /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libSystem.B.dylib -o '-r -n' -s vprintf -s acosf_special
llvm-svn: 128569
2011-03-30 18:47:54 +00:00
Johnny Chen
6454e15f49
Add the ability to invoke lldb's disassemble command on the symbols digested from
...
the 'image dump symtab' command. The number of symbols to disassemble can be
specified by the '-n Num' option, or unlimited if not specified.
llvm-svn: 128442
2011-03-29 01:07:00 +00:00
Johnny Chen
4044fdccfc
Doc string change.
...
llvm-svn: 128429
2011-03-28 22:48:25 +00:00
Johnny Chen
5e28aa5d9b
Add an initial version of lldb-disasm.py script whose purpose is to iterate through
...
all the symbols for an executable image and to issue the lldb 'disassemble' command
on each symbol. The initial version just dumps the symbol table.
llvm-svn: 128428
2011-03-28 22:40:32 +00:00
Johnny Chen
9d46337511
Add options to allow for specifying an option string when spawning gdb and for executing
...
command(s) right after starting up gdb. Update the README file to show an example of
using these to pass '-arch armv7' to gdb and to execute gdb command to set shared library
path substitutions before loading iOS4.3 sdk's /usr/lib/libSystem.B.dylib and disassembling
the 'printf' function.
llvm-svn: 128040
2011-03-21 23:44:44 +00:00
Johnny Chen
31d446aa5c
Fix a typo in the message string.
...
llvm-svn: 128034
2011-03-21 23:01:34 +00:00
Johnny Chen
5c07daaa1d
Modify disasm.py to better deal with the objc method name which has ':' in them.
...
Add a utility similar to disasm.py, but which provides a shell-like environment for invoking llvm-mc.
llvm-svn: 127936
2011-03-19 01:24:25 +00:00
Johnny Chen
0d825132c6
Tidy up the input file given to 'llvm-mc -disassemble' and also append the gdb
...
assembler code to the memory dump.
llvm-svn: 127823
2011-03-17 19:05:34 +00:00
Johnny Chen
6f6fb3e515
Add a Python script to take an executable, run gdb to disassemble a function,
...
read the memory contents of the function, and then feed the bytes to the
'llvm-mc -disassemble' command.
It uses the pexpect module located under ToT/test/pexpect-2.4 directory to
automate the interaction with gdb. This is used initially to test the low
level ARM disassembler of llvm.
llvm-svn: 127785
2011-03-17 00:59:57 +00:00
Johnny Chen
43b3bad58b
Initial check-in of a Python utility to run the lldb test suite and send the
...
result including the session logs of test failures/errors as a MIME message.
llvm-svn: 119371
2010-11-16 19:44:50 +00:00