diff --git a/.ElectricFence.metadata b/.ElectricFence.metadata new file mode 100644 index 0000000..53f9c01 --- /dev/null +++ b/.ElectricFence.metadata @@ -0,0 +1 @@ +95639fbad2fa985d54267c8b68680c562f8c306b SOURCES/ElectricFence-2.2.2.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa13c35 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/ElectricFence-2.2.2.tar.gz diff --git a/SOURCES/ElectricFence-2.0.5-longjmp.patch b/SOURCES/ElectricFence-2.0.5-longjmp.patch new file mode 100644 index 0000000..3df3073 --- /dev/null +++ b/SOURCES/ElectricFence-2.0.5-longjmp.patch @@ -0,0 +1,27 @@ +--- ElectricFence-2.0.5/eftest.c.ewt Tue Jun 2 09:25:10 1998 ++++ ElectricFence-2.0.5/eftest.c Tue Jun 2 09:24:58 1998 +@@ -24,7 +24,7 @@ + extern int EF_PROTECT_BELOW; + extern int EF_ALIGNMENT; + +-static jmp_buf env; ++static sigjmp_buf env; + + /* + * There is still too little standardization of the arguments and return +@@ -40,13 +40,13 @@ + ) + { + signal(PAGE_PROTECTION_VIOLATED_SIGNAL, SIG_DFL); +- longjmp(env, 1); ++ siglongjmp(env, 1); + } + + static int + gotSegmentationFault(int (*test)(void)) + { +- if ( setjmp(env) == 0 ) { ++ if ( sigsetjmp(env, 1) == 0 ) { + int status; + + signal(PAGE_PROTECTION_VIOLATED_SIGNAL diff --git a/SOURCES/ElectricFence-2.1-vaarg.patch b/SOURCES/ElectricFence-2.1-vaarg.patch new file mode 100644 index 0000000..295f56d --- /dev/null +++ b/SOURCES/ElectricFence-2.1-vaarg.patch @@ -0,0 +1,11 @@ +--- ElectricFence-2.1/print.c.jj Thu Jan 19 23:54:26 1995 ++++ ElectricFence-2.1/print.c Tue May 16 07:43:45 2000 +@@ -99,7 +99,7 @@ vprint(const char * pattern, va_list arg + break; + case 'c': + { +- char c = va_arg(args, char); ++ char c = va_arg(args, int); + + (void) write(2, &c, 1); + } diff --git a/SOURCES/ElectricFence-2.2.2-banner.patch b/SOURCES/ElectricFence-2.2.2-banner.patch new file mode 100644 index 0000000..5a655f9 --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-banner.patch @@ -0,0 +1,43 @@ +diff -urp ElectricFence-2.2.2/efence.c ElectricFence-2.2.2-pm/efence.c +--- ElectricFence-2.2.2/efence.c 2007-03-28 20:16:43.000000000 +0200 ++++ ElectricFence-2.2.2-pm/efence.c 2007-03-28 20:16:01.000000000 +0200 +@@ -47,7 +47,7 @@ + #undef calloc + #endif + +-static const char version[] = "\n Electric Fence 2.2.0" ++static const char version[] = "\n Electric Fence 2.2.2" + " Copyright (C) 1987-1999 Bruce Perens \n"; + + /* +@@ -82,6 +82,13 @@ struct _Slot { + }; + typedef struct _Slot Slot; + ++ /* ++ * EF_DISABLE_BANNER is a global variable used to control whether ++ * Electric Fence prints its usual startup message. If the value is ++ * -1, it will be set from the environment default to 0 at run time. ++ */ ++int EF_DISABLE_BANNER = -1; ++ + /* + * EF_ALIGNMENT is a global variable used to control the default alignment + * of buffers returned by malloc(), calloc(), and realloc(). It is all-caps +@@ -280,7 +287,15 @@ initialize(void) + char * string; + Slot * slot; + +- EF_Print(version); ++ if ( EF_DISABLE_BANNER == -1 ) { ++ if ( (string = getenv("EF_DISABLE_BANNER")) != 0 ) ++ EF_DISABLE_BANNER = atoi(string); ++ else ++ EF_DISABLE_BANNER = 0; ++ } ++ ++ if ( EF_DISABLE_BANNER == 0 ) ++ EF_Print(version); + + #ifdef USE_SEMAPHORE + if (sem_init != NULL && !pthread_initialization && sem_init(&EF_sem, 0, 1) >= 0) { diff --git a/SOURCES/ElectricFence-2.2.2-builtins.patch b/SOURCES/ElectricFence-2.2.2-builtins.patch new file mode 100644 index 0000000..efac99a --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-builtins.patch @@ -0,0 +1,15 @@ +diff -up ElectricFence-2.2.2/Makefile\~ ElectricFence-2.2.2/Makefile +--- ElectricFence-2.2.2/Makefile~ 2010-09-10 13:24:35.000000000 +0200 ++++ ElectricFence-2.2.2/Makefile 2010-09-10 13:28:36.000000000 +0200 +@@ -16,6 +16,9 @@ PACKAGE_SOURCE= README efence.3 Makefile + + OBJECTS= efence.o page.o print.o + ++efence.o: override CFLAGS += -fno-builtin-malloc -fno-builtin-calloc \ ++ -fno-builtin-valloc -fno-builtin-realloc -fno-builtin-free ++ + all: libefence.a libefence.so.0.0 tstheap eftest + @ echo + @ echo "Testing Electric Fence." + +Diff finished. Fri Sep 10 13:28:42 2010 diff --git a/SOURCES/ElectricFence-2.2.2-ef.patch b/SOURCES/ElectricFence-2.2.2-ef.patch new file mode 100644 index 0000000..5617b40 --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-ef.patch @@ -0,0 +1,11 @@ +diff -urp ElectricFence-2.2.2/ef.sh ElectricFence-2.2.2-pm/ef.sh +--- ElectricFence-2.2.2/ef.sh 1999-04-12 01:59:22.000000000 +0200 ++++ ElectricFence-2.2.2-pm/ef.sh 2008-02-11 11:39:35.000000000 +0100 +@@ -16,5 +16,5 @@ fi + # Set the environment to load eletric fence. + (\ + export LD_PRELOAD=libefence.so.0.0;\ +-exec $*;\ ++exec "$@";\ + ) +Only in ElectricFence-2.2.2-pm/: ef.sh~ diff --git a/SOURCES/ElectricFence-2.2.2-madvise.patch b/SOURCES/ElectricFence-2.2.2-madvise.patch new file mode 100644 index 0000000..0296bbd --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-madvise.patch @@ -0,0 +1,54 @@ +--- ElectricFence-2.2.2/page.c.jj 1999-04-11 17:45:26.000000000 -0400 ++++ ElectricFence-2.2.2/page.c 2004-10-16 12:30:10.000000000 -0400 +@@ -160,8 +160,9 @@ Page_DenyAccess(void * address, size_t s + void + Page_Delete(void * address, size_t size) + { +- if ( munmap((caddr_t)address, size) < 0 ) +- Page_DenyAccess(address, size); ++ Page_DenyAccess(address, size); ++ /* Tell the kernel we will never need it again. */ ++ madvise(address, size, MADV_DONTNEED); + } + + #if defined(_SC_PAGESIZE) +--- ElectricFence-2.2.2/efence.c.jj 1999-04-12 21:00:49.000000000 -0400 ++++ ElectricFence-2.2.2/efence.c 2004-10-16 13:11:30.000000000 -0400 +@@ -626,10 +626,7 @@ memalign(size_t alignment, size_t userSi + address += internalSize - bytesPerPage; + + /* Set up the "dead" page. */ +- if ( EF_PROTECT_FREE ) +- Page_Delete(address, bytesPerPage); +- else +- Page_DenyAccess(address, bytesPerPage); ++ Page_Delete(address, bytesPerPage); + + /* Figure out what address to give the user. */ + address -= userSize; +@@ -643,11 +640,8 @@ memalign(size_t alignment, size_t userSi + address = (char *)fullSlot->internalAddress; + + /* Set up the "dead" page. */ +- if ( EF_PROTECT_FREE ) +- Page_Delete(address, bytesPerPage); +- else +- Page_DenyAccess(address, bytesPerPage); +- ++ Page_Delete(address, bytesPerPage); ++ + address += bytesPerPage; + + /* Set up the "live" page. */ +@@ -777,10 +771,7 @@ free(void * address) + * in the hope that the swap space attached to those pages will be + * released as well. + */ +- if ( EF_PROTECT_FREE ) +- Page_Delete(slot->internalAddress, slot->internalSize); +- else +- Page_DenyAccess(slot->internalAddress, slot->internalSize); ++ Page_Delete(slot->internalAddress, slot->internalSize); + + previousSlot = slotForInternalAddressPreviousTo(slot->internalAddress); + nextSlot = slotForInternalAddress( diff --git a/SOURCES/ElectricFence-2.2.2-malloc_usable_size.patch b/SOURCES/ElectricFence-2.2.2-malloc_usable_size.patch new file mode 100644 index 0000000..2bf8d80 --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-malloc_usable_size.patch @@ -0,0 +1,47 @@ +diff -up ElectricFence-2.2.2/efence.c\~ ElectricFence-2.2.2/efence.c +--- ElectricFence-2.2.2/efence.c~ 2012-03-12 22:48:22.634989256 +0100 ++++ ElectricFence-2.2.2/efence.c 2012-03-12 23:05:00.545522379 +0100 +@@ -865,6 +865,41 @@ free(void * address) + release(); + } + ++extern C_LINKAGE size_t ++malloc_usable_size(void * address) ++{ ++ Slot * slot; ++ ++ lock(); ++ ++ if ( !noAllocationListProtection ) ++ Page_AllowAccess(allocationList, allocationListSize); ++ ++ slot = slotForUserAddress(address); ++ ++ if ( !slot ) ++ EF_Abort("free(%a): address not from malloc().", address); ++ ++ if ( slot->mode != ALLOCATED ) { ++ if ( internalUse && slot->mode == INTERNAL_USE ) ++ /* Do nothing. */; ++ else { ++ EF_Abort( ++ "free(%a): malloc_usable_size on freed block." ++ ,address); ++ } ++ } ++ ++ size_t ret = slot->userSize; ++ ++ if ( !noAllocationListProtection ) ++ Page_DenyAccess(allocationList, allocationListSize); ++ ++ release(); ++ ++ return ret; ++} ++ + extern C_LINKAGE void * + realloc(void * oldBuffer, size_t newSize) + { + +Diff finished. Mon Mar 12 23:06:53 2012 diff --git a/SOURCES/ElectricFence-2.2.2-man-ef.patch b/SOURCES/ElectricFence-2.2.2-man-ef.patch new file mode 100644 index 0000000..6e6d88c --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-man-ef.patch @@ -0,0 +1,49 @@ +diff -up ./ef.1~ ./ef.1 +--- ./ef.1~ 2012-04-27 16:10:01.748386440 +0200 ++++ ./ef.1 2012-04-27 16:09:26.722375696 +0200 +@@ -0,0 +1,21 @@ ++.TH ef 1 ++.SH NAME ++ef \- Utility to run a program under the Electric Fence memory debugger ++ ++.SH SYNOPSIS ++\fBef\fR PROGRAM [ARGS...] ++ ++.SH DESCRIPTION ++The \fIef\fR command is used to launch another program under the ++Electric Fence memory debugger. It sets up appropriate environment ++variables and then launches the specified program with the specified ++arguments. See efence (3) manual page for more details about Electric ++Fence. ++ ++.SH SEE ALSO ++.BR efence (3) ++ ++.SH AUTHORS ++Electric Fence was written by Bruce Perens ++.br ++This manual page was written by Petr Machata +diff -up ElectricFence-2.2.2/Makefile\~ ElectricFence-2.2.2/Makefile +--- ElectricFence-2.2.2/Makefile~ 2012-04-27 16:11:00.715385720 +0200 ++++ ElectricFence-2.2.2/Makefile 2012-04-27 16:11:46.483384748 +0200 +@@ -5,7 +5,7 @@ LIBS= + prefix=/usr + BIN_INSTALL_DIR= $(prefix)/bin + LIB_INSTALL_DIR= $(prefix)/lib +-MAN_INSTALL_DIR= $(prefix)/man/man3 ++MAN_INSTALL_DIR= $(prefix)/man + + CC= cc + AR= ar +@@ -37,7 +37,8 @@ install: libefence.a efence.3 libefence. + ln -s libefence.so.0.0 $(LIB_INSTALL_DIR)/libefence.so.0 + - rm -f $(LIB_INSTALL_DIR)/libefence.so + ln -s libefence.so.0.0 $(LIB_INSTALL_DIR)/libefence.so +- $(INSTALL) -m 644 efence.3 $(MAN_INSTALL_DIR)/efence.3 ++ $(INSTALL) -m 644 efence.3 $(MAN_INSTALL_DIR)/man3/efence.3 ++ $(INSTALL) -m 644 ef.1 $(MAN_INSTALL_DIR)/man1/ef.1 + + clean: + - rm -f $(OBJECTS) tstheap.o eftest.o tstheap eftest \ + +Diff finished. Fri Apr 27 16:11:58 2012 diff --git a/SOURCES/ElectricFence-2.2.2-posix_memalign.patch b/SOURCES/ElectricFence-2.2.2-posix_memalign.patch new file mode 100644 index 0000000..94d7a65 --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-posix_memalign.patch @@ -0,0 +1,41 @@ +diff -up /home/petr/fedora/ElectricFence/devel/ElectricFence-2.2.2/efence.c\~ /home/petr/fedora/ElectricFence/devel/ElectricFence-2.2.2/efence.c +--- ElectricFence-2.2.2/efence.c~ 2010-01-11 20:58:43.000000000 +0100 ++++ ElectricFence-2.2.2/efence.c 2010-06-24 14:38:54.000000000 +0200 +@@ -38,6 +38,7 @@ + # include + # include + #endif ++#include + + #ifdef malloc + #undef malloc +@@ -703,6 +704,27 @@ memalign(size_t alignment, size_t userSi + return address; + } + ++extern C_LINKAGE int ++posix_memalign(void **memptr, size_t alignment, size_t userSize) ++{ ++ /* ++ * Per standard, posix_memalign returns EINVAL when alignment ++ * is not a power of two or power of sizeof(void*). efence ++ * doesn't check the value of alignment in memalign, but then ++ * again, memalign was never specified very well, and on some ++ * systems odd alignments could indeed have been allowed. ++ */ ++ if ((alignment & (alignment - 1)) ++ || alignment % sizeof (void *)) ++ return EINVAL; ++ ++ void *ptr = memalign (alignment, userSize); ++ if (ptr == NULL) ++ return ENOMEM; ++ *memptr = ptr; ++ return 0; ++} ++ + /* + * Find the slot structure for a user address. + */ + +Diff finished. Thu Jun 24 14:52:24 2010 diff --git a/SOURCES/ElectricFence-2.2.2-pthread.patch b/SOURCES/ElectricFence-2.2.2-pthread.patch new file mode 100644 index 0000000..d5590e5 --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-pthread.patch @@ -0,0 +1,70 @@ +--- ElectricFence-2.2.2/efence.c.jj 1999-04-12 21:00:49.000000000 -0400 ++++ ElectricFence-2.2.2/efence.c 2003-02-03 11:20:18.000000000 -0500 +@@ -174,6 +174,15 @@ static int internalUse = 0; + static int noAllocationListProtection = 0; + + #ifdef USE_SEMAPHORE ++ ++#include ++ ++#pragma weak sem_init ++#pragma weak sem_post ++#pragma weak sem_wait ++ ++static int pthread_initialization = 0; ++ + /* + * EF_sem is a semaphore used to allow one thread at a time into + * these routines. +@@ -274,7 +283,7 @@ initialize(void) + EF_Print(version); + + #ifdef USE_SEMAPHORE +- if (sem_init(&EF_sem, 0, 1) >= 0) { ++ if (sem_init != NULL && !pthread_initialization && sem_init(&EF_sem, 0, 1) >= 0) { + semEnabled = 1; + } + #endif +@@ -397,6 +406,21 @@ initialize(void) + release(); + } + ++#ifdef USE_SEMAPHORE ++void ++__libc_malloc_pthread_startup (bool first_time) ++{ ++ if (first_time) { ++ pthread_initialization = 1; ++ initialize (); ++ } else { ++ pthread_initialization = 0; ++ if (!semEnabled && sem_init != NULL && sem_init(&EF_sem, 0, 1) >= 0) ++ semEnabled = 1; ++ } ++} ++#endif ++ + /* + * allocateMoreSlots is called when there are only enough slot structures + * left to support the allocation of a single malloc buffer. +--- ElectricFence-2.2.2/Makefile.jj 1999-04-13 13:22:49.000000000 -0400 ++++ ElectricFence-2.2.2/Makefile 2003-02-03 11:27:06.000000000 -0500 +@@ -1,6 +1,6 @@ + PIC= -fPIC + CFLAGS= -g -DUSE_SEMAPHORE $(PIC) +-LIBS= -lpthread ++LIBS= + + prefix=/usr + BIN_INSTALL_DIR= $(prefix)/bin +@@ -54,8 +54,8 @@ libefence.a: $(OBJECTS) + $(AR) crv libefence.a $(OBJECTS) + + libefence.so.0.0: $(OBJECTS) +- gcc -g -shared -Wl,-soname,libefence.so.0 -o libefence.so.0.0 \ +- $(OBJECTS) -lpthread -lc ++ gcc -shared -Wl,-soname,libefence.so.0 -o libefence.so.0.0 \ ++ $(CFLAGS) $(OBJECTS) + + tstheap: libefence.a tstheap.o + - rm -f tstheap diff --git a/SOURCES/ElectricFence-2.2.2-sse.patch b/SOURCES/ElectricFence-2.2.2-sse.patch new file mode 100644 index 0000000..e5260eb --- /dev/null +++ b/SOURCES/ElectricFence-2.2.2-sse.patch @@ -0,0 +1,14 @@ +diff -up ElectricFence-2.2.2/efence.c\~ ElectricFence-2.2.2/efence.c +--- ElectricFence-2.2.2/efence.c~ 2010-09-10 13:37:58.000000000 +0200 ++++ ElectricFence-2.2.2/efence.c 2011-01-19 15:00:16.000000000 +0100 +@@ -327,7 +327,7 @@ initialize(void) + if ( (string = getenv("EF_ALIGNMENT")) != 0 ) + EF_ALIGNMENT = (size_t)atoi(string); + else +- EF_ALIGNMENT = sizeof(int); ++ EF_ALIGNMENT = 2 * sizeof (size_t); + } + + /* + +Diff finished. Wed Jan 19 15:00:26 2011 diff --git a/SOURCES/ElectricFence-mmap-size.patch b/SOURCES/ElectricFence-mmap-size.patch new file mode 100644 index 0000000..0e36f7f --- /dev/null +++ b/SOURCES/ElectricFence-mmap-size.patch @@ -0,0 +1,26 @@ +Size is, correctly, size_t and mmap, correctly, takes +size_t as the size argument; the cast to int flunks +64bit thinking. + + +diff -Naur ElectricFence-2.2.2/page.c ElectricFence-2.2.3/page.c +--- ElectricFence-2.2.2/page.c 2007-03-16 13:20:44.000000000 -0400 ++++ ElectricFence-2.2.3/page.c 2007-03-16 13:23:28.000000000 -0400 +@@ -70,7 +70,7 @@ + */ + allocation = (caddr_t) mmap( + startAddr +- ,(int)size ++ ,size + ,PROT_READ|PROT_WRITE + ,MAP_PRIVATE|MAP_ANONYMOUS + ,-1 +@@ -122,7 +122,7 @@ + */ + allocation = (caddr_t) mmap( + startAddr +- ,(int)size ++ ,size + ,PROT_READ|PROT_WRITE + ,MAP_PRIVATE + ,devZeroFd diff --git a/SPECS/ElectricFence.spec b/SPECS/ElectricFence.spec new file mode 100644 index 0000000..ad865cd --- /dev/null +++ b/SPECS/ElectricFence.spec @@ -0,0 +1,296 @@ +# Regarding the following rpmlint citation: +# +# library package calls exit() or _exit() [...] +# +# Electric fence is a debugger, not a library. The fact that it comes +# in the form factor of a library is just because that's how you +# override malloc-related calls from libc. Calling _exit is the +# ultimate outcome of detecting a class of memory errors (double free, +# free of wild pointer, etc.) Overflows (or underflows) are detected +# by the operating system and lead to process termination as well. +# +# devel-file-in-non-devel-package /usr/lib64/libefence.a +# +# Electric fence is itself a development package. + +Summary: A debugger which detects memory allocation violations +Name: ElectricFence +Version: 2.2.2 +Release: 39%{?dist} +License: GPLv2 +Group: Development/Tools +URL: http://perens.com/FreeSoftware/ElectricFence/ + +# ftp://ftp.perens.com/pub/ElectricFence/beta/ used to be here, but +# the site is inaccessible as of lately. I looked through the web but +# didn't find anything. Debian has a link to a site that hosts an +# obsolete version. I don't think there's any proper upstream for +# this. +Source: %{name}-%{version}.tar.gz +Patch1: ElectricFence-2.0.5-longjmp.patch +Patch2: ElectricFence-2.1-vaarg.patch +Patch3: ElectricFence-2.2.2-pthread.patch +Patch4: ElectricFence-2.2.2-madvise.patch +Patch5: ElectricFence-mmap-size.patch +Patch6: ElectricFence-2.2.2-banner.patch +Patch7: ElectricFence-2.2.2-ef.patch +Patch8: ElectricFence-2.2.2-builtins.patch +Patch9: ElectricFence-2.2.2-sse.patch +Patch10: ElectricFence-2.2.2-posix_memalign.patch +Patch11: ElectricFence-2.2.2-malloc_usable_size.patch +Patch12: ElectricFence-2.2.2-man-ef.patch +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +%description +ElectricFence is a utility for C programming and +debugging. ElectricFence uses the virtual memory hardware of your +system to detect when software overruns malloc() buffer boundaries, +and/or to detect any accesses of memory released by +free(). ElectricFence will then stop the program on the first +instruction that caused a bounds violation and you can use your +favorite debugger to display the offending statement. + +Install ElectricFence if you need a debugger to find malloc() +violations. + +%prep +%setup -q +%patch1 -p1 -b .longjmp +%patch2 -p1 -b .vaarg +%patch3 -p1 -b .pthread +%patch4 -p1 -b .madvise +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 + +%build +make CFLAGS='${RPM_OPT_FLAGS} -DUSE_SEMAPHORE -fpic' + +%install +rm -rf $RPM_BUILD_ROOT +mkdir -p %{buildroot}{%{_bindir},%{_libdir},%{_mandir}/man{1,3}} + +make BIN_INSTALL_DIR=%{buildroot}%{_bindir} \ + LIB_INSTALL_DIR=%{buildroot}%{_libdir} \ + MAN_INSTALL_DIR=%{buildroot}%{_mandir} \ + install + +echo ".so man3/efence.3" > %{buildroot}%{_mandir}/man3/libefence.3 + +%clean +rm -rf $RPM_BUILD_ROOT + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + + +%files +%defattr(-,root,root) +%doc README CHANGES COPYING +%{_bindir}/* +%{_libdir}/*.a +%{_libdir}/*.so* +%{_mandir}/*/* + +%changelog +* Fri Jan 24 2014 Daniel Mach - 2.2.2-39 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 2.2.2-38 +- Mass rebuild 2013-12-27 + +* Wed Feb 13 2013 Fedora Release Engineering - 2.2.2-37 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jul 18 2012 Fedora Release Engineering - 2.2.2-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Apr 27 2012 Petr Machata - 2.2.2-35 +- Add a man page for "ef" script +- Resolves: #225722 + +* Mon Mar 12 2012 Petr Machata - 2.2.2-34 +- Add a patch that implements malloc_usable_size +- Resolves: #772306 + +* Thu Jan 12 2012 Fedora Release Engineering - 2.2.2-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Mar 11 2011 Petr Machata - 2.2.2-32 +- Add a patch that implements posix_memalign +- Resolves: #684019 + +* Mon Feb 07 2011 Fedora Release Engineering - 2.2.2-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Jan 19 2011 Petr Machata - 2.2.2-30 +- Use the same formula as glibc uses to align memory +- Resolves: #662085 + +* Fri Sep 10 2010 Petr Machata - 2.2.2-29 +- Tell GCC not to recognize builtins when compiling efence.c. +- Resolves: #631316 +- Related: #632312 + +* Thu Sep 9 2010 Petr Machata - 2.2.2-28 +- GCC optimizes out write to internalUse in call from + allocateMoreSlots to malloc. Rename malloc to __efence__malloc to + pacify the trigger. Later sneak the malloc symbol in with an alias. +- Resolves: #631316 + +* Fri Jul 24 2009 Fedora Release Engineering - 2.2.2-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Feb 23 2009 Fedora Release Engineering - 2.2.2-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Mon Feb 11 2008 Petr Machata - 2.2.2-25 +- Fix ef.sh argument passing +- Resolves: #432286 + +* Thu Aug 16 2007 Petr Machata - 2.2.2-24 +- Fix licesing tag. + +* Wed Mar 28 2007 Petr Machata - 2.2.2-23 +- Detect for EF_DISABLE_BANNER env. var before printing out the + banner. (Patch adapted from Debian repositories.) +- Resolves: #233702 + +* Fri Mar 16 2007 Petr Machata - 2.2.2-22 +- Remove bad cast in ElectricFence mmap (George Beshers) +- Resolves: #232695 + +* Wed Feb 7 2007 Petr Machata - 2.2.2-21 +- Tidy up the specfile per rpmlint comments + +* Wed Jul 12 2006 Jesse Keating - 2.2.2-20.2.2 +- rebuild + +* Fri Feb 10 2006 Jesse Keating - 2.2.2-20.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 2.2.2-20.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Sat Mar 5 2005 Jakub Jelinek 2.2.2-20 +- rebuilt with GCC 4 + +* Sat Oct 16 2004 Jakub Jelinek 2.2.2-19 +- when EF_PROTECT_FREE=1, instead of munmaping mprotect PROT_NONE + and madvise MADV_DONTNEED (#107506) + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Mon Feb 3 2003 Jakub Jelinek +- never call semaphore routines in between + __libc_malloc_pthread_startup(true) and + __libc_malloc_pthread_startup(false) (#83111) +- only use semaphore locking if application or its dependencies + are linked against -lpthread, don't link libefence.so against + -lpthread +- run tests as part of the build process + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Tue Jan 7 2003 Jeff Johnson 2.2.2-13 +- don't include -debuginfo files in package. + +* Thu Dec 12 2002 Tim Powers 2.2.2-12 +- rebuild on all arches + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Thu May 23 2002 Tim Powers +- automated rebuild + +* Wed Jan 09 2002 Tim Powers +- automated rebuild + +* Sun Jun 24 2001 Elliot Lee +- Bump release + rebuild. + +* Thu Nov 16 2000 Tim Powers +- use -fPIC, not -fpic, also -DUSE_SEMAPHORE to make it thread safe, + as per bug #20935 + +* Tue Sep 19 2000 Bill Nottingham +- use -fpic + +* Fri Aug 18 2000 Tim Waugh +- fix efence.3/libefence.3 confusion (#16412). + +* Tue Aug 1 2000 Tim Powers +- added ldconfig stuff to ;post and postun +- added Requires /sbin/ldconfig +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Wed Jul 05 2000 Preston Brown +- back in main distro +- 2.2.2 version - claimed beta, but no releases in over a year. +- FHS macros + +* Fri May 26 2000 Tim Powers +- moved to Powertools +- fix map page location to be in /usr/share/man + +* Tue May 16 2000 Jakub Jelinek +- fix build on ia64 + +* Wed Feb 02 2000 Cristian Gafton +- fix description +- man pages are compressed + +* Tue Jan 4 2000 Jeff Johnson +- remove ExcludeArch: alpha (#6683). + +* Sat Apr 10 1999 Matt Wilson +- version 2.1 + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 13) + +* Wed Jan 06 1999 Cristian Gafton +- build for glibc 2.1 + +* Fri Aug 21 1998 Jeff Johnson +- create efence.3 (problem #830) + +* Tue Aug 4 1998 Jeff Johnson +- build root + +* Mon Jun 01 1998 Prospector System +- translations modified for de + +* Mon Jun 01 1998 Prospector System +- need to use sigsetjmp() and siglongjmp() for proper testing + +* Fri May 01 1998 Prospector System +- translations modified for de, fr, tr + +* Thu Apr 30 1998 Cristian Gafton +- use ExcludeArch instead of Exclude + +* Thu Jul 10 1997 Erik Troan +- built against glibc