aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorJuan Cespedes <cespedes@debian.org>2009-05-06 17:49:13 +0200
committerJuan Cespedes <cespedes@debian.org>2009-05-06 17:49:13 +0200
commit2c426c74d6e5e39e41c6c77c6f88ccea26748d72 (patch)
treebd640b0fb80694a3282a1778f4bcbcd6c5c6b43f /TODO
parentda2ad5abe848571754a796774548981e3a687711 (diff)
downloadltrace-2c426c74d6e5e39e41c6c77c6f88ccea26748d72.tar.gz
adding Process_State to struct Process
Diffstat (limited to 'TODO')
-rw-r--r--TODO27
1 files changed, 25 insertions, 2 deletions
diff --git a/TODO b/TODO
index 6de0a32..be66d16 100644
--- a/TODO
+++ b/TODO
@@ -1,5 +1,3 @@
-* EVENT_FORK, EVENT_EXEC instead of fork_p() and exec_p()
-* Get rid of EVENT_ARCH_SYSCALL and EVENT_ARCH_SYSRET
* BFD:
+ New executable formats
+ Read list of libraries needed
@@ -17,3 +15,28 @@
* More operating systems (solaris?)
* Option -I (inter-library calls)
* Modify ARGTYPE_STRING[0-5] types so that they not stop displaying chars when '\0' is encountered
+* Get rid of EVENT_ARCH_SYSCALL and EVENT_ARCH_SYSRET
+* EVENT_FORK, EVENT_CLONE, EVENT_EXEC instead of fork_p() and exec_p()
+* If EVENT_FORK is received:
+ + Add the new process to the list, with a state of "future child of XXX"
+* If EVENT_CLONE is received:
+ + Add the new process to the list, with a state of "future clone of XXX"
+* If EVENT_EXEC is received:
+ + Clean structs with breakpoints, open new created program
+* If a signal is received from an an unknown process, add it to the list,
+ with a state of "new process"
+* 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