blob: 5063737726b1f1ecdfe59159b722f0807497f8f6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
* BFD:
+ New executable formats
+ Read list of libraries needed
+ Read list of undefined symbols in executables
+ Read list of exported symbols in libraries
+ Read debugging info from executables/libraries
* Automatically update list of syscalls?
* Improve documentation
* Improve -e/-x options (regexp?)
* Improve -l option
* Improve C++ name demangling
* Display different argument types
* Update /etc/ltrace.conf
* More architectures, cleaner way to port
* More operating systems (solaris?)
* Option -I (inter-library calls)
* Modify ARGTYPE_STRING[0-5] types so that they don't stop displaying chars when '\0' is seen
* Get rid of EVENT_ARCH_SYSCALL and EVENT_ARCH_SYSRET
* Cleaner way to use breakpoints:
+ BP is placed in the PLT
+ When control hits there:
- write down return address
- change return address with another one (handled by ltrace)
- get arguments...
- change the process' PC to be in the correct place,
without removing breakpoint
+ When control hits one of our return addresses:
- get return value...
- change PC to the right place
* To be able to work with processes sharing memory, we must:
+ ptrace() every single thread
+ place breakpoints only in places where the process control can continue
without having to remove it
* List source dependencies in Makefile
* Create different ltrace processes to trace different children
* After a clone(), syscalls may be seen as sysrets in s390 (see trace.c:syscall_p())
|