summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devel/electric-fence/DESCR7
-rw-r--r--devel/electric-fence/Makefile32
-rw-r--r--devel/electric-fence/PLIST3
-rw-r--r--devel/electric-fence/distinfo8
-rw-r--r--devel/electric-fence/patches/patch-aa85
-rw-r--r--devel/electric-fence/patches/patch-ab28
-rw-r--r--devel/electric-fence/patches/patch-ac13
7 files changed, 176 insertions, 0 deletions
diff --git a/devel/electric-fence/DESCR b/devel/electric-fence/DESCR
new file mode 100644
index 00000000000..dccc91bf84b
--- /dev/null
+++ b/devel/electric-fence/DESCR
@@ -0,0 +1,7 @@
+Electric Fence is a different kind of malloc() debugger. It uses the virtual
+memory hardware of your system to detect when software overruns the boundaries
+of a malloc() buffer. It will also detect any accesses of memory that has
+been released by free(). Because it uses the VM hardware for detection,
+Electric Fence stops your program on the first instruction that causes
+a bounds violation. It's then trivial to use a debugger to display the
+offending statement.
diff --git a/devel/electric-fence/Makefile b/devel/electric-fence/Makefile
new file mode 100644
index 00000000000..f157f942900
--- /dev/null
+++ b/devel/electric-fence/Makefile
@@ -0,0 +1,32 @@
+# $NetBSD: Makefile,v 1.1.1.1 2010/02/14 00:06:16 reed Exp $
+
+DISTNAME= electric-fence_2.1.13-0.1
+PKGNAME= electric-fence-2.1.13.0.1
+CATEGORIES= devel
+MASTER_SITES= http://perens.com/works/software/ElectricFence/
+
+MAINTAINER= pkgsrc-users@NetBSD.org
+HOMEPAGE= http://www.perens.com/FreeSoftware/
+COMMENT= Different kind of malloc() debugger
+
+PREV_PKGPATH= devel/electricfence
+SUPERSEDES= ElectricFence<=2.1.13.0.1
+
+PKG_DESTDIR_SUPPORT= user-destdir
+USE_LIBTOOL= yes
+WRKSRC= ${WRKDIR}/${DISTNAME:C/-0.1//1:C/_/-/1}
+
+MAKE_FLAGS= INSTALL_MAN=${INSTALL_MAN:Q}
+PTHREAD_AUTO_VARS= yes
+AUTO_MKDIRS= yes
+
+.include "../../mk/bsd.prefs.mk"
+
+.if ${MACHINE_ARCH} == "mipsel" || ${OPSYS} == "DragonFly"
+CFLAGS+= -g -DPAGE_PROTECTION_VIOLATED_SIGNAL=SIGBUS
+.else
+CFLAGS+= -g
+.endif
+
+.include "../../mk/pthread.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/devel/electric-fence/PLIST b/devel/electric-fence/PLIST
new file mode 100644
index 00000000000..1ef091964c5
--- /dev/null
+++ b/devel/electric-fence/PLIST
@@ -0,0 +1,3 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2010/02/14 00:06:16 reed Exp $
+lib/libefence.la
+man/man3/libefence.3
diff --git a/devel/electric-fence/distinfo b/devel/electric-fence/distinfo
new file mode 100644
index 00000000000..ea952a1a9fe
--- /dev/null
+++ b/devel/electric-fence/distinfo
@@ -0,0 +1,8 @@
+$NetBSD: distinfo,v 1.1.1.1 2010/02/14 00:06:16 reed Exp $
+
+SHA1 (electric-fence_2.1.13-0.1.tar.gz) = e6765bcb1543272040b806eea706fc7ae9b60524
+RMD160 (electric-fence_2.1.13-0.1.tar.gz) = 75e41de7bef263007f24a1053528959f9f7fe1fa
+Size (electric-fence_2.1.13-0.1.tar.gz) = 29991 bytes
+SHA1 (patch-aa) = 9b2f1720a92c805d8d4b36631317493124c2f2d7
+SHA1 (patch-ab) = 64c503ce8d2ea9b55432d59a187e644af38e257b
+SHA1 (patch-ac) = 4c56eeea0b8e53cdf260b61aa8fdef16f601b186
diff --git a/devel/electric-fence/patches/patch-aa b/devel/electric-fence/patches/patch-aa
new file mode 100644
index 00000000000..33a397d66be
--- /dev/null
+++ b/devel/electric-fence/patches/patch-aa
@@ -0,0 +1,85 @@
+$NetBSD: patch-aa,v 1.1.1.1 2010/02/14 00:06:16 reed Exp $
+
+--- Makefile.orig 2002-02-19 23:51:44.000000000 +0200
++++ Makefile
+@@ -1,12 +1,14 @@
+-ASFLAGS= -mips2
+-CC= cc
+-AR= ar
+-INSTALL= install
+-MV= mv
+-CHMOD= chmod
+-CFLAGS= -g
+-LIB_INSTALL_DIR= /usr/lib
+-MAN_INSTALL_DIR= /usr/man/man3
++#ASFLAGS= -mips2
++#CC= cc
++#AR= ar
++#INSTALL= install
++#MV= mv
++#CHMOD= chmod
++#CFLAGS= -g
++LIB_INSTALL_DIR= ${PREFIX}/lib
++MAN_INSTALL_DIR= ${PREFIX}/${PKGMANDIR}/man3
++SO_VER= 0:0
++LIBTOOL= libtool
+
+ PACKAGE_SOURCE= README libefence.3 Makefile efence.h \
+ efence.c page.c print.c eftest.c tstheap.c CHANGES COPYING
+@@ -26,9 +28,9 @@ PACKAGE_SOURCE= README libefence.3 Makef
+ # as well if using Sun's compiler, -static if using GCC.
+ # CFLAGS= -g -Bstatic -DPAGE_PROTECTION_VIOLATED_SIGNAL=SIGBUS
+
+-OBJECTS= efence.o page.o print.o
++OBJECTS= efence.lo page.lo print.lo
+
+-all: libefence.a tstheap eftest
++all: libefence.la tstheap eftest
+ @ echo
+ @ echo "Testing Electric Fence."
+ @ echo "After the last test, it should print that the test has PASSED."
+@@ -38,11 +40,9 @@ all: libefence.a tstheap eftest
+ @ echo "Electric Fence confidence test PASSED."
+ @ echo
+
+-install: libefence.a libefence.3
+- $(MV) libefence.a $(LIB_INSTALL_DIR)
+- $(CHMOD) 644 $(LIB_INSTALL_DIR)/libefence.a
+- $(INSTALL) libefence.3 $(MAN_INSTALL_DIR)/libefence.3
+- $(CHMOD) 644 $(MAN_INSTALL_DIR)/libefence.3
++install: libefence.la libefence.3
++ $(LIBTOOL) --mode=install $(INSTALL) -c libefence.la $(DESTDIR)${LIB_INSTALL_DIR}
++ $(INSTALL_MAN) libefence.3 ${DESTDIR}$(MAN_INSTALL_DIR)/libefence.3
+
+ clean:
+ - rm -f $(OBJECTS) tstheap.o eftest.o tstheap eftest libefence.a \
+@@ -57,16 +57,22 @@ ElectricFence.shar: $(PACKAGE_SOURCE)
+
+ shar: ElectricFence.shar
+
+-libefence.a: $(OBJECTS)
+- - rm -f libefence.a
+- $(AR) crv libefence.a $(OBJECTS)
++libefence.la: $(OBJECTS)
++ $(LIBTOOL) --tag=CC --mode=link ${CC} -o libefence.la \
++ ${OBJECTS} ${LDFLAGS} ${LIBS} \
++ -rpath ${LIB_INSTALL_DIR} -version-info ${SO_VER}
+
+-tstheap: libefence.a tstheap.o
++tstheap: libefence.la tstheap.o
+ - rm -f tstheap
+- $(CC) $(CFLAGS) tstheap.o libefence.a -o tstheap -lpthread
++ $(CC) $(CFLAGS) tstheap.o .libs/libefence.a -o tstheap -lpthread
+
+-eftest: libefence.a eftest.o
++eftest: libefence.la eftest.o
+ - rm -f eftest
+- $(CC) $(CFLAGS) eftest.o libefence.a -o eftest -lpthread
++ $(CC) $(CFLAGS) eftest.o .libs/libefence.a -o eftest -lpthread
+
+ $(OBJECTS) tstheap.o eftest.o: efence.h
++
++.SUFFIXES: .lo
++.c.lo:
++ $(LIBTOOL) --tag=CC --mode=compile $(CC) -o ${.TARGET} \
++ -c ${CPPFLAGS} ${CFLAGS} ${.IMPSRC}
diff --git a/devel/electric-fence/patches/patch-ab b/devel/electric-fence/patches/patch-ab
new file mode 100644
index 00000000000..5c9cfc36eed
--- /dev/null
+++ b/devel/electric-fence/patches/patch-ab
@@ -0,0 +1,28 @@
+$NetBSD: patch-ab,v 1.1.1.1 2010/02/14 00:06:16 reed Exp $
+
+--- page.c.orig 2001-04-11 17:44:04.000000000 +0300
++++ page.c
+@@ -29,7 +29,7 @@
+
+ static caddr_t startAddr = (caddr_t) 0;
+
+-#if ( !defined(sgi) && !defined(_AIX) )
++#if ( !defined(sgi) && !defined(_AIX) && !(defined(BSD) && BSD >= 199306) && !defined(linux) && !defined(__INTERIX) )
+ extern int sys_nerr;
+ /*extern char * sys_errlist[];*/
+ #endif
+@@ -39,13 +39,8 @@ stringErrorReport(void)
+ {
+ #if ( defined(sgi) )
+ return strerror(oserror());
+-#elif ( defined(_AIX) )
+- return strerror(errno);
+ #else
+- if ( errno > 0 && errno < sys_nerr )
+- return sys_errlist[errno];
+- else
+- return "Unknown error.\n";
++ return strerror(errno);
+ #endif
+ }
+
diff --git a/devel/electric-fence/patches/patch-ac b/devel/electric-fence/patches/patch-ac
new file mode 100644
index 00000000000..ccd3df4eb21
--- /dev/null
+++ b/devel/electric-fence/patches/patch-ac
@@ -0,0 +1,13 @@
+$NetBSD: patch-ac,v 1.1.1.1 2010/02/14 00:06:16 reed Exp $
+
+--- tstheap.c.orig Fri Jan 20 05:54:32 1995
++++ tstheap.c
+@@ -47,7 +47,7 @@
+
+ for ( ; count < duration; count++ ) {
+ void * * element = &pool[(int)(drand48() * POOL_SIZE)];
+- size_t size = (size_t)(drand48() * (LARGEST_BUFFER + 1));
++ size_t size = (size_t)(lrand48() % (LARGEST_BUFFER + 1));
+
+ if ( *element ) {
+ free( *element );