diff options
author | Juan Cespedes <cespedes@debian.org> | 2001-07-02 00:52:45 +0200 |
---|---|---|
committer | Juan Cespedes <cespedes@debian.org> | 2001-07-02 00:52:45 +0200 |
commit | 5b3ffdf2e696273d38434ff7b3c26349fff5a0ea (patch) | |
tree | e2dfad2260e9d75ab483d8e92ed82d916bf69f39 /ltrace.h | |
parent | 2f93d96a05b3d2b38a777ff0333e803cc84f8feb (diff) | |
download | ltrace-5b3ffdf2e696273d38434ff7b3c26349fff5a0ea.tar.gz |
Version: 0.3.11
* Clean up lintian bugs
* Fixed small bug reading start of arguments in config file
* Keep a stack of nested calls (Morten Eriksen, 1999-07-04)
* Add "--indent" option (Morten Eriksen, 1999-07-04)
* cleans up connection between a breakpoint address and
a call instance (Morten Eriksen, 1999-07-04)
* New Standards-Version (3.5.5)
Diffstat (limited to 'ltrace.h')
-rw-r--r-- | ltrace.h | 28 |
1 files changed, 20 insertions, 8 deletions
@@ -55,20 +55,29 @@ extern struct function * list_of_functions; struct library_symbol { char * name; - struct breakpoint brk; + void * enter_addr; struct library_symbol * next; }; +struct callstack_element { + union { + int syscall; + struct library_symbol * libfunc; + } c_un; + int is_syscall; + void * return_addr; +}; + +#define MAX_CALLDEPTH 64 + struct process { char * filename; pid_t pid; int breakpoints_enabled; /* -1:not enabled yet, 0:disabled, 1:enabled */ - int current_syscall; /* -1 for none */ - struct library_symbol * current_symbol; /* NULL for none */ - - struct breakpoint return_value; + int callstack_depth; + struct callstack_element callstack[MAX_CALLDEPTH]; struct library_symbol * list_of_symbols; /* Arch-dependent: */ @@ -111,6 +120,9 @@ extern struct event * wait_for_something(void); extern void process_event(struct event * event); extern void execute_program(struct process *, char **); extern int display_arg(enum tof type, struct process * proc, int arg_num, enum arg_type at); +extern struct breakpoint * address2bpstruct(struct process * proc, void * addr); +extern void insert_breakpoint(struct process * proc, void * addr); +extern void delete_breakpoint(struct process * proc, void * addr); extern void enable_all_breakpoints(struct process * proc); extern void disable_all_breakpoints(struct process * proc); extern struct process * open_program(char * filename); @@ -125,14 +137,14 @@ extern void untrace_pid(pid_t pid); extern void * get_instruction_pointer(pid_t pid); extern void * get_stack_pointer(pid_t pid); extern void * get_return_addr(pid_t pid, void * stack_pointer); -extern void insert_breakpoint(pid_t pid, struct breakpoint * sbp); -extern void delete_breakpoint(pid_t pid, struct breakpoint * sbp); +extern void enable_breakpoint(pid_t pid, struct breakpoint * sbp); +extern void disable_breakpoint(pid_t pid, const struct breakpoint * sbp); extern int fork_p(int sysnum); extern int exec_p(int sysnum); extern int syscall_p(struct process * proc, int status, int * sysnum); extern void continue_process(pid_t pid); extern void continue_after_signal(pid_t pid, int signum); -extern void continue_after_breakpoint(struct process * proc, struct breakpoint * sbp, int delete_it); +extern void continue_after_breakpoint(struct process * proc, struct breakpoint * sbp); extern void continue_enabling_breakpoint(pid_t pid, struct breakpoint * sbp); extern long gimme_arg(enum tof type, struct process * proc, int arg_num); extern int umovestr(struct process * proc, void * addr, int len, void * laddr); |