aboutsummaryrefslogtreecommitdiff
path: root/ltrace.h
diff options
context:
space:
mode:
authorSteve Fink <sphink@gmail.com>2006-08-07 04:22:06 +0200
committerIan Wienand <ianw@debian.org>2006-08-07 04:22:06 +0200
commitb0315a0acbd219de2c7f02228d7fda5c14fb47ef (patch)
tree1b28f0419563df3d3957828a461750ad3a126b34 /ltrace.h
parent3fc0189c9b07744f7c1224e1472a922495eb0139 (diff)
downloadltrace-b0315a0acbd219de2c7f02228d7fda5c14fb47ef.tar.gz
prepare types for further changes
Diffstat (limited to 'ltrace.h')
-rw-r--r--ltrace.h31
1 files changed, 22 insertions, 9 deletions
diff --git a/ltrace.h b/ltrace.h
index 460167e..5561139 100644
--- a/ltrace.h
+++ b/ltrace.h
@@ -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);