splitted the suppression files so that default.supp can be created by picking
from the library specific supp files.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@45 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/ChangeLog b/ChangeLog
index 0dc4706..e690235 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2002-04-04  Frédéric Gobry  <frederic.gobry@smartdata.ch>
+
+	* configure.in, glibc-*.supp, xfree-*.supp: now, configure
+	creates a default.supp by picking from the different specific
+	suppression files.
 
 2002-03-29  Julian Seward  <sewardj@localhost.localdomain>
 
diff --git a/Makefile.am b/Makefile.am
index 95255d7..4f0034a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/addrcheck/Makefile.am b/addrcheck/Makefile.am
index 95255d7..4f0034a 100644
--- a/addrcheck/Makefile.am
+++ b/addrcheck/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/cachegrind/Makefile.am b/cachegrind/Makefile.am
index 95255d7..4f0034a 100644
--- a/cachegrind/Makefile.am
+++ b/cachegrind/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/configure.in b/configure.in
index 9a5f77e..d3b223c 100644
--- a/configure.in
+++ b/configure.in
@@ -20,9 +20,17 @@
 
 AS="${CC}"
 AC_SUBST(AS)
+
 ASFLAGS=""
 AC_SUBST(ASFLAGS)
 
+
+# This variable will collect the individual suppression files
+# depending on the results of autoconf
+
+DEFAULT_SUPP=""
+
+
 # We don't want gcc 2.7
 AC_MSG_CHECKING([for a supported version of gcc])
 
@@ -101,13 +109,11 @@
      2.4.*) 
 	    AC_MSG_RESULT([2.4 family (${kernel})])
 	    AC_DEFINE(KERNEL_2_4)
-	    DEFAULT_SUPP="linux24.supp"
 	    ;;
 
      2.2.*) 
 	    AC_MSG_RESULT([2.2 family (${kernel})])
 	    AC_DEFINE(KERNEL_2_2)
-	    DEFAULT_SUPP="linux22.supp"
 	    ;;
 
      *) 
@@ -148,11 +154,13 @@
      2.1)
 	AC_MSG_RESULT(2.1 family)
 	AC_DEFINE(GLIBC_2_1)
+	DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.1.supp"
 	;;
 
      2.2)
 	AC_MSG_RESULT(2.2 family)
 	AC_DEFINE(GLIBC_2_2)
+	DEFAULT_SUPP="${DEFAULT_SUPP} glibc-2.2.supp"
 	;;
 
      *)
@@ -204,11 +212,13 @@
 	*version=4*) 
 	   AC_MSG_RESULT([XFree 4.x family])
 	   AC_DEFINE(XFREE_4)
+	   DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
 	   ;;
 
 	*version=3*) 
 	   AC_MSG_RESULT([XFree 3.x family])
 	   AC_DEFINE(XFREE_3)
+	   DEFAULT_SUPP="${DEFAULT_SUPP} xfree-4.supp"
 	   ;;
 
 	*) AC_MSG_RESULT([unknown XFree86 server (${xfree})])
@@ -244,3 +254,22 @@
    docs/Makefile 
    tests/Makefile 
    demangle/Makefile)
+
+cat<<EOF
+
+Using the following suppressions by default: 
+
+      ${DEFAULT_SUPP}
+EOF
+
+cat<<EOF > default.supp
+# This is a generated file, composed of the following suppression rules:
+#
+#      ${DEFAULT_SUPP}
+#
+
+EOF
+
+for file in ${DEFAULT_SUPP} ; do
+    cat ${srcdir}/$file >> default.supp
+done
diff --git a/corecheck/Makefile.am b/corecheck/Makefile.am
index 95255d7..4f0034a 100644
--- a/corecheck/Makefile.am
+++ b/corecheck/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am
index 95255d7..4f0034a 100644
--- a/coregrind/Makefile.am
+++ b/coregrind/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/glibc-2.1.supp b/glibc-2.1.supp
new file mode 100644
index 0000000..bc8638a
--- /dev/null
+++ b/glibc-2.1.supp
@@ -0,0 +1,148 @@
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default for glibc 2.1.3
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     kind: one of Param Value1 Value2 Value4 Value8
+#                   Free Addr1 Addr2 Addr4 Addr8
+#                   Cond (previously known as Value0)
+#     (if Param: name of system call param, if Free: name of free-ing fn)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+
+##----------------------------------------------------------------------##
+
+{
+   socketcall.connect(serv_addr)/__libc_connect/*(Param)
+   Param
+   socketcall.connect(serv_addr)
+   fun:__libc_connect
+   fun:*
+}
+
+{
+   strrchr/_dl_map_object_from_fd/_dl_map_object(Addr4)
+   Addr4
+   fun:strrchr
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   strrchr/_dl_map_object_from_fd/_dl_map_object(Value1)
+   Value1
+   fun:strrchr
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   llseek(result)/__libc_lseek64/_IO_file_seek(Param)
+   Param
+   llseek(result)
+   fun:__libc_lseek64
+   fun:_IO_file_seek
+}
+
+{
+   __rawmemchr/_nl_*/*locale(Addr4)
+   Addr4
+   fun:__rawmemchr
+   fun:_nl_*
+   fun:*locale
+}
+
+# new ones for RH62 ls -l 
+{
+   __strchrnul/__nss_database_lookup(Cond)
+   Cond
+   fun:__strchrnul
+   fun:__nss_database_lookup
+}
+{
+   __strchrnul/__gethostbyname_r(Cond)
+   Cond
+   fun:__strchrnul
+   fun:__gethostbyname_r
+}
+
+{
+   strrchr/_dl_map*/_dl_map*(Cond)
+   Cond
+   fun:strrchr
+   fun:_dl_map*
+   fun:_dl_map*
+}
+
+{
+   strchr/dl_open_worker/_dl_catch_error(Cond)
+   Cond
+   fun:strchr
+   fun:dl_open_worker
+   fun:_dl_catch_error
+}
+
+{
+   __rawmemchr/???/__getgrgid_r(Cond)
+   Cond
+   fun:__rawmemchr
+   fun:*
+   fun:__getgrgid_r
+}
+
+{
+   __rawmemchr/_nl_*/*locale*(Cond)
+   Cond
+   fun:__rawmemchr
+   fun:_nl_*
+   fun:*locale*
+}
+
+{
+   _dl_relocate_object/dl_open_worker(Value0)
+   Cond
+   fun:_dl_relocate_object
+   fun:dl_open_worker
+}
+
+##----------------------------------------------------------------------##
+## from a Debian machine running kernel 2.2.19 I believe
+## I guess most of these are the same as above really, but
+## Debian stripped their libc-2.1.3
+
+{
+   libc-2.1.3.so/libc-2.1.3.so/libc-2.1.3.so(Cond)
+   Cond
+   obj:*libc-2.1.3.so
+   obj:*libc-2.1.3.so
+   obj:*libc-2.1.3.so
+}
+
+{
+   strchr/libc-2.1.3.so(Cond)
+   Cond
+   fun:*strchr*
+   obj:*libc-2.1.3.so
+}
+
+{
+   libc-2.1.3.so/libXt.so(Cond)
+   Cond
+   obj:*libc-2.1.3.so
+   obj:*libXt.so*
+}
+
+{
+   socketcall.connect(serv_addr)/__libc_connect/*(Param)
+   Param
+   socketcall.connect(serv_addr)
+   obj:*libc-2.1.3.so
+   obj:*libX11.so*
+}
+
+##----------------------------------------------------------------------##
diff --git a/glibc-2.2.supp b/glibc-2.2.supp
new file mode 100644
index 0000000..a4195ee
--- /dev/null
+++ b/glibc-2.2.supp
@@ -0,0 +1,237 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc 2.2.4
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     kind: one of Param Value1 Value2 Value4 Value8
+#                   Free Addr1 Addr2 Addr4 Addr8
+#                   Cond (previously known as Value0)
+#     (if Param: name of system call param, if Free: name of free-ing fn)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+
+
+# even more glibc suppressions ?
+{
+   libc-2.2.4.so/libc-2.2.4.so/libc-2.2.4.so(Cond)
+   Cond
+   obj:*libc-2.2.4.so
+   obj:*libc-2.2.4.so
+   obj:*libc-2.2.4.so
+}
+{
+   libc-2.2.4.so/libc-2.2.4.so/libc-2.2.4.so(Value4)
+   Value4
+   obj:*libc-2.2.4.so
+   obj:*libc-2.2.4.so
+   obj:*libc-2.2.4.so
+}
+
+##### glibc 2.2.5 stuff perhaps?
+##### suppressions for coolo
+{
+   strchr/dl_open_worker(Cond)
+   Cond
+   fun:strchr
+   fun:dl_open_worker
+}
+{ 
+   __rawmemchr/internal_getgrgid_r(Cond)
+   Cond 
+   fun:__rawmemchr
+   fun:internal_getgrgid_r
+} 
+{ 
+   _IO_vfprintf/__strnlen(Cond)
+   Cond 
+   fun:__strnlen
+   fun:_IO_vfprintf
+} 
+{ 
+   __strchrnul/gethostbyname*(Cond)
+   Cond 
+   fun:__strchrnul
+   fun:gethostbyname*
+} 
+
+
+##----
+{
+   strlen/*dl_map_object*(Cond)
+   Cond
+   fun:strlen
+   fun:*dl_map_object*
+}
+
+{
+   strlen/*dl_open_worker*(Cond)
+   Cond
+   fun:strlen
+   fun:*dl_open_worker*
+}
+
+{
+   *rawmemchr*/*nss*(Cond)
+   Cond
+   fun:*rawmemchr*
+   fun:*nss*
+}
+
+{
+   *strchrnul*/*nss*(Cond)
+   Cond
+   fun:*strchrnul*
+   fun:*nss*
+}
+
+# gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-98)
+# on Red Hat 7.2 (x86) miscompiles __mpn_construct_double in
+# __mpn_construct_double (../sysdeps/ieee754/dbl-64/mpn2dbl.c:45)
+# (glibc-2.2.4) to read and write below %esp.  Hence the following
+# two:
+{
+   __mpn_construct_double/*(Addr4)
+   Addr4
+   fun:__mpn_construct_double
+   fun:*
+}
+{
+   __mpn_construct_double/*(Addr8)
+   Addr8
+   fun:__mpn_construct_double
+   fun:*
+}
+
+# More of the same (gcc bug, I'm pretty sure)
+{
+   __fabs/*(Addr4)
+   Addr4
+   fun:__fabs
+   fun:*
+}
+{
+   __fabs/*(Addr8)
+   Addr8
+   fun:__fabs
+   fun:*
+}
+
+
+# Not sure what this is about ... but anyway
+{
+   pthread_sighandler/*(Addr4)
+   Addr4
+   fun:pthread_sighandler
+   fun:*
+}
+
+
+# More glibc stuff, AFAICS
+
+{
+   __strnlen/__argz_stringify/_nl_make_l10nflist(Cond)
+   Cond
+   fun:__strnlen
+   fun:__argz_stringify
+   fun:_nl_make_l10nflist
+}
+
+#--------------
+{
+   _dl_relocate_object/dl_open_worker/_dl_catch_error(Cond)
+   Cond
+   fun:_dl_relocate_object
+   fun:dl_open_worker
+   fun:_dl_catch_error
+}
+{
+   _dl_relocate_object/libc-2.2.4.so/_dl_catch_error(Cond)
+   Cond
+   fun:_dl_relocate_object
+   obj:*libc-2.2.4.so
+   fun:_dl_catch_error
+}
+
+{
+   strrchr/_dl_map_object_from_fd/_dl_map_object(Cond)
+   Cond
+   fun:strrchr
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+#-------------------
+{
+   socketcall.connect(serv_addr)/__libc_connect/*
+   Param
+   socketcall.connect(serv_addr)
+   fun:__libc_connect
+   fun:*
+}
+{
+   socketcall.connect(serv_addr)/libc-2.2.4.so/libc-2.2.4.so
+   Param
+   socketcall.connect(serv_addr)
+   obj:*libc-2.2.4.so
+   obj:*libc-2.2.4.so
+}
+
+#----------------------
+{
+   write(buf)/__libc_write/libX11.so.6.2/libX11.so.6.2(Param)
+   Param
+   write(buf)
+   fun:__libc_write
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+}
+{
+   write(buf)/libc-2.2.4.so/libX11.so.6.2/libX11.so.6.2(Param)
+   Param
+   write(buf)
+   obj:*libc-2.2.4.so
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+}
+
+#{
+#   llseek(result)/__libc_lseek64/_IO_file_seek(Param)
+#   Param
+#   llseek(result)
+#   fun:__libc_lseek64
+#   fun:_IO_file_seek
+#}
+
+{
+   writev(vector[...])/__writev/libX11.so.6.2/libX11.so.6.2
+   Param
+   writev(vector[...])
+   fun:__writev
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+}
+
+#----------------
+{
+   __rawmemchr/libXt.so.6.0/libXt.so.6.0
+   Cond
+   fun:__rawmemchr
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+{
+   libc-2.2.4.so/libXt.so.6.0/libXt.so.6.0
+   Cond
+   obj:*libc-2.2.4.so
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+##----------------------------------------------------------------------##
+
diff --git a/helgrind/Makefile.am b/helgrind/Makefile.am
index 95255d7..4f0034a 100644
--- a/helgrind/Makefile.am
+++ b/helgrind/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/lackey/Makefile.am b/lackey/Makefile.am
index 95255d7..4f0034a 100644
--- a/lackey/Makefile.am
+++ b/lackey/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/memcheck/Makefile.am b/memcheck/Makefile.am
index 95255d7..4f0034a 100644
--- a/memcheck/Makefile.am
+++ b/memcheck/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/none/Makefile.am b/none/Makefile.am
index 95255d7..4f0034a 100644
--- a/none/Makefile.am
+++ b/none/Makefile.am
@@ -8,7 +8,13 @@
 
 bin_SCRIPTS = valgrind
 
-val_DATA = linux22.supp linux24.supp
+SUPP_FILES = glibc-2.1.supp glibc-2.2.supp xfree-3.supp xfree-4.supp
+
+val_DATA = $(SUPP_FILES) default.supp
+
+BUILT_SOURCES = default.supp
+
+default.supp: $(SUPP_FILES)
 
 bzdist: dist
 	gunzip -c $(PACKAGE)-$(VERSION).tar.gz | bzip2 > $(PACKAGE)-$(VERSION).tar.bz2
@@ -64,9 +70,6 @@
         vg_unsafe.h
 
 
-install-data-hook:
-	cd ${valdir} && rm -f default.supp && $(LN_S) $(DEFAULT_SUPP) default.supp
-
 vg_memory.o: vg_memory.c
 	$(COMPILE) -O2 @PREFERRED_STACK_BOUNDARY@ -c $<
 
diff --git a/xfree-3.supp b/xfree-3.supp
new file mode 100644
index 0000000..ab1efae
--- /dev/null
+++ b/xfree-3.supp
@@ -0,0 +1,146 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with XFree86 3.3.6)
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     kind: one of Param Value1 Value2 Value4 Value8
+#                   Free Addr1 Addr2 Addr4 Addr8
+#                   Cond (previously known as Value0)
+#     (if Param: name of system call param, if Free: name of free-ing fn)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+
+##----------------------------------------------------------------------##
+
+{
+   X11-Cond-0
+   Cond
+   obj:*libXt.so.6.0
+   obj:*libXt.so.6.0
+   obj:*libXt.so.6.0
+}
+{
+   X11-Cond-1
+   Cond
+   fun:__rawmemchr
+   obj:*libXt.so.6.0
+   obj:*libXt.so.6.0
+}
+
+
+# Suppressions for XFree86-3.3.X
+
+{
+   X11-Addr4-1
+   Addr4
+   obj:/usr/X11R6/lib/libX11.so.6.1
+   obj:/usr/X11R6/lib/libX11.so.6.1
+   obj:/usr/X11R6/lib/libX11.so.6.1
+}
+
+{
+   X11-Addr4-2
+   Addr4
+   obj:/usr/X11R6/lib/libX11.so.6.1
+   obj:/usr/X11R6/lib/libX11.so.6.1
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-3
+   Addr4
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-4
+   Addr4
+   obj:/usr/X11R6/lib/libX11.so.6.1
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-5
+   Addr4
+   fun:__rawmemchr
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-6
+   Addr4
+   obj:/usr/X11R6/lib/libXmu.so.6.0
+   obj:/usr/X11R6/lib/libXmu.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-7
+   Addr4
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXawXpm_posing_as_Xaw.so.6.1
+}
+
+{
+   X11-Param-1
+   Param
+   write(buf)
+   fun:__libc_write
+   obj:/usr/X11R6/lib/libX11.so.6.1
+   obj:/usr/X11R6/lib/libX11.so.6.1
+}
+
+{
+   X11-Addr4-8
+   Addr4
+   obj:/usr/X11R6/lib/libX11.so.6.1
+   obj:/usr/X11R6/lib/libXpm.so.4.11
+   obj:/usr/X11R6/lib/libXpm.so.4.11
+}
+
+{
+   X11-Addr4-8
+   Addr4
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXawXpm_posing_as_Xaw.so.6.1
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-9
+   Addr4
+   obj:/usr/X11R6/lib/libXaw.so.6.1
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-10
+   Addr4
+   obj:/usr/X11R6/lib/libXaw.so.6.1
+   obj:/usr/X11R6/lib/libXaw.so.6.1
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-11
+   Addr4
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXaw.so.6.1
+}
+
+
+
+##----------------------------------------------------------------------##
diff --git a/xfree-4.supp b/xfree-4.supp
new file mode 100644
index 0000000..b7321f3
--- /dev/null
+++ b/xfree-4.supp
@@ -0,0 +1,78 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with XFree86 4.1.0)
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     kind: one of Param Value1 Value2 Value4 Value8
+#                   Free Addr1 Addr2 Addr4 Addr8
+#                   Cond (previously known as Value0)
+#     (if Param: name of system call param, if Free: name of free-ing fn)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+
+
+{
+   libX11.so.6.2/libX11.so.6.2/libX11.so.6.2(Cond)
+   Cond
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+}
+
+{
+   libXt.so.6.2/libXt.so.6.2/libXt.so.6.2(Cond)
+   Cond
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+
+{
+   libXaw.so.7.0/libXaw.so.7.0/libXaw.so.7.0(Cond)
+   Cond
+   obj:/usr/X11R6/lib/libXaw.so.7.0
+   obj:/usr/X11R6/lib/libXaw.so.7.0
+   obj:/usr/X11R6/lib/libXaw.so.7.0
+}
+
+{
+   libXmu.so.6.2/libXmu.so.6.2/libXmu.so.6.2(Cond)
+   Cond
+   obj:/usr/X11R6/lib/libXmu.so.6.2
+   obj:/usr/X11R6/lib/libXmu.so.6.2
+   obj:/usr/X11R6/lib/libXmu.so.6.2
+}
+
+{
+   libXt.so.6.0/libXt.so.6.0/libXaw.so.7.0(Cond)
+   Cond
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXaw.so.7.0
+}
+
+{
+   libXaw.so.7.0/libXaw.so.7.0/libXt.so.6.0(Value4)
+   Value4
+   obj:/usr/X11R6/lib/libXaw.so.7.0
+   obj:/usr/X11R6/lib/libXaw.so.7.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0(Cond)
+   Cond
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libXaw.so.7.0
+}
+
+##----------------------------------------------------------------------##
+