1 #ifndef _PROBE_FINDER_H 2 #define _PROBE_FINDER_H 3 4 #define MAX_PATH_LEN 256 5 #define MAX_PROBE_BUFFER 1024 6 #define MAX_PROBES 128 7 8 static inline int is_c_varname(const char *name) 9 { 10 /* TODO */ 11 return isalpha(name[0]) || name[0] == '_'; 12 } 13 14 struct probe_point { 15 char *event; /* Event name */ 16 char *group; /* Event group */ 17 18 /* Inputs */ 19 char *file; /* File name */ 20 int line; /* Line number */ 21 22 char *function; /* Function name */ 23 int offset; /* Offset bytes */ 24 25 int nr_args; /* Number of arguments */ 26 char **args; /* Arguments */ 27 28 int retprobe; /* Return probe */ 29 30 /* Output */ 31 int found; /* Number of found probe points */ 32 char *probes[MAX_PROBES]; /* Output buffers (will be allocated)*/ 33 }; 34 35 #ifndef NO_LIBDWARF 36 extern int find_probepoint(int fd, struct probe_point *pp); 37 38 /* Workaround for undefined _MIPS_SZLONG bug in libdwarf.h: */ 39 #ifndef _MIPS_SZLONG 40 # define _MIPS_SZLONG 0 41 #endif 42 43 #include <dwarf.h> 44 #include <libdwarf.h> 45 46 struct probe_finder { 47 struct probe_point *pp; /* Target probe point */ 48 49 /* For function searching */ 50 Dwarf_Addr addr; /* Address */ 51 Dwarf_Unsigned fno; /* File number */ 52 Dwarf_Unsigned lno; /* Line number */ 53 Dwarf_Off inl_offs; /* Inline offset */ 54 Dwarf_Die cu_die; /* Current CU */ 55 56 /* For variable searching */ 57 Dwarf_Addr cu_base; /* Current CU base address */ 58 Dwarf_Locdesc fbloc; /* Location of Current Frame Base */ 59 const char *var; /* Current variable name */ 60 char *buf; /* Current output buffer */ 61 int len; /* Length of output buffer */ 62 }; 63 #endif /* NO_LIBDWARF */ 64 65 #endif /*_PROBE_FINDER_H */ 66