TODO revision 2c426c74d6e5e39e41c6c77c6f88ccea26748d72
1* BFD:
2  + New executable formats
3  + Read list of libraries needed
4  + Read list of undefined symbols in executables
5  + Read list of exported symbols in libraries
6  + Read debugging info from executables/libraries
7* Automatically update list of syscalls?
8* Improve documentation
9* Improve -e/-x options (regexp?)
10* Improve -l option
11* Improve C++ name demangling
12* Display different argument types
13* Update /etc/ltrace.conf
14* More architectures, cleaner way to port
15* More operating systems (solaris?)
16* Option -I (inter-library calls)
17* Modify ARGTYPE_STRING[0-5] types so that they not stop displaying chars when '\0' is encountered
18* Get rid of EVENT_ARCH_SYSCALL and EVENT_ARCH_SYSRET
19* EVENT_FORK, EVENT_CLONE, EVENT_EXEC instead of fork_p() and exec_p()
20* If EVENT_FORK is received:
21  + Add the new process to the list, with a state of "future child of XXX"
22* If EVENT_CLONE is received:
23  + Add the new process to the list, with a state of "future clone of XXX"
24* If EVENT_EXEC is received:
25  + Clean structs with breakpoints, open new created program
26* If a signal is received from an an unknown process, add it to the list,
27  with a state of "new process"
28* Cleaner way to use breakpoints:
29  + BP is placed in the PLT
30  + When control hits there:
31    - write down return address
32    - change return address with another one (handled by ltrace)
33    - get arguments...
34    - change the process' PC to be in the correct place,
35      without removing breakpoint
36  + When control hits one of our return addresses:
37    - get return value...
38    - change PC to the right place
39* To be able to work with processes sharing memory, we must:
40  + ptrace() every single thread
41  + place breakpoints only in places where the process control can continue
42    without having to remove it
43