aboutsummaryrefslogtreecommitdiff
path: root/devel/mprof
diff options
context:
space:
mode:
authorShaun Amott <shaun@FreeBSD.org>2006-12-11 00:29:07 +0000
committerShaun Amott <shaun@FreeBSD.org>2006-12-11 00:29:07 +0000
commit7b5e47e33197f53ac76f458630b01d5563a0936f (patch)
tree6e91159bc656f4a3861b70e37f7c2cd6c08b9c5e /devel/mprof
parent27c514d6683bb8bebb0f01499295212249708af4 (diff)
downloadports-7b5e47e33197f53ac76f458630b01d5563a0936f.tar.gz
ports-7b5e47e33197f53ac76f458630b01d5563a0936f.zip
Notes
Diffstat (limited to 'devel/mprof')
-rw-r--r--devel/mprof/Makefile1
-rw-r--r--devel/mprof/files/patch-mpgraph.c32
-rw-r--r--devel/mprof/files/patch-mprof.c69
3 files changed, 102 insertions, 0 deletions
diff --git a/devel/mprof/Makefile b/devel/mprof/Makefile
index 06e479a52946..0b65d63e49e5 100644
--- a/devel/mprof/Makefile
+++ b/devel/mprof/Makefile
@@ -8,6 +8,7 @@
PORTNAME= mprof
PORTVERSION= 3.0
+PORTREVISION= 1
CATEGORIES= devel
MASTER_SITES= ftp://ftp.cs.colorado.edu/pub/misc/
EXTRACT_SUFX= .tar.Z
diff --git a/devel/mprof/files/patch-mpgraph.c b/devel/mprof/files/patch-mpgraph.c
index 771c3a1c9df5..1eb95634f85c 100644
--- a/devel/mprof/files/patch-mpgraph.c
+++ b/devel/mprof/files/patch-mpgraph.c
@@ -20,3 +20,35 @@
} *edge, edge_item;
edge
+--- mpgraph.c.orig Fri Apr 7 13:39:45 2006
++++ mpgraph.c Fri Apr 7 01:45:35 2006
+@@ -836,7 +836,15 @@
+ while (!mp_null(chain)) {
+ vertex v;
+ s = (mpsym) mp_car(chain);
+- v = make_vertex(fn_name(s), count, fn_lcount(s), fn_parents(s));
++ if ( s == NULL) {
++ chain = (mpcell) mp_cdr(chain);
++ continue;
++ }
++ if (fn_name(s))
++ v = make_vertex(fn_name(s), count, fn_lcount(s), fn_parents(s));
++ else
++ v = make_vertex("unknown", count, fn_lcount(s), fn_parents(s));
++
+ vpush(v, vset);
+ count += 1;
+ chain = (mpcell) mp_cdr(chain);
+@@ -864,7 +872,11 @@
+
+ parent_name = fn_name((mpsym) mp_car(parent));
+ parent_data = (mpdata) mp_cdr(parent);
+- vfrom = hlookup(parent_name);
++ if (parent_name == NULL) {
++ vfrom = hlookup("unknown");
++ } else {
++ vfrom = hlookup(parent_name);
++ }
+
+ if (vfrom == vto) {
+ vto->srefs += 1;
diff --git a/devel/mprof/files/patch-mprof.c b/devel/mprof/files/patch-mprof.c
new file mode 100644
index 000000000000..6bc512d5bd22
--- /dev/null
+++ b/devel/mprof/files/patch-mprof.c
@@ -0,0 +1,69 @@
+diff -u mprof.c.orig mprof.c
+--- mprof.c.orig Fri Apr 7 13:39:45 2006
++++ mprof.c Fri Apr 7 01:28:45 2006
+@@ -186,7 +186,7 @@
+ };
+
+
+-#define STHASH_SIZE 2047
++#define STHASH_SIZE (2<<20 -1)
+ struct sthash *sthmem[STHASH_SIZE];
+
+ #define STNIL NULL
+@@ -491,7 +491,7 @@
+ #define stab_name(x) (stab[(x)].name)
+ #define stab_addr(x) (stab[(x)].addr)
+
+-#define ST_SIZE 5000
++#define ST_SIZE 500000
+ #define ST_NOT_FOUND -1
+ typedef int stindex;
+
+@@ -899,7 +899,8 @@
+ if (*(colp+2) == '(') {
+ char *commap;
+ commap = index(symp, ',');
+- *commap = '0';
++ if (commap)
++ *commap = '0';
+ tnum = atoi((char *) index(symp, '(')+1);
+ } else {
+ tnum = atoi((char *) (colp+2));
+@@ -926,7 +927,8 @@
+ if (*(colp+2) == '(') {
+ char *commap;
+ commap = index(symp, ',');
+- *commap = '0';
++ if (commap)
++ *commap = '0';
+ tnum = atoi((char *) index(symp, '(')+1);
+ } else {
+ tnum = atoi((char *) colp+2);
+@@ -1275,9 +1277,15 @@
+ if (d5 != 0) {
+ fx = st_locate(d5);
+ fsym = pc_lookup(stab_addr(fx));
+- fn_name(fsym) = stab_name(fx);
+- lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].func = fn_name(fsym);
+- lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].offset = d5 - stab_addr(fx);
++ if (stab_name(fx) == NULL) {
++ fn_name(fsym) = "";
++ lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].func = "";
++ lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].offset = 0;
++ } else {
++ fn_name(fsym) = stab_name(fx);
++ lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].func = fn_name(fsym);
++ lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].offset = d5 - stab_addr(fx);
++ }
+ } else {
+ lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].func = "";
+ lte->path[SHORT_CALLSTACK_SIZE - (i + 1)].offset = 0;
+@@ -1403,6 +1411,8 @@
+ fprintf(outfile, "...");
+ }
+ for (j = 0; j < SHORT_CALLSTACK_SIZE; j++) {
++ if (lte.path[j].func == NULL)
++ lte.path[j].func = "";
+ if (strcmp(lte.path[j].func, "") != 0) {
+ if (leak_level == LEAK_SHOW) {
+ fprintf(outfile, "> %s ", lte.path[j].func);