diff options
author | Steve Fink <sphink@gmail.com> | 2006-08-07 04:22:06 +0200 |
---|---|---|
committer | Ian Wienand <ianw@debian.org> | 2006-08-07 04:22:06 +0200 |
commit | b0315a0acbd219de2c7f02228d7fda5c14fb47ef (patch) | |
tree | 1b28f0419563df3d3957828a461750ad3a126b34 /ltrace.h | |
parent | 3fc0189c9b07744f7c1224e1472a922495eb0139 (diff) | |
download | ltrace-b0315a0acbd219de2c7f02228d7fda5c14fb47ef.tar.gz |
prepare types for further changes
Diffstat (limited to 'ltrace.h')
-rw-r--r-- | ltrace.h | 31 |
1 files changed, 22 insertions, 9 deletions
@@ -41,14 +41,26 @@ enum arg_type { ARGTYPE_FILE, ARGTYPE_FORMAT, /* printf-like format */ ARGTYPE_STRING, - ARGTYPE_STRING0, /* stringN: string up to (arg N) bytes */ - ARGTYPE_STRING1, - ARGTYPE_STRING2, - ARGTYPE_STRING3, - ARGTYPE_STRING4, - ARGTYPE_STRING5 + ARGTYPE_STRING_N, /* stringN: string up to (arg N) bytes */ + ARGTYPE_STRING0, + ARGTYPE_STRING1, + ARGTYPE_STRING2, + ARGTYPE_STRING3, + ARGTYPE_STRING4, + ARGTYPE_STRING5, + ARGTYPE_COUNT /* number of ARGTYPE_* values */ }; +typedef struct arg_type_info_t { + enum arg_type type; + union { + // ARGTYPE_STRING_N + struct { + int size_spec; + } string_n_info; + } u; +} arg_type_info; + enum tof { LT_TOF_NONE = 0, LT_TOF_FUNCTION, /* A real library function */ @@ -59,9 +71,9 @@ enum tof { struct function { const char *name; - enum arg_type return_type; + arg_type_info *return_info; int num_params; - enum arg_type arg_types[MAX_ARGS]; + arg_type_info *arg_info[MAX_ARGS]; int params_right; struct function *next; }; @@ -160,7 +172,7 @@ 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); + arg_type_info *info); extern struct breakpoint *address2bpstruct(struct process *proc, void *addr); extern void breakpoints_init(struct process *proc); extern void insert_breakpoint(struct process *proc, void *addr, @@ -173,6 +185,7 @@ extern void reinitialize_breakpoints(struct process *); extern struct process *open_program(char *filename, pid_t pid); extern void open_pid(pid_t pid, int verbose); extern void show_summary(void); +extern arg_type_info *lookup_singleton(enum arg_type at); /* Arch-dependent stuff: */ extern char *pid2name(pid_t pid); |