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