A dynamic tracer for Linux

ply.h 674B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef _PLY_H
  2. #define _PLY_H
  3. #include "node.h"
  4. #include "sym.h"
  5. #include "type.h"
  6. #include "arch.h"
  7. #include "ir.h"
  8. typedef struct prog prog_t;
  9. typedef struct provider provider_t;
  10. struct prog {
  11. const char *probe;
  12. node_t *ast;
  13. symtab_t *locals;
  14. symtab_t *globals;
  15. provider_t *provider;
  16. void *provider_data;
  17. ir_t *ir;
  18. };
  19. typedef struct ctx {
  20. prog_t **progs;
  21. symtab_t *globals;
  22. } ctx_t;
  23. struct provider {
  24. const char *name;
  25. int (*probe)(prog_t *);
  26. int (*resolve)(prog_t *, node_t *);
  27. int (*rewrite_node)(prog_t *, node_t *);
  28. int (*ir_prologue)(prog_t *);
  29. int (*ir_epilogue)(prog_t *);
  30. };
  31. void provider_register(provider_t *prov);
  32. #endif /* _PLY_H */