commit 992805a678fb84b64f201a1d4abf8b99b47d1ac8
parent efedcd4b641ea255f9d37ca0f34c27d259ac0bdd
Author: lostd <lostd@2f30.org>
Date:   Thu, 14 Nov 2013 21:57:09 +0200
Remove original file
Diffstat:
| D | callgraph.c | | | 198 | ------------------------------------------------------------------------------- | 
1 file changed, 0 insertions(+), 198 deletions(-)
diff --git a/callgraph.c b/callgraph.c
@@ -1,198 +0,0 @@
-/* runtime callgraph generator by stateless */
-
-#include <stdio.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <string.h>
-#include <stdint.h>
-#include <inttypes.h>
-#include <assert.h>
-
-struct fnode_t {
-     uintptr_t addr;
-     struct fnode_t *next;
-};
-
-struct fpair_t {
-     uintptr_t l, r; /* l is the caller, r is the callee */
-     struct fpair_t *next;
-};
-
-/* essentially a stack of function calls */
-static struct fnode_t *fnode_head = NULL;
-static struct fnode_t *fnode_tail = NULL;
-
-/* a list of function pairs (caller -> callee) */
-static struct fpair_t *fpair_head = NULL;
-static struct fpair_t *fpair_tail = NULL;
-
-static int fd = -1;
-static char logbuf[BUFSIZ];
-
-static void *
-xmalloc(size_t size)
-{
-     void *p;
-
-     p = malloc(size);
-     if (!p)
-          _Exit(EXIT_FAILURE);
-     return p;
-}
-
-static ssize_t
-writelog(int fildes, const void *buf, size_t nbyte)
-{
-     ssize_t w, r, tmp;
-
-     w = 0;
-     r = nbyte;
-     if (r < 0) return 0;
-     do {
-again:
-          tmp = write(fildes, (const char *)buf + w, r);
-          if (tmp <= 0) {
-               if (tmp)
-                    if (errno == EINTR)
-                         goto again;
-               return tmp;
-          }
-          w += tmp;
-          r -= tmp;
-     } while (r > 0);
-     return w;
-}
-
-__attribute__ ((constructor)) static void
-init_logging(void)
-{
-     char *f;
-
-     f = getenv("CGRAPH_OUT");
-     if (!f) {
-          fprintf(stderr, "cgraph: CGRAPH_OUT is not set!\n");
-          _Exit(EXIT_FAILURE);
-     }
-
-     fd = open(f, O_WRONLY | O_CREAT, 0644);
-     if (fd < 0 || ftruncate(fd, 0) < 0) {
-          perror("cgraph");
-          _Exit(EXIT_FAILURE);
-     }
-}
-
-__attribute__ ((destructor)) static void
-deinit_logging(void)
-{
-     struct fpair_t *p, *tmppair;
-     struct fnode_t *n, *tmpnode;
-
-     writelog(fd, "digraph G {\n",
-              strlen("digraph G {\n"));
-     p = fpair_head;
-     while (p) {
-          snprintf(logbuf, sizeof logbuf,
-                   "\t \"%"PRIxPTR"\" -> \"%"PRIxPTR"\"\n", p->l, p->r);
-          writelog(fd, logbuf, strlen(logbuf));
-          p = p->next;
-     }
-     writelog(fd, "}\n", 2);
-
-     if (fd != -1)
-          if (close(fd) < 0)
-               perror("cgraph");
-
-     p = fpair_head;
-     while (p) {
-          tmppair = p->next;
-          free(p);
-          p = tmppair;
-     }
-     n = fnode_head;
-     while (n) {
-          tmpnode = n->next;
-          free(n);
-          n = tmpnode;
-     }
-}
-
-static void
-push_fnode(uintptr_t addr)
-{
-     if (!fnode_head) {
-          fnode_head = xmalloc(sizeof(struct fnode_t));
-          fnode_head->addr = addr;
-          fnode_head->next = NULL;
-          fnode_tail = fnode_head;
-     } else {
-          fnode_tail->next = xmalloc(sizeof(struct fnode_t));
-          fnode_tail = fnode_tail->next;
-          fnode_tail->next = NULL;
-          fnode_tail->addr = addr;
-     }
-}
-
-static void
-pop_fnode(void)
-{
-     struct fnode_t *i;
-
-     assert(fnode_tail);
-     for (i = fnode_head; i; i = i->next)
-          if (i->next == fnode_tail)
-               break;
-     if (!i) return;
-     free(fnode_tail);
-     fnode_tail = i;
-     fnode_tail->next = NULL;
-}
-
-static inline struct fnode_t *
-get_top(void) {
-     return fnode_tail;
-}
-
-static void
-add_fpair(uintptr_t r)
-{
-     struct fnode_t *curfun;
-
-     curfun = get_top();
-     if (!fpair_head) {
-          fpair_head = xmalloc(sizeof(struct fpair_t));
-          fpair_head->l = curfun->addr;
-          fpair_head->r = r;
-          fpair_head->next = NULL;
-          fpair_tail = fpair_head;
-     } else {
-          fpair_tail->next = xmalloc(sizeof(struct fpair_t));
-          fpair_tail = fpair_tail->next;
-          fpair_tail->l = curfun->addr;
-          fpair_tail->r = r;
-          fpair_tail->next = NULL;
-     }
-}
-
-void
-__cyg_profile_func_enter(void *func_address,
-                         __attribute__ ((unused)) void *call_site)
-{
-     struct fnode_t *n;
-
-     n = get_top();
-     if (n)
-          add_fpair((uintptr_t)func_address);
-     push_fnode((uintptr_t)func_address);
-}
-
-void
-__cyg_profile_func_exit (
-     __attribute__ ((unused)) void *func_address,
-     __attribute__ ((unused)) void *call_site)
-{
-     pop_fnode();
-}
-