aboutsummaryrefslogtreecommitdiff
path: root/ltrace.h
diff options
context:
space:
mode:
authorJuan Cespedes <cespedes@debian.org>2001-07-02 00:52:45 +0200
committerJuan Cespedes <cespedes@debian.org>2001-07-02 00:52:45 +0200
commit5b3ffdf2e696273d38434ff7b3c26349fff5a0ea (patch)
treee2dfad2260e9d75ab483d8e92ed82d916bf69f39 /ltrace.h
parent2f93d96a05b3d2b38a777ff0333e803cc84f8feb (diff)
downloadltrace-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.h28
1 files changed, 20 insertions, 8 deletions
diff --git a/ltrace.h b/ltrace.h
index ae51d93..05e7967 100644
--- a/ltrace.h
+++ b/ltrace.h
@@ -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);