Added svn files for auto update
authorSanjeev <as2902.b@samsung.com>
Wed, 17 Nov 2010 10:05:59 +0000 (19:05 +0900)
committerSanjeev <as2902.b@samsung.com>
Wed, 17 Nov 2010 10:05:59 +0000 (19:05 +0900)
58 files changed:
.svn/dir-prop-base [new file with mode: 0644]
.svn/entries [new file with mode: 0644]
.svn/prop-base/AUTHORS.svn-base [new file with mode: 0644]
.svn/prop-base/COPYING.svn-base [new file with mode: 0644]
.svn/prop-base/Makefile.all.am.svn-base [new file with mode: 0644]
.svn/prop-base/Makefile.am.svn-base [new file with mode: 0644]
.svn/prop-base/Makefile.tool.am.svn-base [new file with mode: 0644]
.svn/prop-base/NEWS.svn-base [new file with mode: 0644]
.svn/prop-base/README.svn-base [new file with mode: 0644]
.svn/prop-base/README_DEVELOPERS.svn-base [new file with mode: 0644]
.svn/prop-base/README_MISSING_SYSCALL_OR_IOCTL.svn-base [new file with mode: 0644]
.svn/prop-base/README_PACKAGERS.svn-base [new file with mode: 0644]
.svn/prop-base/autogen.sh.svn-base [new file with mode: 0644]
.svn/prop-base/configure.in.svn-base [new file with mode: 0644]
.svn/prop-base/glibc-2.2.supp.svn-base [new file with mode: 0644]
.svn/prop-base/glibc-2.3.supp.svn-base [new file with mode: 0644]
.svn/prop-base/glibc-2.X.supp.in.svn-base [new file with mode: 0644]
.svn/prop-base/valgrind.pc.in.svn-base [new file with mode: 0644]
.svn/prop-base/valgrind.spec.in.svn-base [new file with mode: 0644]
.svn/prop-base/vg-in-place.svn-base [new file with mode: 0644]
.svn/prop-base/xfree-3.supp.svn-base [new file with mode: 0644]
.svn/prop-base/xfree-4.supp.svn-base [new file with mode: 0644]
.svn/text-base/AUTHORS.svn-base [new file with mode: 0644]
.svn/text-base/COPYING.DOCS.svn-base [new file with mode: 0644]
.svn/text-base/COPYING.svn-base [new file with mode: 0644]
.svn/text-base/Makefile.all.am.svn-base [new file with mode: 0644]
.svn/text-base/Makefile.am.svn-base [new file with mode: 0644]
.svn/text-base/Makefile.tool-tests.am.svn-base [new file with mode: 0644]
.svn/text-base/Makefile.tool.am.svn-base [new file with mode: 0644]
.svn/text-base/Makefile.vex.am.svn-base [new file with mode: 0644]
.svn/text-base/NEWS.svn-base [new file with mode: 0644]
.svn/text-base/README.svn-base [new file with mode: 0644]
.svn/text-base/README_DEVELOPERS.svn-base [new file with mode: 0644]
.svn/text-base/README_MISSING_SYSCALL_OR_IOCTL.svn-base [new file with mode: 0644]
.svn/text-base/README_PACKAGERS.svn-base [new file with mode: 0644]
.svn/text-base/aix5libc.supp.svn-base [new file with mode: 0644]
.svn/text-base/autogen.sh.svn-base [new file with mode: 0644]
.svn/text-base/configure.in.svn-base [new file with mode: 0644]
.svn/text-base/darwin10-drd.supp.svn-base [new file with mode: 0644]
.svn/text-base/darwin10.supp.svn-base [new file with mode: 0644]
.svn/text-base/darwin9-drd.supp.svn-base [new file with mode: 0644]
.svn/text-base/darwin9.supp.svn-base [new file with mode: 0644]
.svn/text-base/exp-ptrcheck.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.2-LinuxThreads-helgrind.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.2.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.3.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.34567-NPTL-helgrind.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.4.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.5.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.6.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.7.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.X-drd.supp.svn-base [new file with mode: 0644]
.svn/text-base/glibc-2.X.supp.in.svn-base [new file with mode: 0644]
.svn/text-base/valgrind.pc.in.svn-base [new file with mode: 0644]
.svn/text-base/valgrind.spec.in.svn-base [new file with mode: 0644]
.svn/text-base/vg-in-place.svn-base [new file with mode: 0644]
.svn/text-base/xfree-3.supp.svn-base [new file with mode: 0644]
.svn/text-base/xfree-4.supp.svn-base [new file with mode: 0644]

diff --git a/.svn/dir-prop-base b/.svn/dir-prop-base
new file mode 100644 (file)
index 0000000..064375c
--- /dev/null
@@ -0,0 +1,46 @@
+K 13
+svn:externals
+V 37
+VEX svn://svn.valgrind.org/vex/trunk
+
+K 10
+svn:ignore
+V 422
+.in_place
+acinclude.m4
+aclocal.m4
+autom4te-*.cache
+autom4te.cache
+bin
+cachegrind
+cachegrind.out.*
+compile
+config.guess
+config.h*
+config.log
+config.status
+config.sub
+configure
+default.supp
+depcomp
+glibc-2.X.supp
+include
+install-sh
+lib
+Makefile
+Makefile.in
+Makefile.vex.in
+missing
+mkinstalldirs
+share
+stamp-h*
+svn-commit.2.tmp
+svn-commit.tmp
+valgrind
+valgrind.pc
+valgrind.spec
+valt_load_address*.lds
+vg_annotate
+vg_cachegen
+
+END
diff --git a/.svn/entries b/.svn/entries
new file mode 100644 (file)
index 0000000..3665b7c
--- /dev/null
@@ -0,0 +1,537 @@
+10
+
+dir
+11479
+svn://svn.valgrind.org/valgrind/trunk
+svn://svn.valgrind.org/valgrind
+
+
+
+2010-11-12T10:40:20.282663Z
+11479
+tom
+has-props
+
+
+svn:externals
+
+
+
+
+
+
+
+
+
+
+a5019735-40e9-0310-863c-91ae7b9d1cf9
+\f
+Makefile.all.am
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+25f74ab5e3de4066f8ea7708780bd128
+2010-10-18T18:11:42.913001Z
+11457
+sewardj
+has-props
+\f
+glibc-2.X.supp.in
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+2ca851edc7d2fc63c525597054801612
+2010-08-22T12:13:35.007742Z
+11281
+sewardj
+has-props
+\f
+glibc-2.X-drd.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+393e756496491c36eb9f9f77445b3f76
+2010-09-02T14:51:02.021715Z
+11330
+bart
+\f
+README_DEVELOPERS
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+b714b29572d1a9a937f4fe6c1b03b86c
+2010-10-13T21:47:29.177681Z
+11440
+sewardj
+has-props
+\f
+AUTHORS
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+253df0b250fc7e28cde74804d74c263d
+2010-10-13T21:47:29.177681Z
+11440
+sewardj
+has-props
+\f
+Makefile.tool.am
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+bd3ca67c59d3405725f76200f64867af
+2010-07-01T00:20:20.236166Z
+11194
+njn
+has-props
+\f
+mpi
+dir
+\f
+docs
+dir
+\f
+helgrind
+dir
+\f
+exp-ptrcheck
+dir
+\f
+xfree-3.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+eeea56187947e758ea0fb8ce87fa1f68
+2006-12-16T00:54:12.348895Z
+6402
+njn
+has-props
+\f
+callgrind
+dir
+\f
+glibc-2.34567-NPTL-helgrind.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+42de86dd99438e2f769745927e4f3966
+2010-04-12T19:53:05.076768Z
+11102
+sewardj
+\f
+vg-in-place
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+5e18d3a425c01a93359c28c01236ac1c
+2008-11-08T15:11:03.769309Z
+8741
+sewardj
+has-props
+\f
+tests
+dir
+\f
+exp-bbv
+dir
+\f
+darwin9.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+c57462319069939fcc273c9eea0f8306
+2010-08-31T13:43:06.225958Z
+11310
+sewardj
+\f
+glibc-2.3.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+bad5bd043f0185c369be0932606ea19d
+2007-11-10T20:12:23.934084Z
+7137
+sewardj
+has-props
+\f
+glibc-2.2-LinuxThreads-helgrind.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+955d37fa6bfc5663cc055e3c99037b2e
+2007-11-11T06:13:01.534199Z
+7146
+sewardj
+\f
+glibc-2.5.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+a3b68476dac08159e92d0c5f757b5e0c
+2007-01-05T15:09:53.273915Z
+6473
+sewardj
+\f
+COPYING
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+c46082167a314d785d012a244748d803
+2004-11-30T10:43:45.490537Z
+3153
+njn
+has-props
+\f
+glibc-2.7.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+e6f5a0c4707116f8a16eb73fb1a4f68a
+2007-11-18T14:40:02.507727Z
+7181
+sewardj
+\f
+exp-dhat
+dir
+\f
+autogen.sh
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+8318f285284c6473f2deaa8a065b5b97
+2003-12-16T02:15:21.000000Z
+2120
+fitzhardinge
+has-props
+\f
+NEWS
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+96b08ef02fb12d03916d520059860949
+2010-10-22T06:44:59.359895Z
+11475
+sewardj
+has-props
+\f
+valgrind.pc.in
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+d6b6b0d5011d31100711120557ebca2f
+2010-01-21T10:24:37.724976Z
+11029
+tom
+has-props
+\f
+memcheck
+dir
+\f
+README_PACKAGERS
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+cee7a92ca6c81db64e8ab1235605a54f
+2009-08-04T07:02:54.528922Z
+10709
+njn
+has-props
+\f
+nightly
+dir
+\f
+darwin10-drd.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+c5dc4e1b5229050fecd8726bed0328b1
+2010-07-01T00:28:09.458458Z
+11195
+njn
+\f
+massif
+dir
+\f
+include
+dir
+\f
+exp-ptrcheck.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+bc7503d9272b33474214598e9a77dcf8
+2010-08-20T18:25:40.681405Z
+11272
+sewardj
+\f
+Makefile.tool-tests.am
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+f773e40253cd1a4135813a0640ee0a88
+2009-06-24T00:37:09.222418Z
+10364
+njn
+\f
+configure.in
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+924814652f4a2277d67a9fc3af2c0072
+2010-11-12T10:40:20.282663Z
+11479
+tom
+has-props
+\f
+aix5libc.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+379ee0ada2bdf194f60324de687a7f1e
+2006-12-12T01:38:15.595827Z
+6395
+sewardj
+\f
+cachegrind
+dir
+\f
+perf
+dir
+\f
+README
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+557092e58ea422862af620f837a496ae
+2010-10-13T21:47:29.177681Z
+11440
+sewardj
+has-props
+\f
+none
+dir
+\f
+COPYING.DOCS
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+8fdeb5abdb235a08e76835f8f3260215
+2004-11-30T10:43:45.490537Z
+3153
+njn
+\f
+xfree-4.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+fdc8b5c0cdd74cd5baad1d7d53c1ec4b
+2010-01-08T10:53:04.778267Z
+11023
+sewardj
+has-props
+\f
+valgrind.spec.in
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+eb148034d1222d47d659baed871ecfea
+2009-07-04T00:38:11.161259Z
+10405
+njn
+has-props
+\f
+glibc-2.2.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+1ee6c689eb81ca5aed0dfb4a45fdd935
+2007-11-10T20:12:23.934084Z
+7137
+sewardj
+has-props
+\f
+glibc-2.4.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+7b12f1fb1939db6eefc2791185f244af
+2007-01-05T15:09:53.273915Z
+6473
+sewardj
+\f
+lackey
+dir
+\f
+auxprogs
+dir
+\f
+drd
+dir
+\f
+glibc-2.6.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+32ad18bef9266f3f25384f84fbc0870b
+2007-11-13T20:51:26.552275Z
+7154
+sewardj
+\f
+Makefile.am
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+af2cc75b751287092e32230cdbb1a65f
+2010-10-12T10:09:15.769768Z
+11431
+sewardj
+has-props
+\f
+Makefile.vex.am
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+4e3a63a7eb57f5e9463f726069c023dc
+2010-09-28T15:09:47.355885Z
+11387
+sewardj
+\f
+README_MISSING_SYSCALL_OR_IOCTL
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+db412a017141cfa4efe45e1b30e4da1a
+2010-03-31T07:34:30.389108Z
+11098
+tom
+has-props
+\f
+darwin9-drd.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+8c657f01522c99236796a99cab5bcdf8
+2010-07-01T00:20:20.236166Z
+11194
+njn
+\f
+darwin10.supp
+file
+
+
+
+
+2010-11-17T08:57:34.000000Z
+83c5d4dae7876f6af0dbf3160d3971fc
+2010-10-07T15:45:59.428482Z
+11413
+sewardj
+\f
+coregrind
+dir
+\f
diff --git a/.svn/prop-base/AUTHORS.svn-base b/.svn/prop-base/AUTHORS.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/COPYING.svn-base b/.svn/prop-base/COPYING.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/Makefile.all.am.svn-base b/.svn/prop-base/Makefile.all.am.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/Makefile.am.svn-base b/.svn/prop-base/Makefile.am.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/Makefile.tool.am.svn-base b/.svn/prop-base/Makefile.tool.am.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/NEWS.svn-base b/.svn/prop-base/NEWS.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/README.svn-base b/.svn/prop-base/README.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/README_DEVELOPERS.svn-base b/.svn/prop-base/README_DEVELOPERS.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/README_MISSING_SYSCALL_OR_IOCTL.svn-base b/.svn/prop-base/README_MISSING_SYSCALL_OR_IOCTL.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/README_PACKAGERS.svn-base b/.svn/prop-base/README_PACKAGERS.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/autogen.sh.svn-base b/.svn/prop-base/autogen.sh.svn-base
new file mode 100644 (file)
index 0000000..fe7d6da
--- /dev/null
@@ -0,0 +1,13 @@
+K 13
+svn:eol-style
+V 6
+native
+K 14
+svn:executable
+V 1
+*
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/configure.in.svn-base b/.svn/prop-base/configure.in.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/glibc-2.2.supp.svn-base b/.svn/prop-base/glibc-2.2.supp.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/glibc-2.3.supp.svn-base b/.svn/prop-base/glibc-2.3.supp.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/glibc-2.X.supp.in.svn-base b/.svn/prop-base/glibc-2.X.supp.in.svn-base
new file mode 100644 (file)
index 0000000..3160658
--- /dev/null
@@ -0,0 +1,5 @@
+K 13
+svn:mergeinfo
+V 0
+
+END
diff --git a/.svn/prop-base/valgrind.pc.in.svn-base b/.svn/prop-base/valgrind.pc.in.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/valgrind.spec.in.svn-base b/.svn/prop-base/valgrind.spec.in.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/vg-in-place.svn-base b/.svn/prop-base/vg-in-place.svn-base
new file mode 100644 (file)
index 0000000..869ac71
--- /dev/null
@@ -0,0 +1,5 @@
+K 14
+svn:executable
+V 1
+*
+END
diff --git a/.svn/prop-base/xfree-3.supp.svn-base b/.svn/prop-base/xfree-3.supp.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/prop-base/xfree-4.supp.svn-base b/.svn/prop-base/xfree-4.supp.svn-base
new file mode 100644 (file)
index 0000000..df54a06
--- /dev/null
@@ -0,0 +1,9 @@
+K 13
+svn:eol-style
+V 6
+native
+K 12
+svn:keywords
+V 23
+author date id revision
+END
diff --git a/.svn/text-base/AUTHORS.svn-base b/.svn/text-base/AUTHORS.svn-base
new file mode 100644 (file)
index 0000000..de0c9c7
--- /dev/null
@@ -0,0 +1,65 @@
+
+Julian Seward was the original founder, designer and author of
+Valgrind, created the dynamic translation frameworks, wrote Memcheck,
+the 3.X versions of Helgrind, Ptrcheck, DHAT, and did lots of other
+things.
+
+Nicholas Nethercote did the core/tool generalisation, wrote
+Cachegrind and Massif, and tons of other stuff.
+
+Tom Hughes did a vast number of bug fixes, helped out with support for
+more recent Linux/glibc versions, set up the present build system, and has
+helped out with test and build machines.
+
+Jeremy Fitzhardinge wrote Helgrind (in the 2.X line) and totally
+overhauled low-level syscall/signal and address space layout stuff,
+among many other things.
+
+Josef Weidendorfer wrote and maintains Callgrind and the associated
+KCachegrind GUI.
+
+Paul Mackerras did a lot of the initial per-architecture factoring
+that forms the basis of the 3.0 line and was also seen in 2.4.0.
+He also did UCode-based dynamic translation support for PowerPC, and
+created a set of ppc-linux derivatives of the 2.X release line.
+
+Greg Parker wrote the Mac OS X port.
+
+Dirk Mueller contributed the malloc/free mismatch checking
+and other bits and pieces, and acts as our KDE liaison.
+
+Robert Walsh added file descriptor leakage checking, new library
+interception machinery, support for client allocation pools, and minor
+other tweakage.
+
+Bart Van Assche wrote and maintains DRD.
+
+Cerion Armour-Brown worked on PowerPC instruction set support in the
+Vex dynamic-translation framework.  Maynard Johnson improved the
+Power6 support.
+
+Kirill Batuzov and Dmitry Zhurikhin did the NEON instruction set
+support for ARM.  Donna Robinson did the v6 media instruction support.
+
+Donna Robinson created and maintains the very excellent
+http://www.valgrind.org.
+
+Vince Weaver wrote and maintains BBV.
+
+Frederic Gobry helped with autoconf and automake.
+
+Daniel Berlin modified readelf's dwarf2 source line reader, written by Nick
+Clifton, for use in Valgrind.o
+
+Michael Matz and Simon Hausmann modified the GNU binutils demangler(s) for
+use in Valgrind.
+
+David Woodhouse has helped out with test and build machines over the course
+of many releases.
+
+Many, many people sent bug reports, patches, and helpful feedback.
+
+Development of Valgrind was supported in part by the Tri-Lab Partners
+(Lawrence Livermore National Laboratory, Los Alamos National
+Laboratory, and Sandia National Laboratories) of the U.S. Department
+of Energy's Advanced Simulation & Computing (ASC) Program.
diff --git a/.svn/text-base/COPYING.DOCS.svn-base b/.svn/text-base/COPYING.DOCS.svn-base
new file mode 100644 (file)
index 0000000..1ad50b0
--- /dev/null
@@ -0,0 +1,398 @@
+        GNU Free Documentation License
+          Version 1.2, November 2002
+
+
+ Copyright (C) 2000,2001,2002  Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+0. PREAMBLE
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+1. APPLICABILITY AND DEFINITIONS
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The "Document", below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as "you".  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A "Modified Version" of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A "Secondary Section" is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The "Invariant Sections" are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The "Cover Texts" are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A "Transparent" copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not "Transparent" is called "Opaque".
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification.  Examples of
+transparent image formats include PNG, XCF and JPG.  Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The "Title Page" means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section "Entitled XYZ" means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as "Acknowledgements",
+"Dedications", "Endorsements", or "History".)  To "Preserve the Title"
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+2. VERBATIM COPYING
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+3. COPYING IN QUANTITY
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+4. MODIFICATIONS
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+A. Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.
+B. List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.
+C. State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.
+D. Preserve all the copyright notices of the Document.
+E. Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+F. Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+G. Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.
+H. Include an unaltered copy of this License.
+I. Preserve the section Entitled "History", Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled "History" in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+J. Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the "History" section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.
+K. For any section Entitled "Acknowledgements" or "Dedications",
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+L. Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.
+M. Delete any section Entitled "Endorsements".  Such a section
+   may not be included in the Modified Version.
+N. Do not retitle any existing section to be Entitled "Endorsements"
+   or to conflict in title with any Invariant Section.
+O. Preserve any Warranty Disclaimers.
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+5. COMBINING DOCUMENTS
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications".  You must delete all sections
+Entitled "Endorsements".
+
+
+6. COLLECTIONS OF DOCUMENTS
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+7. AGGREGATION WITH INDEPENDENT WORKS
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+8. TRANSLATION
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+9. TERMINATION
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+10. FUTURE REVISIONS OF THIS LICENSE
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+ADDENDUM: How to use this License for your documents
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+    Copyright (c)  YEAR  YOUR NAME.
+    Permission is granted to copy, distribute and/or modify this document
+    under the terms of the GNU Free Documentation License, Version 1.2
+    or any later version published by the Free Software Foundation;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+    A copy of the license is included in the section entitled "GNU
+    Free Documentation License".
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+    with the Invariant Sections being LIST THEIR TITLES, with the
+    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
+
diff --git a/.svn/text-base/COPYING.svn-base b/.svn/text-base/COPYING.svn-base
new file mode 100644 (file)
index 0000000..e90dfed
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/.svn/text-base/Makefile.all.am.svn-base b/.svn/text-base/Makefile.all.am.svn-base
new file mode 100644 (file)
index 0000000..789e2a7
--- /dev/null
@@ -0,0 +1,212 @@
+
+# This file should be included (directly or indirectly) by every
+# Makefile.am that builds programs.  And also the top-level Makefile.am.
+
+#----------------------------------------------------------------------------
+# Global stuff
+#----------------------------------------------------------------------------
+
+inplacedir = $(top_builddir)/.in_place
+
+# This used to be required when Vex had a handwritten Makefile.  It
+# shouldn't be needed any more, though.
+##.NOTPARALLEL:
+
+#----------------------------------------------------------------------------
+# noinst_PROGRAMS and noinst_DSYMS targets
+#----------------------------------------------------------------------------
+
+# On Darwin, for a program 'p', the DWARF debug info is stored in the
+# directory 'p.dSYM'.  This must be generated after the executable is
+# created, with 'dsymutil p'.  We could redefine LINK with a script that
+# executes 'dsymutil' after linking, but that's a pain.  Instead we use this
+# hook so that every time "make check" is run, we subsequently invoke
+# 'dsymutil' on all the executables that lack a .dSYM directory, or that are
+# newer than their corresponding .dSYM directory.
+build-noinst_DSYMS: $(noinst_DSYMS)
+       for f in $(noinst_DSYMS); do \
+         if [ ! -e $$f.dSYM  -o  $$f -nt $$f.dSYM ] ; then \
+             echo "dsymutil $$f"; \
+             dsymutil $$f; \
+         fi; \
+       done
+
+# This is used by coregrind/Makefile.am and Makefile.tool.am for doing
+# "in-place" installs.  It copies $(noinst_PROGRAMS) into $inplacedir.
+# It needs to be depended on by an 'all-local' rule.
+inplace-noinst_PROGRAMS: $(noinst_PROGRAMS)
+       mkdir -p $(inplacedir); \
+       for f in $(noinst_PROGRAMS) ; do \
+         rm -f $(inplacedir)/$$f; \
+         ln -f -s ../$(subdir)/$$f $(inplacedir); \
+       done
+
+# Similar to inplace-noinst_PROGRAMS
+inplace-noinst_DSYMS: build-noinst_DSYMS
+       mkdir -p $(inplacedir); \
+       for f in $(noinst_DSYMS); do \
+         rm -f $(inplacedir)/$$f.dSYM; \
+         ln -f -s ../$(subdir)/$$f.dSYM $(inplacedir); \
+       done
+
+# This is used by coregrind/Makefile.am and by <tool>/Makefile.am for doing
+# "make install".  It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/.
+# It needs to be depended on by an 'install-exec-local' rule.
+install-noinst_PROGRAMS: $(noinst_PROGRAMS)
+       $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \
+       for f in $(noinst_PROGRAMS); do \
+         $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \
+       done
+
+# Similar to install-noinst_PROGRAMS.
+# Nb: we don't use $(INSTALL_PROGRAM) here because it doesn't work with
+# directories.  XXX: not sure whether the resulting permissions will be
+# correct when using 'cp -R'...
+install-noinst_DSYMS: build-noinst_DSYMS
+       $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \
+       for f in $(noinst_DSYMS); do \
+         cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \
+       done
+
+# This needs to be depended on by a 'clean-local' rule.
+clean-noinst_DSYMS:
+       for f in $(noinst_DSYMS); do \
+         rm -rf $$f.dSYM; \
+       done
+
+#----------------------------------------------------------------------------
+# Flags
+#----------------------------------------------------------------------------
+
+# Baseline flags for all compilations.  Aim here is to maximise
+# performance and get whatever useful warnings we can out of gcc.
+AM_CFLAGS_BASE = \
+       -O2 -g \
+       -Wall \
+       -Wmissing-prototypes \
+       -Wshadow \
+       -Wpointer-arith \
+       -Wstrict-prototypes \
+       -Wmissing-declarations \
+       @FLAG_W_NO_FORMAT_ZERO_LENGTH@ \
+       -fno-strict-aliasing
+
+# These flags are used for building the preload shared objects.
+# The aim is to give reasonable performance but also to have good
+# stack traces, since users often see stack traces extending 
+# into (and through) the preloads.
+if VGCONF_OS_IS_DARWIN
+AM_CFLAGS_PIC = -dynamic -O -g -fno-omit-frame-pointer -fno-strict-aliasing \
+               -mno-dynamic-no-pic -fpic -fPIC
+else
+AM_CFLAGS_PIC = -fpic -O -g -fno-omit-frame-pointer -fno-strict-aliasing
+endif
+
+
+# Flags for specific targets.
+#
+# Nb: the AM_CPPFLAGS_* values are suitable for building tools and auxprogs.
+# For building the core, coregrind/Makefile.am files add some extra things.
+#
+# Also: in newer versions of automake (1.10 onwards?) asm files ending with
+# '.S' are considered "pre-processed" (as opposed to those ending in '.s')
+# and so the CPPFLAGS are passed to the assembler.  But this is not true for
+# older automakes (e.g. 1.8.5, 1.9.6), sigh.  So we include
+# AM_CPPFLAGS_<PLATFORM> in each AM_CCASFLAGS_<PLATFORM> variable.  This
+# means some of the flags are duplicated on systems with newer versions of
+# automake, but this does not really matter and seems hard to avoid.
+
+AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ = \
+       -I$(top_srcdir) \
+       -I$(top_srcdir)/include \
+       -I$(top_srcdir)/VEX/pub \
+       -DVGA_@VGCONF_ARCH_PRI@=1 \
+       -DVGO_@VGCONF_OS@=1 \
+       -DVGP_@VGCONF_ARCH_PRI@_@VGCONF_OS@=1
+if VGCONF_HAVE_PLATFORM_SEC
+AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ = \
+       -I$(top_srcdir) \
+       -I$(top_srcdir)/include \
+       -I$(top_srcdir)/VEX/pub \
+       -DVGA_@VGCONF_ARCH_SEC@=1 \
+       -DVGO_@VGCONF_OS@=1 \
+       -DVGP_@VGCONF_ARCH_SEC@_@VGCONF_OS@=1
+endif
+
+AM_FLAG_M3264_X86_LINUX   = @FLAG_M32@
+AM_CFLAGS_X86_LINUX       = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
+                               $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_X86_LINUX    = $(AM_CPPFLAGS_X86_LINUX) @FLAG_M32@ -g
+
+AM_FLAG_M3264_AMD64_LINUX = @FLAG_M64@
+AM_CFLAGS_AMD64_LINUX     = @FLAG_M64@ -fomit-frame-pointer \
+                               @PREFERRED_STACK_BOUNDARY@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_AMD64_LINUX  = $(AM_CPPFLAGS_AMD64_LINUX) @FLAG_M64@ -g
+
+AM_FLAG_M3264_PPC32_LINUX = @FLAG_M32@
+AM_CFLAGS_PPC32_LINUX     = @FLAG_M32@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_PPC32_LINUX  = $(AM_CPPFLAGS_PPC32_LINUX) @FLAG_M32@ -g
+
+AM_FLAG_M3264_PPC64_LINUX = @FLAG_M64@
+AM_CFLAGS_PPC64_LINUX     = @FLAG_M64@ $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_PPC64_LINUX  = $(AM_CPPFLAGS_PPC64_LINUX) @FLAG_M64@ -g
+
+AM_FLAG_M3264_ARM_LINUX   = @FLAG_M32@
+AM_CFLAGS_ARM_LINUX       = @FLAG_M32@ @PREFERRED_STACK_BOUNDARY@ \
+                               $(AM_CFLAGS_BASE) -marm
+AM_CCASFLAGS_ARM_LINUX    = $(AM_CPPFLAGS_ARM_LINUX) @FLAG_M32@ -marm -g
+
+AM_FLAG_M3264_PPC32_AIX5  = @FLAG_MAIX32@
+AM_CFLAGS_PPC32_AIX5      = @FLAG_MAIX32@ -mcpu=powerpc $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_PPC32_AIX5   = $(AM_CPPFLAGS_PPC32_AIX5) \
+                           @FLAG_MAIX32@ -mcpu=powerpc -g
+
+AM_FLAG_M3264_PPC64_AIX5  = @FLAG_MAIX64@
+AM_CFLAGS_PPC64_AIX5      = @FLAG_MAIX64@ -mcpu=powerpc64 $(AM_CFLAGS_BASE)
+AM_CCASFLAGS_PPC64_AIX5   = $(AM_CPPFLAGS_PPC64_AIX5) \
+                           @FLAG_MAIX64@ -mcpu=powerpc64 -g
+
+AM_FLAG_M3264_X86_DARWIN = -arch i386
+AM_CFLAGS_X86_DARWIN     = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \
+                               -mmacosx-version-min=10.5 \
+                               -fno-stack-protector -fno-pic -fno-PIC
+
+AM_CCASFLAGS_X86_DARWIN  = $(AM_CPPFLAGS_X86_DARWIN) -arch i386 -g
+
+AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64
+AM_CFLAGS_AMD64_DARWIN     = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \
+                           -mmacosx-version-min=10.5 -fno-stack-protector
+AM_CCASFLAGS_AMD64_DARWIN  = $(AM_CPPFLAGS_AMD64_DARWIN) -arch x86_64 -g
+
+# Flags for the primary target.  These must be used to build the
+# regtests and performance tests.  In fact, these must be used to
+# build anything which is built only once on a dual-arch build.
+#
+AM_FLAG_M3264_PRI = $(AM_FLAG_M3264_@VGCONF_PLATFORM_PRI_CAPS@)
+AM_CPPFLAGS_PRI   = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+AM_CFLAGS_PRI     = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+AM_CCASFLAGS_PRI  = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+
+if VGCONF_HAVE_PLATFORM_SEC
+ AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@)
+else
+ AM_FLAG_M3264_SEC = 
+endif
+
+
+# Baseline link flags for making vgpreload shared objects.
+#
+PRELOAD_LDFLAGS_COMMON_LINUX  = -nodefaultlibs -shared -Wl,-z,interpose,-z,initfirst
+PRELOAD_LDFLAGS_COMMON_AIX5   = -nodefaultlibs -shared -Wl,-G -Wl,-bnogc
+PRELOAD_LDFLAGS_COMMON_DARWIN = -dynamic -dynamiclib -all_load
+
+PRELOAD_LDFLAGS_X86_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
+PRELOAD_LDFLAGS_AMD64_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+PRELOAD_LDFLAGS_PPC32_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
+PRELOAD_LDFLAGS_PPC64_LINUX  = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+PRELOAD_LDFLAGS_ARM_LINUX    = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
+PRELOAD_LDFLAGS_PPC32_AIX5   = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX32@
+PRELOAD_LDFLAGS_PPC64_AIX5   = $(PRELOAD_LDFLAGS_COMMON_AIX5)  @FLAG_MAIX64@
+PRELOAD_LDFLAGS_X86_DARWIN   = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
+PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
+
diff --git a/.svn/text-base/Makefile.am.svn-base b/.svn/text-base/Makefile.am.svn-base
new file mode 100644 (file)
index 0000000..4043b8b
--- /dev/null
@@ -0,0 +1,110 @@
+
+AUTOMAKE_OPTIONS = foreign 1.7 dist-bzip2
+
+include $(top_srcdir)/Makefile.all.am 
+
+TOOLS =                memcheck \
+               cachegrind \
+               callgrind \
+               massif \
+               lackey \
+               none \
+               helgrind \
+               drd
+
+EXP_TOOLS =    exp-ptrcheck \
+               exp-bbv \
+               exp-dhat
+
+# DDD: once all tools work on Darwin, TEST_TOOLS and TEST_EXP_TOOLS can be
+# replaced with TOOLS and EXP_TOOLS.
+TEST_TOOLS = $(TOOLS)
+if !VGCONF_OS_IS_DARWIN
+  TEST_EXP_TOOLS = $(EXP_TOOLS)
+else
+  TEST_EXP_TOOLS = exp-bbv
+endif
+
+# Put docs last because building the HTML is slow and we want to get
+# everything else working before we try it.
+SUBDIRS = \
+       include \
+       VEX \
+       coregrind \
+       . \
+       $(TOOLS) \
+       $(EXP_TOOLS) \
+       tests \
+       perf \
+       auxprogs \
+       mpi \
+       docs
+DIST_SUBDIRS  = $(SUBDIRS)
+
+SUPP_FILES = \
+       glibc-2.2.supp glibc-2.3.supp glibc-2.4.supp glibc-2.5.supp \
+       glibc-2.6.supp glibc-2.7.supp glibc-2.X.supp.in \
+       aix5libc.supp xfree-3.supp xfree-4.supp \
+       glibc-2.34567-NPTL-helgrind.supp \
+       glibc-2.2-LinuxThreads-helgrind.supp \
+       glibc-2.X-drd.supp \
+       exp-ptrcheck.supp \
+       darwin9.supp darwin9-drd.supp \
+       darwin10.supp darwin10-drd.supp
+DEFAULT_SUPP_FILES = @DEFAULT_SUPP@
+
+# We include all the base .supp files in the distribution, but not
+# default.supp, as it is built from the base .supp files at compile-time.
+dist_noinst_DATA = $(SUPP_FILES)
+
+pkglib_DATA = default.supp
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = valgrind.pc
+
+BUILT_SOURCES  = default.supp valgrind.pc
+CLEANFILES     = default.supp
+
+default.supp: $(DEFAULT_SUPP_FILES)
+       echo "# This is a generated file, composed of the following suppression rules:" > default.supp
+       echo "# " $(DEFAULT_SUPP_FILES) >> default.supp
+       cat $(DEFAULT_SUPP_FILES) >> default.supp
+
+## Preprend @PERL@ because tests/vg_regtest isn't executable
+regtest: check
+       @PERL@ tests/vg_regtest $(TEST_TOOLS) $(TEST_EXP_TOOLS)
+nonexp-regtest: check
+       @PERL@ tests/vg_regtest $(TEST_TOOLS)
+exp-regtest: check
+       @PERL@ tests/vg_regtest $(TEST_EXP_TOOLS)
+
+## Preprend @PERL@ because tests/vg_perf isn't executable
+perf: check
+       @PERL@ perf/vg_perf perf
+
+# Nb: no need to include any Makefile.am files here, or files included from
+# them, as automake includes them automatically.  Also not COPYING, README
+# or NEWS.
+# We include valgrind.spec as well as valgrind.spec.in to save packagers
+# from having to run configure (bug 188560).
+EXTRA_DIST = \
+       COPYING.DOCS \
+       README_DEVELOPERS \
+       README_PACKAGERS \
+       README_MISSING_SYSCALL_OR_IOCTL \
+       valgrind.pc.in \
+       valgrind.spec.in \
+       valgrind.spec
+
+dist_noinst_SCRIPTS = \
+       vg-in-place
+
+all-local: default.supp
+       mkdir -p $(inplacedir)
+       rm -f $(inplacedir)/default.supp
+       ln -s ../default.supp $(inplacedir)
+
+clean-local:
+       rm -rf $(inplacedir)
+
+
diff --git a/.svn/text-base/Makefile.tool-tests.am.svn-base b/.svn/text-base/Makefile.tool-tests.am.svn-base
new file mode 100644 (file)
index 0000000..a9d3b91
--- /dev/null
@@ -0,0 +1,25 @@
+# This file is used for tool tests, and also in perf/Makefile.am.
+
+include $(top_srcdir)/Makefile.all.am
+
+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
+               -I$(top_srcdir)/coregrind -I$(top_builddir)/include \
+               -I$(top_srcdir)/VEX/pub \
+               -DVGA_$(VGCONF_ARCH_PRI)=1 \
+               -DVGO_$(VGCONF_OS)=1 \
+               -DVGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS)=1
+# Nb: Tools need to augment these flags with an arch-selection option, such
+# as $(AM_FLAG_M3264_PRI).
+AM_CFLAGS   = -Winline -Wall -Wshadow -g
+AM_CXXFLAGS = -Winline -Wall -Wshadow -g
+# Include AM_CPPFLAGS in AM_CCASFLAGS to allow for older versions of
+# automake;  see comments in Makefile.all.am for more detail.
+AM_CCASFLAGS = $(AM_CPPFLAGS)
+
+if VGCONF_OS_IS_DARWIN
+noinst_DSYMS = $(check_PROGRAMS)
+endif
+
+check-local: build-noinst_DSYMS
+
+clean-local: clean-noinst_DSYMS
diff --git a/.svn/text-base/Makefile.tool.am.svn-base b/.svn/text-base/Makefile.tool.am.svn-base
new file mode 100644 (file)
index 0000000..6ac08cf
--- /dev/null
@@ -0,0 +1,154 @@
+
+SUBDIRS = . tests
+
+include $(top_srcdir)/Makefile.all.am
+
+#----------------------------------------------------------------------------
+# <tool>-<platform> stuff
+#----------------------------------------------------------------------------
+
+TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@ = \
+       $(top_builddir)/coregrind/libcoregrind-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a \
+       $(top_builddir)/VEX/libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a
+if VGCONF_HAVE_PLATFORM_SEC
+TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@ = \
+       $(top_builddir)/coregrind/libcoregrind-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a \
+       $(top_builddir)/VEX/libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
+endif
+
+
+TOOL_LDADD_COMMON = -lgcc
+TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@ = \
+       $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@) $(TOOL_LDADD_COMMON)
+if VGCONF_HAVE_PLATFORM_SEC
+TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@ = \
+       $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@) $(TOOL_LDADD_COMMON)
+endif
+
+
+# -Wl,--build-id=none is needed when linking tools on Linux. Without this
+# flag newer ld versions (2.20 and later) create a .note.gnu.build-id at the
+# default text segment address, which of course means the resulting executable
+# is unusable. So we have to tell ld not to generate that, with --build-id=none.
+TOOL_LDFLAGS_COMMON_LINUX = \
+       -static -nodefaultlibs -nostartfiles -u _start @FLAG_NO_BUILD_ID@
+TOOL_LDFLAGS_COMMON_AIX5 = \
+       -static -Wl,-e_start_valgrind
+TOOL_LDFLAGS_COMMON_DARWIN = \
+       -nodefaultlibs -nostartfiles -Wl,-u,__start -Wl,-e,__start
+
+TOOL_LDFLAGS_X86_LINUX = \
+       $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
+
+TOOL_LDFLAGS_AMD64_LINUX = \
+       $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
+TOOL_LDFLAGS_PPC32_LINUX = \
+       $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
+
+TOOL_LDFLAGS_PPC64_LINUX = \
+       $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M64@
+
+TOOL_LDFLAGS_ARM_LINUX = \
+       $(TOOL_LDFLAGS_COMMON_LINUX) @FLAG_M32@
+
+TOOL_LDFLAGS_PPC32_AIX5 = \
+       $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX32@
+
+TOOL_LDFLAGS_PPC64_AIX5 = \
+       $(TOOL_LDFLAGS_COMMON_AIX5) @FLAG_MAIX64@ -Wl,-bbigtoc
+
+TOOL_LDFLAGS_X86_DARWIN = \
+       $(TOOL_LDFLAGS_COMMON_DARWIN) -arch i386
+
+TOOL_LDFLAGS_AMD64_DARWIN = \
+       $(TOOL_LDFLAGS_COMMON_DARWIN) -arch x86_64
+
+# NB for 64-bit darwin.  We may want to set -Wl,-pagezero_size to
+# something smaller than the default of 4G, so as to facilitate
+# loading clients who are also linked thusly (currently m_ume.c
+# will fail to load them).  Although such setting is probably
+# better done in link_tool_exe.c.
+#
+#      -Wl,-pagezero_size,0x100000000
+
+
+#----------------------------------------------------------------------------
+# vgpreload_<tool>-<platform>.a stuff
+#----------------------------------------------------------------------------
+
+LIBREPLACEMALLOC_X86_LINUX = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-linux.a
+
+LIBREPLACEMALLOC_AMD64_LINUX = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-linux.a
+
+LIBREPLACEMALLOC_PPC32_LINUX = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-linux.a
+
+LIBREPLACEMALLOC_PPC64_LINUX = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-linux.a
+
+LIBREPLACEMALLOC_ARM_LINUX = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-arm-linux.a
+
+LIBREPLACEMALLOC_PPC32_AIX5 = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc32-aix5.a
+
+LIBREPLACEMALLOC_PPC64_AIX5 = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-ppc64-aix5.a
+
+LIBREPLACEMALLOC_X86_DARWIN = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-x86-darwin.a
+
+LIBREPLACEMALLOC_AMD64_DARWIN = \
+       $(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
+
+
+LIBREPLACEMALLOC_LDFLAGS_X86_LINUX = \
+       -Wl,--whole-archive \
+       $(LIBREPLACEMALLOC_X86_LINUX) \
+       -Wl,--no-whole-archive
+
+LIBREPLACEMALLOC_LDFLAGS_AMD64_LINUX = \
+       -Wl,--whole-archive \
+       $(LIBREPLACEMALLOC_AMD64_LINUX) \
+       -Wl,--no-whole-archive
+
+LIBREPLACEMALLOC_LDFLAGS_PPC32_LINUX = \
+       -Wl,--whole-archive \
+       $(LIBREPLACEMALLOC_PPC32_LINUX) \
+       -Wl,--no-whole-archive
+
+LIBREPLACEMALLOC_LDFLAGS_PPC64_LINUX = \
+       -Wl,--whole-archive \
+       $(LIBREPLACEMALLOC_PPC64_LINUX) \
+       -Wl,--no-whole-archive
+
+LIBREPLACEMALLOC_LDFLAGS_ARM_LINUX = \
+       -Wl,--whole-archive \
+       $(LIBREPLACEMALLOC_ARM_LINUX) \
+       -Wl,--no-whole-archive
+
+LIBREPLACEMALLOC_LDFLAGS_PPC32_AIX5 = \
+       $(LIBREPLACEMALLOC_PPC32_AIX5)
+
+LIBREPLACEMALLOC_LDFLAGS_PPC64_AIX5 = \
+       $(LIBREPLACEMALLOC_PPC64_AIX5)
+
+LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
+       $(LIBREPLACEMALLOC_X86_DARWIN)
+
+LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
+       $(LIBREPLACEMALLOC_AMD64_DARWIN)
+
+#----------------------------------------------------------------------------
+# General stuff
+#----------------------------------------------------------------------------
+
+all-local: inplace-noinst_PROGRAMS inplace-noinst_DSYMS
+
+clean-local: clean-noinst_DSYMS
+
+install-exec-local: install-noinst_PROGRAMS install-noinst_DSYMS
+
diff --git a/.svn/text-base/Makefile.vex.am.svn-base b/.svn/text-base/Makefile.vex.am.svn-base
new file mode 100644 (file)
index 0000000..b84ba4e
--- /dev/null
@@ -0,0 +1,131 @@
+# VEX/Makefile is generated from this file at configure-time.
+
+include $(top_srcdir)/Makefile.all.am
+
+#----------------------------------------------------------------------------
+# Headers, etc
+#----------------------------------------------------------------------------
+
+EXTRA_DIST = \
+       HACKING.README \
+       LICENSE.README \
+       LICENSE.GPL \
+       quote.txt \
+       newline.txt \
+       auxprogs/genoffsets.c
+
+pkginclude_HEADERS = \
+       pub/libvex.h \
+       pub/libvex_basictypes.h \
+       pub/libvex_emwarn.h \
+       pub/libvex_guest_offsets.h \
+       pub/libvex_guest_x86.h \
+       pub/libvex_guest_amd64.h \
+       pub/libvex_guest_ppc32.h \
+       pub/libvex_guest_ppc64.h \
+       pub/libvex_guest_arm.h \
+       pub/libvex_ir.h \
+       pub/libvex_trc_values.h
+
+noinst_HEADERS = \
+       priv/main_globals.h \
+       priv/main_util.h \
+       priv/ir_match.h \
+       priv/ir_opt.h \
+       priv/guest_generic_bb_to_IR.h \
+       priv/guest_generic_x87.h \
+       priv/guest_x86_defs.h \
+       priv/guest_amd64_defs.h \
+       priv/guest_ppc_defs.h \
+       priv/guest_arm_defs.h \
+       priv/host_generic_regs.h \
+       priv/host_generic_simd64.h \
+       priv/host_generic_simd128.h \
+       priv/host_x86_defs.h \
+       priv/host_amd64_defs.h \
+       priv/host_ppc_defs.h \
+       priv/host_arm_defs.h
+
+BUILT_SOURCES = pub/libvex_guest_offsets.h
+CLEANFILES    = pub/libvex_guest_offsets.h
+
+# This is very uggerly.  Need to sed out both "xyzzyN" and
+# "xyzzy$N" since gcc on different targets emits the constants
+# differently -- with a leading $ on x86/amd64 but none on ppc32/64.
+pub/libvex_guest_offsets.h: auxprogs/genoffsets.c \
+                           pub/libvex_basictypes.h \
+                           pub/libvex_guest_x86.h \
+                           pub/libvex_guest_amd64.h \
+                           pub/libvex_guest_ppc32.h \
+                           pub/libvex_guest_ppc64.h \
+                           pub/libvex_guest_arm.h
+       rm -f auxprogs/genoffsets.s
+       $(CC) $(LIBVEX_CFLAGS) \
+             $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
+                               -O -S -o auxprogs/genoffsets.s \
+                                        auxprogs/genoffsets.c
+       grep xyzzy auxprogs/genoffsets.s | grep define \
+          | sed "s/xyzzy\\$$//g" \
+          | sed "s/xyzzy#//g" \
+          | sed "s/xyzzy//g" \
+          > pub/libvex_guest_offsets.h
+       rm -f auxprogs/genoffsets.s
+
+#----------------------------------------------------------------------------
+# libvex-<platform>.a
+#----------------------------------------------------------------------------
+
+pkglib_LIBRARIES  = libvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@.a
+if VGCONF_HAVE_PLATFORM_SEC
+pkglib_LIBRARIES += libvex-@VGCONF_ARCH_SEC@-@VGCONF_OS@.a
+endif
+
+LIBVEX_SOURCES_COMMON = \
+       priv/main_globals.c \
+       priv/main_main.c \
+       priv/main_util.c \
+       priv/ir_defs.c \
+       priv/ir_match.c \
+       priv/ir_opt.c \
+       priv/guest_generic_bb_to_IR.c \
+       priv/guest_generic_x87.c \
+       priv/guest_x86_helpers.c \
+       priv/guest_x86_toIR.c \
+       priv/guest_amd64_helpers.c \
+       priv/guest_amd64_toIR.c \
+       priv/guest_ppc_helpers.c \
+       priv/guest_ppc_toIR.c \
+       priv/guest_arm_helpers.c \
+       priv/guest_arm_toIR.c \
+       priv/host_generic_regs.c \
+       priv/host_generic_simd64.c \
+       priv/host_generic_simd128.c \
+       priv/host_generic_reg_alloc2.c \
+       priv/host_x86_defs.c \
+       priv/host_x86_isel.c \
+       priv/host_amd64_defs.c \
+       priv/host_amd64_isel.c \
+       priv/host_ppc_defs.c \
+       priv/host_ppc_isel.c \
+       priv/host_arm_defs.c \
+       priv/host_arm_isel.c
+
+LIBVEX_CFLAGS = \
+       -Wbad-function-cast \
+       -Wcast-qual \
+       -Wcast-align \
+       -fstrict-aliasing
+
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_SOURCES  = $(LIBVEX_SOURCES_COMMON)
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CPPFLAGS = \
+        $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -Ipriv
+libvex_@VGCONF_ARCH_PRI@_@VGCONF_OS@_a_CFLAGS   = \
+        $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(LIBVEX_CFLAGS)
+if VGCONF_HAVE_PLATFORM_SEC
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_SOURCES  = $(LIBVEX_SOURCES_COMMON)
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CPPFLAGS = \
+        $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) -Ipriv
+libvex_@VGCONF_ARCH_SEC@_@VGCONF_OS@_a_CFLAGS   = \
+        $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(LIBVEX_CFLAGS)
+endif
+
diff --git a/.svn/text-base/NEWS.svn-base b/.svn/text-base/NEWS.svn-base
new file mode 100644 (file)
index 0000000..d5b42dd
--- /dev/null
@@ -0,0 +1,3109 @@
+
+Release 3.6.0 (21 October 2010)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.6.0 is a feature release with many significant improvements and the
+usual collection of bug fixes.
+
+This release supports X86/Linux, AMD64/Linux, ARM/Linux, PPC32/Linux,
+PPC64/Linux, X86/Darwin and AMD64/Darwin.  Support for recent distros
+and toolchain components (glibc 2.12, gcc 4.5, OSX 10.6) has been added.
+
+                    -------------------------
+
+Here are some highlights.  Details are shown further down:
+
+* Support for ARM/Linux.
+
+* Support for recent Linux distros: Ubuntu 10.10 and Fedora 14.
+
+* Support for Mac OS X 10.6, both 32- and 64-bit executables.
+
+* Support for the SSE4.2 instruction set.
+
+* Enhancements to the Callgrind profiler, including the ability to
+  handle CPUs with three levels of cache.
+
+* A new experimental heap profiler, DHAT.
+
+* A huge number of bug fixes and small enhancements.
+
+                    -------------------------
+
+Here are details of the above changes, together with descriptions of
+many other changes, and a list of fixed bugs.
+
+* ================== PLATFORM CHANGES =================
+
+* Support for ARM/Linux.  Valgrind now runs on ARMv7 capable CPUs
+  running Linux.  It is known to work on Ubuntu 10.04, Ubuntu 10.10,
+  and Maemo 5, so you can run Valgrind on your Nokia N900 if you want.
+
+  This requires a CPU capable of running the ARMv7-A instruction set
+  (Cortex A5, A8 and A9).  Valgrind provides fairly complete coverage
+  of the user space instruction set, including ARM and Thumb integer
+  code, VFPv3, NEON and V6 media instructions.  The Memcheck,
+  Cachegrind and Massif tools work properly; other tools work to
+  varying degrees.
+
+* Support for recent Linux distros (Ubuntu 10.10 and Fedora 14), along
+  with support for recent releases of the underlying toolchain
+  components, notably gcc-4.5 and glibc-2.12.
+
+* Support for Mac OS X 10.6, both 32- and 64-bit executables.  64-bit
+  support also works much better on OS X 10.5, and is as solid as
+  32-bit support now.
+
+* Support for the SSE4.2 instruction set.  SSE4.2 is supported in
+  64-bit mode.  In 32-bit mode, support is only available up to and
+  including SSSE3.  Some exceptions: SSE4.2 AES instructions are not
+  supported in 64-bit mode, and 32-bit mode does in fact support the
+  bare minimum SSE4 instructions to needed to run programs on Mac OS X
+  10.6 on 32-bit targets.
+
+* Support for IBM POWER6 cpus has been improved.  The Power ISA up to
+  and including version 2.05 is supported.
+
+* ==================== TOOL CHANGES ====================
+
+* Cachegrind has a new processing script, cg_diff, which finds the
+  difference between two profiles.  It's very useful for evaluating
+  the performance effects of a change in a program.
+  
+  Related to this change, the meaning of cg_annotate's (rarely-used)
+  --threshold option has changed; this is unlikely to affect many
+  people, if you do use it please see the user manual for details.
+
+* Callgrind now can do branch prediction simulation, similar to
+  Cachegrind.  In addition, it optionally can count the number of
+  executed global bus events.  Both can be used for a better
+  approximation of a "Cycle Estimation" as derived event (you need to
+  update the event formula in KCachegrind yourself).
+
+* Cachegrind and Callgrind now refer to the LL (last-level) cache
+  rather than the L2 cache.  This is to accommodate machines with
+  three levels of caches -- if Cachegrind/Callgrind auto-detects the
+  cache configuration of such a machine it will run the simulation as
+  if the L2 cache isn't present.  This means the results are less
+  likely to match the true result for the machine, but
+  Cachegrind/Callgrind's results are already only approximate, and
+  should not be considered authoritative.  The results are still
+  useful for giving a general idea about a program's locality.
+
+* Massif has a new option, --pages-as-heap, which is disabled by
+  default.  When enabled, instead of tracking allocations at the level
+  of heap blocks (as allocated with malloc/new/new[]), it instead
+  tracks memory allocations at the level of memory pages (as mapped by
+  mmap, brk, etc).  Each mapped page is treated as its own block.
+  Interpreting the page-level output is harder than the heap-level
+  output, but this option is useful if you want to account for every
+  byte of memory used by a program.
+
+* DRD has two new command-line options: --free-is-write and
+  --trace-alloc.  The former allows to detect reading from already freed
+  memory, and the latter allows tracing of all memory allocations and
+  deallocations.
+
+* DRD has several new annotations.  Custom barrier implementations can
+  now be annotated, as well as benign races on static variables.
+
+* DRD's happens before / happens after annotations have been made more
+  powerful, so that they can now also be used to annotate e.g. a smart
+  pointer implementation.
+
+* Helgrind's annotation set has also been drastically improved, so as
+  to provide to users a general set of annotations to describe locks,
+  semaphores, barriers and condition variables.  Annotations to
+  describe thread-safe reference counted heap objects have also been
+  added.
+
+* Memcheck has a new command-line option, --show-possibly-lost, which
+  is enabled by default.  When disabled, the leak detector will not
+  show possibly-lost blocks.
+
+* A new experimental heap profiler, DHAT (Dynamic Heap Analysis Tool),
+  has been added.  DHAT keeps track of allocated heap blocks, and also
+  inspects every memory reference to see which block (if any) is being
+  accessed.  This gives a lot of insight into block lifetimes,
+  utilisation, turnover, liveness, and the location of hot and cold
+  fields.  You can use DHAT to do hot-field profiling.
+
+* ==================== OTHER CHANGES ====================
+
+* Improved support for unfriendly self-modifying code: the extra
+  overhead incurred by --smc-check=all has been reduced by
+  approximately a factor of 5 as compared with 3.5.0.
+
+* Ability to show directory names for source files in error messages.
+  This is combined with a flexible mechanism for specifying which
+  parts of the paths should be shown.  This is enabled by the new flag
+  --fullpath-after.
+
+* A new flag, --require-text-symbol, which will stop the run if a
+  specified symbol is not found it a given shared object when it is
+  loaded into the process.  This makes advanced working with function
+  intercepting and wrapping safer and more reliable.
+
+* Improved support for the Valkyrie GUI, version 2.0.0.  GUI output
+  and control of Valgrind is now available for the tools Memcheck and
+  Helgrind.  XML output from Valgrind is available for Memcheck,
+  Helgrind and exp-Ptrcheck.
+
+* More reliable stack unwinding on amd64-linux, particularly in the
+  presence of function wrappers, and with gcc-4.5 compiled code.
+
+* Modest scalability (performance improvements) for massive
+  long-running applications, particularly for those with huge amounts
+  of code.
+
+* Support for analyzing programs running under Wine with has been
+  improved.  The header files <valgrind/valgrind.h>,
+  <valgrind/memcheck.h> and <valgrind/drd.h> can now be used in
+  Windows-programs compiled with MinGW or one of the Microsoft Visual
+  Studio compilers.
+
+* A rare but serious error in the 64-bit x86 CPU simulation was fixed.
+  The 32-bit simulator was not affected.  This did not occur often,
+  but when it did would usually crash the program under test.
+  Bug 245925.
+
+* A large number of bugs were fixed.  These are shown below.
+
+* A number of bugs were investigated, and were candidates for fixing,
+  but are not fixed in 3.6.0, due to lack of developer time.  They may
+  get fixed in later releases.  They are:
+
+  194402  vex amd64->IR: 0x48 0xF 0xAE 0x4 0x24 0x49  (FXSAVE64)
+  212419  false positive "lock order violated" (A+B vs A) 
+  213685  Undefined value propagates past dependency breaking instruction
+  216837  Incorrect instrumentation of NSOperationQueue on Darwin 
+  237920  valgrind segfault on fork failure 
+  242137  support for code compiled by LLVM-2.8
+  242423  Another unknown Intel cache config value 
+  243232  Inconsistent Lock Orderings report with trylock 
+  243483  ppc: callgrind triggers VEX assertion failure 
+  243935  Helgrind: implementation of ANNOTATE_HAPPENS_BEFORE() is wrong
+  244677  Helgrind crash hg_main.c:616 (map_threads_lookup): Assertion
+          'thr' failed. 
+  246152  callgrind internal error after pthread_cancel on 32 Bit Linux 
+  249435  Analyzing wine programs with callgrind triggers a crash 
+  250038  ppc64: Altivec lvsr and lvsl instructions fail their regtest
+  250065  Handling large allocations 
+  250101  huge "free" memory usage due to m_mallocfree.c
+          "superblocks fragmentation"
+  251569  vex amd64->IR: 0xF 0x1 0xF9 0x8B 0x4C 0x24 (RDTSCP)
+  252091  Callgrind on ARM does not detect function returns correctly
+  252600  [PATCH] Allow lhs to be a pointer for shl/shr
+  254420  memory pool tracking broken
+  n-i-bz  support for adding symbols for JIT generated code
+
+
+The following bugs have been fixed or resolved.  Note that "n-i-bz"
+stands for "not in bugzilla" -- that is, a bug that was reported to us
+but never got a bugzilla entry.  We encourage you to file bugs in
+bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
+mailing the developers (or mailing lists) directly -- bugs that are
+not entered into bugzilla tend to get forgotten about or ignored.
+
+To see details of a given bug, visit
+https://bugs.kde.org/show_bug.cgi?id=XXXXXX
+where XXXXXX is the bug number as listed below.
+
+135264  dcbzl instruction missing
+142688  == 250799
+153699  Valgrind should report unaligned reads with movdqa
+180217  == 212335
+190429  Valgrind reports lost of errors in ld.so
+        with x86_64 2.9.90 glibc 
+197266  valgrind appears to choke on the xmms instruction
+        "roundsd" on x86_64 
+197988  Crash when demangling very large symbol names
+202315  unhandled syscall: 332 (inotify_init1)
+203256  Add page-level profiling to Massif
+205093  dsymutil=yes needs quotes, locking (partial fix)
+205241  Snow Leopard 10.6 support (partial fix)
+206600  Leak checker fails to upgrade indirect blocks when their
+        parent becomes reachable 
+210935  port valgrind.h (not valgrind) to win32 so apps run under
+        wine can make client requests
+211410  vex amd64->IR: 0x15 0xFF 0xFF 0x0 0x0 0x89
+        within Linux ip-stack checksum functions 
+212335  unhandled instruction bytes: 0xF3 0xF 0xBD 0xC0
+        (lzcnt %eax,%eax) 
+213685  Undefined value propagates past dependency breaking instruction
+        (partial fix)
+215914  Valgrind inserts bogus empty environment variable 
+217863  == 197988
+219538  adjtimex syscall wrapper wrong in readonly adjtime mode 
+222545  shmat fails under valgind on some arm targets 
+222560  ARM NEON support 
+230407  == 202315
+231076  == 202315
+232509  Docs build fails with formatting inside <title></title> elements 
+232793  == 202315
+235642  [PATCH] syswrap-linux.c: support evdev EVIOCG* ioctls 
+236546  vex x86->IR: 0x66 0xF 0x3A 0xA
+237202  vex amd64->IR: 0xF3 0xF 0xB8 0xC0 0x49 0x3B 
+237371  better support for VALGRIND_MALLOCLIKE_BLOCK 
+237485  symlink (syscall 57) is not supported on Mac OS 
+237723  sysno == 101 exp-ptrcheck: the 'impossible' happened:
+        unhandled syscall 
+238208  is_just_below_ESP doesn't take into account red-zone 
+238345  valgrind passes wrong $0 when executing a shell script 
+238679  mq_timedreceive syscall doesn't flag the reception buffer
+        as "defined"
+238696  fcntl command F_DUPFD_CLOEXEC not supported 
+238713  unhandled instruction bytes: 0x66 0xF 0x29 0xC6 
+238713  unhandled instruction bytes: 0x66 0xF 0x29 0xC6 
+238745  3.5.0 Make fails on PPC Altivec opcodes, though configure
+        says "Altivec off"
+239992  vex amd64->IR: 0x48 0xF 0xC4 0xC1 0x0 0x48 
+240488  == 197988
+240639  == 212335
+241377  == 236546
+241903  == 202315
+241920  == 212335
+242606  unhandled syscall: setegid (in Ptrcheck)
+242814  Helgrind "Impossible has happened" during
+        QApplication::initInstance(); 
+243064  Valgrind attempting to read debug information from iso 
+243270  Make stack unwinding in Valgrind wrappers more reliable
+243884  exp-ptrcheck: the 'impossible happened: unhandled syscall 
+        sysno = 277 (mq_open)
+244009  exp-ptrcheck unknown syscalls in analyzing lighttpd
+244493  ARM VFP d16-d31 registers support 
+244670  add support for audit_session_self syscall on Mac OS 10.6
+244921  The xml report of helgrind tool is not well format
+244923  In the xml report file, the <preamble> not escape the 
+        xml char, eg '<','&','>'
+245535  print full path names in plain text reports 
+245925  x86-64 red zone handling problem 
+246258  Valgrind not catching integer underruns + new [] s
+246311  reg/reg cmpxchg doesn't work on amd64
+246549  unhandled syscall unix:277 while testing 32-bit Darwin app 
+246888  Improve Makefile.vex.am 
+247510  [OS X 10.6] Memcheck reports unaddressable bytes passed 
+        to [f]chmod_extended
+247526  IBM POWER6 (ISA 2.05) support is incomplete
+247561  Some leak testcases fails due to reachable addresses in
+        caller save regs
+247875  sizeofIRType to handle Ity_I128 
+247894  [PATCH] unhandled syscall sys_readahead 
+247980  Doesn't honor CFLAGS passed to configure 
+248373  darwin10.supp is empty in the trunk 
+248822  Linux FIBMAP ioctl has int parameter instead of long
+248893  [PATCH] make readdwarf.c big endianess safe to enable
+        unwinding on big endian systems
+249224  Syscall 336 not supported (SYS_proc_info) 
+249359  == 245535
+249775  Incorrect scheme for detecting NEON capabilities of host CPU
+249943  jni JVM init fails when using valgrind
+249991  Valgrind incorrectly declares AESKEYGENASSIST support
+        since VEX r2011
+249996  linux/arm: unhandled syscall: 181 (__NR_pwrite64)
+250799  frexp$fenv_access_off function generates SIGILL 
+250998  vex x86->IR: unhandled instruction bytes: 0x66 0x66 0x66 0x2E 
+251251  support pclmulqdq insn 
+251362  valgrind: ARM: attach to debugger either fails or provokes
+        kernel oops 
+251674  Unhandled syscall 294
+251818  == 254550
+
+254257  Add support for debugfiles found by build-id
+254550  [PATCH] Implement DW_ATE_UTF (DWARF4)
+254646  Wrapped functions cause stack misalignment on OS X
+        (and possibly Linux)
+254556  ARM: valgrinding anything fails with SIGSEGV for 0xFFFF0FA0
+
+(3.6.0: 21 October 2010, vex r2068, valgrind r11471).
+
+
+
+Release 3.5.0 (19 August 2009)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.5.0 is a feature release with many significant improvements and the
+usual collection of bug fixes.  The main improvement is that Valgrind
+now works on Mac OS X.
+
+This release supports X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux
+and X86/Darwin.  Support for recent distros and toolchain components
+(glibc 2.10, gcc 4.5) has been added.
+
+                    -------------------------
+
+Here is a short summary of the changes.  Details are shown further
+down:
+
+* Support for Mac OS X (10.5.x).
+
+* Improvements and simplifications to Memcheck's leak checker.
+
+* Clarification and simplifications in various aspects of Valgrind's
+  text output.
+
+* XML output for Helgrind and Ptrcheck.
+
+* Performance and stability improvements for Helgrind and DRD.
+
+* Genuinely atomic support for x86/amd64/ppc atomic instructions.
+
+* A new experimental tool, BBV, useful for computer architecture
+  research.
+
+* Improved Wine support, including ability to read Windows PDB
+  debuginfo.
+
+                    -------------------------
+
+Here are details of the above changes, followed by descriptions of
+many other minor changes, and a list of fixed bugs.
+
+
+* Valgrind now runs on Mac OS X.  (Note that Mac OS X is sometimes
+  called "Darwin" because that is the name of the OS core, which is the
+  level that Valgrind works at.)
+
+  Supported systems:
+
+  - It requires OS 10.5.x (Leopard).  Porting to 10.4.x is not planned
+    because it would require work and 10.4 is only becoming less common.
+
+  - 32-bit programs on x86 and AMD64 (a.k.a x86-64) machines are supported
+    fairly well.  For 10.5.x, 32-bit programs are the default even on
+    64-bit machines, so it handles most current programs.
+    
+  - 64-bit programs on x86 and AMD64 (a.k.a x86-64) machines are not
+    officially supported, but simple programs at least will probably work.
+    However, start-up is slow.
+
+  - PowerPC machines are not supported.
+
+  Things that don't work:
+
+  - The Ptrcheck tool.
+
+  - Objective-C garbage collection.
+
+  - --db-attach=yes.
+
+  - If you have Rogue Amoeba's "Instant Hijack" program installed,
+    Valgrind will fail with a SIGTRAP at start-up.  See
+    https://bugs.kde.org/show_bug.cgi?id=193917 for details and a
+    simple work-around.
+
+  Usage notes:
+
+  - You will likely find --dsymutil=yes a useful option, as error
+    messages may be imprecise without it.
+
+  - Mac OS X support is new and therefore will be less robust than the
+    Linux support.  Please report any bugs you find.
+
+  - Threaded programs may run more slowly than on Linux.
+
+  Many thanks to Greg Parker for developing this port over several years.
+
+
+* Memcheck's leak checker has been improved.  
+
+  - The results for --leak-check=summary now match the summary results
+    for --leak-check=full.  Previously they could differ because
+    --leak-check=summary counted "indirectly lost" blocks and
+    "suppressed" blocks as "definitely lost".
+
+  - Blocks that are only reachable via at least one interior-pointer,
+    but are directly pointed to by a start-pointer, were previously
+    marked as "still reachable".  They are now correctly marked as
+    "possibly lost".
+
+  - The default value for the --leak-resolution option has been
+    changed from "low" to "high".  In general, this means that more
+    leak reports will be produced, but each leak report will describe
+    fewer leaked blocks.
+
+  - With --leak-check=full, "definitely lost" and "possibly lost"
+    leaks are now considered as proper errors, ie. they are counted
+    for the "ERROR SUMMARY" and affect the behaviour of
+    --error-exitcode.  These leaks are not counted as errors if
+    --leak-check=summary is specified, however.
+
+  - Documentation for the leak checker has been improved.
+
+
+* Various aspects of Valgrind's text output have changed.
+
+  - Valgrind's start-up message has changed.  It is shorter but also
+    includes the command being run, which makes it easier to use
+    --trace-children=yes.  An example:
+
+  - Valgrind's shut-down messages have also changed.  This is most
+    noticeable with Memcheck, where the leak summary now occurs before
+    the error summary.  This change was necessary to allow leaks to be
+    counted as proper errors (see the description of the leak checker
+    changes above for more details).  This was also necessary to fix a
+    longstanding bug in which uses of suppressions against leaks were
+    not "counted", leading to difficulties in maintaining suppression
+    files (see https://bugs.kde.org/show_bug.cgi?id=186790).
+
+  - Behavior of -v has changed.  In previous versions, -v printed out
+    a mixture of marginally-user-useful information, and tool/core
+    statistics.  The statistics printing has now been moved to its own
+    flag, --stats=yes.  This means -v is less verbose and more likely
+    to convey useful end-user information.
+
+  - The format of some (non-XML) stack trace entries has changed a
+    little.  Previously there were six possible forms:
+
+      0x80483BF: really (a.c:20)
+      0x80483BF: really (in /foo/a.out)
+      0x80483BF: really
+      0x80483BF: (within /foo/a.out)
+      0x80483BF: ??? (a.c:20)
+      0x80483BF: ???
+
+    The third and fourth of these forms have been made more consistent
+    with the others.  The six possible forms are now:
+  
+      0x80483BF: really (a.c:20)
+      0x80483BF: really (in /foo/a.out)
+      0x80483BF: really (in ???)
+      0x80483BF: ??? (in /foo/a.out)
+      0x80483BF: ??? (a.c:20)
+      0x80483BF: ???
+
+    Stack traces produced when --xml=yes is specified are different
+    and unchanged.
+
+
+* Helgrind and Ptrcheck now support XML output, so they can be used
+  from GUI tools.  Also, the XML output mechanism has been
+  overhauled.
+
+  - The XML format has been overhauled and generalised, so it is more
+    suitable for error reporting tools in general.  The Memcheck
+    specific aspects of it have been removed.  The new format, which
+    is an evolution of the old format, is described in
+    docs/internals/xml-output-protocol4.txt.
+
+  - Memcheck has been updated to use the new format.
+
+  - Helgrind and Ptrcheck are now able to emit output in this format.
+
+  - The XML output mechanism has been overhauled.  XML is now output
+    to its own file descriptor, which means that:
+
+    * Valgrind can output text and XML independently.
+
+    * The longstanding problem of XML output being corrupted by 
+      unexpected un-tagged text messages  is solved.
+
+    As before, the destination for text output is specified using
+    --log-file=, --log-fd= or --log-socket=.
+
+    As before, XML output for a tool is enabled using --xml=yes.
+
+    Because there's a new XML output channel, the XML output
+    destination is now specified by --xml-file=, --xml-fd= or
+    --xml-socket=.
+
+    Initial feedback has shown this causes some confusion.  To
+    clarify, the two envisaged usage scenarios are:
+
+    (1) Normal text output.  In this case, do not specify --xml=yes
+        nor any of --xml-file=, --xml-fd= or --xml-socket=.
+
+    (2) XML output.  In this case, specify --xml=yes, and one of
+        --xml-file=, --xml-fd= or --xml-socket= to select the XML
+        destination, one of --log-file=, --log-fd= or --log-socket=
+        to select the destination for any remaining text messages,
+        and, importantly, -q.
+
+        -q makes Valgrind completely silent on the text channel,
+        except in the case of critical failures, such as Valgrind
+        itself segfaulting, or failing to read debugging information.
+        Hence, in this scenario, it suffices to check whether or not
+        any output appeared on the text channel.  If yes, then it is
+        likely to be a critical error which should be brought to the
+        attention of the user.  If no (the text channel produced no
+        output) then it can be assumed that the run was successful.
+
+        This allows GUIs to make the critical distinction they need to
+        make (did the run fail or not?) without having to search or
+        filter the text output channel in any way.
+
+    It is also recommended to use --child-silent-after-fork=yes in
+    scenario (2).
+
+
+* Improvements and changes in Helgrind:
+
+  - XML output, as described above
+
+  - Checks for consistent association between pthread condition
+    variables and their associated mutexes are now performed.
+
+  - pthread_spinlock functions are supported.
+
+  - Modest performance improvements.
+
+  - Initial (skeletal) support for describing the behaviour of
+    non-POSIX synchronisation objects through ThreadSanitizer
+    compatible ANNOTATE_* macros.
+
+  - More controllable tradeoffs between performance and the level of
+    detail of "previous" accesses in a race.  There are now three
+    settings:
+
+    * --history-level=full.  This is the default, and was also the
+      default in 3.4.x.  It shows both stacks involved in a race, but
+      requires a lot of memory and can be very slow in programs that
+      do many inter-thread synchronisation events.
+
+    * --history-level=none.  This only shows the later stack involved
+      in a race.  This can be much faster than --history-level=full,
+      but makes it much more difficult to find the other access
+      involved in the race.
+
+    The new intermediate setting is
+
+    * --history-level=approx
+
+      For the earlier (other) access, two stacks are presented.  The
+      earlier access is guaranteed to be somewhere in between the two
+      program points denoted by those stacks.  This is not as useful
+      as showing the exact stack for the previous access (as per
+      --history-level=full), but it is better than nothing, and it's
+      almost as fast as --history-level=none.
+
+
+* New features and improvements in DRD:
+
+  - The error messages printed by DRD are now easier to interpret.
+    Instead of using two different numbers to identify each thread
+    (Valgrind thread ID and DRD thread ID), DRD does now identify
+    threads via a single number (the DRD thread ID).  Furthermore
+    "first observed at" information is now printed for all error
+    messages related to synchronization objects.
+
+  - Added support for named semaphores (sem_open() and sem_close()).
+
+  - Race conditions between pthread_barrier_wait() and
+    pthread_barrier_destroy() calls are now reported.
+
+  - Added support for custom allocators through the macros
+    VALGRIND_MALLOCLIKE_BLOCK() VALGRIND_FREELIKE_BLOCK() (defined in
+    in <valgrind/valgrind.h>). An alternative for these two macros is
+    the new client request VG_USERREQ__DRD_CLEAN_MEMORY (defined in
+    <valgrind/drd.h>).
+
+  - Added support for annotating non-POSIX synchronization objects
+    through several new ANNOTATE_*() macros.
+
+  - OpenMP: added support for the OpenMP runtime (libgomp) included
+    with gcc versions 4.3.0 and 4.4.0.
+
+  - Faster operation.
+
+  - Added two new command-line options (--first-race-only and
+    --segment-merging-interval).
+
+
+* Genuinely atomic support for x86/amd64/ppc atomic instructions
+
+  Valgrind will now preserve (memory-access) atomicity of LOCK-
+  prefixed x86/amd64 instructions, and any others implying a global
+  bus lock.  Ditto for PowerPC l{w,d}arx/st{w,d}cx. instructions.
+
+  This means that Valgrinded processes will "play nicely" in
+  situations where communication with other processes, or the kernel,
+  is done through shared memory and coordinated with such atomic
+  instructions.  Prior to this change, such arrangements usually
+  resulted in hangs, races or other synchronisation failures, because
+  Valgrind did not honour atomicity of such instructions.
+
+
+* A new experimental tool, BBV, has been added.  BBV generates basic
+  block vectors for use with the SimPoint analysis tool, which allows
+  a program's overall behaviour to be approximated by running only a
+  fraction of it.  This is useful for computer architecture
+  researchers.  You can run BBV by specifying --tool=exp-bbv (the
+  "exp-" prefix is short for "experimental").  BBV was written by
+  Vince Weaver.
+
+
+* Modestly improved support for running Windows applications under
+  Wine.  In particular, initial support for reading Windows .PDB debug
+  information has been added.
+
+
+* A new Memcheck client request VALGRIND_COUNT_LEAK_BLOCKS has been
+  added.  It is similar to VALGRIND_COUNT_LEAKS but counts blocks
+  instead of bytes.
+
+
+* The Valgrind client requests VALGRIND_PRINTF and
+  VALGRIND_PRINTF_BACKTRACE have been changed slightly.  Previously,
+  the string was always printed immediately on its own line.  Now, the
+  string will be added to a buffer but not printed until a newline is
+  encountered, or other Valgrind output is printed (note that for
+  VALGRIND_PRINTF_BACKTRACE, the back-trace itself is considered
+  "other Valgrind output").  This allows you to use multiple
+  VALGRIND_PRINTF calls to build up a single output line, and also to
+  print multiple output lines with a single request (by embedding
+  multiple newlines in the string).
+
+
+* The graphs drawn by Massif's ms_print program have changed slightly:
+
+  - The half-height chars '.' and ',' are no longer drawn, because
+    they are confusing.  The --y option can be used if the default
+    y-resolution is not high enough.
+
+  - Horizontal lines are now drawn after the top of a snapshot if
+    there is a gap until the next snapshot.  This makes it clear that
+    the memory usage has not dropped to zero between snapshots.
+
+
+* Something that happened in 3.4.0, but wasn't clearly announced: the
+  option --read-var-info=yes can be used by some tools (Memcheck,
+  Helgrind and DRD).  When enabled, it causes Valgrind to read DWARF3
+  variable type and location information.  This makes those tools
+  start up more slowly and increases memory consumption, but
+  descriptions of data addresses in error messages become more
+  detailed.
+
+
+* exp-Omega, an experimental instantaneous leak-detecting tool, was
+  disabled in 3.4.0 due to a lack of interest and maintenance,
+  although the source code was still in the distribution.  The source
+  code has now been removed from the distribution.  For anyone
+  interested, the removal occurred in SVN revision r10247.
+
+
+* Some changes have been made to the build system.
+
+  - VEX/ is now integrated properly into the build system.  This means
+    that dependency tracking within VEX/ now works properly, "make
+    install" will work without requiring "make" before it, and
+    parallel builds (ie. 'make -j') now work (previously a
+    .NOTPARALLEL directive was used to serialize builds, ie. 'make -j'
+    was effectively ignored).
+
+  - The --with-vex configure option has been removed.  It was of
+    little use and removing it simplified the build system.
+
+  - The location of some install files has changed.  This should not
+    affect most users.  Those who might be affected:
+
+    * For people who use Valgrind with MPI programs, the installed
+      libmpiwrap.so library has moved from
+      $(INSTALL)/<platform>/libmpiwrap.so to
+      $(INSTALL)/libmpiwrap-<platform>.so.
+
+    * For people who distribute standalone Valgrind tools, the
+      installed libraries such as $(INSTALL)/<platform>/libcoregrind.a
+      have moved to $(INSTALL)/libcoregrind-<platform>.a.
+
+    These changes simplify the build system.
+
+  - Previously, all the distributed suppression (*.supp) files were
+    installed.  Now, only default.supp is installed.  This should not
+    affect users as the other installed suppression files were not
+    read; the fact that they were installed was a mistake.
+
+
+* KNOWN LIMITATIONS:
+
+  - Memcheck is unusable with the Intel compiler suite version 11.1,
+    when it generates code for SSE2-and-above capable targets.  This
+    is because of icc's use of highly optimised inlined strlen
+    implementations.  It causes Memcheck to report huge numbers of
+    false errors even in simple programs.  Helgrind and DRD may also
+    have problems.
+
+    Versions 11.0 and earlier may be OK, but this has not been
+    properly tested.
+
+
+The following bugs have been fixed or resolved.  Note that "n-i-bz"
+stands for "not in bugzilla" -- that is, a bug that was reported to us
+but never got a bugzilla entry.  We encourage you to file bugs in
+bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
+mailing the developers (or mailing lists) directly -- bugs that are
+not entered into bugzilla tend to get forgotten about or ignored.
+
+To see details of a given bug, visit
+https://bugs.kde.org/show_bug.cgi?id=XXXXXX
+where XXXXXX is the bug number as listed below.
+
+84303   How about a LockCheck tool? 
+91633   dereference of null ptr in vgPlain_st_basetype 
+97452   Valgrind doesn't report any pthreads problems 
+100628  leak-check gets assertion failure when using 
+        VALGRIND_MALLOCLIKE_BLOCK on malloc()ed memory 
+108528  NPTL pthread cleanup handlers not called 
+110126  Valgrind 2.4.1 configure.in tramples CFLAGS 
+110128  mallinfo is not implemented... 
+110770  VEX: Generated files not always updated when making valgrind
+111102  Memcheck: problems with large (memory footprint) applications 
+115673  Vex's decoder should never assert 
+117564  False positive: Syscall param clone(child_tidptr) contains
+        uninitialised byte(s) 
+119404  executing ssh from inside valgrind fails 
+133679  Callgrind does not write path names to sources with dwarf debug
+        info
+135847  configure.in problem with non gnu compilers (and possible fix) 
+136154  threads.c:273 (vgCallgrind_post_signal): Assertion
+        '*(vgCallgrind_current_fn_stack.top) == 0' failed. 
+136230  memcheck reports "possibly lost", should be "still reachable" 
+137073  NULL arg to MALLOCLIKE_BLOCK causes crash 
+137904  Valgrind reports a memory leak when using POSIX threads,
+        while it shouldn't 
+139076  valgrind VT_GETSTATE error 
+142228  complaint of elf_dynamic_do_rela in trivial usage 
+145347  spurious warning with USBDEVFS_REAPURB 
+148441  (wine) can't find memory leak in Wine, win32 binary 
+        executable file.
+148742  Leak-check fails assert on exit 
+149878  add (proper) check for calloc integer overflow 
+150606  Call graph is broken when using callgrind control 
+152393  leak errors produce an exit code of 0. I need some way to 
+        cause leak errors to result in a nonzero exit code. 
+157154  documentation (leak-resolution doc speaks about num-callers
+        def=4) + what is a loss record
+159501  incorrect handling of ALSA ioctls 
+162020  Valgrinding an empty/zero-byte file crashes valgrind 
+162482  ppc: Valgrind crashes while reading stabs information 
+162718  x86: avoid segment selector 0 in sys_set_thread_area() 
+163253  (wine) canonicaliseSymtab forgot some fields in DiSym 
+163560  VEX/test_main.c is missing from valgrind-3.3.1 
+164353  malloc_usable_size() doesn't return a usable size 
+165468  Inconsistent formatting in memcheck manual -- please fix 
+169505  main.c:286 (endOfInstr):
+        Assertion 'ii->cost_offset == *cost_offset' failed 
+177206  Generate default.supp during compile instead of configure
+177209  Configure valt_load_address based on arch+os 
+177305  eventfd / syscall 323 patch lost
+179731  Tests fail to build because of inlining of non-local asm labels
+181394  helgrind: libhb_core.c:3762 (msm_write): Assertion 
+        'ordxx == POrd_EQ || ordxx == POrd_LT' failed. 
+181594  Bogus warning for empty text segment 
+181707  dwarf doesn't require enumerations to have name 
+185038  exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64 
+185050  exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
+        Assertion '!already_present' failed.
+185359  exp-ptrcheck: unhandled syscall getresuid()
+185794  "WARNING: unhandled syscall: 285" (fallocate) on x86_64
+185816  Valgrind is unable to handle debug info for files with split
+        debug info that are prelinked afterwards 
+185980  [darwin] unhandled syscall: sem_open 
+186238  bbToIR_AMD64: disInstr miscalculated next %rip
+186507  exp-ptrcheck unhandled syscalls prctl, etc. 
+186790  Suppression pattern used for leaks are not reported 
+186796  Symbols with length>200 in suppression files are ignored 
+187048  drd: mutex PTHREAD_PROCESS_SHARED attribute missinterpretation
+187416  exp-ptrcheck: support for __NR_{setregid,setreuid,setresuid}
+188038  helgrind: hg_main.c:926: mk_SHVAL_fail: the 'impossible' happened
+188046  bashisms in the configure script
+188127  amd64->IR: unhandled instruction bytes: 0xF0 0xF 0xB0 0xA
+188161  memcheck: --track-origins=yes asserts "mc_machine.c:672
+        (get_otrack_shadow_offset_wrk): the 'impossible' happened."
+188248  helgrind: pthread_cleanup_push, pthread_rwlock_unlock, 
+        assertion fail "!lock->heldBy" 
+188427  Add support for epoll_create1 (with patch) 
+188530  Support for SIOCGSTAMPNS
+188560  Include valgrind.spec in the tarball
+188572  Valgrind on Mac should suppress setenv() mem leak 
+189054  Valgrind fails to build because of duplicate non-local asm labels 
+189737  vex amd64->IR: unhandled instruction bytes: 0xAC
+189762  epoll_create syscall not handled (--tool=exp-ptrcheck)
+189763  drd assertion failure: s_threadinfo[tid].is_recording 
+190219  unhandled syscall: 328 (x86-linux)
+190391  dup of 181394; see above
+190429  Valgrind reports lots of errors in ld.so with x86_64 2.9.90 glibc 
+190820  No debug information on powerpc-linux
+191095  PATCH: Improve usbdevfs ioctl handling 
+191182  memcheck: VALGRIND_LEAK_CHECK quadratic when big nr of chunks
+        or big nr of errors
+191189  --xml=yes should obey --gen-suppressions=all 
+191192  syslog() needs a suppression on macosx 
+191271  DARWIN: WARNING: unhandled syscall: 33554697 a.k.a.: 265 
+191761  getrlimit on MacOSX 
+191992  multiple --fn-skip only works sometimes; dependent on order 
+192634  V. reports "aspacem sync_check_mapping_callback: 
+        segment mismatch" on Darwin
+192954  __extension__ missing on 2 client requests 
+194429  Crash at start-up with glibc-2.10.1 and linux-2.6.29 
+194474  "INSTALL" file has different build instructions than "README"
+194671  Unhandled syscall (sem_wait?) from mac valgrind 
+195069  memcheck: reports leak (memory still reachable) for 
+        printf("%d', x) 
+195169  drd: (vgDrd_barrier_post_wait):
+        Assertion 'r->sg[p->post_iteration]' failed. 
+195268  valgrind --log-file doesn't accept ~/...
+195838  VEX abort: LibVEX_N_SPILL_BYTES too small for CPUID boilerplate 
+195860  WARNING: unhandled syscall: unix:223 
+196528  need a error suppression for pthread_rwlock_init under os x? 
+197227  Support aio_* syscalls on Darwin
+197456  valgrind should reject --suppressions=(directory) 
+197512  DWARF2 CFI reader: unhandled CFI instruction 0:10 
+197591  unhandled syscall 27 (mincore) 
+197793  Merge DCAS branch to the trunk == 85756, 142103
+197794  Avoid duplicate filenames in Vex 
+197898  make check fails on current SVN 
+197901  make check fails also under exp-ptrcheck in current SVN 
+197929  Make --leak-resolution=high the default 
+197930  Reduce spacing between leak reports 
+197933  Print command line of client at start-up, and shorten preamble 
+197966  unhandled syscall 205 (x86-linux, --tool=exp-ptrcheck)
+198395  add BBV to the distribution as an experimental tool 
+198624  Missing syscalls on Darwin: 82, 167, 281, 347 
+198649  callgrind_annotate doesn't cumulate counters 
+199338  callgrind_annotate sorting/thresholds are broken for all but Ir 
+199977  Valgrind complains about an unrecognized instruction in the
+        atomic_incs test program
+200029  valgrind isn't able to read Fedora 12 debuginfo 
+200760  darwin unhandled syscall: unix:284 
+200827  DRD doesn't work on Mac OS X 
+200990  VG_(read_millisecond_timer)() does not work correctly 
+201016  Valgrind does not support pthread_kill() on Mac OS 
+201169  Document --read-var-info
+201323  Pre-3.5.0 performance sanity checking 
+201384  Review user manual for the 3.5.0 release 
+201585  mfpvr not implemented on ppc 
+201708  tests failing because x86 direction flag is left set 
+201757  Valgrind doesn't handle any recent sys_futex additions 
+204377  64-bit valgrind can not start a shell script
+        (with #!/path/to/shell) if the shell is a 32-bit executable
+n-i-bz  drd: fixed assertion failure triggered by mutex reinitialization.
+n-i-bz  drd: fixed a bug that caused incorrect messages to be printed
+        about memory allocation events with memory access tracing enabled
+n-i-bz  drd: fixed a memory leak triggered by vector clock deallocation
+
+(3.5.0: 19 Aug 2009, vex r1913, valgrind r10846).
+
+
+
+Release 3.4.1 (28 February 2009)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.4.1 is a bug-fix release that fixes some regressions and assertion
+failures in debug info reading in 3.4.0, most notably incorrect stack
+traces on amd64-linux on older (glibc-2.3 based) systems. Various
+other debug info problems are also fixed.  A number of bugs in the
+exp-ptrcheck tool introduced in 3.4.0 have been fixed.
+
+In view of the fact that 3.4.0 contains user-visible regressions
+relative to 3.3.x, upgrading to 3.4.1 is recommended.  Packagers are
+encouraged to ship 3.4.1 in preference to 3.4.0.
+
+The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
+bugzilla" -- that is, a bug that was reported to us but never got a
+bugzilla entry.  We encourage you to file bugs in bugzilla
+(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
+developers (or mailing lists) directly -- bugs that are not entered
+into bugzilla tend to get forgotten about or ignored.
+
+n-i-bz  Fix various bugs reading icc-11 generated debug info
+n-i-bz  Fix various bugs reading gcc-4.4 generated debug info
+n-i-bz  Preliminary support for glibc-2.10 / Fedora 11
+n-i-bz  Cachegrind and Callgrind: handle non-power-of-two cache sizes,
+        so as to support (eg) 24k Atom D1 and Core2 with 3/6/12MB L2.
+179618  exp-ptrcheck crashed / exit prematurely
+179624  helgrind: false positive races with pthread_create and
+        recv/open/close/read
+134207  pkg-config output contains @VG_PLATFORM@
+176926  floating point exception at valgrind startup with PPC 440EPX
+181594  Bogus warning for empty text segment
+173751  amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant rex prefixes)
+181707  Dwarf3 doesn't require enumerations to have name
+185038  exp-ptrcheck: "unhandled syscall: 285" (fallocate) on x86_64
+185050  exp-ptrcheck: sg_main.c:727 (add_block_to_GlobalTree):
+        Assertion '!already_present' failed.
+185359  exp-ptrcheck unhandled syscall getresuid()
+
+(3.4.1.RC1:  24 Feb 2008, vex r1884, valgrind r9253).
+(3.4.1:      28 Feb 2008, vex r1884, valgrind r9293).
+
+
+
+Release 3.4.0 (2 January 2009)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.4.0 is a feature release with many significant improvements and the
+usual collection of bug fixes.  This release supports X86/Linux,
+AMD64/Linux, PPC32/Linux and PPC64/Linux.  Support for recent distros
+(using gcc 4.4, glibc 2.8 and 2.9) has been added.
+
+3.4.0 brings some significant tool improvements.  Memcheck can now
+report the origin of uninitialised values, the thread checkers
+Helgrind and DRD are much improved, and we have a new experimental
+tool, exp-Ptrcheck, which is able to detect overruns of stack and
+global arrays.  In detail:
+
+* Memcheck is now able to track the origin of uninitialised values.
+  When it reports an uninitialised value error, it will try to show
+  the origin of the value, as either a heap or stack allocation.
+  Origin tracking is expensive and so is not enabled by default.  To
+  use it, specify --track-origins=yes.  Memcheck's speed will be
+  essentially halved, and memory usage will be significantly
+  increased.  Nevertheless it can drastically reduce the effort
+  required to identify the root cause of uninitialised value errors,
+  and so is often a programmer productivity win, despite running more
+  slowly.
+
+* A version (1.4.0) of the Valkyrie GUI, that works with Memcheck in
+  3.4.0, will be released shortly.
+
+* Helgrind's race detection algorithm has been completely redesigned
+  and reimplemented, to address usability and scalability concerns:
+
+  - The new algorithm has a lower false-error rate: it is much less
+    likely to report races that do not really exist.
+
+  - Helgrind will display full call stacks for both accesses involved
+    in a race.  This makes it easier to identify the root causes of
+    races.
+
+  - Limitations on the size of program that can run have been removed.
+
+  - Performance has been modestly improved, although that is very
+    workload-dependent.
+
+  - Direct support for Qt4 threading has been added.
+
+  - pthread_barriers are now directly supported.
+
+  - Helgrind works well on all supported Linux targets.
+
+* The DRD thread debugging tool has seen major improvements:
+
+  - Greatly improved performance and significantly reduced memory
+    usage.
+
+  - Support for several major threading libraries (Boost.Thread, Qt4,
+    glib, OpenMP) has been added.
+
+  - Support for atomic instructions, POSIX semaphores, barriers and
+    reader-writer locks has been added.
+
+  - Works now on PowerPC CPUs too.
+
+  - Added support for printing thread stack usage at thread exit time.
+
+  - Added support for debugging lock contention.
+
+  - Added a manual for Drd.
+
+* A new experimental tool, exp-Ptrcheck, has been added.  Ptrcheck
+  checks for misuses of pointers.  In that sense it is a bit like
+  Memcheck.  However, Ptrcheck can do things Memcheck can't: it can
+  detect overruns of stack and global arrays, it can detect
+  arbitrarily far out-of-bounds accesses to heap blocks, and it can
+  detect accesses heap blocks that have been freed a very long time
+  ago (millions of blocks in the past).
+
+  Ptrcheck currently works only on x86-linux and amd64-linux.  To use
+  it, use --tool=exp-ptrcheck.  A simple manual is provided, as part
+  of the main Valgrind documentation.  As this is an experimental
+  tool, we would be particularly interested in hearing about your
+  experiences with it.
+
+* exp-Omega, an experimental instantaneous leak-detecting tool, is no
+  longer built by default, although the code remains in the repository
+  and the tarball.  This is due to three factors: a perceived lack of
+  users, a lack of maintenance, and concerns that it may not be
+  possible to achieve reliable operation using the existing design.
+
+* As usual, support for the latest Linux distros and toolchain
+  components has been added.  It should work well on Fedora Core 10,
+  OpenSUSE 11.1 and Ubuntu 8.10.  gcc-4.4 (in its current pre-release
+  state) is supported, as is glibc-2.9.  The C++ demangler has been
+  updated so as to work well with C++ compiled by even the most recent
+  g++'s.
+
+* You can now use frame-level wildcards in suppressions.  This was a
+  frequently-requested enhancement.  A line "..." in a suppression now
+  matches zero or more frames.  This makes it easier to write
+  suppressions which are precise yet insensitive to changes in
+  inlining behaviour.
+
+* 3.4.0 adds support on x86/amd64 for the SSSE3 instruction set.
+
+* Very basic support for IBM Power6 has been added (64-bit processes only).
+
+* Valgrind is now cross-compilable.  For example, it is possible to
+  cross compile Valgrind on an x86/amd64-linux host, so that it runs
+  on a ppc32/64-linux target.
+
+* You can set the main thread's stack size at startup using the
+  new --main-stacksize= flag (subject of course to ulimit settings).
+  This is useful for running apps that need a lot of stack space.
+
+* The limitation that you can't use --trace-children=yes together
+  with --db-attach=yes has been removed.
+
+* The following bugs have been fixed.  Note that "n-i-bz" stands for
+  "not in bugzilla" -- that is, a bug that was reported to us but
+  never got a bugzilla entry.  We encourage you to file bugs in
+  bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
+  mailing the developers (or mailing lists) directly.
+
+  n-i-bz  Make return types for some client requests 64-bit clean
+  n-i-bz  glibc 2.9 support
+  n-i-bz  ignore unsafe .valgrindrc's (CVE-2008-4865)
+  n-i-bz  MPI_Init(0,0) is valid but libmpiwrap.c segfaults
+  n-i-bz  Building in an env without gdb gives bogus gdb attach
+  92456   Tracing the origin of uninitialised memory
+  106497  Valgrind does not demangle some C++ template symbols
+  162222  ==106497
+  151612  Suppression with "..." (frame-level wildcards in .supp files)
+  156404  Unable to start oocalc under memcheck on openSUSE 10.3 (64-bit)
+  159285  unhandled syscall:25 (stime, on x86-linux)
+  159452  unhandled ioctl 0x8B01 on "valgrind iwconfig"
+  160954  ppc build of valgrind crashes with illegal instruction (isel)
+  160956  mallinfo implementation, w/ patch
+  162092  Valgrind fails to start gnome-system-monitor
+  162819  malloc_free_fill test doesn't pass on glibc2.8 x86
+  163794  assertion failure with "--track-origins=yes"
+  163933  sigcontext.err and .trapno must be set together
+  163955  remove constraint !(--db-attach=yes && --trace-children=yes)
+  164476  Missing kernel module loading system calls
+  164669  SVN regression: mmap() drops posix file locks
+  166581  Callgrind output corruption when program forks
+  167288  Patch file for missing system calls on Cell BE
+  168943  unsupported scas instruction pentium
+  171645  Unrecognised instruction (MOVSD, non-binutils encoding)
+  172417  x86->IR: 0x82 ...
+  172563  amd64->IR: 0xD9 0xF5  -  fprem1
+  173099  .lds linker script generation error
+  173177  [x86_64] syscalls: 125/126/179 (capget/capset/quotactl)
+  173751  amd64->IR: 0x48 0xF 0x6F 0x45 (even more redundant prefixes)
+  174532  == 173751
+  174908  --log-file value not expanded correctly for core file
+  175044  Add lookup_dcookie for amd64
+  175150  x86->IR: 0xF2 0xF 0x11 0xC1 (movss non-binutils encoding)
+
+Developer-visible changes:
+
+* Valgrind's debug-info reading machinery has been majorly overhauled.
+  It can now correctly establish the addresses for ELF data symbols,
+  which is something that has never worked properly before now.
+
+  Also, Valgrind can now read DWARF3 type and location information for
+  stack and global variables.  This makes it possible to use the
+  framework to build tools that rely on knowing the type and locations
+  of stack and global variables, for example exp-Ptrcheck.
+
+  Reading of such information is disabled by default, because most
+  tools don't need it, and because it is expensive in space and time.
+  However, you can force Valgrind to read it, using the
+  --read-var-info=yes flag.  Memcheck, Helgrind and DRD are able to
+  make use of such information, if present, to provide source-level
+  descriptions of data addresses in the error messages they create.
+
+(3.4.0.RC1:  24 Dec 2008, vex r1878, valgrind r8882).
+(3.4.0:       3 Jan 2009, vex r1878, valgrind r8899).
+
+
+
+Release 3.3.1 (4 June 2008)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based
+systems (openSUSE 11, Fedora Core 9), improves the existing glibc-2.7
+support, and adds support for the SSSE3 (Core 2) instruction set.
+
+3.3.1 will likely be the last release that supports some very old
+systems.  In particular, the next major release, 3.4.0, will drop
+support for the old LinuxThreads threading library, and for gcc
+versions prior to 3.0.
+
+The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
+bugzilla" -- that is, a bug that was reported to us but never got a
+bugzilla entry.  We encourage you to file bugs in bugzilla
+(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
+developers (or mailing lists) directly -- bugs that are not entered
+into bugzilla tend to get forgotten about or ignored.
+
+n-i-bz  Massif segfaults at exit
+n-i-bz  Memcheck asserts on Altivec code
+n-i-bz  fix sizeof bug in Helgrind
+n-i-bz  check fd on sys_llseek
+n-i-bz  update syscall lists to kernel 2.6.23.1
+n-i-bz  support sys_sync_file_range
+n-i-bz  handle sys_sysinfo, sys_getresuid, sys_getresgid on ppc64-linux
+n-i-bz  intercept memcpy in 64-bit ld.so's
+n-i-bz  Fix wrappers for sys_{futimesat,utimensat}
+n-i-bz  Minor false-error avoidance fixes for Memcheck
+n-i-bz  libmpiwrap.c: add a wrapper for MPI_Waitany
+n-i-bz  helgrind support for glibc-2.8
+n-i-bz  partial fix for mc_leakcheck.c:698 assert:
+        'lc_shadows[i]->data + lc_shadows[i] ...
+n-i-bz  Massif/Cachegrind output corruption when programs fork
+n-i-bz  register allocator fix: handle spill stores correctly
+n-i-bz  add support for PA6T PowerPC CPUs
+126389  vex x86->IR: 0xF 0xAE (FXRSTOR)
+158525  ==126389
+152818  vex x86->IR: 0xF3 0xAC (repz lodsb) 
+153196  vex x86->IR: 0xF2 0xA6 (repnz cmpsb) 
+155011  vex x86->IR: 0xCF (iret)
+155091  Warning [...] unhandled DW_OP_ opcode 0x23
+156960  ==155901
+155528  support Core2/SSSE3 insns on x86/amd64
+155929  ms_print fails on massif outputs containing long lines
+157665  valgrind fails on shmdt(0) after shmat to 0
+157748  support x86 PUSHFW/POPFW
+158212  helgrind: handle pthread_rwlock_try{rd,wr}lock.
+158425  sys_poll incorrectly emulated when RES==0
+158744  vex amd64->IR: 0xF0 0x41 0xF 0xC0 (xaddb)
+160907  Support for a couple of recent Linux syscalls
+161285  Patch -- support for eventfd() syscall
+161378  illegal opcode in debug libm (FUCOMPP)
+160136  ==161378
+161487  number of suppressions files is limited to 10
+162386  ms_print typo in milliseconds time unit for massif
+161036  exp-drd: client allocated memory was never freed
+162663  signalfd_wrapper fails on 64bit linux
+
+(3.3.1.RC1:  2 June 2008, vex r1854, valgrind r8169).
+(3.3.1:      4 June 2008, vex r1854, valgrind r8180).
+
+
+
+Release 3.3.0 (7 December 2007)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.3.0 is a feature release with many significant improvements and the
+usual collection of bug fixes.  This release supports X86/Linux,
+AMD64/Linux, PPC32/Linux and PPC64/Linux.  Support for recent distros
+(using gcc 4.3, glibc 2.6 and 2.7) has been added.
+
+The main excitement in 3.3.0 is new and improved tools.  Helgrind
+works again, Massif has been completely overhauled and much improved,
+Cachegrind now does branch-misprediction profiling, and a new category
+of experimental tools has been created, containing two new tools:
+Omega and DRD.  There are many other smaller improvements.  In detail:
+
+- Helgrind has been completely overhauled and works for the first time
+  since Valgrind 2.2.0.  Supported functionality is: detection of
+  misuses of the POSIX PThreads API, detection of potential deadlocks
+  resulting from cyclic lock dependencies, and detection of data
+  races.  Compared to the 2.2.0 Helgrind, the race detection algorithm
+  has some significant improvements aimed at reducing the false error
+  rate.  Handling of various kinds of corner cases has been improved.
+  Efforts have been made to make the error messages easier to
+  understand.  Extensive documentation is provided.
+
+- Massif has been completely overhauled.  Instead of measuring
+  space-time usage -- which wasn't always useful and many people found
+  confusing -- it now measures space usage at various points in the
+  execution, including the point of peak memory allocation.  Its
+  output format has also changed: instead of producing PostScript
+  graphs and HTML text, it produces a single text output (via the new
+  'ms_print' script) that contains both a graph and the old textual
+  information, but in a more compact and readable form.  Finally, the
+  new version should be more reliable than the old one, as it has been
+  tested more thoroughly.
+
+- Cachegrind has been extended to do branch-misprediction profiling.
+  Both conditional and indirect branches are profiled.  The default
+  behaviour of Cachegrind is unchanged.  To use the new functionality,
+  give the option --branch-sim=yes.
+
+- A new category of "experimental tools" has been created.  Such tools
+  may not work as well as the standard tools, but are included because
+  some people will find them useful, and because exposure to a wider
+  user group provides tool authors with more end-user feedback.  These
+  tools have a "exp-" prefix attached to their names to indicate their
+  experimental nature.  Currently there are two experimental tools:
+
+  * exp-Omega: an instantaneous leak detector.  See
+    exp-omega/docs/omega_introduction.txt.
+
+  * exp-DRD: a data race detector based on the happens-before
+    relation.  See exp-drd/docs/README.txt.
+
+- Scalability improvements for very large programs, particularly those
+  which have a million or more malloc'd blocks in use at once.  These
+  improvements mostly affect Memcheck.  Memcheck is also up to 10%
+  faster for all programs, with x86-linux seeing the largest
+  improvement.
+
+- Works well on the latest Linux distros.  Has been tested on Fedora
+  Core 8 (x86, amd64, ppc32, ppc64) and openSUSE 10.3.  glibc 2.6 and
+  2.7 are supported.  gcc-4.3 (in its current pre-release state) is
+  supported.  At the same time, 3.3.0 retains support for older
+  distros.
+
+- The documentation has been modestly reorganised with the aim of
+  making it easier to find information on common-usage scenarios.
+  Some advanced material has been moved into a new chapter in the main
+  manual, so as to unclutter the main flow, and other tidying up has
+  been done.
+
+- There is experimental support for AIX 5.3, both 32-bit and 64-bit
+  processes.  You need to be running a 64-bit kernel to use Valgrind
+  on a 64-bit executable.
+
+- There have been some changes to command line options, which may
+  affect you:
+
+  * --log-file-exactly and 
+    --log-file-qualifier options have been removed.
+
+    To make up for this --log-file option has been made more powerful.
+    It now accepts a %p format specifier, which is replaced with the
+    process ID, and a %q{FOO} format specifier, which is replaced with
+    the contents of the environment variable FOO.
+
+  * --child-silent-after-fork=yes|no [no]
+
+    Causes Valgrind to not show any debugging or logging output for
+    the child process resulting from a fork() call.  This can make the
+    output less confusing (although more misleading) when dealing with
+    processes that create children.
+
+  * --cachegrind-out-file, --callgrind-out-file and --massif-out-file
+
+    These control the names of the output files produced by
+    Cachegrind, Callgrind and Massif.  They accept the same %p and %q
+    format specifiers that --log-file accepts.  --callgrind-out-file
+    replaces Callgrind's old --base option.
+
+  * Cachegrind's 'cg_annotate' script no longer uses the --<pid>
+    option to specify the output file.  Instead, the first non-option
+    argument is taken to be the name of the output file, and any
+    subsequent non-option arguments are taken to be the names of
+    source files to be annotated.
+
+  * Cachegrind and Callgrind now use directory names where possible in
+    their output files.  This means that the -I option to
+    'cg_annotate' and 'callgrind_annotate' should not be needed in
+    most cases.  It also means they can correctly handle the case
+    where two source files in different directories have the same
+    name.
+
+- Memcheck offers a new suppression kind: "Jump".  This is for
+  suppressing jump-to-invalid-address errors.  Previously you had to
+  use an "Addr1" suppression, which didn't make much sense.
+
+- Memcheck has new flags --malloc-fill=<hexnum> and
+  --free-fill=<hexnum> which free malloc'd / free'd areas with the
+  specified byte.  This can help shake out obscure memory corruption
+  problems.  The definedness and addressability of these areas is
+  unchanged -- only the contents are affected.
+
+- The behaviour of Memcheck's client requests VALGRIND_GET_VBITS and
+  VALGRIND_SET_VBITS have changed slightly.  They no longer issue
+  addressability errors -- if either array is partially unaddressable,
+  they just return 3 (as before).  Also, SET_VBITS doesn't report
+  definedness errors if any of the V bits are undefined.
+
+- The following Memcheck client requests have been removed:
+    VALGRIND_MAKE_NOACCESS
+    VALGRIND_MAKE_WRITABLE
+    VALGRIND_MAKE_READABLE
+    VALGRIND_CHECK_WRITABLE
+    VALGRIND_CHECK_READABLE
+    VALGRIND_CHECK_DEFINED
+  They were deprecated in 3.2.0, when equivalent but better-named client
+  requests were added.  See the 3.2.0 release notes for more details.
+
+- The behaviour of the tool Lackey has changed slightly.  First, the output
+  from --trace-mem has been made more compact, to reduce the size of the
+  traces.  Second, a new option --trace-superblocks has been added, which
+  shows the addresses of superblocks (code blocks) as they are executed.
+
+- The following bugs have been fixed.  Note that "n-i-bz" stands for
+  "not in bugzilla" -- that is, a bug that was reported to us but
+  never got a bugzilla entry.  We encourage you to file bugs in
+  bugzilla (http://bugs.kde.org/enter_valgrind_bug.cgi) rather than
+  mailing the developers (or mailing lists) directly.
+
+  n-i-bz  x86_linux_REDIR_FOR_index() broken
+  n-i-bz  guest-amd64/toIR.c:2512 (dis_op2_E_G): Assertion `0' failed.
+  n-i-bz  Support x86 INT insn (INT (0xCD) 0x40 - 0x43)
+  n-i-bz  Add sys_utimensat system call for Linux x86 platform
+   79844  Helgrind complains about race condition which does not exist
+   82871  Massif output function names too short
+   89061  Massif: ms_main.c:485 (get_XCon): Assertion `xpt->max_chi...'
+   92615  Write output from Massif at crash
+   95483  massif feature request: include peak allocation in report
+  112163  MASSIF crashed with signal 7 (SIGBUS) after running 2 days
+  119404  problems running setuid executables (partial fix)
+  121629  add instruction-counting mode for timing
+  127371  java vm giving unhandled instruction bytes: 0x26 0x2E 0x64 0x65
+  129937  ==150380
+  129576  Massif loses track of memory, incorrect graphs
+  132132  massif --format=html output does not do html entity escaping
+  132950  Heap alloc/usage summary
+  133962  unhandled instruction bytes: 0xF2 0x4C 0xF 0x10
+  134990  use -fno-stack-protector if possible
+  136382  ==134990
+  137396  I would really like helgrind to work again...
+  137714  x86/amd64->IR: 0x66 0xF 0xF7 0xC6 (maskmovq, maskmovdq)
+  141631  Massif: percentages don't add up correctly
+  142706  massif numbers don't seem to add up
+  143062  massif crashes on app exit with signal 8 SIGFPE
+  144453  (get_XCon): Assertion 'xpt->max_children != 0' failed.
+  145559  valgrind aborts when malloc_stats is called
+  145609  valgrind aborts all runs with 'repeated section!'
+  145622  --db-attach broken again on x86-64
+  145837  ==149519
+  145887  PPC32: getitimer() system call is not supported
+  146252  ==150678
+  146456  (update_XCon): Assertion 'xpt->curr_space >= -space_delta'...
+  146701  ==134990
+  146781  Adding support for private futexes
+  147325  valgrind internal error on syscall (SYS_io_destroy, 0)
+  147498  amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi))
+  147545  Memcheck: mc_main.c:817 (get_sec_vbits8): Assertion 'n' failed.
+  147628  SALC opcode 0xd6 unimplemented
+  147825  crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI)
+  148174  Incorrect type of freed_list_volume causes assertion [...]
+  148447  x86_64 : new NOP codes: 66 66 66 66 2e 0f 1f
+  149182  PPC Trap instructions not implemented in valgrind
+  149504  Assertion hit on alloc_xpt->curr_space >= -space_delta
+  149519  ppc32: V aborts with SIGSEGV on execution of a signal handler
+  149892  ==137714
+  150044  SEGV during stack deregister
+  150380  dwarf/gcc interoperation (dwarf3 read problems)
+  150408  ==148447
+  150678  guest-amd64/toIR.c:3741 (dis_Grp5): Assertion `sz == 4' failed
+  151209  V unable to execute programs for users with UID > 2^16
+  151938  help on --db-command= misleading
+  152022  subw $0x28, %%sp causes assertion failure in memcheck
+  152357  inb and outb not recognized in 64-bit mode
+  152501  vex x86->IR: 0x27 0x66 0x89 0x45 (daa) 
+  152818  vex x86->IR: 0xF3 0xAC 0xFC 0x9C (rep lodsb)
+
+Developer-visible changes:
+
+- The names of some functions and types within the Vex IR have
+  changed.  Run 'svn log -r1689 VEX/pub/libvex_ir.h' for full details.
+  Any existing standalone tools will have to be updated to reflect
+  these changes.  The new names should be clearer.  The file
+  VEX/pub/libvex_ir.h is also much better commented.
+
+- A number of new debugging command line options have been added.
+  These are mostly of use for debugging the symbol table and line
+  number readers:
+
+  --trace-symtab-patt=<patt> limit debuginfo tracing to obj name <patt>
+  --trace-cfi=no|yes        show call-frame-info details? [no]
+  --debug-dump=syms         mimic /usr/bin/readelf --syms
+  --debug-dump=line         mimic /usr/bin/readelf --debug-dump=line
+  --debug-dump=frames       mimic /usr/bin/readelf --debug-dump=frames
+  --sym-offsets=yes|no      show syms in form 'name+offset' ? [no]
+
+- Internally, the code base has been further factorised and
+  abstractified, particularly with respect to support for non-Linux
+  OSs.
+
+(3.3.0.RC1:  2 Dec 2007, vex r1803, valgrind r7268).
+(3.3.0.RC2:  5 Dec 2007, vex r1804, valgrind r7282).
+(3.3.0.RC3:  9 Dec 2007, vex r1804, valgrind r7288).
+(3.3.0:     10 Dec 2007, vex r1804, valgrind r7290).
+
+
+
+Release 3.2.3 (29 Jan 2007)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Unfortunately 3.2.2 introduced a regression which can cause an
+assertion failure ("vex: the `impossible' happened: eqIRConst") when
+running obscure pieces of SSE code.  3.2.3 fixes this and adds one
+more glibc-2.5 intercept.  In all other respects it is identical to
+3.2.2.  Please do not use (or package) 3.2.2; instead use 3.2.3.
+
+n-i-bz   vex: the `impossible' happened: eqIRConst
+n-i-bz   Add an intercept for glibc-2.5 __stpcpy_chk
+
+(3.2.3: 29 Jan 2007, vex r1732, valgrind r6560).
+
+
+Release 3.2.2 (22 Jan 2007)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.2.2 fixes a bunch of bugs in 3.2.1, adds support for glibc-2.5 based
+systems (openSUSE 10.2, Fedora Core 6), improves support for icc-9.X
+compiled code, and brings modest performance improvements in some
+areas, including amd64 floating point, powerpc support, and startup
+responsiveness on all targets.
+
+The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
+bugzilla" -- that is, a bug that was reported to us but never got a
+bugzilla entry.  We encourage you to file bugs in bugzilla
+(http://bugs.kde.org/enter_valgrind_bug.cgi) rather than mailing the
+developers (or mailing lists) directly.
+
+129390   ppc?->IR: some kind of VMX prefetch (dstt)
+129968   amd64->IR: 0xF 0xAE 0x0 (fxsave)
+134319   ==129968
+133054   'make install' fails with syntax errors
+118903   ==133054
+132998   startup fails in when running on UML
+134207   pkg-config output contains @VG_PLATFORM@
+134727   valgrind exits with "Value too large for defined data type"
+n-i-bz   ppc32/64: support mcrfs
+n-i-bz   Cachegrind/Callgrind: Update cache parameter detection
+135012   x86->IR: 0xD7 0x8A 0xE0 0xD0 (xlat)
+125959   ==135012
+126147   x86->IR: 0xF2 0xA5 0xF 0x77 (repne movsw)
+136650   amd64->IR: 0xC2 0x8 0x0
+135421   x86->IR: unhandled Grp5(R) case 6
+n-i-bz   Improved documentation of the IR intermediate representation
+n-i-bz   jcxz (x86) (users list, 8 Nov)
+n-i-bz   ExeContext hashing fix
+n-i-bz   fix CFI reading failures ("Dwarf CFI 0:24 0:32 0:48 0:7")
+n-i-bz   fix Cachegrind/Callgrind simulation bug
+n-i-bz   libmpiwrap.c: fix handling of MPI_LONG_DOUBLE
+n-i-bz   make User errors suppressible
+136844   corrupted malloc line when using --gen-suppressions=yes
+138507   ==136844
+n-i-bz   Speed up the JIT's register allocator
+n-i-bz   Fix confusing leak-checker flag hints
+n-i-bz   Support recent autoswamp versions
+n-i-bz   ppc32/64 dispatcher speedups
+n-i-bz   ppc64 front end rld/rlw improvements
+n-i-bz   ppc64 back end imm64 improvements
+136300   support 64K pages on ppc64-linux
+139124   == 136300
+n-i-bz   fix ppc insn set tests for gcc >= 4.1
+137493   x86->IR: recent binutils no-ops
+137714   x86->IR: 0x66 0xF 0xF7 0xC6 (maskmovdqu)
+138424   "failed in UME with error 22" (produce a better error msg)
+138856   ==138424
+138627   Enhancement support for prctl ioctls
+138896   Add support for usb ioctls
+136059   ==138896
+139050   ppc32->IR: mfspr 268/269 instructions not handled
+n-i-bz   ppc32->IR: lvxl/stvxl
+n-i-bz   glibc-2.5 support
+n-i-bz   memcheck: provide replacement for mempcpy
+n-i-bz   memcheck: replace bcmp in ld.so
+n-i-bz   Use 'ifndef' in VEX's Makefile correctly
+n-i-bz   Suppressions for MVL 4.0.1 on ppc32-linux
+n-i-bz   libmpiwrap.c: Fixes for MPICH
+n-i-bz   More robust handling of hinted client mmaps
+139776   Invalid read in unaligned memcpy with Intel compiler v9
+n-i-bz   Generate valid XML even for very long fn names
+n-i-bz   Don't prompt about suppressions for unshown reachable leaks
+139910   amd64 rcl is not supported
+n-i-bz   DWARF CFI reader: handle DW_CFA_undefined
+n-i-bz   DWARF CFI reader: handle icc9 generated CFI info better
+n-i-bz   fix false uninit-value errs in icc9 generated FP code
+n-i-bz   reduce extraneous frames in libmpiwrap.c
+n-i-bz   support pselect6 on amd64-linux
+
+(3.2.2: 22 Jan 2007, vex r1729, valgrind r6545).
+
+
+Release 3.2.1 (16 Sept 2006)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.2.1 adds x86/amd64 support for all SSE3 instructions except monitor
+and mwait, further reduces memcheck's false error rate on all
+platforms, adds support for recent binutils (in OpenSUSE 10.2 and
+Fedora Rawhide) and fixes a bunch of bugs in 3.2.0.  Some of the fixed
+bugs were causing large programs to segfault with --tool=callgrind and
+--tool=cachegrind, so an upgrade is recommended.
+
+In view of the fact that any 3.3.0 release is unlikely to happen until
+well into 1Q07, we intend to keep the 3.2.X line alive for a while
+yet, and so we tentatively plan a 3.2.2 release sometime in December
+06.
+
+The fixed bugs are as follows.  Note that "n-i-bz" stands for "not in
+bugzilla" -- that is, a bug that was reported to us but never got a
+bugzilla entry.
+
+n-i-bz   Expanding brk() into last available page asserts
+n-i-bz   ppc64-linux stack RZ fast-case snafu
+n-i-bz   'c' in --gen-supps=yes doesn't work
+n-i-bz   VG_N_SEGMENTS too low (users, 28 June)
+n-i-bz   VG_N_SEGNAMES too low (Stu Robinson)
+106852   x86->IR: fisttp (SSE3)
+117172   FUTEX_WAKE does not use uaddr2
+124039   Lacks support for VKI_[GP]IO_UNIMAP*
+127521   amd64->IR: 0xF0 0x48 0xF 0xC7 (cmpxchg8b)
+128917   amd64->IR: 0x66 0xF 0xF6 0xC4 (psadbw,SSE2)
+129246   JJ: ppc32/ppc64 syscalls, w/ patch
+129358   x86->IR: fisttpl (SSE3)
+129866   cachegrind/callgrind causes executable to die
+130020   Can't stat .so/.exe error while reading symbols
+130388   Valgrind aborts when process calls malloc_trim()
+130638   PATCH: ppc32 missing system calls
+130785   amd64->IR: unhandled instruction "pushfq"
+131481:  (HINT_NOP) vex x86->IR: 0xF 0x1F 0x0 0xF
+131298   ==131481
+132146   Programs with long sequences of bswap[l,q]s
+132918   vex amd64->IR: 0xD9 0xF8 (fprem)
+132813   Assertion at priv/guest-x86/toIR.c:652 fails
+133051   'cfsi->len > 0 && cfsi->len < 2000000' failed
+132722   valgrind header files are not standard C
+n-i-bz   Livelocks entire machine (users list, Timothy Terriberry)
+n-i-bz   Alex Bennee mmap problem (9 Aug)
+n-i-bz   BartV: Don't print more lines of a stack-trace than were obtained.
+n-i-bz   ppc32 SuSE 10.1 redir
+n-i-bz   amd64 padding suppressions
+n-i-bz   amd64 insn printing fix.
+n-i-bz   ppc cmp reg,reg fix
+n-i-bz   x86/amd64 iropt e/rflag reduction rules
+n-i-bz   SuSE 10.1 (ppc32) minor fixes
+133678   amd64->IR: 0x48 0xF 0xC5 0xC0 (pextrw?)
+133694   aspacem assertion: aspacem_minAddr <= holeStart
+n-i-bz   callgrind: fix warning about malformed creator line 
+n-i-bz   callgrind: fix annotate script for data produced with 
+         --dump-instr=yes
+n-i-bz   callgrind: fix failed assertion when toggling 
+         instrumentation mode
+n-i-bz   callgrind: fix annotate script fix warnings with
+         --collect-jumps=yes
+n-i-bz   docs path hardwired (Dennis Lubert)
+
+The following bugs were not fixed, due primarily to lack of developer
+time, and also because bug reporters did not answer requests for
+feedback in time for the release:
+
+129390   ppc?->IR: some kind of VMX prefetch (dstt)
+129968   amd64->IR: 0xF 0xAE 0x0 (fxsave)
+133054   'make install' fails with syntax errors
+n-i-bz   Signal race condition (users list, 13 June, Johannes Berg)
+n-i-bz   Unrecognised instruction at address 0x70198EC2 (users list,
+         19 July, Bennee)
+132998   startup fails in when running on UML
+
+The following bug was tentatively fixed on the mainline but the fix
+was considered too risky to push into 3.2.X:
+
+133154   crash when using client requests to register/deregister stack
+
+(3.2.1: 16 Sept 2006, vex r1658, valgrind r6070).
+
+
+Release 3.2.0 (7 June 2006)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.2.0 is a feature release with many significant improvements and the
+usual collection of bug fixes.  This release supports X86/Linux,
+AMD64/Linux, PPC32/Linux and PPC64/Linux.
+
+Performance, especially of Memcheck, is improved, Addrcheck has been
+removed, Callgrind has been added, PPC64/Linux support has been added,
+Lackey has been improved, and MPI support has been added.  In detail:
+
+- Memcheck has improved speed and reduced memory use.  Run times are
+  typically reduced by 15-30%, averaging about 24% for SPEC CPU2000.
+  The other tools have smaller but noticeable speed improvments.  We
+  are interested to hear what improvements users get.
+
+  Memcheck uses less memory due to the introduction of a compressed
+  representation for shadow memory.  The space overhead has been
+  reduced by a factor of up to four, depending on program behaviour.
+  This means you should be able to run programs that use more memory
+  than before without hitting problems.
+
+- Addrcheck has been removed.  It has not worked since version 2.4.0,
+  and the speed and memory improvements to Memcheck make it redundant.
+  If you liked using Addrcheck because it didn't give undefined value
+  errors, you can use the new Memcheck option --undef-value-errors=no
+  to get the same behaviour.
+
+- The number of undefined-value errors incorrectly reported by
+  Memcheck has been reduced (such false reports were already very
+  rare).  In particular, efforts have been made to ensure Memcheck
+  works really well with gcc 4.0/4.1-generated code on X86/Linux and
+  AMD64/Linux.
+
+- Josef Weidendorfer's popular Callgrind tool has been added.  Folding
+  it in was a logical step given its popularity and usefulness, and
+  makes it easier for us to ensure it works "out of the box" on all
+  supported targets.  The associated KDE KCachegrind GUI remains a
+  separate project.
+
+- A new release of the Valkyrie GUI for Memcheck, version 1.2.0,
+  accompanies this release.  Improvements over previous releases
+  include improved robustness, many refinements to the user interface,
+  and use of a standard autoconf/automake build system.  You can get
+  it from http://www.valgrind.org/downloads/guis.html.
+
+- Valgrind now works on PPC64/Linux.  As with the AMD64/Linux port,
+  this supports programs using to 32G of address space.  On 64-bit
+  capable PPC64/Linux setups, you get a dual architecture build so
+  that both 32-bit and 64-bit executables can be run.  Linux on POWER5
+  is supported, and POWER4 is also believed to work.  Both 32-bit and
+  64-bit DWARF2 is supported.  This port is known to work well with
+  both gcc-compiled and xlc/xlf-compiled code.
+
+- Floating point accuracy has been improved for PPC32/Linux.
+  Specifically, the floating point rounding mode is observed on all FP
+  arithmetic operations, and multiply-accumulate instructions are
+  preserved by the compilation pipeline.  This means you should get FP
+  results which are bit-for-bit identical to a native run.  These
+  improvements are also present in the PPC64/Linux port.
+
+- Lackey, the example tool, has been improved:
+
+  * It has a new option --detailed-counts (off by default) which
+    causes it to print out a count of loads, stores and ALU operations
+    done, and their sizes.
+
+  * It has a new option --trace-mem (off by default) which causes it
+    to print out a trace of all memory accesses performed by a
+    program.  It's a good starting point for building Valgrind tools
+    that need to track memory accesses.  Read the comments at the top
+    of the file lackey/lk_main.c for details.
+
+  * The original instrumentation (counting numbers of instructions,
+    jumps, etc) is now controlled by a new option --basic-counts.  It
+    is on by default.
+
+- MPI support: partial support for debugging distributed applications
+  using the MPI library specification has been added.  Valgrind is
+  aware of the memory state changes caused by a subset of the MPI
+  functions, and will carefully check data passed to the (P)MPI_
+  interface.
+
+- A new flag, --error-exitcode=, has been added.  This allows changing
+  the exit code in runs where Valgrind reported errors, which is
+  useful when using Valgrind as part of an automated test suite.
+
+- Various segfaults when reading old-style "stabs" debug information
+  have been fixed.
+
+- A simple performance evaluation suite has been added.  See
+  perf/README and README_DEVELOPERS for details.  There are
+  various bells and whistles.
+
+- New configuration flags:
+    --enable-only32bit
+    --enable-only64bit
+  By default, on 64 bit platforms (ppc64-linux, amd64-linux) the build
+  system will attempt to build a Valgrind which supports both 32-bit
+  and 64-bit executables.  This may not be what you want, and you can
+  override the default behaviour using these flags.
+
+Please note that Helgrind is still not working.  We have made an
+important step towards making it work again, however, with the
+addition of function wrapping (see below).
+
+Other user-visible changes:
+
+- Valgrind now has the ability to intercept and wrap arbitrary
+  functions.  This is a preliminary step towards making Helgrind work
+  again, and was required for MPI support.
+
+- There are some changes to Memcheck's client requests.  Some of them
+  have changed names:
+
+    MAKE_NOACCESS  --> MAKE_MEM_NOACCESS
+    MAKE_WRITABLE  --> MAKE_MEM_UNDEFINED
+    MAKE_READABLE  --> MAKE_MEM_DEFINED
+
+    CHECK_WRITABLE --> CHECK_MEM_IS_ADDRESSABLE
+    CHECK_READABLE --> CHECK_MEM_IS_DEFINED
+    CHECK_DEFINED  --> CHECK_VALUE_IS_DEFINED
+
+  The reason for the change is that the old names are subtly
+  misleading.  The old names will still work, but they are deprecated
+  and may be removed in a future release.
+
+  We also added a new client request:
+  
+    MAKE_MEM_DEFINED_IF_ADDRESSABLE(a, len)
+    
+  which is like MAKE_MEM_DEFINED but only affects a byte if the byte is
+  already addressable.
+
+- The way client requests are encoded in the instruction stream has
+  changed.  Unfortunately, this means 3.2.0 will not honour client
+  requests compiled into binaries using headers from earlier versions
+  of Valgrind.  We will try to keep the client request encodings more 
+  stable in future.
+
+BUGS FIXED:
+
+108258   NPTL pthread cleanup handlers not called 
+117290   valgrind is sigKILL'd on startup
+117295   == 117290
+118703   m_signals.c:1427 Assertion 'tst->status == VgTs_WaitSys'
+118466   add %reg, %reg generates incorrect validity for bit 0
+123210   New: strlen from ld-linux on amd64
+123244   DWARF2 CFI reader: unhandled CFI instruction 0:18
+123248   syscalls in glibc-2.4: openat, fstatat, symlinkat
+123258   socketcall.recvmsg(msg.msg_iov[i] points to uninit
+123535   mremap(new_addr) requires MREMAP_FIXED in 4th arg
+123836   small typo in the doc
+124029   ppc compile failed: `vor' gcc 3.3.5
+124222   Segfault: @@don't know what type ':' is
+124475   ppc32: crash (syscall?) timer_settime()
+124499   amd64->IR: 0xF 0xE 0x48 0x85 (femms)
+124528   FATAL: aspacem assertion failed: segment_is_sane
+124697   vex x86->IR: 0xF 0x70 0xC9 0x0 (pshufw)
+124892   vex x86->IR: 0xF3 0xAE (REPx SCASB)
+126216   == 124892
+124808   ppc32: sys_sched_getaffinity() not handled
+n-i-bz   Very long stabs strings crash m_debuginfo
+n-i-bz   amd64->IR: 0x66 0xF 0xF5 (pmaddwd)
+125492   ppc32: support a bunch more syscalls
+121617   ppc32/64: coredumping gives assertion failure
+121814   Coregrind return error as exitcode patch
+126517   == 121814
+125607   amd64->IR: 0x66 0xF 0xA3 0x2 (btw etc)
+125651   amd64->IR: 0xF8 0x49 0xFF 0xE3 (clc?)
+126253   x86 movx is wrong
+126451   3.2 SVN doesn't work on ppc32 CPU's without FPU
+126217   increase # threads
+126243   vex x86->IR: popw mem
+126583   amd64->IR: 0x48 0xF 0xA4 0xC2 (shld $1,%rax,%rdx)
+126668   amd64->IR: 0x1C 0xFF (sbb $0xff,%al)
+126696   support for CDROMREADRAW ioctl and CDROMREADTOCENTRY fix
+126722   assertion: segment_is_sane at m_aspacemgr/aspacemgr.c:1624
+126938   bad checking for syscalls linkat, renameat, symlinkat
+
+(3.2.0RC1: 27 May  2006, vex r1626, valgrind r5947).
+(3.2.0:     7 June 2006, vex r1628, valgrind r5957).
+
+
+Release 3.1.1 (15 March 2006)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.1.1 fixes a bunch of bugs reported in 3.1.0.  There is no new
+functionality.  The fixed bugs are:
+
+(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
+ a bugzilla entry).
+
+n-i-bz   ppc32: fsub 3,3,3 in dispatcher doesn't clear NaNs
+n-i-bz   ppc32: __NR_{set,get}priority
+117332   x86: missing line info with icc 8.1
+117366   amd64: 0xDD 0x7C fnstsw
+118274   == 117366
+117367   amd64: 0xD9 0xF4 fxtract
+117369   amd64: __NR_getpriority (140)
+117419   ppc32: lfsu f5, -4(r11)
+117419   ppc32: fsqrt
+117936   more stabs problems (segfaults while reading debug info)
+119914   == 117936
+120345   == 117936
+118239   amd64: 0xF 0xAE 0x3F (clflush)
+118939   vm86old system call
+n-i-bz   memcheck/tests/mempool reads freed memory
+n-i-bz   AshleyP's custom-allocator assertion
+n-i-bz   Dirk strict-aliasing stuff
+n-i-bz   More space for debugger cmd line (Dan Thaler)
+n-i-bz   Clarified leak checker output message
+n-i-bz   AshleyP's --gen-suppressions output fix
+n-i-bz   cg_annotate's --sort option broken
+n-i-bz   OSet 64-bit fastcmp bug
+n-i-bz   VG_(getgroups) fix (Shinichi Noda)
+n-i-bz   ppc32: allocate from callee-saved FP/VMX regs
+n-i-bz   misaligned path word-size bug in mc_main.c
+119297   Incorrect error message for sse code
+120410   x86: prefetchw (0xF 0xD 0x48 0x4)
+120728   TIOCSERGETLSR, TIOCGICOUNT, HDIO_GET_DMA ioctls
+120658   Build fixes for gcc 2.96
+120734   x86: Support for changing EIP in signal handler
+n-i-bz   memcheck/tests/zeropage de-looping fix
+n-i-bz   x86: fxtract doesn't work reliably
+121662   x86: lock xadd (0xF0 0xF 0xC0 0x2)
+121893   calloc does not always return zeroed memory
+121901   no support for syscall tkill
+n-i-bz   Suppression update for Debian unstable
+122067   amd64: fcmovnu (0xDB 0xD9)
+n-i-bz   ppc32: broken signal handling in cpu feature detection
+n-i-bz   ppc32: rounding mode problems (improved, partial fix only)
+119482   ppc32: mtfsb1
+n-i-bz   ppc32: mtocrf/mfocrf
+
+(3.1.1:  15 March 2006, vex r1597, valgrind r5771).
+
+
+Release 3.1.0 (25 November 2005)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.1.0 is a feature release with a number of significant improvements:
+AMD64 support is much improved, PPC32 support is good enough to be
+usable, and the handling of memory management and address space is
+much more robust.  In detail:
+
+- AMD64 support is much improved.  The 64-bit vs. 32-bit issues in
+  3.0.X have been resolved, and it should "just work" now in all
+  cases.  On AMD64 machines both 64-bit and 32-bit versions of
+  Valgrind are built.  The right version will be invoked
+  automatically, even when using --trace-children and mixing execution
+  between 64-bit and 32-bit executables.  Also, many more instructions
+  are supported.
+
+- PPC32 support is now good enough to be usable.  It should work with
+  all tools, but please let us know if you have problems.  Three
+  classes of CPUs are supported: integer only (no FP, no Altivec),
+  which covers embedded PPC uses, integer and FP but no Altivec
+  (G3-ish), and CPUs capable of Altivec too (G4, G5).
+
+- Valgrind's address space management has been overhauled.  As a
+  result, Valgrind should be much more robust with programs that use
+  large amounts of memory.  There should be many fewer "memory
+  exhausted" messages, and debug symbols should be read correctly on
+  large (eg. 300MB+) executables.  On 32-bit machines the full address
+  space available to user programs (usually 3GB or 4GB) can be fully
+  utilised.  On 64-bit machines up to 32GB of space is usable; when
+  using Memcheck that means your program can use up to about 14GB.
+
+  A side effect of this change is that Valgrind is no longer protected
+  against wild writes by the client.  This feature was nice but relied
+  on the x86 segment registers and so wasn't portable.
+
+- Most users should not notice, but as part of the address space
+  manager change, the way Valgrind is built has been changed.  Each
+  tool is now built as a statically linked stand-alone executable,
+  rather than as a shared object that is dynamically linked with the
+  core.  The "valgrind" program invokes the appropriate tool depending
+  on the --tool option.  This slightly increases the amount of disk
+  space used by Valgrind, but it greatly simplified many things and
+  removed Valgrind's dependence on glibc.
+
+Please note that Addrcheck and Helgrind are still not working.  Work
+is underway to reinstate them (or equivalents).  We apologise for the
+inconvenience.
+
+Other user-visible changes:
+
+- The --weird-hacks option has been renamed --sim-hints.
+
+- The --time-stamp option no longer gives an absolute date and time.
+  It now prints the time elapsed since the program began.
+
+- It should build with gcc-2.96.
+
+- Valgrind can now run itself (see README_DEVELOPERS for how).
+  This is not much use to you, but it means the developers can now
+  profile Valgrind using Cachegrind.  As a result a couple of
+  performance bad cases have been fixed.
+
+- The XML output format has changed slightly.  See
+  docs/internals/xml-output.txt.
+
+- Core dumping has been reinstated (it was disabled in 3.0.0 and 3.0.1).
+  If your program crashes while running under Valgrind, a core file with
+  the name "vgcore.<pid>" will be created (if your settings allow core
+  file creation).  Note that the floating point information is not all
+  there.  If Valgrind itself crashes, the OS will create a normal core
+  file.
+
+The following are some user-visible changes that occurred in earlier
+versions that may not have been announced, or were announced but not
+widely noticed.  So we're mentioning them now.
+
+- The --tool flag is optional once again;  if you omit it, Memcheck
+  is run by default.
+
+- The --num-callers flag now has a default value of 12.  It was
+  previously 4.
+
+- The --xml=yes flag causes Valgrind's output to be produced in XML
+  format.  This is designed to make it easy for other programs to
+  consume Valgrind's output.  The format is described in the file
+  docs/internals/xml-format.txt.
+
+- The --gen-suppressions flag supports an "all" value that causes every
+  suppression to be printed without asking.
+
+- The --log-file option no longer puts "pid" in the filename, eg. the
+  old name "foo.pid12345" is now "foo.12345".
+
+- There are several graphical front-ends for Valgrind, such as Valkyrie,
+  Alleyoop and Valgui.  See http://www.valgrind.org/downloads/guis.html
+  for a list.
+
+BUGS FIXED:
+
+109861  amd64 hangs at startup
+110301  ditto
+111554  valgrind crashes with Cannot allocate memory
+111809  Memcheck tool doesn't start java
+111901  cross-platform run of cachegrind fails on opteron
+113468  (vgPlain_mprotect_range): Assertion 'r != -1' failed.
+ 92071  Reading debugging info uses too much memory
+109744  memcheck loses track of mmap from direct ld-linux.so.2
+110183  tail of page with _end
+ 82301  FV memory layout too rigid
+ 98278  Infinite recursion possible when allocating memory
+108994  Valgrind runs out of memory due to 133x overhead
+115643  valgrind cannot allocate memory
+105974  vg_hashtable.c static hash table
+109323  ppc32: dispatch.S uses Altivec insn, which doesn't work on POWER. 
+109345  ptrace_setregs not yet implemented for ppc
+110831  Would like to be able to run against both 32 and 64 bit 
+        binaries on AMD64
+110829  == 110831
+111781  compile of valgrind-3.0.0 fails on my linux (gcc 2.X prob)
+112670  Cachegrind: cg_main.c:486 (handleOneStatement ...
+112941  vex x86: 0xD9 0xF4 (fxtract)
+110201  == 112941
+113015  vex amd64->IR: 0xE3 0x14 0x48 0x83 (jrcxz)
+113126  Crash with binaries built with -gstabs+/-ggdb
+104065  == 113126
+115741  == 113126
+113403  Partial SSE3 support on x86
+113541  vex: Grp5(x86) (alt encoding inc/dec) case 1
+113642  valgrind crashes when trying to read debug information
+113810  vex x86->IR: 66 0F F6 (66 + PSADBW == SSE PSADBW)
+113796  read() and write() do not work if buffer is in shared memory
+113851  vex x86->IR: (pmaddwd): 0x66 0xF 0xF5 0xC7
+114366  vex amd64 cannnot handle __asm__( "fninit" )
+114412  vex amd64->IR: 0xF 0xAD 0xC2 0xD3 (128-bit shift, shrdq?)
+114455  vex amd64->IR: 0xF 0xAC 0xD0 0x1 (also shrdq)
+115590: amd64->IR: 0x67 0xE3 0x9 0xEB (address size override)
+115953  valgrind svn r5042 does not build with parallel make (-j3)
+116057  maximum instruction size - VG_MAX_INSTR_SZB too small?
+116483  shmat failes with invalid argument
+102202  valgrind crashes when realloc'ing until out of memory
+109487  == 102202
+110536  == 102202
+112687  == 102202
+111724  vex amd64->IR: 0x41 0xF 0xAB (more BT{,S,R,C} fun n games)
+111748  vex amd64->IR: 0xDD 0xE2 (fucom)
+111785  make fails if CC contains spaces
+111829  vex x86->IR: sbb AL, Ib
+111851  vex x86->IR: 0x9F 0x89 (lahf/sahf)
+112031  iopl on AMD64 and README_MISSING_SYSCALL_OR_IOCTL update
+112152  code generation for Xin_MFence on x86 with SSE0 subarch
+112167  == 112152
+112789  == 112152
+112199  naked ar tool is used in vex makefile
+112501  vex x86->IR: movq (0xF 0x7F 0xC1 0xF) (mmx MOVQ)
+113583  == 112501
+112538  memalign crash
+113190  Broken links in docs/html/
+113230  Valgrind sys_pipe on x86-64 wrongly thinks file descriptors
+        should be 64bit
+113996  vex amd64->IR: fucomp (0xDD 0xE9)
+114196  vex x86->IR: out %eax,(%dx) (0xEF 0xC9 0xC3 0x90)
+114289  Memcheck fails to intercept malloc when used in an uclibc environment
+114756  mbind syscall support
+114757  Valgrind dies with assertion: Assertion 'noLargerThan > 0' failed
+114563  stack tracking module not informed when valgrind switches threads
+114564  clone() and stacks
+114565  == 114564
+115496  glibc crashes trying to use sysinfo page
+116200  enable fsetxattr, fgetxattr, and fremovexattr for amd64
+
+(3.1.0RC1: 20 November 2005, vex r1466, valgrind r5224).
+(3.1.0:    26 November 2005, vex r1471, valgrind r5235).
+
+
+Release 3.0.1 (29 August 2005)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.0.1 fixes a bunch of bugs reported in 3.0.0.  There is no new
+functionality.  Some of the fixed bugs are critical, so if you
+use/distribute 3.0.0, an upgrade to 3.0.1 is recommended.  The fixed
+bugs are:
+
+(note: "n-i-bz" means "not in bugzilla" -- this bug does not have
+ a bugzilla entry).
+
+109313  (== 110505) x86 cmpxchg8b
+n-i-bz  x86: track but ignore changes to %eflags.AC (alignment check)
+110102  dis_op2_E_G(amd64)
+110202  x86 sys_waitpid(#286)
+110203  clock_getres(,0)
+110208  execve fail wrong retval
+110274  SSE1 now mandatory for x86
+110388  amd64 0xDD 0xD1
+110464  amd64 0xDC 0x1D FCOMP
+110478  amd64 0xF 0xD PREFETCH
+n-i-bz  XML <unique> printing wrong
+n-i-bz  Dirk r4359 (amd64 syscalls from trunk)
+110591  amd64 and x86: rdtsc not implemented properly
+n-i-bz  Nick r4384 (stub implementations of Addrcheck and Helgrind)
+110652  AMD64 valgrind crashes on cwtd instruction
+110653  AMD64 valgrind crashes on sarb $0x4,foo(%rip) instruction
+110656  PATH=/usr/bin::/bin valgrind foobar stats ./fooba
+110657  Small test fixes
+110671  vex x86->IR: unhandled instruction bytes: 0xF3 0xC3 (rep ret)
+n-i-bz  Nick (Cachegrind should not assert when it encounters a client
+        request.)
+110685  amd64->IR: unhandled instruction bytes: 0xE1 0x56 (loope Jb)
+110830  configuring with --host fails to build 32 bit on 64 bit target
+110875  Assertion when execve fails
+n-i-bz  Updates to Memcheck manual
+n-i-bz  Fixed broken malloc_usable_size()
+110898  opteron instructions missing: btq btsq btrq bsfq
+110954  x86->IR: unhandled instruction bytes: 0xE2 0xF6 (loop Jb)
+n-i-bz  Make suppressions work for "???" lines in stacktraces.
+111006  bogus warnings from linuxthreads
+111092  x86: dis_Grp2(Reg): unhandled case(x86) 
+111231  sctp_getladdrs() and sctp_getpaddrs() returns uninitialized
+        memory
+111102  (comment #4)   Fixed 64-bit unclean "silly arg" message
+n-i-bz  vex x86->IR: unhandled instruction bytes: 0x14 0x0
+n-i-bz  minor umount/fcntl wrapper fixes
+111090  Internal Error running Massif
+101204  noisy warning
+111513  Illegal opcode for SSE instruction (x86 movups)
+111555  VEX/Makefile: CC is set to gcc
+n-i-bz  Fix XML bugs in FAQ
+
+(3.0.1: 29 August 05,
+        vex/branches/VEX_3_0_BRANCH r1367,
+        valgrind/branches/VALGRIND_3_0_BRANCH r4574).
+
+
+
+Release 3.0.0 (3 August 2005)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.0.0 is a major overhaul of Valgrind.  The most significant user
+visible change is that Valgrind now supports architectures other than
+x86.  The new architectures it supports are AMD64 and PPC32, and the
+infrastructure is present for other architectures to be added later.
+
+AMD64 support works well, but has some shortcomings:
+
+- It generally won't be as solid as the x86 version.  For example,
+  support for more obscure instructions and system calls may be missing.
+  We will fix these as they arise.
+
+- Address space may be limited; see the point about
+  position-independent executables below.
+
+- If Valgrind is built on an AMD64 machine, it will only run 64-bit
+  executables.  If you want to run 32-bit x86 executables under Valgrind
+  on an AMD64, you will need to build Valgrind on an x86 machine and
+  copy it to the AMD64 machine.  And it probably won't work if you do
+  something tricky like exec'ing a 32-bit program from a 64-bit program
+  while using --trace-children=yes.  We hope to improve this situation
+  in the future.
+
+The PPC32 support is very basic.  It may not work reliably even for
+small programs, but it's a start.  Many thanks to Paul Mackerras for
+his great work that enabled this support.  We are working to make
+PPC32 usable as soon as possible.
+
+Other user-visible changes:
+
+- Valgrind is no longer built by default as a position-independent
+  executable (PIE), as this caused too many problems.
+
+  Without PIE enabled, AMD64 programs will only be able to access 2GB of
+  address space.  We will fix this eventually, but not for the moment.
+  
+  Use --enable-pie at configure-time to turn this on.
+
+- Support for programs that use stack-switching has been improved.  Use
+  the --max-stackframe flag for simple cases, and the
+  VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
+  VALGRIND_STACK_CHANGE client requests for trickier cases.
+
+- Support for programs that use self-modifying code has been improved,
+  in particular programs that put temporary code fragments on the stack.
+  This helps for C programs compiled with GCC that use nested functions,
+  and also Ada programs.  This is controlled with the --smc-check
+  flag, although the default setting should work in most cases.
+
+- Output can now be printed in XML format.  This should make it easier
+  for tools such as GUI front-ends and automated error-processing
+  schemes to use Valgrind output as input.  The --xml flag controls this.
+  As part of this change, ELF directory information is read from executables,
+  so absolute source file paths are available if needed.
+
+- Programs that allocate many heap blocks may run faster, due to
+  improvements in certain data structures.
+
+- Addrcheck is currently not working.  We hope to get it working again
+  soon.  Helgrind is still not working, as was the case for the 2.4.0
+  release.
+
+- The JITter has been completely rewritten, and is now in a separate
+  library, called Vex.  This enabled a lot of the user-visible changes,
+  such as new architecture support.  The new JIT unfortunately translates
+  more slowly than the old one, so programs may take longer to start.
+  We believe the code quality is produces is about the same, so once
+  started, programs should run at about the same speed.  Feedback about
+  this would be useful.
+
+  On the plus side, Vex and hence Memcheck tracks value flow properly
+  through floating point and vector registers, something the 2.X line
+  could not do.  That means that Memcheck is much more likely to be
+  usably accurate on vectorised code.
+
+- There is a subtle change to the way exiting of threaded programs
+  is handled.  In 3.0, Valgrind's final diagnostic output (leak check,
+  etc) is not printed until the last thread exits.  If the last thread
+  to exit was not the original thread which started the program, any
+  other process wait()-ing on this one to exit may conclude it has
+  finished before the diagnostic output is printed.  This may not be
+  what you expect.  2.X had a different scheme which avoided this
+  problem, but caused deadlocks under obscure circumstances, so we
+  are trying something different for 3.0.
+
+- Small changes in control log file naming which make it easier to
+  use valgrind for debugging MPI-based programs.  The relevant
+  new flags are --log-file-exactly= and --log-file-qualifier=.
+
+- As part of adding AMD64 support, DWARF2 CFI-based stack unwinding
+  support was added.  In principle this means Valgrind can produce
+  meaningful backtraces on x86 code compiled with -fomit-frame-pointer
+  providing you also compile your code with -fasynchronous-unwind-tables.
+
+- The documentation build system has been completely redone.
+  The documentation masters are now in XML format, and from that
+  HTML, PostScript and PDF documentation is generated.  As a result
+  the manual is now available in book form.  Note that the
+  documentation in the source tarballs is pre-built, so you don't need
+  any XML processing tools to build Valgrind from a tarball.
+
+Changes that are not user-visible:
+
+- The code has been massively overhauled in order to modularise it.
+  As a result we hope it is easier to navigate and understand.
+
+- Lots of code has been rewritten.
+
+BUGS FIXED:
+
+110046  sz == 4 assertion failed 
+109810  vex amd64->IR: unhandled instruction bytes: 0xA3 0x4C 0x70 0xD7
+109802  Add a plausible_stack_size command-line parameter ?
+109783  unhandled ioctl TIOCMGET (running hw detection tool discover) 
+109780  unhandled ioctl BLKSSZGET (running fdisk -l /dev/hda)
+109718  vex x86->IR: unhandled instruction: ffreep 
+109429  AMD64 unhandled syscall: 127 (sigpending)
+109401  false positive uninit in strchr from ld-linux.so.2
+109385  "stabs" parse failure 
+109378  amd64: unhandled instruction REP NOP
+109376  amd64: unhandled instruction LOOP Jb 
+109363  AMD64 unhandled instruction bytes 
+109362  AMD64 unhandled syscall: 24 (sched_yield)
+109358  fork() won't work with valgrind-3.0 SVN
+109332  amd64 unhandled instruction: ADC Ev, Gv
+109314  Bogus memcheck report on amd64
+108883  Crash; vg_memory.c:905 (vgPlain_init_shadow_range):
+        Assertion `vgPlain_defined_init_shadow_page()' failed.
+108349  mincore syscall parameter checked incorrectly 
+108059  build infrastructure: small update
+107524  epoll_ctl event parameter checked on EPOLL_CTL_DEL
+107123  Vex dies with unhandled instructions: 0xD9 0x31 0xF 0xAE
+106841  auxmap & openGL problems
+106713  SDL_Init causes valgrind to exit
+106352  setcontext and makecontext not handled correctly 
+106293  addresses beyond initial client stack allocation 
+        not checked in VALGRIND_DO_LEAK_CHECK
+106283  PIE client programs are loaded at address 0
+105831  Assertion `vgPlain_defined_init_shadow_page()' failed.
+105039  long run-times probably due to memory manager 
+104797  valgrind needs to be aware of BLKGETSIZE64
+103594  unhandled instruction: FICOM
+103320  Valgrind 2.4.0 fails to compile with gcc 3.4.3 and -O0
+103168  potentially memory leak in coregrind/ume.c 
+102039  bad permissions for mapped region at address 0xB7C73680
+101881  weird assertion problem
+101543  Support fadvise64 syscalls
+75247   x86_64/amd64 support (the biggest "bug" we have ever fixed)
+
+(3.0RC1: 27 July   05, vex r1303, valgrind r4283).
+(3.0.0:   3 August 05, vex r1313, valgrind r4316).
+
+
+
+Stable release 2.4.1 (1 August 2005)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+(The notes for this release have been lost.  Sorry!  It would have
+contained various bug fixes but no new features.)
+
+
+
+Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+2.4.0 brings many significant changes and bug fixes.  The most
+significant user-visible change is that we no longer supply our own
+pthread implementation.  Instead, Valgrind is finally capable of
+running the native thread library, either LinuxThreads or NPTL.
+
+This means our libpthread has gone, along with the bugs associated
+with it.  Valgrind now supports the kernel's threading syscalls, and
+lets you use your standard system libpthread.  As a result:
+
+* There are many fewer system dependencies and strange library-related
+  bugs.  There is a small performance improvement, and a large
+  stability improvement.
+
+* On the downside, Valgrind can no longer report misuses of the POSIX
+  PThreads API.  It also means that Helgrind currently does not work.
+  We hope to fix these problems in a future release.
+
+Note that running the native thread libraries does not mean Valgrind
+is able to provide genuine concurrent execution on SMPs.  We still
+impose the restriction that only one thread is running at any given
+time.
+
+There are many other significant changes too:
+
+* Memcheck is (once again) the default tool.
+
+* The default stack backtrace is now 12 call frames, rather than 4.
+
+* Suppressions can have up to 25 call frame matches, rather than 4.
+
+* Memcheck and Addrcheck use less memory.  Under some circumstances,
+  they no longer allocate shadow memory if there are large regions of
+  memory with the same A/V states - such as an mmaped file.
+
+* The memory-leak detector in Memcheck and Addrcheck has been
+  improved.  It now reports more types of memory leak, including
+  leaked cycles.  When reporting leaked memory, it can distinguish
+  between directly leaked memory (memory with no references), and
+  indirectly leaked memory (memory only referred to by other leaked
+  memory).
+
+* Memcheck's confusion over the effect of mprotect() has been fixed:
+  previously mprotect could erroneously mark undefined data as
+  defined.
+
+* Signal handling is much improved and should be very close to what
+  you get when running natively.  
+
+  One result of this is that Valgrind observes changes to sigcontexts
+  passed to signal handlers.  Such modifications will take effect when
+  the signal returns.  You will need to run with --single-step=yes to
+  make this useful.
+
+* Valgrind is built in Position Independent Executable (PIE) format if
+  your toolchain supports it.  This allows it to take advantage of all
+  the available address space on systems with 4Gbyte user address
+  spaces.
+
+* Valgrind can now run itself (requires PIE support).
+
+* Syscall arguments are now checked for validity.  Previously all
+  memory used by syscalls was checked, but now the actual values
+  passed are also checked.
+
+* Syscall wrappers are more robust against bad addresses being passed
+  to syscalls: they will fail with EFAULT rather than killing Valgrind
+  with SIGSEGV.
+
+* Because clone() is directly supported, some non-pthread uses of it
+  will work.  Partial sharing (where some resources are shared, and
+  some are not) is not supported.
+
+* open() and readlink() on /proc/self/exe are supported.
+
+BUGS FIXED:
+
+88520   pipe+fork+dup2 kills the main program
+88604  Valgrind Aborts when using $VALGRIND_OPTS and user progra...
+88614  valgrind: vg_libpthread.c:2323 (read): Assertion `read_pt...
+88703  Stabs parser fails to handle ";"
+88886  ioctl wrappers for TIOCMBIS and TIOCMBIC
+89032  valgrind pthread_cond_timedwait fails
+89106  the 'impossible' happened
+89139  Missing sched_setaffinity & sched_getaffinity
+89198  valgrind lacks support for SIOCSPGRP and SIOCGPGRP
+89263  Missing ioctl translations for scsi-generic and CD playing
+89440  tests/deadlock.c line endings
+89481  `impossible' happened: EXEC FAILED
+89663  valgrind 2.2.0 crash on Redhat 7.2
+89792  Report pthread_mutex_lock() deadlocks instead of returnin...
+90111  statvfs64 gives invalid error/warning
+90128  crash+memory fault with stabs generated by gnat for a run...
+90778  VALGRIND_CHECK_DEFINED() not as documented in memcheck.h
+90834  cachegrind crashes at end of program without reporting re...
+91028  valgrind: vg_memory.c:229 (vgPlain_unmap_range): Assertio...
+91162  valgrind crash while debugging drivel 1.2.1
+91199  Unimplemented function
+91325  Signal routing does not propagate the siginfo structure
+91599  Assertion `cv == ((void *)0)'
+91604  rw_lookup clears orig and sends the NULL value to rw_new
+91821  Small problems building valgrind with $top_builddir ne $t...
+91844  signal 11 (SIGSEGV) at get_tcb (libpthread.c:86) in corec...
+92264  UNIMPLEMENTED FUNCTION: pthread_condattr_setpshared
+92331  per-target flags necessitate AM_PROG_CC_C_O
+92420  valgrind doesn't compile with linux 2.6.8.1/9
+92513  Valgrind 2.2.0 generates some warning messages
+92528  vg_symtab2.c:170 (addLoc): Assertion `loc->size > 0' failed.
+93096  unhandled ioctl 0x4B3A and 0x5601
+93117  Tool and core interface versions do not match
+93128  Can't run valgrind --tool=memcheck because of unimplement...
+93174  Valgrind can crash if passed bad args to certain syscalls
+93309  Stack frame in new thread is badly aligned
+93328  Wrong types used with sys_sigprocmask()
+93763  /usr/include/asm/msr.h is missing
+93776  valgrind: vg_memory.c:508 (vgPlain_find_map_space): Asser...
+93810  fcntl() argument checking a bit too strict
+94378  Assertion `tst->sigqueue_head != tst->sigqueue_tail' failed.
+94429  valgrind 2.2.0 segfault with mmap64 in glibc 2.3.3
+94645  Impossible happened: PINSRW mem
+94953  valgrind: the `impossible' happened: SIGSEGV
+95667  Valgrind does not work with any KDE app
+96243  Assertion 'res==0' failed
+96252  stage2 loader of valgrind fails to allocate memory
+96520  All programs crashing at _dl_start (in /lib/ld-2.3.3.so) ...
+96660  ioctl CDROMREADTOCENTRY causes bogus warnings
+96747  After looping in a segfault handler, the impossible happens
+96923  Zero sized arrays crash valgrind trace back with SIGFPE
+96948  valgrind stops with assertion failure regarding mmap2
+96966  valgrind fails when application opens more than 16 sockets
+97398  valgrind: vg_libpthread.c:2667 Assertion failed
+97407  valgrind: vg_mylibc.c:1226 (vgPlain_safe_fd): Assertion `...
+97427  "Warning: invalid file descriptor -1 in syscall close()" ...
+97785  missing backtrace
+97792  build in obj dir fails - autoconf / makefile cleanup
+97880  pthread_mutex_lock fails from shared library (special ker...
+97975  program aborts without ang VG messages
+98129  Failed when open and close file 230000 times using stdio
+98175  Crashes when using valgrind-2.2.0 with a program using al...
+98288  Massif broken
+98303  UNIMPLEMENTED FUNCTION pthread_condattr_setpshared
+98630  failed--compilation missing warnings.pm, fails to make he...
+98756  Cannot valgrind signal-heavy kdrive X server
+98966  valgrinding the JVM fails with a sanity check assertion
+99035  Valgrind crashes while profiling
+99142  loops with message "Signal 11 being dropped from thread 0...
+99195  threaded apps crash on thread start (using QThread::start...
+99348  Assertion `vgPlain_lseek(core_fd, 0, 1) == phdrs[i].p_off...
+99568  False negative due to mishandling of mprotect
+99738  valgrind memcheck crashes on program that uses sigitimer
+99923  0-sized allocations are reported as leaks
+99949  program seg faults after exit()
+100036         "newSuperblock's request for 1048576 bytes failed"
+100116         valgrind: (pthread_cond_init): Assertion `sizeof(* cond) ...
+100486         memcheck reports "valgrind: the `impossible' happened: V...
+100833         second call to "mremap" fails with EINVAL
+101156         (vgPlain_find_map_space): Assertion `(addr & ((1 << 12)-1...
+101173         Assertion `recDepth >= 0 && recDepth < 500' failed
+101291         creating threads in a forked process fails
+101313         valgrind causes different behavior when resizing a window...
+101423         segfault for c++ array of floats
+101562         valgrind massif dies on SIGINT even with signal handler r...
+
+
+Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+2.2.0 brings nine months worth of improvements and bug fixes.  We
+believe it to be a worthy successor to 2.0.0.  There are literally
+hundreds of bug fixes and minor improvements.  There are also some
+fairly major user-visible changes:
+
+* A complete overhaul of handling of system calls and signals, and 
+  their interaction with threads.  In general, the accuracy of the 
+  system call, thread and signal simulations is much improved:
+
+  - Blocking system calls behave exactly as they do when running
+    natively (not on valgrind).  That is, if a syscall blocks only the
+    calling thread when running natively, than it behaves the same on
+    valgrind.  No more mysterious hangs because V doesn't know that some
+    syscall or other, should block only the calling thread.
+
+  - Interrupted syscalls should now give more faithful results.
+
+  - Signal contexts in signal handlers are supported.
+
+* Improvements to NPTL support to the extent that V now works 
+  properly on NPTL-only setups.
+
+* Greater isolation between Valgrind and the program being run, so
+  the program is less likely to inadvertently kill Valgrind by
+  doing wild writes.
+
+* Massif: a new space profiling tool.  Try it!  It's cool, and it'll
+  tell you in detail where and when your C/C++ code is allocating heap.
+  Draws pretty .ps pictures of memory use against time.  A potentially
+  powerful tool for making sense of your program's space use.
+
+* File descriptor leakage checks.  When enabled, Valgrind will print out
+  a list of open file descriptors on exit.
+
+* Improved SSE2/SSE3 support.
+
+* Time-stamped output; use --time-stamp=yes
+
+
+
+Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.1.2
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+2.2.0 is not much different from 2.1.2, released seven weeks ago.
+A number of bugs have been fixed, most notably #85658, which gave
+problems for quite a few people.  There have been many internal
+cleanups, but those are not user visible.
+
+The following bugs have been fixed since 2.1.2:
+
+85658   Assert in coregrind/vg_libpthread.c:2326 (open64) !=
+        (void*)0 failed
+        This bug was reported multiple times, and so the following
+        duplicates of it are also fixed: 87620, 85796, 85935, 86065, 
+        86919, 86988, 87917, 88156
+
+80716   Semaphore mapping bug caused by unmap (sem_destroy)
+        (Was fixed prior to 2.1.2)
+
+86987   semctl and shmctl syscalls family is not handled properly
+
+86696   valgrind 2.1.2 + RH AS2.1 + librt
+
+86730   valgrind locks up at end of run with assertion failure 
+        in __pthread_unwind
+
+86641   memcheck doesn't work with Mesa OpenGL/ATI on Suse 9.1
+        (also fixes 74298, a duplicate of this)
+
+85947   MMX/SSE unhandled instruction 'sfence'
+
+84978   Wrong error "Conditional jump or move depends on
+        uninitialised value" resulting from "sbbl %reg, %reg"
+
+86254   ssort() fails when signed int return type from comparison is 
+        too small to handle result of unsigned int subtraction
+
+87089   memalign( 4, xxx) makes valgrind assert
+
+86407   Add support for low-level parallel port driver ioctls.
+
+70587   Add timestamps to Valgrind output? (wishlist)
+
+84937   vg_libpthread.c:2505 (se_remap): Assertion `res == 0'
+        (fixed prior to 2.1.2)
+
+86317   cannot load libSDL-1.2.so.0 using valgrind
+
+86989   memcpy from mac_replace_strmem.c complains about
+        uninitialized pointers passed when length to copy is zero
+
+85811   gnu pascal symbol causes segmentation fault; ok in 2.0.0
+
+79138   writing to sbrk()'d memory causes segfault
+
+77369   sched deadlock while signal received during pthread_join
+        and the joined thread exited
+
+88115   In signal handler for SIGFPE,  siginfo->si_addr is wrong 
+        under Valgrind
+
+78765   Massif crashes on app exit if FP exceptions are enabled
+
+Additionally there are the following changes, which are not 
+connected to any bug report numbers, AFAICS:
+
+* Fix scary bug causing mis-identification of SSE stores vs
+  loads and so causing memcheck to sometimes give nonsense results
+  on SSE code.
+
+* Add support for the POSIX message queue system calls.
+
+* Fix to allow 32-bit Valgrind to run on AMD64 boxes.  Note: this does
+  NOT allow Valgrind to work with 64-bit executables - only with 32-bit
+  executables on an AMD64 box.
+
+* At configure time, only check whether linux/mii.h can be processed 
+  so that we don't generate ugly warnings by trying to compile it.
+
+* Add support for POSIX clocks and timers.
+
+
+
+Developer (cvs head) release 2.1.2 (18 July 2004)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+2.1.2 contains four months worth of bug fixes and refinements.
+Although officially a developer release, we believe it to be stable
+enough for widespread day-to-day use.  2.1.2 is pretty good, so try it
+first, although there is a chance it won't work.  If so then try 2.0.0
+and tell us what went wrong."  2.1.2 fixes a lot of problems present
+in 2.0.0 and is generally a much better product.
+
+Relative to 2.1.1, a large number of minor problems with 2.1.1 have
+been fixed, and so if you use 2.1.1 you should try 2.1.2.  Users of
+the last stable release, 2.0.0, might also want to try this release.
+
+The following bugs, and probably many more, have been fixed.  These
+are listed at http://bugs.kde.org.  Reporting a bug for valgrind in
+the http://bugs.kde.org is much more likely to get you a fix than
+mailing developers directly, so please continue to keep sending bugs
+there.
+
+76869   Crashes when running any tool under Fedora Core 2 test1
+        This fixes the problem with returning from a signal handler 
+        when VDSOs are turned off in FC2.
+
+69508   java 1.4.2 client fails with erroneous "stack size too small".
+        This fix makes more of the pthread stack attribute related 
+        functions work properly.  Java still doesn't work though.
+
+71906   malloc alignment should be 8, not 4
+        All memory returned by malloc/new etc is now at least
+        8-byte aligned.
+
+81970   vg_alloc_ThreadState: no free slots available
+        (closed because the workaround is simple: increase
+         VG_N_THREADS, rebuild and try again.)
+
+78514   Conditional jump or move depends on uninitialized value(s)
+        (a slight mishanding of FP code in memcheck)
+
+77952   pThread Support (crash) (due to initialisation-ordering probs)
+        (also 85118)
+
+80942   Addrcheck wasn't doing overlap checking as it should.
+78048   return NULL on malloc/new etc failure, instead of asserting
+73655   operator new() override in user .so files often doesn't get picked up
+83060   Valgrind does not handle native kernel AIO
+69872   Create proper coredumps after fatal signals
+82026   failure with new glibc versions: __libc_* functions are not exported
+70344   UNIMPLEMENTED FUNCTION: tcdrain 
+81297   Cancellation of pthread_cond_wait does not require mutex
+82872   Using debug info from additional packages (wishlist)
+83025   Support for ioctls FIGETBSZ and FIBMAP
+83340   Support for ioctl HDIO_GET_IDENTITY
+79714   Support for the semtimedop system call.
+77022   Support for ioctls FBIOGET_VSCREENINFO and FBIOGET_FSCREENINFO
+82098   hp2ps ansification (wishlist)
+83573   Valgrind SIGSEGV on execve
+82999   show which cmdline option was erroneous (wishlist)
+83040   make valgrind VPATH and distcheck-clean (wishlist)
+83998   Assertion `newfd > vgPlain_max_fd' failed (see below)
+82722   Unchecked mmap in as_pad leads to mysterious failures later
+78958   memcheck seg faults while running Mozilla 
+85416   Arguments with colon (e.g. --logsocket) ignored
+
+
+Additionally there are the following changes, which are not 
+connected to any bug report numbers, AFAICS:
+
+* Rearranged address space layout relative to 2.1.1, so that
+  Valgrind/tools will run out of memory later than currently in many
+  circumstances.  This is good news esp. for Calltree.  It should
+  be possible for client programs to allocate over 800MB of
+  memory when using memcheck now.
+
+* Improved checking when laying out memory.  Should hopefully avoid
+  the random segmentation faults that 2.1.1 sometimes caused.
+
+* Support for Fedora Core 2 and SuSE 9.1.  Improvements to NPTL
+  support to the extent that V now works properly on NPTL-only setups.
+
+* Renamed the following options:
+  --logfile-fd  -->  --log-fd
+  --logfile     -->  --log-file
+  --logsocket   -->  --log-socket
+  to be consistent with each other and other options (esp. --input-fd).
+
+* Add support for SIOCGMIIPHY, SIOCGMIIREG and SIOCSMIIREG ioctls and
+  improve the checking of other interface related ioctls.
+
+* Fix building with gcc-3.4.1.
+
+* Remove limit on number of semaphores supported.
+
+* Add support for syscalls: set_tid_address (258), acct (51).
+
+* Support instruction "repne movs" -- not official but seems to occur.
+
+* Implement an emulated soft limit for file descriptors in addition to
+  the current reserved area, which effectively acts as a hard limit. The
+  setrlimit system call now simply updates the emulated limits as best
+  as possible - the hard limit is not allowed to move at all and just
+  returns EPERM if you try and change it.  This should stop reductions
+  in the soft limit causing assertions when valgrind tries to allocate
+  descriptors from the reserved area.
+  (This actually came from bug #83998).
+
+* Major overhaul of Cachegrind implementation.  First user-visible change
+  is that cachegrind.out files are now typically 90% smaller than they
+  used to be;  code annotation times are correspondingly much smaller.
+  Second user-visible change is that hit/miss counts for code that is
+  unloaded at run-time is no longer dumped into a single "discard" pile,
+  but accurately preserved.
+
+* Client requests for telling valgrind about memory pools.
+
+
+
+Developer (cvs head) release 2.1.1 (12 March 2004)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+2.1.1 contains some internal structural changes needed for V's
+long-term future.  These don't affect end-users.  Most notable
+user-visible changes are:
+
+* Greater isolation between Valgrind and the program being run, so
+  the program is less likely to inadvertently kill Valgrind by
+  doing wild writes.
+
+* Massif: a new space profiling tool.  Try it!  It's cool, and it'll
+  tell you in detail where and when your C/C++ code is allocating heap.
+  Draws pretty .ps pictures of memory use against time.  A potentially
+  powerful tool for making sense of your program's space use.
+
+* Fixes for many bugs, including support for more SSE2/SSE3 instructions,
+  various signal/syscall things, and various problems with debug
+  info readers.
+
+* Support for glibc-2.3.3 based systems.
+
+We are now doing automatic overnight build-and-test runs on a variety
+of distros.  As a result, we believe 2.1.1 builds and runs on:
+Red Hat 7.2, 7.3, 8.0, 9, Fedora Core 1, SuSE 8.2, SuSE 9.
+
+
+The following bugs, and probably many more, have been fixed.  These
+are listed at http://bugs.kde.org.  Reporting a bug for valgrind in
+the http://bugs.kde.org is much more likely to get you a fix than
+mailing developers directly, so please continue to keep sending bugs
+there.
+
+69616   glibc 2.3.2 w/NPTL is massively different than what valgrind expects 
+69856   I don't know how to instrument MMXish stuff (Helgrind)
+73892   valgrind segfaults starting with Objective-C debug info 
+        (fix for S-type stabs)
+73145   Valgrind complains too much about close(<reserved fd>) 
+73902   Shadow memory allocation seems to fail on RedHat 8.0 
+68633   VG_N_SEMAPHORES too low (V itself was leaking semaphores)
+75099   impossible to trace multiprocess programs 
+76839   the `impossible' happened: disInstr: INT but not 0x80 ! 
+76762   vg_to_ucode.c:3748 (dis_push_segreg): Assertion `sz == 4' failed. 
+76747   cannot include valgrind.h in c++ program 
+76223   parsing B(3,10) gave NULL type => impossible happens 
+75604   shmdt handling problem 
+76416   Problems with gcc 3.4 snap 20040225 
+75614   using -gstabs when building your programs the `impossible' happened
+75787   Patch for some CDROM ioctls CDORM_GET_MCN, CDROM_SEND_PACKET,
+75294   gcc 3.4 snapshot's libstdc++ have unsupported instructions. 
+        (REP RET)
+73326   vg_symtab2.c:272 (addScopeRange): Assertion `range->size > 0' failed. 
+72596   not recognizing __libc_malloc 
+69489   Would like to attach ddd to running program 
+72781   Cachegrind crashes with kde programs 
+73055   Illegal operand at DXTCV11CompressBlockSSE2 (more SSE opcodes)
+73026   Descriptor leak check reports port numbers wrongly 
+71705   README_MISSING_SYSCALL_OR_IOCTL out of date 
+72643   Improve support for SSE/SSE2 instructions 
+72484   valgrind leaves it's own signal mask in place when execing 
+72650   Signal Handling always seems to restart system calls 
+72006   The mmap system call turns all errors in ENOMEM 
+71781   gdb attach is pretty useless 
+71180   unhandled instruction bytes: 0xF 0xAE 0x85 0xE8 
+69886   writes to zero page cause valgrind to assert on exit 
+71791   crash when valgrinding gimp 1.3 (stabs reader problem)
+69783   unhandled syscall: 218 
+69782   unhandled instruction bytes: 0x66 0xF 0x2B 0x80 
+70385   valgrind fails if the soft file descriptor limit is less 
+        than about 828
+69529   "rep; nop" should do a yield 
+70827   programs with lots of shared libraries report "mmap failed" 
+        for some of them when reading symbols 
+71028   glibc's strnlen is optimised enough to confuse valgrind 
+
+
+
+
+Unstable (cvs head) release 2.1.0 (15 December 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+For whatever it's worth, 2.1.0 actually seems pretty darn stable to me
+(Julian).  It looks eminently usable, and given that it fixes some
+significant bugs, may well be worth using on a day-to-day basis.
+2.1.0 is known to build and pass regression tests on: SuSE 9, SuSE
+8.2, RedHat 8.
+
+2.1.0 most notably includes Jeremy Fitzhardinge's complete overhaul of
+handling of system calls and signals, and their interaction with
+threads.  In general, the accuracy of the system call, thread and
+signal simulations is much improved.  Specifically:
+
+- Blocking system calls behave exactly as they do when running
+  natively (not on valgrind).  That is, if a syscall blocks only the
+  calling thread when running natively, than it behaves the same on
+  valgrind.  No more mysterious hangs because V doesn't know that some
+  syscall or other, should block only the calling thread.
+
+- Interrupted syscalls should now give more faithful results.
+
+- Finally, signal contexts in signal handlers are supported.  As a
+  result, konqueror on SuSE 9 no longer segfaults when notified of
+  file changes in directories it is watching.
+
+Other changes:
+
+- Robert Walsh's file descriptor leakage checks.  When enabled,
+  Valgrind will print out a list of open file descriptors on
+  exit.  Along with each file descriptor, Valgrind prints out a stack
+  backtrace of where the file was opened and any details relating to the
+  file descriptor such as the file name or socket details.
+  To use, give: --track-fds=yes
+
+- Implemented a few more SSE/SSE2 instructions.
+
+- Less crud on the stack when you do 'where' inside a GDB attach.
+
+- Fixed the following bugs:
+  68360: Valgrind does not compile against 2.6.0-testX kernels
+  68525: CVS head doesn't compile on C90 compilers
+  68566: pkgconfig support (wishlist)
+  68588: Assertion `sz == 4' failed in vg_to_ucode.c (disInstr)
+  69140: valgrind not able to explicitly specify a path to a binary. 
+  69432: helgrind asserts encountering a MutexErr when there are 
+         EraserErr suppressions
+
+- Increase the max size of the translation cache from 200k average bbs
+  to 300k average bbs.  Programs on the size of OOo (680m17) are
+  thrashing the cache at the smaller size, creating large numbers of
+  retranslations and wasting significant time as a result.
+
+
+
+Stable release 2.0.0 (5 Nov 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+2.0.0 improves SSE/SSE2 support, fixes some minor bugs, and
+improves support for SuSE 9 and the Red Hat "Severn" beta.
+
+- Further improvements to SSE/SSE2 support.  The entire test suite of
+  the GNU Scientific Library (gsl-1.4) compiled with Intel Icc 7.1
+  20030307Z '-g -O -xW' now works.  I think this gives pretty good
+  coverage of SSE/SSE2 floating point instructions, or at least the
+  subset emitted by Icc.
+
+- Also added support for the following instructions:
+    MOVNTDQ UCOMISD UNPCKLPS UNPCKHPS SQRTSS
+    PUSH/POP %{FS,GS}, and PUSH %CS (Nb: there is no POP %CS).
+
+- CFI support for GDB version 6.  Needed to enable newer GDBs
+  to figure out where they are when using --gdb-attach=yes.
+
+- Fix this:
+      mc_translate.c:1091 (memcheck_instrument): Assertion
+      `u_in->size == 4 || u_in->size == 16' failed.
+
+- Return an error rather than panicing when given a bad socketcall.
+
+- Fix checking of syscall rt_sigtimedwait().
+
+- Implement __NR_clock_gettime (syscall 265).  Needed on Red Hat Severn.
+
+- Fixed bug in overlap check in strncpy() -- it was assuming the src was 'n'
+  bytes long, when it could be shorter, which could cause false
+  positives.
+
+- Support use of select() for very large numbers of file descriptors.
+
+- Don't fail silently if the executable is statically linked, or is
+  setuid/setgid. Print an error message instead.
+
+- Support for old DWARF-1 format line number info.
+
+
+
+Snapshot 20031012 (12 October 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Three months worth of bug fixes, roughly.  Most significant single
+change is improved SSE/SSE2 support, mostly thanks to Dirk Mueller.
+
+20031012 builds on Red Hat Fedora ("Severn") but doesn't really work
+(curiosly, mozilla runs OK, but a modest "ls -l" bombs).  I hope to
+get a working version out soon.  It may or may not work ok on the
+forthcoming SuSE 9; I hear positive noises about it but haven't been
+able to verify this myself (not until I get hold of a copy of 9).
+
+A detailed list of changes, in no particular order:
+
+- Describe --gen-suppressions in the FAQ.
+
+- Syscall __NR_waitpid supported.
+
+- Minor MMX bug fix.
+
+- -v prints program's argv[] at startup.
+
+- More glibc-2.3 suppressions.
+
+- Suppressions for stack underrun bug(s) in the c++ support library
+  distributed with Intel Icc 7.0.
+
+- Fix problems reading /proc/self/maps.
+
+- Fix a couple of messages that should have been suppressed by -q, 
+  but weren't.
+
+- Make Addrcheck understand "Overlap" suppressions.
+
+- At startup, check if program is statically linked and bail out if so.
+
+- Cachegrind: Auto-detect Intel Pentium-M, also VIA Nehemiah
+
+- Memcheck/addrcheck: minor speed optimisations
+
+- Handle syscall __NR_brk more correctly than before.
+
+- Fixed incorrect allocate/free mismatch errors when using
+  operator new(unsigned, std::nothrow_t const&)
+  operator new[](unsigned, std::nothrow_t const&)
+
+- Support POSIX pthread spinlocks.
+
+- Fixups for clean compilation with gcc-3.3.1.
+
+- Implemented more opcodes: 
+    - push %es
+    - push %ds
+    - pop %es
+    - pop %ds
+    - movntq
+    - sfence
+    - pshufw
+    - pavgb
+    - ucomiss
+    - enter
+    - mov imm32, %esp
+    - all "in" and "out" opcodes
+    - inc/dec %esp
+    - A whole bunch of SSE/SSE2 instructions
+
+- Memcheck: don't bomb on SSE/SSE2 code.
+
+
+Snapshot 20030725 (25 July 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Fixes some minor problems in 20030716.
+
+- Fix bugs in overlap checking for strcpy/memcpy etc.
+
+- Do overlap checking with Addrcheck as well as Memcheck.
+
+- Fix this:
+      Memcheck: the `impossible' happened:
+      get_error_name: unexpected type
+
+- Install headers needed to compile new skins.
+
+- Remove leading spaces and colon in the LD_LIBRARY_PATH / LD_PRELOAD
+  passed to non-traced children.
+
+- Fix file descriptor leak in valgrind-listener.
+
+- Fix longstanding bug in which the allocation point of a 
+  block resized by realloc was not correctly set.  This may
+  have caused confusing error messages.
+
+
+Snapshot 20030716 (16 July 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+20030716 is a snapshot of our current CVS head (development) branch.
+This is the branch which will become valgrind-2.0.  It contains
+significant enhancements over the 1.9.X branch.
+
+Despite this being a snapshot of the CVS head, it is believed to be
+quite stable -- at least as stable as 1.9.6 or 1.0.4, if not more so
+-- and therefore suitable for widespread use.  Please let us know asap
+if it causes problems for you.
+
+Two reasons for releasing a snapshot now are:
+
+- It's been a while since 1.9.6, and this snapshot fixes
+  various problems that 1.9.6 has with threaded programs 
+  on glibc-2.3.X based systems.
+
+- So as to make available improvements in the 2.0 line.
+
+Major changes in 20030716, as compared to 1.9.6:
+
+- More fixes to threading support on glibc-2.3.1 and 2.3.2-based
+  systems (SuSE 8.2, Red Hat 9).  If you have had problems
+  with inconsistent/illogical behaviour of errno, h_errno or the DNS
+  resolver functions in threaded programs, 20030716 should improve
+  matters.  This snapshot seems stable enough to run OpenOffice.org
+  1.1rc on Red Hat 7.3, SuSE 8.2 and Red Hat 9, and that's a big
+  threaded app if ever I saw one.
+
+- Automatic generation of suppression records; you no longer
+  need to write them by hand.  Use --gen-suppressions=yes.
+
+- strcpy/memcpy/etc check their arguments for overlaps, when
+  running with the Memcheck or Addrcheck skins.
+
+- malloc_usable_size() is now supported.
+
+- new client requests:
+    - VALGRIND_COUNT_ERRORS, VALGRIND_COUNT_LEAKS: 
+      useful with regression testing
+    - VALGRIND_NON_SIMD_CALL[0123]: for running arbitrary functions 
+      on real CPU (use with caution!)
+
+- The GDB attach mechanism is more flexible.  Allow the GDB to
+  be run to be specified by --gdb-path=/path/to/gdb, and specify
+  which file descriptor V will read its input from with
+  --input-fd=<number>.
+
+- Cachegrind gives more accurate results (wasn't tracking instructions in
+  malloc() and friends previously, is now).
+
+- Complete support for the MMX instruction set.
+
+- Partial support for the SSE and SSE2 instruction sets.  Work for this
+  is ongoing.  About half the SSE/SSE2 instructions are done, so
+  some SSE based programs may work.  Currently you need to specify
+  --skin=addrcheck.  Basically not suitable for real use yet.
+
+- Significant speedups (10%-20%) for standard memory checking.
+
+- Fix assertion failure in pthread_once().
+
+- Fix this:
+    valgrind: vg_intercept.c:598 (vgAllRoadsLeadToRome_select): 
+              Assertion `ms_end >= ms_now' failed.
+
+- Implement pthread_mutexattr_setpshared.
+
+- Understand Pentium 4 branch hints.  Also implemented a couple more
+  obscure x86 instructions.
+
+- Lots of other minor bug fixes.
+
+- We have a decent regression test system, for the first time.
+  This doesn't help you directly, but it does make it a lot easier
+  for us to track the quality of the system, especially across
+  multiple linux distributions.  
+
+  You can run the regression tests with 'make regtest' after 'make
+  install' completes.  On SuSE 8.2 and Red Hat 9 I get this:
+     == 84 tests, 0 stderr failures, 0 stdout failures ==
+
+  On Red Hat 8, I get this:
+
+     == 84 tests, 2 stderr failures, 1 stdout failure ==
+     corecheck/tests/res_search               (stdout)
+     memcheck/tests/sigaltstack               (stderr)
+
+  sigaltstack is probably harmless.  res_search doesn't work
+  on R H 8 even running natively, so I'm not too worried.   
+
+  On Red Hat 7.3, a glibc-2.2.5 system, I get these harmless failures:
+
+     == 84 tests, 2 stderr failures, 1 stdout failure ==
+     corecheck/tests/pth_atfork1              (stdout)
+     corecheck/tests/pth_atfork1              (stderr)
+     memcheck/tests/sigaltstack               (stderr)
+
+  You need to run on a PII system, at least, since some tests
+  contain P6-specific instructions, and the test machine needs
+  access to the internet so that corecheck/tests/res_search
+  (a test that the DNS resolver works) can function.
+
+As ever, thanks for the vast amount of feedback :) and bug reports :(
+We may not answer all messages, but we do at least look at all of
+them, and tend to fix the most frequently reported bugs.
+
+
+
+Version 1.9.6 (7 May 2003 or thereabouts)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Major changes in 1.9.6:
+
+- Improved threading support for glibc >= 2.3.2 (SuSE 8.2,
+  RedHat 9, to name but two ...)  It turned out that 1.9.5
+  had problems with threading support on glibc >= 2.3.2,
+  usually manifested by threaded programs deadlocking in system calls,
+  or running unbelievably slowly.  Hopefully these are fixed now.  1.9.6
+  is the first valgrind which gives reasonable support for
+  glibc-2.3.2.  Also fixed a 2.3.2 problem with pthread_atfork().
+
+- Majorly expanded FAQ.txt.  We've added workarounds for all
+  common problems for which a workaround is known.
+
+Minor changes in 1.9.6:
+
+- Fix identification of the main thread's stack.  Incorrect
+  identification of it was causing some on-stack addresses to not get
+  identified as such.  This only affected the usefulness of some error
+  messages; the correctness of the checks made is unchanged.
+
+- Support for kernels >= 2.5.68.
+
+- Dummy implementations of __libc_current_sigrtmin, 
+  __libc_current_sigrtmax and __libc_allocate_rtsig, hopefully
+  good enough to keep alive programs which previously died for lack of
+  them.
+
+- Fix bug in the VALGRIND_DISCARD_TRANSLATIONS client request.
+
+- Fix bug in the DWARF2 debug line info loader, when instructions 
+  following each other have source lines far from each other 
+  (e.g. with inlined functions).
+
+- Debug info reading: read symbols from both "symtab" and "dynsym"
+  sections, rather than merely from the one that comes last in the
+  file.
+
+- New syscall support: prctl(), creat(), lookup_dcookie().
+
+- When checking calls to accept(), recvfrom(), getsocketopt(),
+  don't complain if buffer values are NULL.
+
+- Try and avoid assertion failures in
+  mash_LD_PRELOAD_and_LD_LIBRARY_PATH.
+
+- Minor bug fixes in cg_annotate.
+
+
+
+Version 1.9.5 (7 April 2003)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+It occurs to me that it would be helpful for valgrind users to record
+in the source distribution the changes in each release.  So I now
+attempt to mend my errant ways :-)  Changes in this and future releases
+will be documented in the NEWS file in the source distribution.
+
+Major changes in 1.9.5:
+
+- (Critical bug fix): Fix a bug in the FPU simulation.  This was
+  causing some floating point conditional tests not to work right.
+  Several people reported this.  If you had floating point code which
+  didn't work right on 1.9.1 to 1.9.4, it's worth trying 1.9.5.
+
+- Partial support for Red Hat 9.  RH9 uses the new Native Posix 
+  Threads Library (NPTL), instead of the older LinuxThreads.  
+  This potentially causes problems with V which will take some
+  time to correct.  In the meantime we have partially worked around
+  this, and so 1.9.5 works on RH9.  Threaded programs still work,
+  but they may deadlock, because some system calls (accept, read,
+  write, etc) which should be nonblocking, in fact do block.  This
+  is a known bug which we are looking into.
+
+  If you can, your best bet (unfortunately) is to avoid using 
+  1.9.5 on a Red Hat 9 system, or on any NPTL-based distribution.
+  If your glibc is 2.3.1 or earlier, you're almost certainly OK.
+
+Minor changes in 1.9.5:
+
+- Added some #errors to valgrind.h to ensure people don't include
+  it accidentally in their sources.  This is a change from 1.0.X
+  which was never properly documented.  The right thing to include
+  is now memcheck.h.  Some people reported problems and strange
+  behaviour when (incorrectly) including valgrind.h in code with 
+  1.9.1 -- 1.9.4.  This is no longer possible.
+
+- Add some __extension__ bits and pieces so that gcc configured
+  for valgrind-checking compiles even with -Werror.  If you
+  don't understand this, ignore it.  Of interest to gcc developers
+  only.
+
+- Removed a pointless check which caused problems interworking 
+  with Clearcase.  V would complain about shared objects whose
+  names did not end ".so", and refuse to run.  This is now fixed.
+  In fact it was fixed in 1.9.4 but not documented.
+
+- Fixed a bug causing an assertion failure of "waiters == 1"
+  somewhere in vg_scheduler.c, when running large threaded apps,
+  notably MySQL.
+
+- Add support for the munlock system call (124).
+
+Some comments about future releases:
+
+1.9.5 is, we hope, the most stable Valgrind so far.  It pretty much
+supersedes the 1.0.X branch.  If you are a valgrind packager, please
+consider making 1.9.5 available to your users.  You can regard the
+1.0.X branch as obsolete: 1.9.5 is stable and vastly superior.  There
+are no plans at all for further releases of the 1.0.X branch.
+
+If you want a leading-edge valgrind, consider building the cvs head
+(from SourceForge), or getting a snapshot of it.  Current cool stuff
+going in includes MMX support (done); SSE/SSE2 support (in progress),
+a significant (10-20%) performance improvement (done), and the usual
+large collection of minor changes.  Hopefully we will be able to
+improve our NPTL support, but no promises.
+
diff --git a/.svn/text-base/README.svn-base b/.svn/text-base/README.svn-base
new file mode 100644 (file)
index 0000000..2811aee
--- /dev/null
@@ -0,0 +1,95 @@
+
+Release notes for Valgrind
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you are building a binary package of Valgrind for distribution,
+please read README_PACKAGERS.  It contains some important information.
+
+If you are developing Valgrind, please read README_DEVELOPERS.  It contains
+some useful information.
+
+For instructions on how to build/install, see the end of this file.
+
+If you have problems, consult the FAQ to see if there are workarounds.
+
+
+Executive Summary
+~~~~~~~~~~~~~~~~~
+Valgrind is a framework for building dynamic analysis tools. There are
+Valgrind tools that can automatically detect many memory management
+and threading bugs, and profile your programs in detail. You can also
+use Valgrind to build new tools.
+
+The Valgrind distribution currently includes six production-quality
+tools: a memory error detector, two thread error detectors, a cache
+and branch-prediction profiler, a call-graph generating cache abd
+branch-prediction profiler, and a heap profiler. It also includes
+three experimental tools: a heap/stack/global array overrun detector,
+a different kind of heap profiler, and a SimPoint basic block vector
+generator.
+
+Valgrind is closely tied to details of the CPU, operating system and to
+a lesser extent, compiler and basic C libraries. This makes it difficult
+to make it portable.  Nonetheless, it is available for the following
+platforms: 
+
+- x86/Linux
+- AMD64/Linux
+- PPC32/Linux
+- PPC64/Linux
+- ARM/Linux
+- x86/MacOSX
+- AMD64/MacOSX
+
+Note that AMD64 is just another name for x86-64, and Valgrind runs fine
+on Intel processors.  Also note that the core of MacOSX is called
+"Darwin" and this name is used sometimes.
+
+Valgrind is licensed under the GNU General Public License, version 2. 
+Read the file COPYING in the source distribution for details.
+
+However: if you contribute code, you need to make it available as GPL
+version 2 or later, and not 2-only.
+
+
+Documentation
+~~~~~~~~~~~~~
+A comprehensive user guide is supplied.  Point your browser at
+$PREFIX/share/doc/valgrind/manual.html, where $PREFIX is whatever you
+specified with --prefix= when building.
+
+
+Building and installing it
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+To install from the Subversion repository :
+
+  0. Check out the code from SVN, following the instructions at
+     http://www.valgrind.org/downloads/repository.html.
+
+  1. cd into the source directory.
+
+  2. Run ./autogen.sh to setup the environment (you need the standard
+     autoconf tools to do so).
+
+  3. Continue with the following instructions...
+
+To install from a tar.bz2 distribution:
+
+  4. Run ./configure, with some options if you wish.  The only interesting
+     one is the usual --prefix=/where/you/want/it/installed.
+
+  5. Run "make".
+
+  6. Run "make install", possibly as root if the destination permissions
+     require that.
+
+  7. See if it works.  Try "valgrind ls -l".  Either this works, or it
+     bombs out with some complaint.  In that case, please let us know
+     (see www.valgrind.org).
+
+Important!  Do not move the valgrind installation into a place
+different from that specified by --prefix at build time.  This will
+cause things to break in subtle ways, mostly when Valgrind handles
+fork/exec calls.
+
+
+The Valgrind Developers
diff --git a/.svn/text-base/README_DEVELOPERS.svn-base b/.svn/text-base/README_DEVELOPERS.svn-base
new file mode 100644 (file)
index 0000000..9d523db
--- /dev/null
@@ -0,0 +1,164 @@
+
+Building and not installing it
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+To run Valgrind without having to install it, run coregrind/valgrind
+with the VALGRIND_LIB environment variable set, where <dir> is the root
+of the source tree (and must be an absolute path).  Eg:
+
+  VALGRIND_LIB=~/grind/head4/.in_place ~/grind/head4/coregrind/valgrind 
+
+This allows you to compile and run with "make" instead of "make install",
+saving you time.
+
+Or, you can use the 'vg-in-place' script which does that for you.
+
+I recommend compiling with "make --quiet" to further reduce the amount of
+output spewed out during compilation, letting you actually see any errors,
+warnings, etc.
+
+
+Running the regression tests
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+To build and run all the regression tests, run "make [--quiet] regtest".
+
+To run a subset of the regression tests, execute:
+
+  perl tests/vg_regtest <name>
+
+where <name> is a directory (all tests within will be run) or a single
+.vgtest test file, or the name of a program which has a like-named .vgtest
+file.  Eg:
+
+  perl tests/vg_regtest memcheck
+  perl tests/vg_regtest memcheck/tests/badfree.vgtest
+  perl tests/vg_regtest memcheck/tests/badfree
+
+
+Running the performance tests
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+To build and run all the performance tests, run "make [--quiet] perf".
+
+To run a subset of the performance suite, execute:
+
+  perl perf/vg_perf <name>
+
+where <name> is a directory (all tests within will be run) or a single
+.vgperf test file, or the name of a program which has a like-named .vgperf
+file.  Eg:
+
+  perl perf/vg_perf perf/
+  perl perf/vg_perf perf/bz2.vgperf
+  perl perf/vg_perf perf/bz2
+
+To compare multiple versions of Valgrind, use the --vg= option multiple
+times.  For example, if you have two Valgrinds next to each other, one in
+trunk1/ and one in trunk2/, from within either trunk1/ or trunk2/ do this to
+compare them on all the performance tests:
+
+  perl perf/vg_perf --vg=../trunk1 --vg=../trunk2 perf/
+
+
+Debugging Valgrind with GDB
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+To debug the valgrind launcher program (<prefix>/bin/valgrind) just
+run it under gdb in the normal way.
+
+Debugging the main body of the valgrind code (and/or the code for
+a particular tool) requires a bit more trickery but can be achieved
+without too much problem by following these steps:
+
+(1) Set VALGRIND_LAUNCHER to point to the valgrind executable.  Eg:
+
+      export VALGRIND_LAUNCHER=/usr/local/bin/valgrind
+
+    or for an uninstalled version in a source directory $DIR:
+
+      export VALGRIND_LAUNCHER=$DIR/coregrind/valgrind
+
+(2) Run gdb on the tool executable.  Eg:
+
+      gdb /usr/local/lib/valgrind/ppc32-linux/lackey
+
+    or
+
+      gdb $DIR/.in_place/x86-linux/memcheck
+
+(3) Do "handle SIGSEGV SIGILL nostop noprint" in GDB to prevent GDB from
+    stopping on a SIGSEGV or SIGILL:
+
+    (gdb) handle SIGILL SIGSEGV nostop noprint
+
+(4) Set any breakpoints you want and proceed as normal for gdb. The
+    macro VG_(FUNC) is expanded to vgPlain_FUNC, so If you want to set
+    a breakpoint VG_(do_exec), you could do like this in GDB:
+
+    (gdb) b vgPlain_do_exec
+
+(5) Run the tool with required options:
+
+    (gdb) run pwd
+
+Steps (1)--(3) can be put in a .gdbinit file, but any directory names must
+be fully expanded (ie. not an environment variable).
+
+A different and possibly easier way is as follows:
+
+(1) Run Valgrind as normal, but add the flag --wait-for-gdb=yes.  This
+    puts the tool executable into a wait loop soon after it gains
+    control.  This delays startup for a few seconds.
+
+(2) In a different shell, do "gdb /proc/<pid>/exe <pid>", where
+    <pid> you read from the output printed by (1).  This attaches
+    GDB to the tool executable, which should be in the abovementioned
+    wait loop.
+
+(3) Do "cont" to continue.  After the loop finishes spinning, startup
+    will continue as normal.  Note that comment (3) above re passing
+    signals applies here too.
+
+
+Self-hosting
+~~~~~~~~~~~~
+To run Valgrind under Valgrind:
+
+(1) Check out 2 trees, "Inner" and "Outer".  Inner runs the app
+    directly.  Outer runs Inner.
+
+(2) Configure inner with --enable-inner and build/install as
+    usual.
+
+(3) Configure Outer normally and build/install as usual.
+
+(4) Choose a very simple program (date) and try
+
+    outer/.../bin/valgrind --sim-hints=enable-outer --trace-children=yes  \
+       --tool=cachegrind -v inner/.../bin/valgrind --tool=none -v prog
+
+If you omit the --trace-children=yes, you'll only monitor Inner's launcher
+program, not its stage2.
+
+The whole thing is fragile, confusing and slow, but it does work well enough
+for you to get some useful performance data.  Inner has most of
+its output (ie. those lines beginning with "==<pid>==") prefixed with a '>',
+which helps a lot.
+
+At the time of writing the allocator is not annotated with client requests
+so Memcheck is not as useful as it could be.  It also has not been tested
+much, so don't be surprised if you hit problems.
+
+When using self-hosting with an outer Callgrind tool, use '--pop-on-jump'
+(on the outer). Otherwise, Callgrind has much higher memory requirements. 
+
+
+Printing out problematic blocks
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If you want to print out a disassembly of a particular block that
+causes a crash, do the following.
+
+Try running with "--vex-guest-chase-thresh=0 --trace-flags=10000000
+--trace-notbelow=999999".  This should print one line for each block
+translated, and that includes the address.
+
+Then re-run with 999999 changed to the highest bb number shown.
+This will print the one line per block, and also will print a
+disassembly of the block in which the fault occurred.
diff --git a/.svn/text-base/README_MISSING_SYSCALL_OR_IOCTL.svn-base b/.svn/text-base/README_MISSING_SYSCALL_OR_IOCTL.svn-base
new file mode 100644 (file)
index 0000000..27d1ab0
--- /dev/null
@@ -0,0 +1,184 @@
+
+Dealing with missing system call or ioctl wrappers in Valgrind
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+You're probably reading this because Valgrind bombed out whilst
+running your program, and advised you to read this file.  The good
+news is that, in general, it's easy to write the missing syscall or
+ioctl wrappers you need, so that you can continue your debugging.  If
+you send the resulting patches to me, then you'll be doing a favour to
+all future Valgrind users too.
+
+Note that an "ioctl" is just a special kind of system call, really; so
+there's not a lot of need to distinguish them (at least conceptually)
+in the discussion that follows.
+
+All this machinery is in coregrind/m_syswrap.
+
+
+What are syscall/ioctl wrappers?  What do they do?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Valgrind does what it does, in part, by keeping track of everything your
+program does.  When a system call happens, for example a request to read
+part of a file, control passes to the Linux kernel, which fulfills the
+request, and returns control to your program.  The problem is that the
+kernel will often change the status of some part of your program's memory
+as a result, and tools (instrumentation plug-ins) may need to know about
+this.
+
+Syscall and ioctl wrappers have two jobs: 
+
+1. Tell a tool what's about to happen, before the syscall takes place.  A
+   tool could perform checks beforehand, eg. if memory about to be written
+   is actually writeable.  This part is useful, but not strictly
+   essential.
+
+2. Tell a tool what just happened, after a syscall takes place.  This is
+   so it can update its view of the program's state, eg. that memory has
+   just been written to.  This step is essential.
+
+The "happenings" mostly involve reading/writing of memory.
+
+So, let's look at an example of a wrapper for a system call which
+should be familiar to many Unix programmers.
+
+
+The syscall wrapper for time()
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+The wrapper for the time system call looks like this:
+
+  PRE(sys_time)
+  {
+     /* time_t time(time_t *t); */
+     PRINT("sys_time ( %p )",ARG1);
+     PRE_REG_READ1(long, "time", int *, t);
+     if (ARG1 != 0) {
+        PRE_MEM_WRITE( "time(t)", ARG1, sizeof(vki_time_t) );
+     }
+  }
+
+  POST(sys_time)
+  {  
+     if (ARG1 != 0) {
+        POST_MEM_WRITE( ARG1, sizeof(vki_time_t) );
+     }
+  }
+
+The first thing we do happens before the syscall occurs, in the PRE() function.
+The PRE() function typically starts with invoking to the PRINT() macro. This
+PRINT() macro implements support for the --trace-syscalls command line option.
+Next, the tool is told the return type of the syscall, that the syscall has
+one argument, the type of the syscall argument and that the argument is being
+read from a register:
+
+     PRE_REG_READ1(long, "time", int *, t);
+
+Next, if a non-NULL buffer is passed in as the argument, tell the tool that the
+buffer is about to be written to:
+
+     if (ARG1 != 0) {
+        PRE_MEM_WRITE( "time", ARG1, sizeof(vki_time_t) );
+     }
+
+Finally, the really important bit, after the syscall occurs, in the POST()
+function:  if, and only if, the system call was successful, tell the tool that
+the memory was written:
+
+     if (ARG1 != 0) {
+        POST_MEM_WRITE( ARG1, sizeof(vki_time_t) );
+     }
+
+The POST() function won't be called if the syscall failed, so you
+don't need to worry about checking that in the POST() function.
+(Note: this is sometimes a bug; some syscalls do return results when
+they "fail" - for example, nanosleep returns the amount of unslept
+time if interrupted. TODO: add another per-syscall flag for this
+case.)
+
+Note that we use the type 'vki_time_t'.  This is a copy of the kernel
+type, with 'vki_' prefixed.  Our copies of such types are kept in the
+appropriate vki*.h file(s).  We don't include kernel headers or glibc headers
+directly.
+
+
+Writing your own syscall wrappers (see below for ioctl wrappers)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+If Valgrind tells you that system call NNN is unimplemented, do the 
+following:
+
+1.  Find out the name of the system call:
+
+       grep NNN /usr/include/asm/unistd*.h
+
+    This should tell you something like  __NR_mysyscallname.
+    Copy this entry to include/vki/vki-scnums-$(VG_PLATFORM).h.
+
+
+2.  Do 'man 2 mysyscallname' to get some idea of what the syscall
+    does.  Note that the actual kernel interface can differ from this,
+    so you might also want to check a version of the Linux kernel
+    source.
+
+    NOTE: any syscall which has something to do with signals or
+    threads is probably "special", and needs more careful handling.
+    Post something to valgrind-developers if you aren't sure.
+
+
+3.  Add a case to the already-huge collection of wrappers in 
+    the coregrind/m_syswrap/syswrap-*.c files. 
+    For each in-memory parameter which is read or written by
+    the syscall, do one of
+    
+      PRE_MEM_READ( ... )
+      PRE_MEM_RASCIIZ( ... ) 
+      PRE_MEM_WRITE( ... ) 
+      
+    for  that parameter.  Then do the syscall.  Then, if the syscall
+    succeeds, issue suitable POST_MEM_WRITE( ... ) calls.
+    (There's no need for POST_MEM_READ calls.)
+
+    Also, add it to the syscall_table[] array; use one of GENX_, GENXY
+    LINX_, LINXY, PLAX_, PLAXY.
+    GEN* for generic syscalls (in syswrap-generic.c), LIN* for linux
+    specific ones (in syswrap-linux.c) and PLA* for the platform
+    dependant ones (in syswrap-$(PLATFORM)-linux.c).
+    The *XY variant if it requires a PRE() and POST() function, and
+    the *X_ variant if it only requires a PRE()
+    function.  
+    
+    If you find this difficult, read the wrappers for other syscalls
+    for ideas.  A good tip is to look for the wrapper for a syscall
+    which has a similar behaviour to yours, and use it as a 
+    starting point.
+
+    If you need structure definitions and/or constants for your syscall,
+    copy them from the kernel headers into include/vki.h and co., with
+    the appropriate vki_*/VKI_* name mangling.  Don't #include any
+    kernel headers.  And certainly don't #include any glibc headers.
+
+    Test it.
+
+    Note that a common error is to call POST_MEM_WRITE( ... )
+    with 0 (NULL) as the first (address) argument.  This usually means
+    your logic is slightly inadequate.  It's a sufficiently common bug
+    that there's a built-in check for it, and you'll get a "probably
+    sanity check failure" for the syscall wrapper you just made, if this
+    is the case.
+
+
+4.  Once happy, send us the patch.  Pretty please.
+
+
+
+
+Writing your own ioctl wrappers
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Is pretty much the same as writing syscall wrappers, except that all
+the action happens within PRE(ioctl) and POST(ioctl).
+
+There's a default case, sometimes it isn't correct and you have to write a
+more specific case to get the right behaviour.
+
+As above, please create a bug report and attach the patch as described
+on http://www.valgrind.org.
+
diff --git a/.svn/text-base/README_PACKAGERS.svn-base b/.svn/text-base/README_PACKAGERS.svn-base
new file mode 100644 (file)
index 0000000..28ee8ba
--- /dev/null
@@ -0,0 +1,95 @@
+
+Greetings, packaging person!  This information is aimed at people
+building binary distributions of Valgrind.
+
+Thanks for taking the time and effort to make a binary distribution of
+Valgrind.  The following notes may save you some trouble.
+
+
+-- Do not ship your Linux distro with a completely stripped
+   /lib/ld.so.  At least leave the debugging symbol names on -- line
+   number info isn't necessary.  If you don't want to leave symbols on
+   ld.so, alternatively you can have your distro install ld.so's
+   debuginfo package by default, or make ld.so.debuginfo be a
+   requirement of your Valgrind RPM/DEB/whatever.
+
+   Reason for this is that Valgrind's Memcheck tool needs to intercept
+   calls to, and provide replacements for, some symbols in ld.so at
+   startup (most importantly strlen).  If it cannot do that, Memcheck
+   shows a large number of false positives due to the highly optimised
+   strlen (etc) routines in ld.so.  This has caused some trouble in
+   the past.  As of version 3.3.0, on some targets (ppc32-linux,
+   ppc64-linux), Memcheck will simply stop at startup (and print an
+   error message) if such symbols are not present, because it is
+   infeasible to continue.
+
+   It's not like this is going to cost you much space.  We only need
+   the symbols for ld.so (a few K at most).  Not the debug info and
+   not any debuginfo or extra symbols for any other libraries.
+
+
+-- (Unfortunate but true) When you configure to build with the 
+   --prefix=/foo/bar/xyzzy option, the prefix /foo/bar/xyzzy gets
+   baked into valgrind.  The consequence is that you _must_ install
+   valgrind at the location specified in the prefix.  If you don't,
+   it may appear to work, but will break doing some obscure things,
+   particularly doing fork() and exec().
+
+   So you can't build a relocatable RPM / whatever from Valgrind.
+
+
+-- Don't strip the debug info off lib/valgrind/$platform/vgpreload*.so
+   in the installation tree.  Either Valgrind won't work at all, or it
+   will still work if you do, but will generate less helpful error
+   messages.  Here's an example:
+
+   Mismatched free() / delete / delete []
+      at 0x40043249: free (vg_clientfuncs.c:171)
+      by 0x4102BB4E: QGArray::~QGArray(void) (tools/qgarray.cpp:149)
+      by 0x4C261C41: PptDoc::~PptDoc(void) (include/qmemarray.h:60)
+      by 0x4C261F0E: PptXml::~PptXml(void) (pptxml.cc:44)
+      Address 0x4BB292A8 is 0 bytes inside a block of size 64 alloc'd
+      at 0x4004318C: __builtin_vec_new (vg_clientfuncs.c:152)
+      by 0x4C21BC15: KLaola::readSBStream(int) const (klaola.cc:314)
+      by 0x4C21C155: KLaola::stream(KLaola::OLENode const *) (klaola.cc:416)
+      by 0x4C21788F: OLEFilter::convert(QCString const &) (olefilter.cc:272)
+
+   This tells you that some memory allocated with new[] was freed with
+   free().
+
+   Mismatched free() / delete / delete []
+      at 0x40043249: (inside vgpreload_memcheck.so)
+      by 0x4102BB4E: QGArray::~QGArray(void) (tools/qgarray.cpp:149)
+      by 0x4C261C41: PptDoc::~PptDoc(void) (include/qmemarray.h:60)
+      by 0x4C261F0E: PptXml::~PptXml(void) (pptxml.cc:44)
+      Address 0x4BB292A8 is 0 bytes inside a block of size 64 alloc'd
+      at 0x4004318C: (inside vgpreload_memcheck.so)
+      by 0x4C21BC15: KLaola::readSBStream(int) const (klaola.cc:314)
+      by 0x4C21C155: KLaola::stream(KLaola::OLENode const *) (klaola.cc:416)
+      by 0x4C21788F: OLEFilter::convert(QCString const &) (olefilter.cc:272)
+
+   This isn't so helpful.  Although you can tell there is a mismatch, 
+   the names of the allocating and deallocating functions are no longer
+   visible.  The same kind of thing occurs in various other messages 
+   from valgrind.
+
+
+-- Don't strip symbols from lib/valgrind/* in the installation tree.
+   Doing so will likely cause problems.  Removing the line number info is
+   probably OK (at least for some of the files in that directory), although
+   that has not been tested by the Valgrind developers.
+
+
+-- Please test the final installation works by running it on something
+   huge.  I suggest checking that it can start and exit successfully
+   both Firefox and OpenOffice.org.  I use these as test programs, and I
+   know they fairly thoroughly exercise Valgrind.  The command lines to use
+   are:
+
+   valgrind -v --trace-children=yes firefox
+
+   valgrind -v --trace-children=yes soffice
+
+
+If you find any more hints/tips for packaging, please report
+it as a bugreport. See http://www.valgrind.org for details.
diff --git a/.svn/text-base/aix5libc.supp.svn-base b/.svn/text-base/aix5libc.supp.svn-base
new file mode 100644 (file)
index 0000000..f70c1f8
--- /dev/null
@@ -0,0 +1,833 @@
+
+## AIX clients start off by executing a short code stub which
+## loads the preloads, and then jumps to the real client.  The
+## stub reads data belonging to V (by design) and it's easier
+## to hide the resulting errors than mess properly with permissions.
+{
+   VG_(trampoline_stuff_start) hack
+   Memcheck:Addr4
+   fun:vgPlain_trampoline_stuff_start
+}
+
+## Not really a bug in the thread library, just padding 
+## problems.
+# Syscall param thread_setmystate(arg1) points to uninitialised byte(s)
+#    at 0xD011F36C: _set_pthread+680 (in /usr/lib/libpthreads.a)
+#    by 0xD01142E4: _alloc_initial_pthread+804 (in /usr/lib/libpthreads.a)
+#    by 0xD01123AC: pthread_init+2880 (in /usr/lib/libpthreads.a)
+#    by 0x10000344: call_pthread_init+20 (in /proc/557146/object/a.out)
+#    by 0x10000258: __threads_init+64 (in /proc/557146/object/a.out)
+#    by 0xD0325278: __modinit+356 (in /usr/lib/threads/libc.a)
+#    by 0x10000198: __start+72 (in /proc/557146/object/a.out)
+{
+   AIX-thread_setmystate-padding-kludge-1
+   Memcheck:Param
+   thread_setmystate(arg1)
+   fun:_set_pthread
+   fun:_alloc_initial_pthread
+   fun:pthread_init
+}
+{
+   AIX-thread_setmystate-padding-kludge-1a
+   Memcheck:Param
+   thread_setmystate(arg1)
+   fun:_set_pthread
+   fun:_alloc_initial_pthread
+   fun:__pth_init
+}
+{
+   AIX-thread_setmystate-padding-kludge-2
+   Memcheck:Param
+   thread_setmystate(arg1)
+   fun:_set_pthread
+   fun:_fork_child
+   fun:_atfork_child
+   fun:__fork
+}
+{
+   AIX-thread_setmystate-padding-kludge-3
+   Memcheck:Param
+   thread_setmystate(arg1)
+   fun:_sigsetmask
+   fun:_p_sigaction
+}
+{
+   AIX-thread_setmystate-padding-kludge-4
+   Memcheck:Param
+   thread_setmystate(arg1)
+   fun:_sigsetmask
+   fun:sigthreadmask
+}
+{
+   AIX-thread_setmystate-padding-kludge-5
+   Memcheck:Param
+   thread_setmystate(arg1)
+   fun:_sigsetmask
+   fun:_fork_*
+}
+
+# AIX's libc contains a qsort routine which expertly does
+# memcpy(src, dst, N) for src==dst.  This is technically a
+# violation of POSIX and so Memcheck complains.
+{
+   AIX-libc-qsort-bug-1
+   Memcheck:Overlap
+   fun:memcpy
+   fun:qs2
+   fun:qsort
+}
+{
+   AIX-libc-qsort-bug-2
+   Memcheck:Overlap
+   fun:memcpy
+   fun:qs2
+   fun:qs2
+   fun:qsort
+}
+{
+   AIX-libc-qsort-bug-3
+   Memcheck:Overlap
+   fun:memcpy
+   fun:qs2
+   fun:qs2
+   fun:qs2
+}
+
+## Thread library initialisation, cause unknown.
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD030DD30: fseeko64_unlocked (in /usr/lib/libc.a)
+#    by 0xD030DFF0: fseeko64 (in /usr/lib/libc.a)
+#    by 0xD0453F2C: nlist64 (in /usr/lib/libc.a)
+#    by 0xD01267FC: _pth_init_kgetsig (in /usr/lib/libpthread.a)
+#    by 0xD01123DC: pthread_init (in /usr/lib/libpthread.a)
+#    by 0x10000344: call_pthread_init (in /proc/645084/object/a.out)
+#    by 0x10000258: __threads_init (in /proc/645084/object/a.out)
+#    by 0xD0325278: __modinit (in /usr/lib/libc.a)
+#    by 0x10000198: (below main) (in /proc/645084/object/a.out)
+{
+   AIX-thread-library-init-1
+   Memcheck:Cond
+   fun:fseeko64_unlocked
+   fun:fseeko64
+}
+
+## More of the same (cause again unknown)
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD030E1F0: __ftell (in /usr/lib/libc.a)
+#    by 0xD030E334: ftello64 (in /usr/lib/libc.a)
+#    by 0xD0454044: nlist64 (in /usr/lib/libc.a)
+#    by 0xD01267FC: _pth_init_kgetsig (in /usr/lib/libpthread.a)
+#    by 0xD01123DC: pthread_init (in /usr/lib/libpthread.a)
+#    by 0x10000344: call_pthread_init (in /proc/448094/object/a.out)
+#    by 0x10000258: __threads_init (in /proc/448094/object/a.out)
+#    by 0xD0325278: __modinit (in /usr/lib/libc.a)
+#    by 0x10000198: (below main) (in /proc/448094/object/a.out)
+{
+   AIX-thread-library-init-2
+   Memcheck:Cond
+   fun:__ftell
+   fun:ftello64
+   fun:nlist64
+}
+
+## Related wierdness (klseek is undocumented, so the wrapper
+## is a guess at best)
+{
+   AIX-libc-klseek-1
+   Memcheck:Param
+   klseek(offset)
+   fun:lseek64
+   fun:fseeko64_unlocked
+   fun:fseeko64
+}
+{
+   AIX-libc-klseek-2
+   Memcheck:Param
+   klseek(whence)
+   fun:lseek64
+   fun:fseeko64_unlocked
+   fun:fseeko64
+}
+
+## Buffer overrun in libc regexp stuff?
+# Invalid read of size 1
+#    at 0xD08A2F50: memcpy (mc_replace_strmem.c:437)
+#    by 0xD0328B30: match_re (in /usr/lib/libc.a)
+#    by 0xD032A464: match_re (in /usr/lib/libc.a)
+#    by 0xD032A464: match_re (in /usr/lib/libc.a)
+#    by 0xD032A464: match_re (in /usr/lib/libc.a)
+#    by 0xD0328AD4: match_re (in /usr/lib/libc.a)
+#    by 0xD032A464: match_re (in /usr/lib/libc.a)
+#    by 0xD032816C: __regexec_std (in /usr/lib/libc.a)
+#    by 0xD0330AA8: regexec (in /usr/lib/libc.a)
+{
+   AIX-regexp-dodgyness-1
+   Memcheck:Addr1
+   fun:memcpy
+   fun:match_re
+   fun:match_re
+   fun:match_re
+}
+
+## Misuse of memcpy
+# Source and destination overlap in memcpy(0x32154ECC, 0x32154EC8, 8)
+#    at 0xD13A4F30: memcpy (mc_replace_strmem.c:437)
+#    by 0xD03D34BC: __ntree_locate (in /usr/lib/libc.a)
+#    by 0xD03D3090: ntree_search (in /usr/lib/libc.a)
+#    by 0xD0406E8C: colon_search (in /usr/lib/libc.a)
+#    by 0xD03DE068: method_getpw_common (in /usr/lib/libc.a)
+#    by 0xD03DEB18: method_getpwuid (in /usr/lib/libc.a)
+#    by 0xD03C89DC: _getpwuid_shadow_r (in /usr/lib/libc.a)
+#    by 0xD03C62FC: _getpwuid_shadow (in /usr/lib/libc.a)
+{
+   AIX-overlapping-memcpy-1
+   Memcheck:Overlap
+   fun:memcpy
+   fun:__ntree_locate
+   fun:ntree_search
+   fun:colon_search
+}
+{
+   AIX-overlapping-memcpy-2
+   Memcheck:Overlap
+   fun:memcpy
+   fun:__ntree_locate
+   fun:__ntree_locate
+   fun:ntree_search
+}
+
+## No idea what this is caused by
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD03069F8: fflush_unlocked (in /usr/lib/libc.a)
+#    by 0xD03077AC: fflush (in /usr/lib/libc.a)
+#    by 0xD03D545C: common_close (in /usr/lib/libc.a)
+#    by 0xD03D46B8: common_unlock (in /usr/lib/libc.a)
+#    by 0xD040712C: colon_search (in /usr/lib/libc.a)
+#    by 0xD03DE068: method_getpw_common (in /usr/lib/libc.a)
+#    by 0xD03DEB18: method_getpwuid (in /usr/lib/libc.a)
+{
+   AIX-fflush-unlocked-1
+   Memcheck:Cond
+   fun:fflush_unlocked
+   fun:fflush
+   fun:common_close
+   fun:common_unlock
+}
+
+## No idea what this is caused by
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD03EBC30: __method_getentry_v2 (in /usr/lib/libc.a)
+#    by 0xD03E887C: does_user_exist (in /usr/lib/libc.a)
+#    by 0xD03E9010: getuserattrs (in /usr/lib/libc.a)
+#    by 0xD03E4E68: getuserattr (in /usr/lib/libc.a)
+#    by 0xD03C8BA4: _getpwuid_shadow_r (in /usr/lib/libc.a)
+#    by 0xD03CBE4C: getpwuid (in /usr/lib/libc.a)
+{
+   AIX-__method_getentry_v2-1
+   Memcheck:Cond
+   fun:__method_getentry_v2
+   fun:does_user_exist
+   fun:getuserattrs
+   fun:getuserattr
+}
+{
+   AIX-__method_getentry_v2-2
+   Memcheck:Cond
+   fun:__method_getentry_v2
+   fun:does_user_exist
+   fun:process_module
+   fun:getuserattrs
+}
+
+## No idea what this is caused by
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD03F7120: seekdir64 (in /usr/lib/libc.a)
+#    by 0xD041A63C: opendir64 (in /usr/lib/libc.a)
+#    by 0xD041961C: getwd (in /usr/lib/libc.a)
+#    by 0xD04194B4: getcwd (in /usr/lib/libc.a)
+{
+   AIX-seekdir64
+   Memcheck:Cond
+   fun:seekdir64
+   fun:opendir64
+}
+
+## No idea what this is caused by
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD036C80C: ungetwc (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD0369D94: ungetcc (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD03695EC: _doscan (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD037544C: sscanf (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD1BAD9BC: lapi_atoi (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1BA8DBC: _read_int_env (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1BAB86C: _lapi_init_env_once (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1BAB44C: _lapi_perproc_setup (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD0118E50: pthread_once (in /usr/lib/libpthreads.a(shr_xpg5.o))
+#    by 0xD1BA86B8: LAPI__Init (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD0EC7A70: lapi_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
+#    by 0xD0EC9524: mpci_connect (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
+{
+   AIX-LAPI-ungetwc-1
+   Memcheck:Cond
+   fun:ungetwc
+   fun:ungetcc
+   fun:_doscan
+   fun:sscanf
+}
+{
+   AIX-LAPI-ungetwc-2
+   Memcheck:Cond
+   fun:ungetwc
+   fun:ungetcc
+   fun:number
+   fun:_doscan
+}
+
+## No idea what this is caused by
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD030CAD0: atoi (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD0E48DAC: _udp_open_socket (in /usr/lib/liblapi_r.a(liblapiudp_r.o))
+#    by 0xD0E4B17C: _udp_open (in /usr/lib/liblapi_r.a(liblapiudp_r.o))
+#    by 0xD1BAC77C: _lapi_init_function (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1BAE4F0: _lapi_non_pss_init (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1BA883C: LAPI__Init (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD0EC7A70: lapi_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
+#    by 0xD0EC9524: mpci_connect (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
+#    by 0xD06AA28C: _css_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD06AB664: _mp_init_msg_passing (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD0647F54: MPI__Init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+{
+   AIX-LAPI-atoi-1
+   Memcheck:Cond
+   fun:atoi
+   fun:_udp_open_socket
+   fun:_udp_open
+   fun:_lapi_init_function
+}
+{
+   AIX-LAPI-atoi-2
+   Memcheck:Value4
+   fun:atoi
+   fun:_udp_open_socket
+   fun:_udp_open
+   fun:_lapi_init_function
+}
+{
+   AIX-LAPI-atoi-3
+   Memcheck:Value8
+   fun:atoi
+   fun:_udp_open_socket
+   fun:_udp_open
+   fun:_lapi_init_function
+}
+
+## MPI stuff.  Not sure what's going on here.  Is this a 
+## legit padding problem?  Dunno.
+# Syscall param write(buf) points to uninitialised byte(s)
+#    at 0xD0310068: write (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD1CD03B0: pm_SSM_write (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
+#    by 0xD1CD5FB0: mp_main (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
+#    by 0x100005D8: poe_remote_main (in /proc/872668/object/a.out)
+#    by 0xD0325414: mod_init1 (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD0325328: __modinit (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0x10000198: (below main) (in /proc/872668/object/a.out)
+#  Address 0x32131422 is 10 bytes inside a block of size 19 alloc'd
+#    at 0xD4230514: malloc (vg_replace_malloc.c:168)
+#    by 0xD1CD035C: pm_SSM_write (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
+#    by 0xD1CD5FB0: mp_main (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
+#    by 0x100005D8: poe_remote_main (in /proc/872668/object/a.out)
+#    by 0xD0325414: mod_init1 (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD0325328: __modinit (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0x10000198: (below main) (in /proc/872668/object/a.out)
+{
+   AIX-MPI-pm_SSM_write-1
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_write
+   fun:mp_main
+}
+{
+   AIX-MPI-pm_SSM_write-2
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_write
+   fun:_mp_send_child_pid
+}
+{
+   AIX-MPI-pm_SSM_write-3
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_write
+   fun:_mp_finalize_req
+}
+{
+   AIX-MPI-pm_SSM_write-4
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_write
+   fun:pm_atexit
+}
+{
+   AIX-MPI-pm_SSM_write-5
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_write
+   fun:_udp_init
+}
+{
+   AIX-MPI-pm_SSM_write-6
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_write
+   fun:_us_info
+}
+{
+   AIX-MPI-pm_SSM_read-1
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_read
+   fun:pm_atexit
+}
+{
+   AIX-MPI-pm_SSM_read-2
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_read
+   fun:poe_unlock_all
+}
+{
+   AIX-MPI-pm_SSM_read-3
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_read
+   fun:_css_init
+}
+{
+   AIX-MPI-pm_SSM_read-3
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_read
+   fun:pthread_mutex_lock
+}
+{
+   AIX-MPI-pm_SSM_read-4
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_read
+   fun:_mp_Wtime_stop
+}
+{
+   AIX-MPI-pm_SSM_read-5
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pm_SSM_read
+   fun:pthread_mutex_unlock
+}
+
+
+## More MPI stuff
+# Invalid read of size 8
+#    at 0xD3EB34D8: read_canopus (in /usr/lib/swclock.o)
+#    by 0xD3EB31A0: swclockRead (hps_scri.c:431)
+#    by 0xD08B6AD4: HPSOclk_reset (in /usr/lpp/ppe.poe/lib/libppe_r.a(dynamic.o))
+#    by 0xD08B6CB4: HPSOclk_init (in /usr/lpp/ppe.poe/lib/libppe_r.a(dynamic.o))
+#    by 0xD16BC9F0: _mp_Wtime_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpipoe_r.o))
+#    by 0xD1FEA3A8: _css_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1FEB664: _mp_init_msg_passing (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1F87F54: MPI__Init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#  Address 0x40000000 is not stack'd, malloc'd or (recently) free'd
+{
+   AIX-MPI-read_canopus
+   Memcheck:Addr8
+   fun:read_canopus
+   fun:swclockRead
+   fun:HPSOclk_reset
+   fun:HPSOclk_init
+}
+
+## More MPI stuff (many variants of these)
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD1E8297C: ipcompare (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD033CADC: qs1 (in /usr/lpp/ppe.poe/lib/threads/libc.a(shr.o))
+#    by 0xD1E82A38: _derive_up_down_instances (in /usr/lib/liblapi_r.a(liblapi\
+#_r.o))
+#    by 0xD1E83484: NAM_monitor_thread (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD0111440: _pthread_body (in /usr/lib/libpthreads.a(shr_xpg5.o))
+{
+   AIX-MPI-ipcompare-1
+   Memcheck:Cond
+   fun:ipcompare
+   fun:qs1
+   fun:_derive_up_down_instances
+   fun:NAM_monitor_thread
+}
+{
+   AIX-MPI-ipcompare-2
+   Memcheck:Cond
+   fun:ipcompare
+   fun:qs1
+   fun:qsort
+   fun:_derive_up_down_instances
+}
+{
+   AIX-MPI-ipcompare-3
+   Memcheck:Cond
+   fun:ipcompare
+   fun:qs1
+   fun:qs1
+   fun:qsort
+}
+{
+   AIX-MPI-ipcompare-4
+   Memcheck:Cond
+   fun:ipcompare
+   fun:qs1
+   fun:qs1
+   fun:qs1
+}
+{
+   AIX-MPI-ipcompare-5
+   Memcheck:Cond
+   fun:ipcompare
+   fun:bsearch_*_1
+   fun:NAM_monitor_thread
+}
+
+## More MPI stuff
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0xD1CA2240: barrier_shft_b (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1CE6FAC: _mpi_barrier (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1D11720: _mpi_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1D733D8: _css_init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1D74644: _mp_init_msg_passing (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1D10F34: MPI__Init (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD33DD5D0: PMPI_Init (libmpiwrap.c:1789)
+#    by 0xD33E48F8: before (libmpiwrap.c:186)
+#    by 0xD33DD55C: PMPI_Init (libmpiwrap.c:1788)
+{
+   AIX-MPI-barrier_shft_b-1
+   Memcheck:Cond
+   fun:barrier_shft_b
+   fun:_mpi_barrier
+   fun:_mpi_init
+   fun:_css_init
+}
+{
+   AIX-MPI-barrier_shft_b-2
+   Memcheck:Cond
+   fun:barrier_shft_b
+   fun:_mpi_barrier
+   fun:MPI__Finalize
+}
+{
+   AIX-MPI-barrier_shft_b-3
+   Memcheck:Cond
+   fun:barrier_shft_b
+   fun:_mpi_barrier
+   fun:MPI__Barrier
+}
+
+## MPI
+# Invalid read of size 1
+#    at 0xD21B8FB8: can_writepkt (in /usr/lib/libhal_r.a(hal_hps.o))
+#    by 0xD1E86D7C: _stripe_hal_writepkt_noflip (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1E33BB8: _process_one_contig_item (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1E4E3A8: _Am_xfer (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1E4EB9C: _Dgsp_xfer (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1E49EC0: LAPI__Xfer (in /usr/lib/liblapi_r.a(liblapi_r.o))
+#    by 0xD1DCF2FC: mpci_send (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpci_r.o))
+#    by 0xD1C90F6C: _mpi_start (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1C90648: _mpi_xisend (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1C89898: MPI__Isend (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD3910FD4: generic_Isend (libmpiwrap.c:1129)
+#    by 0xFFFFFFFB: ???
+#  Address 0x370A4794 is 0 bytes after a block of size 20 alloc'd
+#    at 0xD38DE514: malloc (vg_replace_malloc.c:168)
+#    by 0x100004BC: main (mpi_vg_demo2.c:56)
+{
+   AIX-MPI-can_writepkt-1
+   Memcheck:Addr1
+   fun:can_writepkt
+   fun:_stripe_hal_writepkt_noflip
+   fun:_process_one_contig_item
+   fun:_Am_xfer
+}
+{
+   AIX-MPI-can_writepkt-2
+   Memcheck:Addr1
+   obj:*
+   fun:_make_localbuf_copy
+   fun:_Am_xfer
+   fun:_Dgsp_xfer
+}
+
+## MPI
+# Invalid write of size 4
+#    at 0xD1D14B18: check_ranks (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#    by 0xD1D147C8: MPI__Group_incl (in /usr/lpp/ppe.poe/lib/libmpi_r.a(mpicore_r.o))
+#  Address 0x2FF12154 is not stack'd, malloc'd or (recently) free'd
+{
+   AIX-MPI-check_ranks-1
+   Memcheck:Addr4
+   fun:check_ranks
+   fun:MPI__Group_incl
+}
+
+## X, holes in structs?
+{
+   AIX-X11-write-_X11TransSocketWrite
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:_X11TransSocketWrite
+   fun:_X11TransWrite
+}
+
+## Who knows
+{
+   AIX-fread_unlocked-1
+   Memcheck:Cond
+   fun:*memcpy
+   fun:fread_unlocked
+   fun:fread
+}
+{
+   AIX-fread_unlocked-2
+   Memcheck:Value8
+   fun:*memcpy
+   fun:fread_unlocked
+   fun:fread
+}
+{
+   AIX-fread_unlocked-3
+   Memcheck:Value4
+   fun:*memcpy
+   fun:fread_unlocked
+   fun:fread
+}
+{
+   AIX-fread_unlocked-4
+   Memcheck:Cond
+   fun:fread_unlocked
+   fun:fread
+}
+
+## Looks like inlined strcpy etc in module with no symbols; nothing
+# to be done about it.
+{
+   AIX-uconv-1
+   Memcheck:Cond
+   obj:/*/UTF32TBL__64
+   obj:/*/UTF32TBL__64
+   obj:/*/UTF32TBL__64
+}
+{
+   AIX-uconv-2
+   Memcheck:Value8
+   obj:/*/UTF32TBL__64
+   obj:/*/UTF32TBL__64
+   obj:/*/UTF32TBL__64
+}
+{
+   AIX-uconv-3
+   Memcheck:Addr8
+   obj:/*/UTF32TBL__64
+   obj:/*/UTF32TBL__64
+   obj:/*/UTF32TBL__64
+}
+
+
+#####################################################################
+### AIX 64-bit                                                    ###
+#####################################################################
+
+{
+   AIX64-uu-sz8
+   Memcheck:Addr8
+   obj:/usr/ccs/bin/usla64
+   obj:/usr/ccs/bin/usla64
+}
+{
+   AIX64-uu-sz4
+   Memcheck:Addr4
+   obj:/usr/ccs/bin/usla64
+}
+{
+   AIX64-uu-sz2
+   Memcheck:Addr2
+   obj:/usr/ccs/bin/usla64
+   obj:/usr/ccs/bin/usla64
+}
+{
+   AIX64-uu-sz1
+   Memcheck:Addr1
+   obj:/usr/ccs/bin/usla64
+   obj:/usr/ccs/bin/usla64
+}
+
+{
+   AIX64-uc-sz8
+   Memcheck:Addr8
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+{
+   AIX64-uc-sz4
+   Memcheck:Addr4
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+{
+   AIX64-uc-sz2
+   Memcheck:Addr2
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+{
+   AIX64-uc-sz1
+   Memcheck:Addr1
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+
+{
+   AIX64-?uu-sz8
+   Memcheck:Addr8
+   fun:*
+   obj:/usr/ccs/bin/usla64
+   obj:/usr/ccs/bin/usla64
+}
+{
+   AIX64-?uu-sz4
+   Memcheck:Addr4
+   fun:*
+   obj:/usr/ccs/bin/usla64
+   obj:/usr/ccs/bin/usla64
+}
+
+{
+   AIX64-?uc-sz8
+   Memcheck:Addr8
+   fun:*
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+{
+   AIX64-?uc-sz4
+   Memcheck:Addr4
+   fun:*
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+{
+   AIX64-?uc-sz2
+   Memcheck:Addr2
+   fun:*
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+{
+   AIX64-?uc-sz1
+   Memcheck:Addr1
+   fun:*
+   obj:/usr/ccs/bin/usla64
+   obj:*/libc.a(shr*.o)
+}
+
+{
+   AIX64-usla_exec_init_mods-sz8
+   Memcheck:Addr8
+   fun:usl_exec_init_mods
+}
+
+{
+   AIX64-usla_main-sz8
+   Memcheck:Addr8
+   fun:usla_main
+}
+
+{
+   AIX64-__modfini64-sz8
+   Memcheck:Addr8
+   fun:__modfini64
+}
+
+{
+   AIX64-load-lib?-sz8
+   Memcheck:Addr8
+   fun:load
+   obj:*/lib?.a(shr*.o)
+}
+
+{
+   AIX64-__loadx-libc-sz8
+   Memcheck:Addr8
+   fun:__loadx
+   obj:*/libc.a(shr*.o)
+}
+
+{
+   AIX64-loadquery-libC-sz8
+   Memcheck:Addr8
+   fun:loadquery
+   obj:*/libC.a(shr*.o)
+}
+
+{
+   AIX64-__loadx-pthread_init-sz8
+   Memcheck:Addr8
+   fun:__loadx
+   fun:*pth*_init
+}
+
+{
+   AIX64-unload-libC-sz8
+   Memcheck:Addr8
+   fun:unload
+   obj:*/libC.a(shr*.o)
+}
+
+{
+   AIX64-loadquery-__C_runtime_startup-sz8
+   Memcheck:Addr8
+   fun:loadquery
+   fun:__C_runtime_startup
+}
+
+{
+   AIX64-load-libppe-sz8
+   Memcheck:Addr8
+   fun:load
+   obj:*/libppe*.a(*.o)
+}
+
+#####
+
+{
+   AIX-libodm_tsd_destroy-free
+   Memcheck:Free
+   fun:free
+   fun:libodm_tsd_destroy
+   fun:__odm_initfini_fini
+}
+
+{
+   AIX64-usl-resolve-sz1
+   Memcheck:Addr1
+   obj:*
+   fun:usl_resolve
+   fun:uload
+   fun:load
+}
diff --git a/.svn/text-base/autogen.sh.svn-base b/.svn/text-base/autogen.sh.svn-base
new file mode 100644 (file)
index 0000000..117462c
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+run ()
+{
+    echo "running: $*"
+    eval $*
+
+    if test $? != 0 ; then
+       echo "error: while running '$*'"
+       exit 1
+    fi
+}
+
+run aclocal
+run autoheader
+run automake -a
+run autoconf
diff --git a/.svn/text-base/configure.in.svn-base b/.svn/text-base/configure.in.svn-base
new file mode 100644 (file)
index 0000000..cfe9b8a
--- /dev/null
@@ -0,0 +1,1871 @@
+
+##------------------------------------------------------------##
+# 
+# The multiple-architecture stuff in this file is pretty
+# cryptic.  Read docs/internals/multiple-architectures.txt
+# for at least a partial explanation of what is going on.
+#
+##------------------------------------------------------------##
+
+# Process this file with autoconf to produce a configure script.
+AC_INIT(Valgrind, 3.7.0.SVN, valgrind-users@lists.sourceforge.net)
+AC_CONFIG_SRCDIR(coregrind/m_main.c)
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE([foreign])
+
+AM_MAINTAINER_MODE
+
+#----------------------------------------------------------------------------
+# Checks for various programs.
+#----------------------------------------------------------------------------
+CFLAGS="-Wno-long-long $CFLAGS"
+
+AC_PROG_LN_S
+AC_PROG_CC
+AM_PROG_CC_C_O
+AC_PROG_CPP
+AC_PROG_CXX
+# AC_PROG_OBJC apparently causes problems on older Linux distros (eg. with
+# autoconf 2.59).  If we ever have any Objective-C code in the Valgrind code
+# base (eg. most likely as Darwin-specific tests) we'll need one of the
+# following:
+# - put AC_PROG_OBJC in a Darwin-specific part of this file
+# - Use AC_PROG_OBJC here and up the minimum autoconf version
+# - Use the following, which is apparently equivalent:
+#     m4_ifdef([AC_PROG_OBJC],
+#        [AC_PROG_OBJC],
+#        [AC_CHECK_TOOL([OBJC], [gcc])
+#         AC_SUBST([OBJC])
+#         AC_SUBST([OBJCFLAGS])
+#        ])
+AC_PROG_RANLIB
+# provide a very basic definition for AC_PROG_SED if it's not provided by
+# autoconf (as e.g. in autoconf 2.59).
+m4_ifndef([AC_PROG_SED],
+          [AC_DEFUN([AC_PROG_SED],
+                    [AC_ARG_VAR([SED])
+                     AC_CHECK_PROGS([SED],[gsed sed])])])
+AC_PROG_SED
+
+# If no AR variable was specified, look up the name of the archiver. Otherwise
+# do not touch the AR variable.
+if test "x$AR" = "x"; then
+  AC_PATH_PROGS([AR], [`echo $LD | $SED 's/ld$/ar/'` "ar"], [ar])
+fi
+AC_ARG_VAR([AR],[Archiver command])
+
+# Check for the compiler support
+if test "${GCC}" != "yes" ; then
+   AC_MSG_ERROR([Valgrind relies on GCC to be compiled])
+fi
+
+# figure out where perl lives
+AC_PATH_PROG(PERL, perl)
+
+# figure out where gdb lives
+AC_PATH_PROG(GDB, gdb, "/no/gdb/was/found/at/configure/time")
+AC_DEFINE_UNQUOTED(GDB_PATH, "$GDB", [path to GDB])
+
+# some older automake's don't have it so try something on our own
+ifdef([AM_PROG_AS],[AM_PROG_AS],
+[
+AS="${CC}"
+AC_SUBST(AS)
+
+ASFLAGS=""
+AC_SUBST(ASFLAGS)
+])
+
+
+# Check if 'diff' supports -u (universal diffs) and use it if possible.
+
+AC_MSG_CHECKING([for diff -u])
+AC_SUBST(DIFF)
+
+# Comparing two identical files results in 0, unless -u isn't supported (as
+# it's not on AIX).
+tmpfile="tmp-xxx-yyy-zzz"
+touch $tmpfile;
+if diff -u $tmpfile $tmpfile ; then
+    AC_MSG_RESULT([yes])
+    DIFF="diff -u"
+else
+    AC_MSG_RESULT([no])
+    DIFF="diff"
+fi
+rm $tmpfile
+
+
+# We don't want gcc < 3.0
+AC_MSG_CHECKING([for a supported version of gcc])
+
+[gcc_version=`${CC} --version | head -n 1 | $SED 's/^[^0-9]*\([0-9.]*\).*$/\1/'`]
+
+case "${gcc_version}" in
+     2.*)
+       AC_MSG_RESULT([no (${gcc_version})])
+       AC_MSG_ERROR([please use a recent (>= gcc-3.0) version of gcc])
+       ;;
+     *)
+       AC_MSG_RESULT([ok (${gcc_version})])
+       ;;
+esac
+
+#----------------------------------------------------------------------------
+# Arch/OS/platform tests.
+#----------------------------------------------------------------------------
+# We create a number of arch/OS/platform-related variables.  We prefix them
+# all with "VGCONF_" which indicates that they are defined at
+# configure-time, and distinguishes them from the VGA_*/VGO_*/VGP_*
+# variables used when compiling C files.
+
+AC_CANONICAL_HOST
+
+AC_MSG_CHECKING([for a supported CPU])
+
+# ARCH_MAX reflects the most that this CPU can do: for example if it
+# is a 64-bit capable PowerPC, then it must be set to ppc64 and not ppc32.
+# Ditto for amd64.  It is used for more configuration below, but is not used
+# outside this file.
+case "${host_cpu}" in
+     i?86) 
+       AC_MSG_RESULT([ok (${host_cpu})])
+        ARCH_MAX="x86"
+        ;;
+
+     x86_64) 
+        AC_MSG_RESULT([ok (${host_cpu})])
+        ARCH_MAX="amd64"
+        ;;
+
+     powerpc64)
+        # This value can only happen on Linux, not on AIX
+        AC_MSG_RESULT([ok (${host_cpu})])
+        ARCH_MAX="ppc64"
+        ;;
+
+     powerpc)
+        # Complexity.  'powerpc' on AIX implies a 64-bit capable CPU.
+        # Whereas in Linux that means only a 32-bit capable CPU.
+        AC_MSG_RESULT([ok (${host_cpu})])
+       case "${host_os}" in
+          aix5.*)
+             ARCH_MAX="ppc64"
+              ;;
+           *)
+              ARCH_MAX="ppc32"
+              ;;
+        esac
+        ;;
+
+     armv7*)
+       AC_MSG_RESULT([ok (${host_cpu})])
+       ARCH_MAX="arm"
+       ;;
+
+     *) 
+       AC_MSG_RESULT([no (${host_cpu})])
+       AC_MSG_ERROR([Unsupported host architecture. Sorry])
+       ;;
+esac
+
+#----------------------------------------------------------------------------
+
+# Sometimes it's convenient to subvert the bi-arch build system and
+# just have a single build even though the underlying platform is
+# capable of both.  Hence handle --enable-only64bit and
+# --enable-only32bit.  Complain if both are issued :-)
+# [Actually, if either of these options are used, I think both get built,
+# but only one gets installed.  So if you use an in-place build, both can be
+# used. --njn]
+
+# Check if a 64-bit only build has been requested
+AC_CACHE_CHECK([for a 64-bit only build], vg_cv_only64bit,
+   [AC_ARG_ENABLE(only64bit, 
+      [  --enable-only64bit      do a 64-bit only build],
+      [vg_cv_only64bit=$enableval],
+      [vg_cv_only64bit=no])])
+
+# Check if a 32-bit only build has been requested
+AC_CACHE_CHECK([for a 32-bit only build], vg_cv_only32bit,
+   [AC_ARG_ENABLE(only32bit, 
+      [  --enable-only32bit      do a 32-bit only build],
+      [vg_cv_only32bit=$enableval],
+      [vg_cv_only32bit=no])])
+
+# Stay sane
+if test x$vg_cv_only64bit = xyes -a x$vg_cv_only32bit = xyes; then
+   AC_MSG_ERROR(
+      [Nonsensical: both --enable-only64bit and --enable-only32bit.])
+fi
+
+#----------------------------------------------------------------------------
+
+# VGCONF_OS is the primary build OS, eg. "linux".  It is passed in to
+# compilation of many C files via -VGO_$(VGCONF_OS) and
+# -VGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS).
+AC_MSG_CHECKING([for a supported OS])
+AC_SUBST(VGCONF_OS)
+
+DEFAULT_SUPP=""
+
+case "${host_os}" in
+     *linux*)
+       AC_MSG_RESULT([ok (${host_os})])
+        VGCONF_OS="linux"
+
+        # Ok, this is linux. Check the kernel version
+        AC_MSG_CHECKING([for the kernel version])
+
+        kernel=`uname -r`
+
+        case "${kernel}" in
+             2.6.*) 
+                   AC_MSG_RESULT([2.6 family (${kernel})])
+                   AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x])
+                   ;;
+
+             2.4.*) 
+                   AC_MSG_RESULT([2.4 family (${kernel})])
+                   AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you're using Linux 2.4.x])
+                   ;;
+
+             *) 
+                   AC_MSG_RESULT([unsupported (${kernel})])
+                   AC_MSG_ERROR([Valgrind works on kernels 2.4, 2.6])
+                   ;;
+        esac
+
+        ;;
+
+     aix5.1.*)
+        AC_MSG_RESULT([ok (${host_os})])
+        VGCONF_OS="aix5"
+        ;;
+     aix5.2.*)
+        AC_MSG_RESULT([ok (${host_os})])
+        VGCONF_OS="aix5"
+        ;;       
+     aix5.3.*)
+        AC_MSG_RESULT([ok (${host_os})])
+        VGCONF_OS="aix5"
+        ;;       
+
+     *darwin*)
+        AC_MSG_RESULT([ok (${host_os})])
+        VGCONF_OS="darwin"
+        AC_DEFINE([DARWIN_10_5], 100500, [DARWIN_VERS value for Mac OS X 10.5])
+        AC_DEFINE([DARWIN_10_6], 100600, [DARWIN_VERS value for Mac OS X 10.6])
+        AC_DEFINE([DARWIN_10_7], 100700, [DARWIN_VERS value for Mac OS X 10.7])
+
+       AC_MSG_CHECKING([for the kernel version])
+       kernel=`uname -r`
+
+        # Nb: for Darwin we set DEFAULT_SUPP here.  That's because Darwin
+        # has only one relevant version, the OS version. The `uname` check
+        # is a good way to get that version (i.e. "Darwin 9.6.0" is Mac OS
+        # X 10.5.6, and "Darwin 10.x" is Mac OS X 10.6.x Snow Leopard), 
+        # and we don't know of an macros similar to __GLIBC__ to get that info.
+        #
+        # XXX: `uname -r` won't do the right thing for cross-compiles, but
+        # that's not a problem yet.
+       case "${kernel}" in
+            9.*)
+                 AC_MSG_RESULT([Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard])
+                 AC_DEFINE([DARWIN_VERS], DARWIN_10_5, [Darwin / Mac OS X version])
+                 DEFAULT_SUPP="darwin9.supp ${DEFAULT_SUPP}"
+                 DEFAULT_SUPP="darwin9-drd.supp ${DEFAULT_SUPP}"
+                 ;;
+            10.*)
+                 AC_MSG_RESULT([Darwin 10.x (${kernel}) / Mac OS X 10.6 Snow Leopard])
+                 AC_DEFINE([DARWIN_VERS], DARWIN_10_6, [Darwin / Mac OS X version])
+                 DEFAULT_SUPP="darwin10.supp ${DEFAULT_SUPP}"
+                 DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
+                 ;;
+     *) 
+                 AC_MSG_RESULT([unsupported (${kernel})])
+                 AC_MSG_ERROR([Valgrind works on Darwin 9.x and 10.x (Mac OS X 10.5 and 10.6)])
+                 ;;
+       esac
+        ;;
+
+     *) 
+       AC_MSG_RESULT([no (${host_os})])
+       AC_MSG_ERROR([Valgrind is operating system specific. Sorry.])
+       ;;
+esac
+
+#----------------------------------------------------------------------------
+
+# If we are building on a 64 bit platform test to see if the system
+# supports building 32 bit programs and disable 32 bit support if it
+# does not support building 32 bit programs
+
+case "$ARCH_MAX-$VGCONF_OS" in
+     amd64-linux|ppc64-linux)
+        AC_MSG_CHECKING([for 32 bit build support])
+        safe_CFLAGS=$CFLAGS
+        CFLAGS="-m32"
+        AC_TRY_LINK(, [
+          return 0;
+        ],
+        [
+        AC_MSG_RESULT([yes])
+        ], [
+        vg_cv_only64bit="yes"
+        AC_MSG_RESULT([no])
+        ])
+        CFLAGS=$safe_CFLAGS;;
+esac
+
+if test x$vg_cv_only64bit = xyes -a x$vg_cv_only32bit = xyes; then
+   AC_MSG_ERROR(
+      [--enable-only32bit was specified but system does not support 32 bit builds])
+fi
+
+#----------------------------------------------------------------------------
+
+# VGCONF_ARCH_PRI is the arch for the primary build target, eg. "amd64".  By
+# default it's the same as ARCH_MAX.  But if, say, we do a build on an amd64
+# machine, but --enable-only32bit has been requested, then ARCH_MAX (see
+# above) will be "amd64" since that reflects the most that this cpu can do,
+# but VGCONF_ARCH_PRI will be downgraded to "x86", since that reflects the
+# arch corresponding to the primary build (VGCONF_PLATFORM_PRI_CAPS).  It is
+# passed in to compilation of many C files via -VGA_$(VGCONF_ARCH_PRI) and
+# -VGP_$(VGCONF_ARCH_PRI)_$(VGCONF_OS).
+AC_SUBST(VGCONF_ARCH_PRI)
+
+# VGCONF_ARCH_SEC is the arch for the secondary build target, eg. "x86".
+# It is passed in to compilation of many C files via -VGA_$(VGCONF_ARCH_SEC)
+# and -VGP_$(VGCONF_ARCH_SEC)_$(VGCONF_OS), if there is a secondary target.
+# It is empty if there is no secondary target.
+AC_SUBST(VGCONF_ARCH_SEC)
+
+# VGCONF_PLATFORM_PRI_CAPS is the primary build target, eg. "AMD64_LINUX".
+# The entire system, including regression and performance tests, will be
+# built for this target.  The "_CAPS" indicates that the name is in capital
+# letters, and it also uses '_' rather than '-' as a separator, because it's
+# used to create various Makefile variables, which are all in caps by
+# convention and cannot contain '-' characters.  This is in contrast to
+# VGCONF_ARCH_PRI and VGCONF_OS which are not in caps.
+AC_SUBST(VGCONF_PLATFORM_PRI_CAPS)
+
+# VGCONF_PLATFORM_SEC_CAPS is the secondary build target, if there is one.
+# Valgrind and tools will also be built for this target, but not the
+# regression or performance tests.
+#
+# By default, the primary arch is the same as the "max" arch, as commented
+# above (at the definition of ARCH_MAX).  We may choose to downgrade it in
+# the big case statement just below here, in the case where we're building
+# on a 64 bit machine but have been requested only to do a 32 bit build.
+AC_SUBST(VGCONF_PLATFORM_SEC_CAPS)
+
+AC_MSG_CHECKING([for a supported CPU/OS combination])
+
+# NB.  The load address for a given platform may be specified in more 
+# than one place, in some cases, depending on whether we're doing a biarch,
+# 32-bit only or 64-bit only build.  eg see case for amd64-linux below.
+# Be careful to give consistent values in all subcases.  Also, all four
+# valt_load_addres_{pri,sec}_{norml,inner} values must always be set,
+# even if it is to "0xUNSET".
+#
+case "$ARCH_MAX-$VGCONF_OS" in
+     x86-linux)
+        VGCONF_ARCH_PRI="x86"
+        VGCONF_ARCH_SEC=""
+       VGCONF_PLATFORM_PRI_CAPS="X86_LINUX"
+       VGCONF_PLATFORM_SEC_CAPS=""
+        valt_load_address_pri_norml="0x38000000"
+        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+       ;;
+     amd64-linux)
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+       if test x$vg_cv_only64bit = xyes; then
+           VGCONF_ARCH_PRI="amd64"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="AMD64_LINUX"
+          VGCONF_PLATFORM_SEC_CAPS=""
+           valt_load_address_pri_norml="0x38000000"
+           valt_load_address_pri_inner="0x28000000"
+       elif test x$vg_cv_only32bit = xyes; then
+          VGCONF_ARCH_PRI="x86"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="X86_LINUX"
+          VGCONF_PLATFORM_SEC_CAPS=""
+           valt_load_address_pri_norml="0x38000000"
+           valt_load_address_pri_inner="0x28000000"
+       else
+           VGCONF_ARCH_PRI="amd64"
+           VGCONF_ARCH_SEC="x86"
+          VGCONF_PLATFORM_PRI_CAPS="AMD64_LINUX"
+          VGCONF_PLATFORM_SEC_CAPS="X86_LINUX"
+           valt_load_address_pri_norml="0x38000000"
+           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_sec_norml="0x38000000"
+           valt_load_address_sec_inner="0x28000000"
+       fi
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+       ;;
+     ppc32-linux)
+        VGCONF_ARCH_PRI="ppc32"
+        VGCONF_ARCH_SEC=""
+       VGCONF_PLATFORM_PRI_CAPS="PPC32_LINUX"
+       VGCONF_PLATFORM_SEC_CAPS=""
+        valt_load_address_pri_norml="0x38000000"
+        valt_load_address_pri_inner="0x28000000"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+       ;;
+     ppc64-aix5)
+        valt_load_address_pri_norml="0xUNSET"
+        valt_load_address_pri_inner="0xUNSET"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+       if test x$vg_cv_only64bit = xyes; then
+           VGCONF_ARCH_PRI="ppc64"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="PPC64_AIX5"
+          VGCONF_PLATFORM_SEC_CAPS=""
+       elif test x$vg_cv_only32bit = xyes; then
+          VGCONF_ARCH_PRI="ppc32"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="PPC32_AIX5"
+          VGCONF_PLATFORM_SEC_CAPS=""
+       else
+          VGCONF_ARCH_PRI="ppc64"
+           VGCONF_ARCH_SEC="ppc32"
+          VGCONF_PLATFORM_PRI_CAPS="PPC64_AIX5"
+          VGCONF_PLATFORM_SEC_CAPS="PPC32_AIX5"
+       fi
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+       ;;
+     ppc64-linux)
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+       if test x$vg_cv_only64bit = xyes; then
+          VGCONF_ARCH_PRI="ppc64"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="PPC64_LINUX"
+          VGCONF_PLATFORM_SEC_CAPS=""
+           valt_load_address_pri_norml="0x38000000"
+           valt_load_address_pri_inner="0x28000000"
+       elif test x$vg_cv_only32bit = xyes; then
+          VGCONF_ARCH_PRI="ppc32"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="PPC32_LINUX"
+          VGCONF_PLATFORM_SEC_CAPS=""
+           valt_load_address_pri_norml="0x38000000"
+           valt_load_address_pri_inner="0x28000000"
+       else
+          VGCONF_ARCH_PRI="ppc64"
+           VGCONF_ARCH_SEC="ppc32"
+          VGCONF_PLATFORM_PRI_CAPS="PPC64_LINUX"
+          VGCONF_PLATFORM_SEC_CAPS="PPC32_LINUX"
+           valt_load_address_pri_norml="0x38000000"
+           valt_load_address_pri_inner="0x28000000"
+           valt_load_address_sec_norml="0x38000000"
+           valt_load_address_sec_inner="0x28000000"
+       fi
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+       ;;
+     # Darwin gets identified as 32-bit even when it supports 64-bit.
+     # (Not sure why, possibly because 'uname' returns "i386"?)  Just about
+     # all Macs support both 32-bit and 64-bit, so we just build both.  If
+     # someone has a really old 32-bit only machine they can (hopefully?)
+     # build with --enable-only32bit.  See bug 243362.
+     x86-darwin|amd64-darwin)
+        ARCH_MAX="amd64"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+       if test x$vg_cv_only64bit = xyes; then
+           VGCONF_ARCH_PRI="amd64"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="AMD64_DARWIN"
+          VGCONF_PLATFORM_SEC_CAPS=""
+           valt_load_address_pri_norml="0x138000000"
+           valt_load_address_pri_inner="0x128000000"
+       elif test x$vg_cv_only32bit = xyes; then
+           VGCONF_ARCH_PRI="x86"
+           VGCONF_ARCH_SEC=""
+          VGCONF_PLATFORM_PRI_CAPS="X86_DARWIN"
+          VGCONF_PLATFORM_SEC_CAPS=""
+          VGCONF_ARCH_PRI_CAPS="x86"
+           valt_load_address_pri_norml="0x38000000"
+           valt_load_address_pri_inner="0x28000000"
+       else
+           VGCONF_ARCH_PRI="amd64"
+           VGCONF_ARCH_SEC="x86"
+          VGCONF_PLATFORM_PRI_CAPS="AMD64_DARWIN"
+          VGCONF_PLATFORM_SEC_CAPS="X86_DARWIN"
+           valt_load_address_pri_norml="0x138000000"
+           valt_load_address_pri_inner="0x128000000"
+           valt_load_address_sec_norml="0x38000000"
+           valt_load_address_sec_inner="0x28000000"
+       fi
+        AC_MSG_RESULT([ok (${ARCH_MAX}-${VGCONF_OS})])
+       ;;
+     arm-linux) 
+       VGCONF_ARCH_PRI="arm"
+       VGCONF_PLATFORM_PRI_CAPS="ARM_LINUX"
+       VGCONF_PLATFORM_SEC_CAPS=""
+       valt_load_address_pri_norml="0x38000000"
+       valt_load_address_pri_inner="0x28000000"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+       AC_MSG_RESULT([ok (${host_cpu}-${host_os})])
+       ;;
+    *)
+        VGCONF_ARCH_PRI="unknown"
+        VGCONF_ARCH_SEC="unknown"
+       VGCONF_PLATFORM_PRI_CAPS="UNKNOWN"
+       VGCONF_PLATFORM_SEC_CAPS="UNKNOWN"
+        valt_load_address_pri_norml="0xUNSET"
+        valt_load_address_pri_inner="0xUNSET"
+        valt_load_address_sec_norml="0xUNSET"
+        valt_load_address_sec_inner="0xUNSET"
+        AC_MSG_RESULT([no (${ARCH_MAX}-${VGCONF_OS})])
+        AC_MSG_ERROR([Valgrind is platform specific. Sorry. Please consider doing a port.])
+        ;;
+esac
+
+#----------------------------------------------------------------------------
+
+# Set up VGCONF_ARCHS_INCLUDE_<arch>.  Either one or two of these become
+# defined.
+AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_X86,   
+               test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_DARWIN )
+AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_AMD64, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN )
+AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC32, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \ 
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \ 
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_AIX5 )
+AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_PPC64, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5 )
+AM_CONDITIONAL(VGCONF_ARCHS_INCLUDE_ARM,   
+               test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX )
+
+# Set up VGCONF_PLATFORMS_INCLUDE_<platform>.  Either one or two of these
+# become defined.
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_X86_LINUX,   
+               test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_LINUX)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_AMD64_LINUX, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC32_LINUX, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \ 
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC64_LINUX, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_ARM_LINUX, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX)
+
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC32_AIX5, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \ 
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_AIX5)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_PPC64_AIX5, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5)
+
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_X86_DARWIN,   
+               test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \
+                 -o x$VGCONF_PLATFORM_SEC_CAPS = xX86_DARWIN)
+AM_CONDITIONAL(VGCONF_PLATFORMS_INCLUDE_AMD64_DARWIN, 
+               test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN)
+
+
+# Similarly, set up VGCONF_OS_IS_<os>.  Exactly one of these becomes defined.
+# Relies on the assumption that the primary and secondary targets are 
+# for the same OS, so therefore only necessary to test the primary.
+AM_CONDITIONAL(VGCONF_OS_IS_LINUX,
+               test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xARM_LINUX )
+AM_CONDITIONAL(VGCONF_OS_IS_AIX5,
+               test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5)
+AM_CONDITIONAL(VGCONF_OS_IS_DARWIN,
+               test x$VGCONF_PLATFORM_PRI_CAPS = xX86_DARWIN \
+                 -o x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_DARWIN)
+
+
+# Sometimes, in the Makefile.am files, it's useful to know whether or not
+# there is a secondary target.
+AM_CONDITIONAL(VGCONF_HAVE_PLATFORM_SEC,
+               test x$VGCONF_PLATFORM_SEC_CAPS != x)
+
+
+#----------------------------------------------------------------------------
+# Inner Valgrind?
+#----------------------------------------------------------------------------
+
+# Check if this should be built as an inner Valgrind, to be run within
+# another Valgrind.  Choose the load address accordingly.
+AC_SUBST(VALT_LOAD_ADDRESS_PRI)
+AC_SUBST(VALT_LOAD_ADDRESS_SEC)
+AC_CACHE_CHECK([for use as an inner Valgrind], vg_cv_inner,
+   [AC_ARG_ENABLE(inner, 
+      [  --enable-inner          enables self-hosting],
+      [vg_cv_inner=$enableval],
+      [vg_cv_inner=no])])
+if test "$vg_cv_inner" = yes; then
+    AC_DEFINE([ENABLE_INNER], 1, [configured to run as an inner Valgrind])
+    VALT_LOAD_ADDRESS_PRI=$valt_load_address_pri_inner
+    VALT_LOAD_ADDRESS_SEC=$valt_load_address_sec_inner
+else
+    VALT_LOAD_ADDRESS_PRI=$valt_load_address_pri_norml
+    VALT_LOAD_ADDRESS_SEC=$valt_load_address_sec_norml
+fi
+
+
+#----------------------------------------------------------------------------
+# Libc and suppressions
+#----------------------------------------------------------------------------
+# This variable will collect the suppression files to be used.
+AC_SUBST(DEFAULT_SUPP)
+
+AC_CHECK_HEADER([features.h])
+
+if test x$ac_cv_header_features_h = xyes; then
+  rm -f conftest.$ac_ext
+  cat <<_ACEOF >conftest.$ac_ext
+#include <features.h>
+#if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__)
+glibc version is: __GLIBC__ __GLIBC_MINOR__
+#endif
+_ACEOF
+  GLIBC_VERSION="`$CPP conftest.$ac_ext | $SED -n 's/^glibc version is: //p' | $SED 's/ /./g'`"
+fi
+
+AC_EGREP_CPP([AIX5_LIBC], [
+#include <standards.h>
+#if defined(_AIXVERSION_510) || defined(_AIXVERSION_520) || defined(_AIXVERSION_530)
+  AIX5_LIBC
+#endif
+],
+GLIBC_VERSION="aix5")
+
+# not really a version check
+AC_EGREP_CPP([DARWIN_LIBC], [
+#include <sys/cdefs.h>
+#if defined(__DARWIN_VERS_1050)
+  DARWIN_LIBC
+#endif
+],
+GLIBC_VERSION="darwin")
+
+AC_MSG_CHECKING([the GLIBC_VERSION version])
+
+case "${GLIBC_VERSION}" in
+     2.2)
+       AC_MSG_RESULT(2.2 family)
+       AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x])
+       DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+
+     2.3)
+       AC_MSG_RESULT(2.3 family)
+       AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x])
+       DEFAULT_SUPP="glibc-2.3.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+
+     2.4)
+       AC_MSG_RESULT(2.4 family)
+       AC_DEFINE([GLIBC_2_4], 1, [Define to 1 if you're using glibc 2.4.x])
+       DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+
+     2.5)
+       AC_MSG_RESULT(2.5 family)
+       AC_DEFINE([GLIBC_2_5], 1, [Define to 1 if you're using glibc 2.5.x])
+       DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+     2.6)
+       AC_MSG_RESULT(2.6 family)
+       AC_DEFINE([GLIBC_2_6], 1, [Define to 1 if you're using glibc 2.6.x])
+       DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+     2.7)
+       AC_MSG_RESULT(2.7 family)
+       AC_DEFINE([GLIBC_2_7], 1, [Define to 1 if you're using glibc 2.7.x])
+       DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+     2.8)
+       AC_MSG_RESULT(2.8 family)
+       AC_DEFINE([GLIBC_2_8], 1, [Define to 1 if you're using glibc 2.8.x])
+       DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+     2.9)
+       AC_MSG_RESULT(2.9 family)
+       AC_DEFINE([GLIBC_2_9], 1, [Define to 1 if you're using glibc 2.9.x])
+       DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+     2.10)
+       AC_MSG_RESULT(2.10 family)
+       AC_DEFINE([GLIBC_2_10], 1, [Define to 1 if you're using glibc 2.10.x])
+       DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+     2.11)
+       AC_MSG_RESULT(2.11 family)
+       AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.x])
+       DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+        ;;
+     2.12)
+       AC_MSG_RESULT(2.12 family)
+       AC_DEFINE([GLIBC_2_12], 1, [Define to 1 if you're using glibc 2.12.x])
+       DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}"
+       DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}"
+       ;;
+     aix5)
+       AC_MSG_RESULT(AIX 5.1 or 5.2 or 5.3)
+       AC_DEFINE([AIX5_LIBC], 1, [Define to 1 if you're using AIX 5.1 or 5.2 or 5.3])
+       DEFAULT_SUPP="aix5libc.supp ${DEFAULT_SUPP}"
+       ;;
+     darwin)
+       AC_MSG_RESULT(Darwin)
+       AC_DEFINE([DARWIN_LIBC], 1, [Define to 1 if you're using Darwin])
+       # DEFAULT_SUPP set by kernel version check above.
+       ;;
+
+     *)
+       AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
+       AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.12])
+       AC_MSG_ERROR([or AIX 5.1 or 5.2 or 5.3 GLIBC_VERSION])
+       AC_MSG_ERROR([or Darwin libc])
+       ;;
+esac
+
+AC_SUBST(GLIBC_VERSION)
+
+
+# Add default suppressions for the X client libraries.  Make no
+# attempt to detect whether such libraries are installed on the
+# build machine (or even if any X facilities are present); just
+# add the suppressions antidisirregardless.
+DEFAULT_SUPP="xfree-4.supp ${DEFAULT_SUPP}"
+DEFAULT_SUPP="xfree-3.supp ${DEFAULT_SUPP}"
+
+# Add glibc and X11 suppressions for exp-ptrcheck
+DEFAULT_SUPP="exp-ptrcheck.supp ${DEFAULT_SUPP}"
+
+
+#----------------------------------------------------------------------------
+# Checking for various library functions and other definitions
+#----------------------------------------------------------------------------
+
+# Check for CLOCK_MONOTONIC
+
+AC_MSG_CHECKING([for CLOCK_MONOTONIC])
+
+AC_TRY_COMPILE(
+[
+#include <time.h>
+], [
+  struct timespec t;
+  clock_gettime(CLOCK_MONOTONIC, &t);
+  return 0;
+],
+[
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_CLOCK_MONOTONIC], 1,
+          [Define to 1 if you have the `CLOCK_MONOTONIC' constant.])
+], [
+AC_MSG_RESULT([no])
+])
+
+
+# Check for PTHREAD_MUTEX_ADAPTIVE_NP
+
+AC_MSG_CHECKING([for PTHREAD_MUTEX_ADAPTIVE_NP])
+
+AC_TRY_COMPILE(
+[
+#define _GNU_SOURCE
+#include <pthread.h>
+], [
+  return (PTHREAD_MUTEX_ADAPTIVE_NP);
+],
+[
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_PTHREAD_MUTEX_ADAPTIVE_NP], 1,
+          [Define to 1 if you have the `PTHREAD_MUTEX_ADAPTIVE_NP' constant.])
+], [
+AC_MSG_RESULT([no])
+])
+
+
+# Check for PTHREAD_MUTEX_ERRORCHECK_NP
+
+AC_MSG_CHECKING([for PTHREAD_MUTEX_ERRORCHECK_NP])
+
+AC_TRY_COMPILE(
+[
+#define _GNU_SOURCE
+#include <pthread.h>
+], [
+  return (PTHREAD_MUTEX_ERRORCHECK_NP);
+],
+[
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_PTHREAD_MUTEX_ERRORCHECK_NP], 1,
+          [Define to 1 if you have the `PTHREAD_MUTEX_ERRORCHECK_NP' constant.])
+], [
+AC_MSG_RESULT([no])
+])
+
+
+# Check for PTHREAD_MUTEX_RECURSIVE_NP
+
+AC_MSG_CHECKING([for PTHREAD_MUTEX_RECURSIVE_NP])
+
+AC_TRY_COMPILE(
+[
+#define _GNU_SOURCE
+#include <pthread.h>
+], [
+  return (PTHREAD_MUTEX_RECURSIVE_NP);
+],
+[
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE_NP], 1,
+          [Define to 1 if you have the `PTHREAD_MUTEX_RECURSIVE_NP' constant.])
+], [
+AC_MSG_RESULT([no])
+])
+
+
+# Check for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+
+AC_MSG_CHECKING([for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP])
+
+AC_TRY_COMPILE(
+[
+#define _GNU_SOURCE
+#include <pthread.h>
+], [
+  pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+  return 0;
+],
+[
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP], 1,
+          [Define to 1 if you have the `PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP' constant.])
+], [
+AC_MSG_RESULT([no])
+])
+
+
+# Check whether pthread_mutex_t has a member called __m_kind.
+
+AC_CHECK_MEMBER([pthread_mutex_t.__m_kind],
+               [AC_DEFINE([HAVE_PTHREAD_MUTEX_T__M_KIND],
+                          1,                                   
+                          [Define to 1 if pthread_mutex_t has a member called __m_kind.])
+                ],
+               [],
+               [#include <pthread.h>])
+
+
+# Check whether pthread_mutex_t has a member called __data.__kind.
+
+AC_CHECK_MEMBER([pthread_mutex_t.__data.__kind],
+                [AC_DEFINE([HAVE_PTHREAD_MUTEX_T__DATA__KIND],
+                         1,
+                         [Define to 1 if pthread_mutex_t has a member __data.__kind.])
+                ],
+               [],
+               [#include <pthread.h>])
+
+
+# does this compiler support -maltivec and does it have the include file
+# <altivec.h> ?
+
+AC_MSG_CHECKING([for Altivec])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-maltivec"
+
+AC_TRY_COMPILE(
+[
+#include <altivec.h>
+], [
+  vector unsigned int v;
+],
+[
+ac_have_altivec=yes
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAS_ALTIVEC], 1,
+          [Define to 1 if gcc/as can do Altivec.])
+], [
+ac_have_altivec=no
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AM_CONDITIONAL([HAS_ALTIVEC], [test x$ac_have_altivec = xyes])
+
+
+# Check for pthread_create@GLIBC2.0
+AC_MSG_CHECKING([for pthread_create@GLIBC2.0()])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-lpthread"
+AC_TRY_LINK(
+[
+extern int pthread_create_glibc_2_0(void*, const void*,
+                                    void *(*)(void*), void*);
+__asm__(".symver pthread_create_glibc_2_0, pthread_create@GLIBC_2.0");
+], [
+#ifdef __powerpc__
+/*
+ * Apparently on PowerPC linking this program succeeds and generates an
+ * executable with the undefined symbol pthread_create@GLIBC_2.0.
+ */
+#error This test does not work properly on PowerPC.
+#else
+  pthread_create_glibc_2_0(0, 0, 0, 0);
+#endif
+  return 0;
+],
+[
+ac_have_pthread_create_glibc_2_0=yes
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_PTHREAD_CREATE_GLIBC_2_0], 1,
+          [Define to 1 if you have the `pthread_create@glibc2.0' function.])
+], [
+ac_have_pthread_create_glibc_2_0=no
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AM_CONDITIONAL(HAVE_PTHREAD_CREATE_GLIBC_2_0,
+              test x$ac_have_pthread_create_glibc_2_0 = xyes)
+
+
+# Check for eventfd_t, eventfd() and eventfd_read()
+AC_MSG_CHECKING([for eventfd()])
+
+AC_TRY_LINK(
+[
+#include <sys/eventfd.h>
+], [
+  eventfd_t ev;
+  int fd;
+
+  fd = eventfd(5, 0);
+  eventfd_read(fd, &ev);
+  return 0;
+],
+[
+AC_MSG_RESULT([yes])
+AC_DEFINE([HAVE_EVENTFD], 1,
+          [Define to 1 if you have the `eventfd' function.])
+AC_DEFINE([HAVE_EVENTFD_READ], 1,
+          [Define to 1 if you have the `eventfd_read' function.])
+], [
+AC_MSG_RESULT([no])
+])
+
+
+#----------------------------------------------------------------------------
+# Checking for supported compiler flags.
+#----------------------------------------------------------------------------
+
+# does this compiler support -m32 ?
+AC_MSG_CHECKING([if gcc accepts -m32])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-m32"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+FLAG_M32="-m32"
+AC_MSG_RESULT([yes])
+], [
+FLAG_M32=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(FLAG_M32)
+
+
+# does this compiler support -maix32 ?
+AC_MSG_CHECKING([if gcc accepts -maix32])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-maix32"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+FLAG_MAIX32="-maix32"
+AC_MSG_RESULT([yes])
+], [
+FLAG_MAIX32=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(FLAG_MAIX32)
+
+
+# does this compiler support -m64 ?
+AC_MSG_CHECKING([if gcc accepts -m64])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-m64"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+FLAG_M64="-m64"
+AC_MSG_RESULT([yes])
+], [
+FLAG_M64=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(FLAG_M64)
+
+
+# does this compiler support -maix64 ?
+AC_MSG_CHECKING([if gcc accepts -maix64])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-maix64"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+FLAG_MAIX64="-maix64"
+AC_MSG_RESULT([yes])
+], [
+FLAG_MAIX64=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(FLAG_MAIX64)
+
+
+# does this compiler support -mmmx ?
+AC_MSG_CHECKING([if gcc accepts -mmmx])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-mmmx"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+FLAG_MMMX="-mmmx"
+AC_MSG_RESULT([yes])
+], [
+FLAG_MMMX=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(FLAG_MMMX)
+
+
+# does this compiler support -msse ?
+AC_MSG_CHECKING([if gcc accepts -msse])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-msse"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+FLAG_MSSE="-msse"
+AC_MSG_RESULT([yes])
+], [
+FLAG_MSSE=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(FLAG_MSSE)
+
+
+# does this compiler support -mpreferred-stack-boundary=2 ?
+AC_MSG_CHECKING([if gcc accepts -mpreferred-stack-boundary])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-mpreferred-stack-boundary=2"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+PREFERRED_STACK_BOUNDARY="-mpreferred-stack-boundary=2"
+AC_MSG_RESULT([yes])
+], [
+PREFERRED_STACK_BOUNDARY=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(PREFERRED_STACK_BOUNDARY)
+
+
+# does this compiler support -Wno-pointer-sign ?
+AC_MSG_CHECKING([if gcc accepts -Wno-pointer-sign])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-pointer-sign"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+no_pointer_sign=yes
+AC_MSG_RESULT([yes])
+], [
+no_pointer_sign=no
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+if test x$no_pointer_sign = xyes; then
+  CFLAGS="$CFLAGS -Wno-pointer-sign"
+fi
+
+
+# does this compiler support -Wno-empty-body ?
+
+AC_MSG_CHECKING([if gcc accepts -Wno-empty-body])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-empty-body"
+
+AC_TRY_COMPILE(
+[ ],
+[
+  return 0;
+],
+[
+AC_SUBST([FLAG_W_NO_EMPTY_BODY], [-Wno-empty-body])
+AC_MSG_RESULT([yes])
+],
+[
+AC_SUBST([FLAG_W_NO_EMPTY_BODY], [])
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
+# does this compiler support -Wno-format-zero-length ?
+
+AC_MSG_CHECKING([if gcc accepts -Wno-format-zero-length])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-format-zero-length"
+
+AC_TRY_COMPILE(
+[ ],
+[
+  return 0;
+],
+[
+AC_SUBST([FLAG_W_NO_FORMAT_ZERO_LENGTH], [-Wno-format-zero-length])
+AC_MSG_RESULT([yes])
+],
+[
+AC_SUBST([FLAG_W_NO_FORMAT_ZERO_LENGTH], [])
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
+# does this compiler support -Wno-uninitialized ?
+
+AC_MSG_CHECKING([if gcc accepts -Wno-uninitialized])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wno-uninitialized"
+
+AC_TRY_COMPILE(
+[ ],
+[
+  return 0;
+],
+[
+AC_SUBST([FLAG_W_NO_UNINITIALIZED], [-Wno-uninitialized])
+AC_MSG_RESULT([yes])
+],
+[
+AC_SUBST([FLAG_W_NO_UNINITIALIZED], [])
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
+# does this compiler support -Wextra or the older -W ?
+
+AC_MSG_CHECKING([if gcc accepts -Wextra or -W])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wextra"
+
+AC_TRY_COMPILE(
+[ ],
+[
+  return 0;
+],
+[
+AC_SUBST([FLAG_W_EXTRA], [-Wextra])
+AC_MSG_RESULT([-Wextra])
+], [
+  CFLAGS="-W"
+  AC_TRY_COMPILE(
+  [ ],
+  [
+    return 0;
+  ],
+  [
+  AC_SUBST([FLAG_W_EXTRA], [-W])
+  AC_MSG_RESULT([-W])
+  ], [
+  AC_SUBST([FLAG_W_EXTRA], [])
+  AC_MSG_RESULT([not supported])
+  ])
+])
+CFLAGS=$safe_CFLAGS
+
+
+# does this compiler support -fno-stack-protector ?
+AC_MSG_CHECKING([if gcc accepts -fno-stack-protector])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-fno-stack-protector"
+
+AC_TRY_COMPILE(, [
+  return 0;
+],
+[
+no_stack_protector=yes
+FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector"
+AC_MSG_RESULT([yes])
+], [
+no_stack_protector=no
+FLAG_FNO_STACK_PROTECTOR=""
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AC_SUBST(FLAG_FNO_STACK_PROTECTOR)
+
+if test x$no_stack_protector = xyes; then
+  CFLAGS="$CFLAGS -fno-stack-protector"
+fi
+
+
+# does this compiler support --param inline-unit-growth=... ?
+
+AC_MSG_CHECKING([if gcc accepts --param inline-unit-growth])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="--param inline-unit-growth=900"
+
+AC_TRY_COMPILE(
+[ ],
+[
+  return 0;
+],
+[
+AC_SUBST([FLAG_UNLIMITED_INLINE_UNIT_GROWTH],
+         ["--param inline-unit-growth=900"])
+AC_MSG_RESULT([yes])
+], [
+AC_SUBST([FLAG_UNLIMITED_INLINE_UNIT_GROWTH], [""])
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
+# does the linker support -Wl,--build-id=none ?  Note, it's
+# important that we test indirectly via whichever C compiler
+# is selected, rather than testing /usr/bin/ld or whatever
+# directly.
+
+AC_MSG_CHECKING([if the linker accepts -Wl,--build-id=none])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-Wl,--build-id=none"
+
+AC_LINK_IFELSE(
+[AC_LANG_PROGRAM([ ], [return 0;])],
+[
+  AC_SUBST([FLAG_NO_BUILD_ID], ["-Wl,--build-id=none"])
+  AC_MSG_RESULT([yes])
+], [
+  AC_SUBST([FLAG_NO_BUILD_ID], [""])
+  AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+
+# does the ppc assembler support "mtocrf" et al?
+AC_MSG_CHECKING([if ppc32/64 as supports mtocrf/mfocrf])
+
+AC_TRY_COMPILE(, [
+__asm__ __volatile__("mtocrf 4,0");
+__asm__ __volatile__("mfocrf 0,4");
+],
+[
+ac_have_as_ppc_mftocrf=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_ppc_mftocrf=no
+AC_MSG_RESULT([no])
+])
+if test x$ac_have_as_ppc_mftocrf = xyes ; then
+  AC_DEFINE(HAVE_AS_PPC_MFTOCRF, 1, [Define to 1 if as supports mtocrf/mfocrf.])
+fi
+
+
+# does the x86/amd64 assembler understand SSE3 instructions?
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_SSE3_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler speaks SSE3])
+
+AC_TRY_COMPILE(, [
+  do { long long int x; 
+     __asm__ __volatile__("fisttpq (%0)" : :"r"(&x) ); } 
+  while (0)
+],
+[
+ac_have_as_sse3=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_sse3=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_SSE3_TESTS, test x$ac_have_as_sse3 = xyes)
+
+
+# Ditto for SSSE3 instructions (note extra S)
+# Note, this doesn't generate a C-level symbol.  It generates a
+# automake-level symbol (BUILD_SSSE3_TESTS), used in test Makefile.am's
+AC_MSG_CHECKING([if x86/amd64 assembler speaks SSSE3])
+
+AC_TRY_COMPILE(, [
+  do { long long int x; 
+   __asm__ __volatile__(
+      "pabsb (%0),%%xmm7" : : "r"(&x) : "xmm7" ); }
+  while (0)
+],
+[
+ac_have_as_ssse3=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_ssse3=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_SSSE3_TESTS, test x$ac_have_as_ssse3 = xyes)
+
+
+# Note: we're really checking the assembler-level support, not gcc's ;
+# C-level code might require the flag -mpclmul be passed to gcc (e.g. to
+# compile code which uses wmmintrin.h). Doesn't matter since tests also
+# use inline assembly directly
+AC_MSG_CHECKING([if x86/amd64 assembler supports 'pclmulqdq'])
+AC_TRY_COMPILE(, [
+  do {
+   __asm__ __volatile__(
+      "pclmulqdq \$17,%%xmm6,%%xmm7" : : : "xmm6", "xmm7" ); }
+  while (0)
+],
+[
+ac_have_as_pclmulqdq=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_as_pclmulqdq=no
+AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL(BUILD_PCLMULQDQ_TESTS, test x$ac_have_as_pclmulqdq = xyes)
+
+
+AC_MSG_CHECKING([if x86/amd64 assembler supports 'lzcnt'])
+
+AC_TRY_COMPILE([], [
+  do {                  
+      __asm__ __volatile__("lzcnt %rax,%rax");
+  } while (0)
+],
+[
+  ac_have_as_lzcnt=yes
+  AC_MSG_RESULT([yes])
+], [
+  ac_have_as_lzcnt=no
+  AC_MSG_RESULT([no])
+])
+
+AM_CONDITIONAL([BUILD_LZCNT_TESTS], [test x$ac_have_as_lzcnt = xyes])
+
+# XXX JRS 2010 Oct 13: what is this for?  For sure, we don't need this
+# when building the tool executables.  I think we should get rid of it.
+#
+# Check for TLS support in the compiler and linker
+if test "x${cross_compiling}" = "xno"; then
+# Native compilation: check whether running a program using TLS succeeds.
+# Linking only is not sufficient -- e.g. on Red Hat 7.3 linking TLS programs
+# succeeds but running programs using TLS fails.
+AC_CACHE_CHECK([for TLS support], vg_cv_tls,
+              [AC_ARG_ENABLE(tls, [  --enable-tls            platform supports TLS],
+               [vg_cv_tls=$enableval],
+                       [AC_RUN_IFELSE([AC_LANG_PROGRAM([[static __thread int foo;]],
+                                                [[return foo;]])],
+                               [vg_cv_tls=yes],
+                               [vg_cv_tls=no])])])
+else
+# Cross-compiling: check whether linking a program using TLS succeeds.
+AC_CACHE_CHECK([for TLS support], vg_cv_tls,
+              [AC_ARG_ENABLE(tls, [  --enable-tls            platform supports TLS],
+               [vg_cv_tls=$enableval],
+                       [AC_LINK_IFELSE([AC_LANG_PROGRAM([[static __thread int foo;]],
+                                                [[return foo;]])],
+                               [vg_cv_tls=yes],
+                               [vg_cv_tls=no])])])
+fi
+
+if test "$vg_cv_tls" = yes; then
+AC_DEFINE([HAVE_TLS], 1, [can use __thread to define thread-local variables])
+fi
+
+
+#----------------------------------------------------------------------------
+# Checks for C header files.
+#----------------------------------------------------------------------------
+
+AC_HEADER_STDC
+AC_CHECK_HEADERS([       \
+        asm/unistd.h     \
+        endian.h         \
+        mqueue.h         \
+        sys/endian.h     \
+        sys/epoll.h      \
+        sys/eventfd.h    \
+        sys/klog.h       \
+        sys/poll.h       \
+        sys/signal.h     \
+        sys/signalfd.h   \
+        sys/syscall.h    \
+        sys/time.h       \
+        sys/types.h      \
+        ])
+
+#----------------------------------------------------------------------------
+# Checks for typedefs, structures, and compiler characteristics.
+#----------------------------------------------------------------------------
+AC_TYPE_UID_T
+AC_TYPE_OFF_T
+AC_TYPE_SIZE_T
+AC_HEADER_TIME
+
+
+#----------------------------------------------------------------------------
+# Checks for library functions.
+#----------------------------------------------------------------------------
+AC_FUNC_MEMCMP
+AC_FUNC_MMAP
+AC_TYPE_SIGNAL
+
+AC_CHECK_LIB([rt], [clock_gettime])
+
+AC_CHECK_FUNCS([     \
+        clock_gettime\
+        epoll_create \
+        epoll_pwait  \
+        floor        \
+        klogctl      \
+        mallinfo     \
+        memchr       \
+        memset       \
+        mkdir        \
+        mremap       \
+        ppoll        \
+        pthread_barrier_init       \
+        pthread_condattr_setclock  \
+        pthread_mutex_timedlock    \
+        pthread_rwlock_timedrdlock \
+        pthread_rwlock_timedwrlock \
+        pthread_spin_lock          \
+        pthread_yield              \
+        readlinkat   \
+        semtimedop   \
+        signalfd     \
+        sigwaitinfo  \
+        strchr       \
+        strdup       \
+        strpbrk      \
+        strrchr      \
+        strstr       \
+        syscall      \
+        timerfd      \
+        utimensat    \
+        ])
+
+# AC_CHECK_LIB adds any library found to the variable LIBS, and links these
+# libraries with any shared object and/or executable. This is NOT what we
+# want for e.g. vgpreload_core-x86-linux.so
+LIBS=""
+
+AM_CONDITIONAL([HAVE_PTHREAD_BARRIER],
+               [test x$ac_cv_func_pthread_barrier_init = xyes])
+AM_CONDITIONAL([HAVE_PTHREAD_MUTEX_TIMEDLOCK],
+               [test x$ac_cv_func_pthread_mutex_timedlock = xyes])
+AM_CONDITIONAL([HAVE_PTHREAD_SPINLOCK],
+               [test x$ac_cv_func_pthread_spin_lock = xyes])
+
+
+#----------------------------------------------------------------------------
+# MPI checks
+#----------------------------------------------------------------------------
+# Do we have a useable MPI setup on the primary and/or secondary targets?
+# On Linux, by default, assumes mpicc and -m32/-m64
+# On AIX, by default, assumes mpxlc and -q32/-q64
+# Note: this is a kludge in that it assumes the specified mpicc 
+# understands -m32/-m64/-q32/-q64 regardless of what is specified using
+# --with-mpicc=.
+MPI_CC="mpicc"
+if test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 \
+     -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5 ; then
+  MPI_CC="mpxlc"
+fi
+
+mflag_primary=
+if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_LINUX \
+     -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_LINUX ; then
+  mflag_primary=$FLAG_M32
+elif test x$VGCONF_PLATFORM_PRI_CAPS = xAMD64_LINUX \
+       -o x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_LINUX ; then
+  mflag_primary=$FLAG_M64
+elif test x$VGCONF_PLATFORM_PRI_CAPS = xPPC32_AIX5 ; then
+  mflag_primary=-q32
+elif test x$VGCONF_PLATFORM_PRI_CAPS = xPPC64_AIX5 ; then
+  mflag_primary=-q64
+fi
+
+mflag_secondary=
+if test x$VGCONF_PLATFORM_SEC_CAPS = xX86_LINUX \
+     -o x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_LINUX ; then
+  mflag_secondary=$FLAG_M32
+elif test x$VGCONF_PLATFORM_SEC_CAPS = xPPC32_AIX5 ; then
+  mflag_secondary=-q32
+fi
+
+
+AC_ARG_WITH(mpicc,
+   [  --with-mpicc=           Specify name of MPI2-ised C compiler],
+   MPI_CC=$withval
+)
+AC_SUBST(MPI_CC)
+
+## See if MPI_CC works for the primary target
+##
+AC_MSG_CHECKING([primary target for usable MPI2-compliant C compiler and mpi.h])
+saved_CC=$CC
+saved_CFLAGS=$CFLAGS
+CC=$MPI_CC
+CFLAGS=$mflag_primary
+AC_TRY_LINK([
+#include <mpi.h>
+#include <stdio.h>
+],[
+  int r = MPI_Init(NULL,NULL);
+  r |= MPI_Type_get_contents( MPI_INT, 0,0,0, NULL,NULL,NULL );
+  return r; 
+], [
+ac_have_mpi2_pri=yes
+AC_MSG_RESULT([yes, $MPI_CC])
+], [
+ac_have_mpi2_pri=no
+AC_MSG_RESULT([no])
+])
+CC=$saved_CC
+CFLAGS=$saved_CFLAGS
+AM_CONDITIONAL(BUILD_MPIWRAP_PRI, test x$ac_have_mpi2_pri = xyes)
+
+## See if MPI_CC works for the secondary target.  Complication: what if
+## there is no secondary target?  We need this to then fail.
+## Kludge this by making MPI_CC something which will surely fail in
+## such a case.
+##
+AC_MSG_CHECKING([secondary target for usable MPI2-compliant C compiler and mpi.h])
+saved_CC=$CC
+saved_CFLAGS=$CFLAGS
+if test x$VGCONF_PLATFORM_SEC_CAPS = x ; then
+  CC="$MPI_CC this will surely fail"
+else
+  CC=$MPI_CC
+fi
+CFLAGS=$mflag_secondary
+AC_TRY_LINK([
+#include <mpi.h>
+#include <stdio.h>
+],[
+  int r = MPI_Init(NULL,NULL);
+  r |= MPI_Type_get_contents( MPI_INT, 0,0,0, NULL,NULL,NULL );
+  return r; 
+], [
+ac_have_mpi2_sec=yes
+AC_MSG_RESULT([yes, $MPI_CC])
+], [
+ac_have_mpi2_sec=no
+AC_MSG_RESULT([no])
+])
+CC=$saved_CC
+CFLAGS=$saved_CFLAGS
+AM_CONDITIONAL(BUILD_MPIWRAP_SEC, test x$ac_have_mpi2_sec = xyes)
+
+
+#----------------------------------------------------------------------------
+# Other library checks
+#----------------------------------------------------------------------------
+# There now follow some tests for Boost, and OpenMP.  These
+# tests are present because Drd has some regression tests that use
+# these packages.  All regression test programs all compiled only
+# for the primary target.  And so it is important that the configure
+# checks that follow, use the correct -m32 or -m64 flag for the
+# primary target (called $mflag_primary).  Otherwise, we can end up
+# in a situation (eg) where, on amd64-linux, the test for Boost checks
+# for usable 64-bit Boost facilities, but because we are doing a 32-bit
+# only build (meaning, the primary target is x86-linux), the build
+# of the regtest programs that use Boost fails, because they are 
+# build as 32-bit (IN THIS EXAMPLE).
+#
+# Hence: ALWAYS USE $mflag_primary FOR CONFIGURE TESTS FOR FACILITIES
+# NEEDED BY THE REGRESSION TEST PROGRAMS.
+
+
+# Check whether the boost library 1.35 or later has been installed.
+# The Boost.Threads library has undergone a major rewrite in version 1.35.0.
+
+AC_MSG_CHECKING([for boost])
+
+AC_LANG(C++)
+safe_CXXFLAGS=$CXXFLAGS
+CXXFLAGS="-lboost_thread-mt $mflag_primary"
+
+AC_LINK_IFELSE(
+[
+#include <boost/thread.hpp>
+static void thread_func(void)
+{ }
+int main(int argc, char** argv)
+{
+  boost::thread t(thread_func);
+  return 0;
+}
+],
+[
+ac_have_boost_1_35=yes
+AC_SUBST([BOOST_CFLAGS], [])
+AC_SUBST([BOOST_LIBS], ["${CXXFLAGS}"])
+AC_MSG_RESULT([yes])
+], [
+ac_have_boost_1_35=no
+AC_MSG_RESULT([no])
+])
+
+CXXFLAGS=$safe_CXXFLAGS
+AC_LANG(C)
+
+AM_CONDITIONAL([HAVE_BOOST_1_35], [test x$ac_have_boost_1_35 = xyes])
+
+
+# does this compiler support -fopenmp, does it have the include file
+# <omp.h> and does it have libgomp ?
+
+AC_MSG_CHECKING([for OpenMP])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="-fopenmp $mflag_primary"
+
+AC_LINK_IFELSE(
+[
+#include <omp.h> 
+int main(int argc, char** argv)
+{
+  omp_set_dynamic(0);
+  return 0;
+}
+],
+[
+ac_have_openmp=yes
+AC_MSG_RESULT([yes])
+], [
+ac_have_openmp=no
+AC_MSG_RESULT([no])
+])
+CFLAGS=$safe_CFLAGS
+
+AM_CONDITIONAL([HAVE_OPENMP], [test x$ac_have_openmp = xyes])
+
+
+# does this compiler have built-in functions for atomic memory access ?
+AC_MSG_CHECKING([if gcc supports __sync_bool_compare_and_swap])
+
+safe_CFLAGS=$CFLAGS
+CFLAGS="$mflag_primary"
+
+AC_TRY_LINK(,
+[
+  int variable = 1;
+  return (__sync_bool_compare_and_swap(&variable, 1, 2)
+          && __sync_add_and_fetch(&variable, 1) ? 1 : 0)
+],
+[
+  ac_have_builtin_atomic=yes
+  AC_MSG_RESULT([yes])
+  AC_DEFINE(HAVE_BUILTIN_ATOMIC, 1, [Define to 1 if gcc supports __sync_bool_compare_and_swap() a.o.])
+],
+[
+  ac_have_builtin_atomic=no
+  AC_MSG_RESULT([no])
+])
+
+CFLAGS=$safe_CFLAGS
+
+AM_CONDITIONAL([HAVE_BUILTIN_ATOMIC], [test x$ac_have_builtin_atomic = xyes])
+
+
+#----------------------------------------------------------------------------
+# Ok.  We're done checking.
+#----------------------------------------------------------------------------
+
+# Nb: VEX/Makefile is generated from Makefile.vex.in.
+AC_CONFIG_FILES([
+   Makefile 
+   VEX/Makefile:Makefile.vex.in
+   valgrind.spec
+   valgrind.pc
+   glibc-2.X.supp
+   docs/Makefile 
+   tests/Makefile 
+   tests/vg_regtest 
+   perf/Makefile 
+   perf/vg_perf
+   include/Makefile 
+   auxprogs/Makefile
+   mpi/Makefile
+   coregrind/Makefile 
+   memcheck/Makefile
+   memcheck/tests/Makefile
+   memcheck/tests/amd64/Makefile
+   memcheck/tests/x86/Makefile
+   memcheck/tests/linux/Makefile
+   memcheck/tests/darwin/Makefile
+   memcheck/tests/amd64-linux/Makefile
+   memcheck/tests/x86-linux/Makefile
+   memcheck/tests/ppc32/Makefile
+   memcheck/tests/ppc64/Makefile
+   memcheck/perf/Makefile
+   cachegrind/Makefile
+   cachegrind/tests/Makefile
+   cachegrind/tests/x86/Makefile
+   cachegrind/cg_annotate
+   cachegrind/cg_diff
+   callgrind/Makefile
+   callgrind/callgrind_annotate
+   callgrind/callgrind_control
+   callgrind/tests/Makefile
+   helgrind/Makefile
+   helgrind/tests/Makefile
+   massif/Makefile
+   massif/tests/Makefile
+   massif/perf/Makefile
+   massif/ms_print
+   lackey/Makefile
+   lackey/tests/Makefile
+   none/Makefile
+   none/tests/Makefile
+   none/tests/amd64/Makefile
+   none/tests/ppc32/Makefile
+   none/tests/ppc64/Makefile
+   none/tests/x86/Makefile
+   none/tests/arm/Makefile
+   none/tests/linux/Makefile
+   none/tests/darwin/Makefile
+   none/tests/x86-linux/Makefile
+   exp-ptrcheck/Makefile
+   exp-ptrcheck/tests/Makefile
+   drd/Makefile
+   drd/scripts/download-and-build-splash2
+   drd/tests/Makefile
+   exp-bbv/Makefile
+   exp-bbv/tests/Makefile
+   exp-bbv/tests/x86/Makefile
+   exp-bbv/tests/x86-linux/Makefile
+   exp-bbv/tests/amd64-linux/Makefile
+   exp-bbv/tests/ppc32-linux/Makefile
+   exp-bbv/tests/arm-linux/Makefile
+   exp-dhat/Makefile
+   exp-dhat/tests/Makefile
+])
+AC_CONFIG_FILES([coregrind/link_tool_exe_linux],
+                [chmod +x coregrind/link_tool_exe_linux])
+AC_CONFIG_FILES([coregrind/link_tool_exe_darwin],
+                [chmod +x coregrind/link_tool_exe_darwin])
+AC_CONFIG_FILES([coregrind/link_tool_exe_aix5],
+                [chmod +x coregrind/link_tool_exe_aix5])
+AC_OUTPUT
+
+cat<<EOF
+
+         Maximum build arch: ${ARCH_MAX}
+         Primary build arch: ${VGCONF_ARCH_PRI}
+       Secondary build arch: ${VGCONF_ARCH_SEC}
+                   Build OS: ${VGCONF_OS}
+       Primary build target: ${VGCONF_PLATFORM_PRI_CAPS}
+     Secondary build target: ${VGCONF_PLATFORM_SEC_CAPS}
+         Default supp files: ${DEFAULT_SUPP}
+
+EOF
diff --git a/.svn/text-base/darwin10-drd.supp.svn-base b/.svn/text-base/darwin10-drd.supp.svn-base
new file mode 100644 (file)
index 0000000..385d6c9
--- /dev/null
@@ -0,0 +1,2 @@
+
+# DRD suppressions for Darwin 10.x / Mac OS X 10.6 Snow Leopard
diff --git a/.svn/text-base/darwin10.supp.svn-base b/.svn/text-base/darwin10.supp.svn-base
new file mode 100644 (file)
index 0000000..55f39fe
--- /dev/null
@@ -0,0 +1,37 @@
+
+# Suppressions for Darwin 10.x / Mac OS X 10.6 Snow Leopard
+
+##----------------------------------------------------------------------##
+# Memcheck
+##----------------------------------------------------------------------##
+
+# afaict this is legit.  Might be caused by setenv("VAR=")
+# where the value string is empty (not sure)
+{
+   macos-Cond-7
+   Memcheck:Cond
+   fun:__setenv
+}
+
+# From Jesse Ruderman.
+{
+   Mac OS X 10.6.4. rdar://8145289. "new[]" paired with "delete" in the DesktopServicesPriv framework.
+   Memcheck:Free
+   fun:_ZdlPv
+   fun:_ZN5TChar18RemovePtrReferenceEv
+ }
+
+# From Jesse Ruderman.
+{
+   Mac OS X 10.6.4. rdar://8145318. Uninitialized memory from HIMenuBarView::MeasureAppMenus is used in HIMenuBarView::SetAdjustTextTitleBoundsAtIndex.
+   Memcheck:Cond
+   fun:_ZN13HIMenuBarView31SetAdjustTextTitleBoundsAtIndexEih
+   fun:_ZN13HIMenuBarView15MeasureAppMenusEv
+}
+
+{
+   TFontFeatures::TFontFeatures(CGFont*) (in CoreText.framework)
+   Memcheck:Cond
+   fun:_ZN13TFontFeaturesC2EP6CGFont
+   fun:_ZNK9TBaseFont12CopyFeaturesEv
+}
diff --git a/.svn/text-base/darwin9-drd.supp.svn-base b/.svn/text-base/darwin9-drd.supp.svn-base
new file mode 100644 (file)
index 0000000..ea30143
--- /dev/null
@@ -0,0 +1,469 @@
+
+# DRD suppressions for Darwin 9.x / Mac OS X 10.5 Leopard
+
+#
+# Suppression patterns for dyld, the dynamic loader.
+#
+
+{
+   drd-darwin-dyld-register-func-for-add-image
+   drd:MutexErr
+   fun:pthread_mutex_unlock
+   fun:_dyld_register_func_for_add_image
+   fun:__keymgr_initializer
+   fun:libSystem_initializer
+}
+{
+   drd-darwin-dyld-register-func-for-remove-image
+   drd:MutexErr
+   fun:pthread_mutex_unlock
+   fun:_dyld_register_func_for_remove_image
+   fun:__keymgr_initializer
+   fun:libSystem_initializer
+}
+{
+   drd-darwin-dyld-GlobalLockInitialize
+   drd:MutexErr
+   fun:pthread_mutex_init
+   fun:_Z24dyldGlobalLockInitializev
+   fun:_dyld_initializer
+}
+{
+   drd-darwin-dyld-bindLazySymbol
+   drd:ConflictingAccess
+   ...
+   fun:_ZN4dyld14bindLazySymbolEPK11mach_headerPm
+   fun:stub_binding_helper_interface2
+}
+{
+   drd-darwin-dyld-addImage
+   drd:ConflictingAccess
+   fun:_ZN4dyld8addImageEP11ImageLoader
+}
+{
+   dyld-ImageLoader::link
+   drd:ConflictingAccess
+   ...
+   fun:_ZN4dyld18notifyBatchPartialE17dyld_image_statesbPFPKcS0_jPK15dyld_image_infoE
+   fun:_ZN11ImageLoader4linkERKNS_11LinkContextEbbRKNS_10RPathChainE
+   fun:_ZN4dyld4linkEP11ImageLoaderbRKNS0_10RPathChainE
+}
+{
+   drd-darwin-dyld-ImageLoaderMachO::resolveUndefined
+   drd:ConflictingAccess
+   ...
+   fun:_ZN16ImageLoaderMachO16resolveUndefinedERKN11ImageLoader11LinkContextEPK11macho_nlistbPPKS0_
+}
+{
+   drd-darwin-dyld-ImageLoaderMachO::findExportedSymbol
+   drd:ConflictingAccess
+   fun:_ZNK16ImageLoaderMachO18findExportedSymbolEPKcPKvbPPK11ImageLoader
+   fun:_ZNK11ImageLoader41findExportedSymbolInDependentImagesExceptEPKcPPKS_RS4_S4_S4_
+   fun:_ZNK11ImageLoader42findExportedSymbolInImageOrDependentImagesEPKcRKNS_11LinkContextEPPKS_
+   fun:dlsym
+}
+
+
+#
+# Suppression patterns for libc, Darwin's C library.
+#
+
+{
+   drd-darwin-libc-cerror
+   drd:ConflictingAccess
+   ...
+   fun:cerror
+}
+{
+   drd-darwin-libc-rand
+   drd:ConflictingAccess
+   fun:do_rand
+}
+{
+   drd-darwin-libc-vfprintf-1
+   drd:ConflictingAccess
+   fun:vfprintf_l
+}
+{
+   drd-darwin-libc-vfprintf-2
+   drd:ConflictingAccess
+   fun:__vfprintf
+}
+{
+   drd-darwin-libc-localeconv
+   drd:ConflictingAccess
+   fun:localeconv_l
+}
+{
+   drd-darwin-libc-fwrite
+   drd:ConflictingAccess
+   ...
+   fun:fwrite$UNIX2003
+}
+{
+   drd-darwin-cxa-guard-acquire
+   drd:ConflictingAccess
+   obj:*
+   fun:__cxa_current_exception_type
+   fun:__cxa_guard_acquire
+}
+{
+   drd-darwin-cxa-guard-release
+   drd:ConflictingAccess
+   fun:__cxa_guard_release
+}
+{
+   drd-darwin-cxa-finalize
+   drd:MutexErr
+   fun:pthread_mutex_destroy
+   fun:__tcf_115
+   fun:__cxa_finalize
+   fun:exit
+}
+{
+   drd-darwin-atexit-register
+   drd:ConflictingAccess
+   fun:atexit_register
+}
+{
+   drd-darwin-opendir
+   drd:ConflictingAccess
+   fun:telldir$UNIX2003
+   fun:__opendir2$UNIX2003
+   fun:opendir$UNIX2003
+}
+{
+   drd-darwin-readdir
+   drd:ConflictingAccess
+   fun:readdir
+}
+{
+   drd-darwin-closedir
+   drd:ConflictingAccess
+   fun:closedir$UNIX2003
+}
+{
+   drd:darwin-ptrace
+   drd:ConflictingAccess
+   fun:ptrace
+}
+
+
+#
+# Suppression patterns for libpthread, Darwin's POSIX threads implementation.
+#
+
+{
+   drd-darwin-pthread-create-1
+   drd:ConflictingAccess
+   obj:*
+   fun:thread_start
+}
+{
+   drd-darwin-pthread-create-2
+   drd:ConflictingAccess
+   ...
+   fun:pthread_create*
+}
+{
+   drd-darwin-pthread-join-1
+   drd:ConflictingAccess
+   ...
+   fun:pthread_join$UNIX2003
+}
+{
+   drd-darwin-pthread-exit
+   drd:ConflictingAccess
+   ...
+   fun:_pthread_exit
+}
+{
+   drd-darwin-pthread-find-thread
+   drd:ConflictingAccess
+   fun:_pthread_find_thread
+}
+{
+   drd-darwin-pthread-spin-unlock
+   drd:ConflictingAccess
+   fun:spin_unlock
+}
+{
+   drd-darwin-pthread-testcancel
+   drd:ConflictingAccess
+   fun:_pthread_testcancel
+}
+{
+   drd-darwin-pthread-detach
+   drd:ConflictingAccess
+   ...
+   fun:pthread_detach
+}
+{
+   drd-darwin-pthread-detach
+   drd:CondRaceErr
+   ...
+   fun:pthread_detach
+}
+{
+   drd-darwin-pthread-kill
+   drd:ConflictingAccess
+   ...
+   fun:pthread_kill
+}
+{
+   drd-darwin-pthread-free-pthread-onstack
+   drd:ConflictingAccess
+   fun:mig_dealloc_reply_port
+   fun:_pthread_free_pthread_onstack
+}
+{
+   drd-darwin-pthread-mach-thread-np
+   drd:ConflictingAccess
+   ...
+   fun:pthread_mach_thread_np
+}
+{
+   drd-darwin-pthread-key-create
+   drd:ConflictingAccess
+   fun:pthread_key_create
+}
+
+
+#
+# Suppression patterns for libobjc.
+#
+
+# It looks like the implementation of objc_msgSend uses another means than the
+# POSIX threads library for locking. More information about messaging and
+# objc_msgSend can be found here: 
+# http://devworld.apple.com/documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtHowMessagingWorks.html
+#
+
+{
+   drd-darwin-objc-msgSend
+   drd:ConflictingAccess
+   ...
+   fun:objc_msgSend
+}
+{
+   drd-darwin-objc-msgSend
+   drd:ConflictingAccess
+   ...
+   fun:objc_sync_enter
+}
+
+
+#
+# Suppression patterns for CoreFoundation.framework.
+#
+
+# Suppressions for NSObject methods. For more information about the NSObject
+# class, see also
+# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html
+{
+   drd-darwin-NSObject-release
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject release]
+}
+{
+   drd-darwin-NSObject-autorelease-1
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject(NSObject) autorelease]
+}
+{
+   drd-darwin-NSObject-autorelease-2
+   drd:ConflictingAccess
+   fun:__NSAutoreleaseObject
+}
+{
+   drd-darwin-NSObject-NSDeallocateObject
+   drd:ConflictingAccess
+   fun:_internal_object_dispose
+   fun:NSDeallocateObject
+}
+{
+   drd-darwin-NSObject-retain
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject retain]
+}
+{
+   drd-darwin-NSObject-retainCount
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject retainCount]
+}
+{
+   drd-darwin-NSObject-NSDelayedPerforming-1
+   drd:ConflictingAccess
+   ...
+   fun:+[NSObject(NSDelayedPerforming) cancelPreviousPerformRequestsWithTarget:selector:object:]
+}
+{
+   drd-darwin-NSObject-NSDelayedPerforming-2
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject(NSDelayedPerforming) performSelector:withObject:afterDelay:]
+}
+{
+   drd-darwin-NSObject-NSDelayedPerforming-3
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject(NSDelayedPerforming) performSelector:withObject:afterDelay:inModes:]
+}
+{
+   drd-darwin-NSObject-NSDelayedPerforming-4
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:]
+}
+{
+   drd-darwin-NSObject-NSDelayedPerforming-5
+   drd:ConflictingAccess
+   ...
+   fun:-[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:]
+}
+
+# Suppressions for methods of the NSThread class.
+{
+   drd-NSThread-nq
+   drd:ConflictingAccess
+   ...
+   fun:-[NSThread _nq:]
+}
+
+# Suppressions for methods of the NSLock class. See also
+# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSLock_Class/Reference/Reference.html
+{
+   drd-darwin-NSLock-lock
+   drd:ConflictingAccess
+   fun:-[NSLock lock]
+}
+{
+   drd-darwin-NSLock-unlock
+   drd:ConflictingAccess
+   fun:-[NSLock unlock]
+}
+# Suppressions for NSCondition methods.
+{
+   drd-darwin-NSConditionLock-lock
+   drd:ConflictingAccess
+   fun:-[NSCondition lock]
+}
+# Suppressions for NSConditionLock methods.
+{
+   drd-darwin-NSConditionLock-lockWhenCondition:beforeDate:
+   drd:ConflictingAccess
+   fun:-[NSConditionLock lockWhenCondition:beforeDate:]
+}
+
+
+# NSExtraRefCount returns the specified object's reference count, and
+# NSDecrementExtraRefCountWasZero decrements the specified object's reference
+# count.
+# See also http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Miscellaneous/Foundation_Functions/Reference/reference.html
+{
+   drd-darwin-NSExtraRefCount
+   drd:ConflictingAccess
+   ...
+   fun:NSExtraRefCount
+}
+{
+   drd-darwin-NSDecrementExtraRefCountWasZero
+   drd:ConflictingAccess
+   ...
+   fun:NSDecrementExtraRefCountWasZero
+}
+# For more information about key-value observing, see also the NSKeyValueObserving Protocol Reference:
+# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Protocols/NSKeyValueObserving_Protocol/Reference/Reference.html
+{
+   drd-darwin-NSKVONotify
+   drd:ConflictingAccess
+   ...
+   fun:NSKVONotify
+}
+{
+   drd-darwin-NSKVONotifyingEnableForInfoAndKey
+   drd:ConflictingAccess
+   ...
+   fun:_NSKVONotifyingEnableForInfoAndKey
+}
+# From the NSRunLoop class reference:
+# Warning: The NSRunLoop class is generally not considered to be thread-safe
+# and its methods should only be called within the context of the current
+# thread. You should never try to call the methods of an NSRunLoop object
+# running in a different thread, as doing so might cause unexpected results.
+# See also the NSRunLoop Class Reference:
+# http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/Reference/Reference.html
+# {
+#    drd-darwin-CFRunLoop*
+#    drd:ConflictingAccess
+#    ...
+#    fun:CFRunLoop*
+# }
+# See also the CFBag reference:
+# http://developer.apple.com/documentation/CoreFoundation/Reference/CFBagRef/Reference/reference.html
+# {
+#    drd-darwin-CFBag*
+#    drd:ConflictingAccess
+#    fun:CFBag*
+# }
+
+# Suppression patterns for the memory allocation functions in WTF.
+{
+   drd-WTF::fastCalloc
+   drd:ConflictingAccess
+   ...
+   fun:_ZN3WTF10fastCallocEmm
+}
+{
+   drd-WTF::fastMalloc
+   drd:ConflictingAccess
+   ...
+   fun:_ZN3WTF10fastMallocEm
+}
+{
+   drd-WTF::fastFree
+   drd:ConflictingAccess
+   ...
+   fun:_ZN3WTF8fastFreeEPv
+}
+
+# Suppression patterns for the string manipulation functions in WebCore.
+{
+   drd-WebCore::StringImpl::init
+   drd:ConflictingAccess
+   ...
+   fun:_ZN7WebCore10StringImpl4initEPKcj
+}
+{
+   drd-WebCore::StringImpl::append
+   drd:ConflictingAccess
+   ...
+   fun:_ZN7WebCore10StringImpl6appendEPKtj
+}
+{
+   drd-WebCore::CString::init
+   drd:ConflictingAccess
+   ...
+   fun:_ZN7WebCore7CString4initEPKcj
+}
+
+# Suppression patterns for the text encoding functions in WebCore.
+{
+   drd-WebCore::WebCore::TextCodec::~TextCodec()
+   drd:ConflictingAccess
+   fun:_ZN7WebCore9TextCodecD2Ev
+}
+{
+   drd-WebCore::TextCodecICU::TextCodecICU
+   drd:ConflictingAccess
+   fun:_ZN7WebCore12TextCodecICUC2ERKNS_12TextEncodingE
+}
+{
+   drd-WebCore::TextCodecICU::~TextCodecICU
+   drd:ConflictingAccess
+   fun:_ZN7WebCore12TextCodecICUD0Ev
+}
diff --git a/.svn/text-base/darwin9.supp.svn-base b/.svn/text-base/darwin9.supp.svn-base
new file mode 100644 (file)
index 0000000..f7769c7
--- /dev/null
@@ -0,0 +1,297 @@
+
+# Suppressions for Darwin 9.x / Mac OS X 10.5 Leopard
+
+##----------------------------------------------------------------------##
+# Memcheck
+##----------------------------------------------------------------------##
+
+{
+   mach_msg_trap-1
+   Memcheck:Param
+   mach_msg(msg.msgh_remote_port)
+   fun:mach_msg_trap
+   obj:/System/Library/Frameworks/CoreFoundation*
+   obj:/System/Library/Frameworks/ApplicationServices*
+}
+
+{
+   mach_msg_trap-2
+   Memcheck:Param
+   mach_msg(msg.msgh_remote_port)
+   fun:mach_msg_trap
+   obj:/System/Library/Frameworks/CoreFoundation*
+   obj:/System/Library/Frameworks/CoreServices*
+}
+
+{
+   mach_msg_trap-3
+   Memcheck:Param
+   mach_msg(msg.msgh_remote_port)
+   fun:mach_msg_trap
+   obj:/System/Library/Frameworks/CoreFoundation*
+   obj:/System/Library/Frameworks/Carbon*
+}
+
+{
+   mach_msg_trap-4
+   Memcheck:Param
+   mach_msg(msg.msgh_remote_port)
+   fun:mach_msg_trap
+   obj:/System/Library/Frameworks/CoreFoundation*
+   obj:/System/Library/Frameworks/CoreFoundation*
+}
+
+{
+   mach_msg_trap-5
+   Memcheck:Param
+   mach_msg(msg.msgh_remote_port)
+   fun:mach_msg_trap
+   obj:/System/Library/Frameworks/CoreFoundation*
+   obj:/System/Library/Frameworks/AppKit*
+}
+
+{
+   macos-Cond-1
+   Memcheck:Cond
+   fun:GetVariationInfoFromName
+   obj:/System/Library/Frameworks/ApplicationServices*
+   obj:/System/Library/Frameworks/ApplicationServices*
+}
+
+{
+   macos-Cond-2
+   Memcheck:Cond
+   fun:*PMMutex*Lock*
+   obj:/System/Library/Frameworks/ApplicationServices*
+   obj:/System/Library/Frameworks/ApplicationServices*
+}
+
+{
+   macos-Cond-3
+   Memcheck:Cond
+   fun:sseCGSBlendXXXX8888
+   obj:/System/Library/Frameworks/ApplicationServices*
+   obj:/System/Library/Frameworks/ApplicationServices*
+}
+
+{
+   macos-Cond-4
+   Memcheck:Cond
+   fun:*CASettingsStorage*RefreshSettings*
+   obj:/System/Library/Frameworks/CoreAudio*
+   obj:/System/Library/Frameworks/CoreAudio*
+}
+
+{
+   macos-Cond-5
+   Memcheck:Cond
+   fun:gle*
+   obj:/System/Library/Frameworks/OpenGL*
+   obj:/System/Library/Frameworks/OpenGL*
+}
+
+{
+   macos-Cond-6
+   Memcheck:Cond
+   fun:pthread_rwlock_init$UNIX2003
+   fun:main
+}
+
+# afaict this is legit.  Might be caused by setenv("VAR=")
+# where the value string is empty (not sure)
+{
+   macos-Cond-7
+   Memcheck:Cond
+   fun:__setenv
+   fun:putenv*
+}
+
+{
+   macos-futimes-1
+   Memcheck:Param
+   futimes(tvp[1])
+   fun:futimes
+   obj:/usr/lib/libSystem*
+   obj:/usr/lib/libSystem*
+}
+
+{
+   macos-vsyslog-hole
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:sendto$NOCANCEL$UNIX2003
+   fun:vsyslog
+}
+
+# Still-reachable memory.
+
+# I chopped this one off at libSystem_initializer, there were more frames.
+{
+   darwin-still-reachable-1
+   Memcheck:Leak
+   fun:calloc
+   fun:dwarf2_unwind_dyld_add_image_hook
+   fun:_ZN4dyld19registerAddCallbackEPFvPK11mach_headerlE
+   fun:_dyld_register_func_for_add_image
+   fun:__keymgr_initializer
+   fun:libSystem_initializer
+}
+
+# I chopped this one off at libSystem_initializer, there were more frames.
+{
+   darwin-still-reachable-2
+   Memcheck:Leak
+   fun:malloc
+   fun:get_or_create_key_element
+   fun:_keymgr_get_and_lock_processwide_ptr_2
+   fun:dwarf2_unwind_dyld_add_image_hook
+   fun:_ZN4dyld19registerAddCallbackEPFvPK11mach_headerlE
+   fun:_dyld_register_func_for_add_image
+   fun:__keymgr_initializer
+   fun:libSystem_initializer
+}
+
+{
+   darwin-still-reachable-3
+   Memcheck:Leak
+   fun:malloc
+   fun:__smakebuf
+   fun:__swsetup
+   fun:__sfvwrite
+   fun:puts
+}
+
+# Genuine leaks.
+# See https://bugs.kde.org/show_bug.cgi?id=188572 about this;  it's
+# unavoidable due to BSD setenv() semantics.
+{
+   macos-__setenv-leak-see-our-bug-188572
+   Memcheck:Leak
+   fun:malloc_zone_malloc
+   fun:__setenv
+   fun:setenv$UNIX2003
+}
+{
+   macos-localeconv-leak
+   Memcheck:Leak
+   fun:malloc
+   fun:localeconv_l
+   fun:__vfprintf
+   fun:vsnprintf
+}
+
+{
+   macos-TFontFeatures::TFontFeatures(unsigned long)-uninitialised-stack-val
+   Memcheck:Cond
+   fun:_ZN13TFontFeaturesC2Em
+   fun:_ZNK9TBaseFont12CopyFeaturesEv
+}
+
+# Conditional jump or move depends on uninitialised value(s)
+#    at 0x4E5CD59: _DPSNextEvent (in /System/Library/Frameworks
+#                  /AppKit.framework/Versions/C/AppKit)
+#    by 0x4E5BF87: -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
+#                  (in /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit)
+#    by 0x4E54F9E: -[NSApplication run] (in /System/Library/Frameworks
+#                  /AppKit.framework/Versions/C/AppKit)
+#  Uninitialised value was created by a stack allocation
+#    at 0x4E5C450: _DPSNextEvent (in /System/Library/Frameworks
+#                                    /AppKit.framework/Versions/C/AppKit)
+{
+   macos-_DPSNextEvent-stack-allocated-uninit
+   Memcheck:Cond
+   fun:_DPSNextEvent
+}
+
+
+##----------------------------------------------------------------------##
+# Helgrind
+##----------------------------------------------------------------------##
+
+# These ones were necessary to give no errors on a tiny non-threaded
+# program.  I don't know if they're real problems or false positives (njn).
+
+# keymgr seems to deliberately do some bogus actions, and if they are bogus,
+# it passes the error codes back to the caller.
+{
+   __keymgr_initializer lock failed
+   Helgrind:PthAPIerror
+   fun:pthread_mutex_lock
+   fun:_dyld_register_func_for_*_image
+   fun:__keymgr_initializer
+   fun:libSystem_initializer
+}
+{
+   __keymgr_initializer unlock failed
+   Helgrind:PthAPIerror
+   fun:pthread_mutex_unlock
+   fun:_dyld_register_func_for_*_image
+   fun:__keymgr_initializer
+   fun:libSystem_initializer
+}
+{
+   __keymgr_initializer bogus unlock
+   Helgrind:UnlockBogus
+   fun:pthread_mutex_unlock
+   fun:_dyld_register_func_for_*_image
+   fun:__keymgr_initializer
+   fun:libSystem_initializer
+}
+
+# These ones were necessary to give no errors on a tiny threaded program.
+# I don't know if they're real problems or false positives (njn).
+
+#{
+#   helgrind-darwinlibc-nuke-everything-in-dyld
+#   Helgrind:Race
+#   obj:/usr/lib/dyld
+#}
+
+{
+   helgrind-darwinlibc-nuke-everything-in-libSystem.B.dylib
+   Helgrind:Race
+   obj:/usr/lib/libSystem.B.dylib
+}
+
+# This would be better as "fun:\?\?\?" but string matching doesn't seem to
+# allow escaping meta-chars.
+#
+# This is very bad .. not only will it hide races in any
+# un-identified piece of code, the ??? also matches any 3-char
+# function name.
+{
+   helgrind-darwinlibc-nuke-everything-in-???-(unknown-code)
+   Helgrind:Race
+   fun:???
+}
+
+{
+   helgrind-darwinlibc--mythread_wrapper-*thread*start*
+   Helgrind:Race
+   fun:mythread_wrapper
+   fun:*thread*start*
+}
+
+{
+   helgrind-darwinlibc--pthread_create_WRK-pthread_create
+   Helgrind:Race
+   fun:pthread_create_WRK
+   fun:pthread_create
+}
+
+
+# Thread #9: Bug in libpthread: recursive write lock granted on 
+#            mutex/wrlock which does not support recursion
+#  at 0x18696: pthread_cond_wait* (hg_intercepts.c:655)
+#  by 0x2300B8: pthread_rwlock_wrlock$UNIX2003 (in /usr/lib/libSystem.B.dylib)
+#  by 0x18F41: pthread_rwlock_wrlock* (hg_intercepts.c:1177)
+#
+# no idea what this is about
+#
+{
+   helgrind-darwin9--pthread-rwlock-kludgery
+   Helgrind:Misc
+   fun:pthread_cond_wait*
+   fun:pthread_rwlock_*lock*
+   fun:pthread_rwlock_*lock*
+}
diff --git a/.svn/text-base/exp-ptrcheck.supp.svn-base b/.svn/text-base/exp-ptrcheck.supp.svn-base
new file mode 100644 (file)
index 0000000..fd077d6
--- /dev/null
@@ -0,0 +1,87 @@
+{
+   lib-X11-used-old-pointer-after-realloc-1
+   exp-ptrcheck:Heap
+   fun:strlen
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+{
+   lib-X11-used-old-pointer-after-realloc-2
+   exp-ptrcheck:Heap
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+
+{
+   ld-2.X-invalid-Add32/64-who-knows
+   exp-ptrcheck:Arith
+   obj:/*lib*/ld-2.*so*
+   obj:/*lib*/ld-2.*so*
+}
+
+{
+   ld-2.X possibly applying relocations
+   exp-ptrcheck:SorG
+   obj:/*lib*/ld-2.*so*
+   obj:/*lib*/ld-2.*so*
+}
+
+# I'm pretty sure this is a false positive caused by the sg_ stuff
+{
+   glibc realpath false positive
+   exp-ptrcheck:SorG
+   fun:realpath
+   fun:*
+}
+
+{
+   If I had to guess, inlined or nameless strlen etc in ld.so
+   exp-ptrcheck:Heap
+   obj:/*lib*/ld-2.*so*
+   obj:/*lib*/ld-2.*so*
+}
+
+{
+   I think this is glibc's ultra optimised getenv doing 2 byte reads
+   exp-ptrcheck:SorG
+   fun:getenv
+}
+
+{
+   Occurs on Fedora 7--9?
+   exp-ptrcheck:Heap
+   fun:_dl_fini
+   fun:exit
+   fun:(below main)
+}
+
+
+# Invalid read of size 16
+#    at 0x5643A5C: ??? (strcpy.S:94)
+#    by 0x50C6A99: XtResolvePathname (in /usr/lib/libXt.so.6.0.0)
+#    by 0x50C3856: XtScreenDatabase (in /usr/lib/libXt.so.6.0.0)
+#    by 0x50C4386: _XtDisplayInitialize (in /usr/lib/libXt.so.6.0.0)
+{
+   Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept
+   exp-ptrcheck:Heap
+   obj:/*lib*/libc-2.*so*
+   obj:/*lib*/libX*so*
+}
+{
+   Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept - 2
+   exp-ptrcheck:Heap
+   obj:/*lib*/libc-2.*so*
+   obj:/*lib*/libICE*so*
+}
+{
+   Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept - 3
+   exp-ptrcheck:Heap
+   obj:/*lib*/libc-2.*so*
+   obj:/*lib*/libglib*so*
+}
+{
+   Ubuntu 10.04 x86_64, SSEised strcpy, can't intercept - 4
+   exp-ptrcheck:Heap
+   obj:/*lib*/libc-2.*so*
+   obj:/*lib*/libfontconfig*so*
+}
diff --git a/.svn/text-base/glibc-2.2-LinuxThreads-helgrind.supp.svn-base b/.svn/text-base/glibc-2.2-LinuxThreads-helgrind.supp.svn-base
new file mode 100644 (file)
index 0000000..20a2fd6
--- /dev/null
@@ -0,0 +1,64 @@
+
+## Helgrind really doesn't support LinuxThreads-based threading
+## (which is absolutely ancient by now).  But just in case anyone
+## is nuts enough to try it, here are some suppressions.
+
+{
+   helgrind-glibc22-LinuxThreads-1
+   Helgrind:Race
+   obj:/lib*/libpthread-0.10.so*
+}
+{
+   helgrind-glibc22-LinuxThreads-2
+   Helgrind:Race
+   obj:/lib*/ld-2.2.*so*
+   obj:/lib*/ld-2.2.*so*
+}
+{
+   helgrind-glibc22-LinuxThreads-3
+   Helgrind:Race
+   obj:/lib*/libc-2.2.*so*
+   obj:/lib*/libc-2.2.*so*
+}
+{
+   helgrind-glibc22-LinuxThreads-4
+   Helgrind:Race
+   obj:/lib*/ld-2.2.*so*
+   obj:/lib*/libc-2.2.*so*
+}
+{
+   helgrind-glibc22-LinuxThreads-5
+   Helgrind:Race
+   obj:/lib*/libc-2.2.*so*
+   fun:pthread_*
+}
+{
+   helgrind-glibc22-LinuxThreads-6
+   Helgrind:Race
+   fun:pthread_*
+   obj:/lib*/libc-2.2.*so*
+}
+{
+   helgrind-glibc22-LinuxThreads-7
+   Helgrind:Race
+   fun:mythread_wrapper
+   fun:pthread_*
+}
+{
+   helgrind-glibc22-LinuxThreads-8
+   Helgrind:Misc
+   fun:pthread_mutex_lock
+   fun:_IO_*
+}
+{
+   helgrind-glibc22-LinuxThreads-9
+   Helgrind:UnlockForeign
+   fun:pthread_mutex_unlock
+   fun:_IO_*
+}
+{
+   helgrind-glibc22-LinuxThreads-10
+   Helgrind:Misc
+   fun:_Exit
+   obj:/lib*/libpthread-0.10.so*
+}
diff --git a/.svn/text-base/glibc-2.2.supp.svn-base b/.svn/text-base/glibc-2.2.supp.svn-base
new file mode 100644 (file)
index 0000000..bad1b8e
--- /dev/null
@@ -0,0 +1,520 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc 2.2.4 / 2.2.5
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+#-------- For SuSE 8.2 (gcc 3.3, glibc 2.3.2)
+{
+   __GI___stpcpy/*
+   Memcheck:Cond
+   fun:__GI___stpcpy
+   fun:*
+}
+{
+   strlen/__GI__dl_open/dlopen_doit
+   Memcheck:Cond
+   fun:strlen
+   fun:__GI__dl_open
+   fun:dlopen_doit
+}
+{
+   strlen/_dl_signal_cerror/_dl_lookup_symbol_internal/do_dlsym
+   Memcheck:Cond
+   fun:_dl_signal_cerror
+   fun:_dl_lookup_symbol_internal
+   fun:do_dlsym
+}
+
+
+#-------- For R H 8.0
+{
+   elf_dynamic_do_rel.7/_dl_relocate_object_internal/dl_open_worker(Cond)
+   Memcheck:Cond
+   fun:elf_dynamic_do_rel.7
+   fun:_dl_relocate_object_internal
+   fun:dl_open_worker
+}
+
+
+#-------- For R H 7.3 on i686
+{
+   _dl_relocate_object*/*libc-2.2.?.so/_dl_catch_error*(Cond)
+   Memcheck:Cond
+   fun:_dl_relocate_object*
+   obj:*libc-2.2.?.so
+   fun:_dl_catch_error*
+}
+{
+   _dl_relocate_object_internal
+   Memcheck:Cond
+   fun:_dl_relocate_object_internal
+}
+{
+   index/*-2.2.5.so/*-2.2.5.so
+   Memcheck:Cond
+   fun:index
+   obj:*-2.2.5.so
+   obj:*-2.2.5.so
+}
+{
+   Red Hat 7.3 #4
+   Memcheck:Cond
+   fun:strlen
+   fun:dl_main
+   fun:_dl_sysdep_start
+}
+
+#-------- SuSE 8.1 stuff (gcc-3.2, glibc-2.2.5 + SuSE's hacks)
+{
+   __stpcpy/*
+   Memcheck:Cond
+   fun:__stpcpy
+   fun:*
+}
+{
+   strlen/decompose_rpath/_dl_map_object
+   Memcheck:Cond
+   fun:strlen
+   fun:decompose_rpath
+   fun:_dl_map_object
+}
+{
+   strlen/_dl_sym/dlsym_doit
+   Memcheck:Cond
+   fun:strlen
+   fun:_dl_sym
+   fun:dlsym_doit
+}
+{
+   trecurse/__gconv_release_shlib(Addr4)
+   Memcheck:Addr4
+   fun:trecurse
+   fun:__gconv_release_shlib
+}
+{
+   do_release_shlib/trecurse(Addr4)
+   Memcheck:Addr4
+   fun:do_release_shlib
+   fun:trecurse
+}
+
+#-------- R H Limbo (glibc-2.2.90) stuff
+{
+   elf_dynamic_do_rela.8/_dl_relocate_object_internal
+   Memcheck:Cond
+   fun:elf_dynamic_do_rela.8
+   fun:_dl_relocate_object_internal
+}
+
+{
+   __strnlen/_nl_make_l10nflist(Cond)
+   Memcheck:Cond
+   fun:__strnlen
+   fun:_nl_make_l10nflist
+}
+
+{
+   __strnlen/*vfprintf*
+   Memcheck:Cond
+   fun:__strnlen
+   fun:*vfprintf*
+}
+
+{
+   libXaw.so.7.0(Cond)
+   Memcheck:Cond
+   obj:*libXaw.so.7.0
+}
+
+#-------- Suppress errors appearing as a result of calling
+#-------- __libc_freeres()
+
+{
+   __twalk/*(Addr4)
+   Memcheck:Addr4
+   fun:__twalk
+}
+
+{
+   do_release_shlib/__twalk(Addr4)
+   Memcheck:Addr4
+   fun:do_release_shlib
+   fun:__twalk
+}
+
+{
+   __libc_freeres/free_mem/free(Free)
+   Memcheck:Free
+   fun:free
+   fun:free_mem
+   fun:__libc_freeres
+}
+
+# even more glibc suppressions ?
+{
+   libc-2.2.4.so/libc-2.2.4.so/libc-2.2.4.so(Cond)
+   Memcheck:Cond
+   obj:*libc-2.2.?.so
+   obj:*libc-2.2.?.so
+   obj:*libc-2.2.?.so
+}
+{
+   libc-2.2.4.so/libc-2.2.4.so/libc-2.2.4.so(Value4)
+   Memcheck:Value4
+   obj:*libc-2.2.?.so
+   obj:*libc-2.2.?.so
+   obj:*libc-2.2.?.so
+}
+
+##### glibc 2.2.5 stuff perhaps?
+##### suppressions for coolo
+{
+   strchr/dl_open_worker(Cond)
+   Memcheck:Cond
+   fun:strchr
+   fun:dl_open_worker
+}
+{ 
+   __rawmemchr(Cond)
+   Memcheck:Cond 
+   fun:__rawmemchr
+} 
+{ 
+   _IO_vfprintf/__strnlen(Cond)
+   Memcheck:Cond 
+   fun:__strnlen
+   fun:_IO_vfprintf
+} 
+{ 
+   __strchrnul/gethostbyname*(Cond)
+   Memcheck:Cond 
+   fun:__strchrnul
+   fun:gethostbyname*
+} 
+
+
+##----
+{
+   strlen/*dl_map_object*(Cond)
+   Memcheck:Cond
+   fun:strlen
+   fun:*dl_map_object*
+}
+
+{
+   strlen/*dl_open_worker*(Cond)
+   Memcheck:Cond
+   fun:strlen
+   fun:*dl_open_worker*
+}
+
+{
+   *rawmemchr*/*nss*(Cond)
+   Memcheck:Cond
+   fun:*rawmemchr*
+   fun:*nss*
+}
+
+{
+   *strchrnul*/*nss*(Cond)
+   Memcheck: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)
+   Memcheck:Addr4
+   fun:__mpn_construct_double
+   fun:*
+}
+{
+   __mpn_construct_double/*(Addr8)
+   Memcheck:Addr8
+   fun:__mpn_construct_double
+   fun:*
+}
+
+# More of the same (gcc bug, I'm pretty sure)
+{
+   __fabs/*(Addr4)
+   Memcheck:Addr4
+   fun:__fabs
+   fun:*
+}
+{
+   __fabs/*(Addr8)
+   Memcheck:Addr8
+   fun:__fabs
+   fun:*
+}
+
+
+# Not sure what this is about ... but anyway
+{
+   pthread_sighandler/*(Addr4)
+   Memcheck:Addr4
+   fun:pthread_sighandler
+   fun:*
+}
+
+
+# More glibc stuff, AFAICS
+
+{
+   __strnlen/__argz_stringify/_nl_make_l10nflist(Cond)
+   Memcheck:Cond
+   fun:__strnlen
+   fun:__argz_stringify
+   fun:_nl_make_l10nflist
+}
+
+#--------------
+{
+   _dl_relocate_object*/dl_open_worker/_dl_catch_error*(Cond)
+   Memcheck: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)
+   Memcheck:Cond
+   fun:_dl_relocate_object
+   obj:*libc-2.2.?.so
+   fun:_dl_catch_error
+}
+{
+   _dl_relocate_object/dl_main(Cond)
+   Memcheck:Cond
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+{
+   _dl_relocate_object_internal/dl_main(Cond)
+   Memcheck:Cond
+   fun:_dl_relocate_object_internal
+   fun:dl_main
+}
+
+{
+   strrchr/_dl_map_object_from_fd/_dl_map_object(Cond)
+   Memcheck:Cond
+   fun:strrchr
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   _dl_start/ld-2.2.4.so(Cond)
+   Memcheck:Cond
+   fun:_dl_start
+   obj:/lib/ld-2.2.4.so
+}
+
+#-------- glibc 2.2.5/ Debian 3.0
+{
+   _dl_start(Cond)
+   Memcheck:Cond
+   fun:_dl_start
+}
+
+{
+   _dl_start(Cond)
+   Memcheck:Cond
+   fun:_dl_relocate_object
+}
+
+#-------------------
+{
+   socketcall.connect(serv_addr)/connect/*
+   Memcheck:Param
+   socketcall.connect(serv_addr)
+   fun:connect
+   fun:*
+}
+{
+   socketcall.connect(serv_addr)/libc-2.2.4.so/libc-2.2.4.so
+   Memcheck:Param
+   socketcall.connect(serv_addr)
+   obj:*libc-2.2.?.so
+   obj:*libc-2.2.?.so
+}
+
+#----------------------
+{
+   write(buf)/write/libX11.so.6.2/libX11.so.6.2(Param)
+   Memcheck:Param
+   write(buf)
+   fun: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)
+   Memcheck:Param
+   write(buf)
+   obj:*libc-2.2.?.so
+   obj:/usr/X11R6/lib/libX11.so.6.2
+   obj:/usr/X11R6/lib/libX11.so.6.2
+}
+
+#{
+#   llseek(result)/lseek64/_IO_file_seek(Param)
+#   Param
+#   llseek(result)
+#   fun:lseek64
+#   fun:_IO_file_seek
+#}
+
+{
+   writev(vector[...])/__writev/libX11.so.6.2/libX11.so.6.2
+   Memcheck: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
+   Memcheck: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
+   Memcheck:Cond
+   obj:*libc-2.2.?.so
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+## Bug in PRE(sys_clone), really.  Some args are not used.
+{
+   LinuxThread clone use (child_tidptr)
+   Memcheck:Param
+   clone(child_tidptr)
+   fun:clone
+   fun:__pthread_initialize_manager
+   fun:pthread_create@@GLIBC_2.2.5
+}
+
+## LinuxThreads manager writes messages containing undefined bytes
+{
+   LinuxThreads: write/pthread_create
+   Memcheck:Param
+   write(buf)
+   fun:pthread_create@@GLIBC_2.1
+}
+{
+   LinuxThreads: write/pthread_create
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pthread_create@@GLIBC_2.1
+}
+{
+   LinuxThreads: write/pthread_onexit_process
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pthread_onexit_process
+   fun:exit
+}
+{
+   LinuxThreads: write/pthread_join
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pthread_join
+}
+{
+   LinuxThreads: write/pthread_create
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pthread_create@@GLIBC_2.2.5
+}
+{
+   LinuxThreads: write/__pthread_initialize_manager/pthread_create
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:__pthread_initialize_manager
+   fun:pthread_create@@GLIBC_2.2.5
+}
+
+## LinuxThreads leaks the stack and TLS data for the manager thread
+{
+   LinuxThreads: leaks stack of manager thread
+   Memcheck:Leak
+   fun:malloc
+   fun:__pthread_initialize_manager
+   fun:pthread_create@@GLIBC_2.1
+}
+{
+   LinuxThreads: leaks TLS data for manager thread
+   Memcheck:Leak
+   fun:calloc
+   fun:_dl_allocate_tls
+   fun:__pthread_initialize_minimal
+}
+{
+   LinuxThreads: leaks TLS data for manager thread
+   Memcheck:Leak
+   fun:memalign
+   fun:_dl_allocate_tls
+   fun:__pthread_initialize_minimal
+}
+{
+   LinuxThreads: leaks stack of manager thread
+   Memcheck:Leak
+   fun:malloc
+   fun:__pthread_initialize_manager
+   fun:pthread_create@@GLIBC_2.2.5
+}
+{
+   LinuxThreads: leaks TLS data for manager thread
+   Memcheck:Leak
+   fun:calloc
+   fun:allocate_dtv
+   fun:_dl_allocate_tls_storage
+   fun:_dl_allocate_tls
+   fun:__pthread_initialize_minimal
+}
+{
+   LinuxThreads: leaks TLS data for manager thread
+   Memcheck:Leak
+   fun:memalign
+   fun:_dl_allocate_tls_storage
+   fun:_dl_allocate_tls
+   fun:__pthread_initialize_minimal
+}
diff --git a/.svn/text-base/glibc-2.3.supp.svn-base b/.svn/text-base/glibc-2.3.supp.svn-base
new file mode 100644 (file)
index 0000000..9ca9300
--- /dev/null
@@ -0,0 +1,563 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc 2.3.x
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+{
+   __GI___stpcpy/*
+   Memcheck:Cond
+   fun:__GI___stpcpy
+   fun:*
+}
+{
+   strlen/__GI__dl_open/dlopen_doit
+   Memcheck:Cond
+   fun:strlen
+   fun:__GI__dl_open
+   fun:dlopen_doit
+}
+{
+   strlen/_dl_signal_cerror/_dl_lookup_symbol_internal/do_dlsym
+   Memcheck:Cond
+   fun:_dl_signal_cerror
+   fun:_dl_lookup_symbol_internal
+   fun:do_dlsym
+}
+{
+   strlen/*dl_map_object*(Cond)
+   Memcheck:Cond
+   fun:strlen
+   fun:*dl_map_object*
+}
+
+{
+   strlen/*dl_open_worker*(Cond)
+   Memcheck:Cond
+   fun:strlen
+   fun:*dl_open_worker*
+}
+{
+   strlen/_dl_sym/dlsym_doit
+   Memcheck:Cond
+   fun:strlen
+   fun:_dl_sym
+   fun:dlsym_doit
+}
+{
+   realpath is inefficiently coded
+   Memcheck:Overlap
+   fun:memcpy
+   fun:realpath*
+}
+
+{
+   realpath stupidity part II
+   Memcheck:Overlap
+   fun:strcpy
+   fun:realpath*
+}
+{
+   strlen/decompose_rpath/_dl_map_object
+   Memcheck:Cond
+   fun:strlen
+   fun:decompose_rpath
+   fun:*dl_map_object*
+}
+{
+   stpcpy/_dl_sym*
+   Memcheck:Cond
+   fun:__stpcpy
+   fun:_dl_*
+}
+
+#-------- For R H 8.0
+{
+   elf_dynamic_do_rel.7/_dl_relocate_object_internal/dl_open_worker(Cond)
+   Memcheck:Cond
+   fun:elf_dynamic_do_rel.7
+   fun:_dl_relocate_object_internal
+   fun:dl_open_worker
+}
+{
+   dl_relocate/dl_open_worker
+   Memcheck:Cond
+   fun:_dl_relocate_object_internal
+   fun:dl_open_worker
+}
+{
+   RedHat8-1
+   Memcheck:Cond
+   fun:elf_dynamic_do_rela.8
+   fun:_dl_relocate_object
+   fun:dl_main
+   fun:_dl_sysdep_start
+}
+{
+   RedHat8-2
+   Memcheck:Cond
+   fun:elf_dynamic_do_rel.7
+   fun:_dl_relocate_object
+   fun:dl_main
+   fun:_dl_sysdep_start
+}
+{
+   RedHat8-3
+   Memcheck:Cond
+   fun:elf_dynamic_do_rela.8
+   fun:_dl_relocate_object
+   fun:dl_open_worker
+}
+
+#-------- glibc 2.3.2/ Fedora Core 1
+{
+   dl_relocate/dl_main
+   Memcheck:Cond
+   fun:_dl_relocate_object_internal
+   fun:dl_main
+}
+
+#-------- glibc 2.3.3/ Fedora Core 2
+{
+   dl_relocate_object/dl_main
+   Memcheck:Cond
+   fun:_dl_relocate_object
+   fun:dl_main
+}
+{
+   _dl_relocate_object/dl_open_worker
+   Memcheck:Cond
+   fun:_dl_relocate_object
+   fun:dl_open_worker
+}
+
+#-------- glibc 2.3.4/ Fedora Core 3
+{
+   dl_relocate_object
+   Memcheck:Cond
+   fun:_dl_relocate_object
+}
+
+##----------------------------------------------------------------------##
+## Bugs in helper library supplied with Intel Icc 7.0 (65)
+## in /opt/intel/compiler70/ia32/lib/libcxa.so.3
+{
+   Intel compiler70/ia32/lib/libcxa.so.3 below-esp accesses
+   Memcheck:Addr4
+   obj:/opt/intel/compiler70/ia32/lib/libcxa.so.3
+}
+
+##----------------------------------------------------------------------##
+## SuSE 9 after FV changes (post 2.1.0)
+
+{
+   strlen/_dl_init_paths/dl_main/_dl_sysdep_start(Cond)
+   Memcheck:Cond
+   fun:strlen
+   fun:_dl_init_paths
+   fun:dl_main
+   fun:_dl_sysdep_start
+}
+
+{
+   Ugly strchr error in /lib/ld-2.3.2.so
+   Memcheck:Cond
+   obj:/lib/ld-2.3.2.so
+}
+
+##----------------------------------------------------------------------##
+## SuSE 9.1 with post 2.1.2
+{
+   Ugly strchr error in /lib/ld-2.3.3.so
+   Memcheck:Cond
+   obj:/lib/ld-2.3.3.so
+}
+
+##----------------------------------------------------------------------##
+## SuSE 9.1 with 3.0 branch (x86)
+{
+   Strstr dubiousness in pthread_initialize
+   Memcheck:Cond
+   fun:strstr
+   fun:pthread_initialize
+   obj:/lib/libpthread.so.0
+   obj:/lib/libpthread.so.0
+}
+
+##----------------------------------------------------------------------##
+## glibc-2.3.3 on FC2
+## Assumes that sysctl returns \0-terminated strings in is_smp_system
+#{
+#   Unterminated strstr string in is_smp_system() (NPTL)
+#   Memcheck:Cond
+#   fun:strstr
+#   fun:__pthread_initialize_minimal
+#   obj:/lib/tls/libpthread*.so*
+#   obj:/lib/tls/libpthread*.so*
+#}
+#{
+#   Unterminated strstr string in is_smp_system() (LinuxThreads)
+#   Memcheck:Cond
+#   fun:strstr
+#   fun:pthread_initialize
+#   obj:/lib/i686/libpthread*.so*
+#   obj:/lib/i686/libpthread*.so*
+#}
+#{
+#   Unterminated strstr string in is_smp_system() (LinuxThreads)
+#   Memcheck:Cond
+#   fun:strstr
+#   fun:pthread_initialize
+#   obj:/lib/libpthread-0.10.so
+#   obj:/lib/libpthread-0.10.so
+#}
+
+## Bug in PRE(sys_clone), really.  Some args are not used.
+{
+   LinuxThread clone use (parent_tidptr)
+   Memcheck:Param
+   clone(parent_tidptr)
+   fun:clone
+   fun:pthread_create
+}
+{
+   LinuxThread clone use (child_tidptr)
+   Memcheck:Param
+   clone(child_tidptr)
+   fun:clone
+   fun:pthread_create
+}
+{
+   LinuxThread clone use (tlsinfo)
+   Memcheck:Param
+   clone(tlsinfo)
+   fun:clone
+   fun:pthread_create
+}
+{
+   LinuxThread clone use (parent_tidptr)
+   Memcheck:Param
+   clone(parent_tidptr)
+   fun:clone
+   fun:pthread_create@@GLIBC_2.1
+}
+{
+   LinuxThread clone use (child_tidptr)
+   Memcheck:Param
+   clone(child_tidptr)
+   fun:clone
+   fun:pthread_create@@GLIBC_2.1
+}
+{
+   LinuxThread clone use (tlsinfo)
+   Memcheck:Param
+   clone(tlsinfo)
+   fun:clone
+   fun:pthread_create@@GLIBC_2.1
+}
+
+## LinuxThreads manager writes messages containing undefined bytes
+{
+   LinuxThreads: write/pthread_onexit_process
+   Memcheck:Param
+   write(buf)
+   fun:pthread_onexit_process
+   fun:exit
+}
+{
+   LinuxThreads: write/pthread_join
+   Memcheck:Param
+   write(buf)
+   fun:pthread_join
+}
+{
+   LinuxThreads: write/pthread_create
+   Memcheck:Param
+   write(buf)
+   fun:pthread_create@@GLIBC_2.1
+}
+{
+   LinuxThreads: write/pthread_create 2
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pthread_create@@GLIBC_2.1
+   fun:main
+}
+{
+   LinuxThreads: write/__pthread_initialize_manager/pthread_create
+   Memcheck:Param
+   write(buf)
+   fun:__pthread_initialize_manager
+   fun:pthread_create@@GLIBC_2.1
+}
+
+{
+   LinuxThreads: write/pthread_create
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:pthread_create
+}
+
+## LinuxThreads leaks the stack and TLS data for the manager thread
+{
+   LinuxThreads: leaks stack of manager thread
+   Memcheck:Leak
+   fun:malloc
+   fun:__pthread_initialize_manager
+   fun:pthread_create@@GLIBC_2.1
+}
+{
+   LinuxThreads: leaks TLS data for manager thread
+   Memcheck:Leak
+   fun:calloc
+   fun:_dl_allocate_tls
+   fun:__pthread_initialize_minimal
+}
+{
+   LinuxThreads: leaks TLS data for manager thread
+   Memcheck:Leak
+   fun:memalign
+   fun:_dl_allocate_tls
+   fun:__pthread_initialize_minimal
+}
+
+##----------------------------------------------------------------------##
+## glibc-2.3.4 on FC3
+## Assumes that sysctl returns \0-terminated strings in is_smp_system
+#{
+#   Unterminated strstr string in is_smp_system() (NPTL)
+#   Memcheck:Cond
+#   fun:strstr
+#   fun:__pthread_initialize_minimal
+#   obj:/lib/tls/libpthread-2.3.4.so
+#   obj:/lib/tls/libpthread-2.3.4.so
+#}
+#{
+#   Unterminated strstr string in is_smp_system() (NPTL)
+#   Memcheck:Cond
+#   fun:strstr
+#   fun:__pthread_initialize_minimal
+#   obj:/lib64/tls/libpthread*.so*
+#}
+
+##----------------------------------------------------------------------##
+## glibc-2.3.5 on FC4
+## Assumes that sysctl returns \0-terminated strings in is_smp_system
+#{
+#   Unterminated strstr string in is_smp_system() (NPTL)
+#   Memcheck:Cond
+#   fun:strstr
+#   fun:__pthread_initialize_minimal
+#   obj:*/libpthread-2.3.5.so
+#   obj:*/libpthread-2.3.5.so
+#}
+
+
+##----------------------------------------------------------------------##
+# 
+# I don't know why this is needed, but still:
+{
+   glibc-2.3.x-on-SuSE-10.0-(PPC)-1
+   Memcheck:Cond
+   fun:_dl_start
+   fun:_start
+}
+{
+   glibc-2.3.x-on-SuSE-10.1-(PPC)-1
+   Memcheck:Cond
+   fun:_dl_start_final
+   fun:_dl_start
+   fun:_start
+}
+{
+   glibc-2.3.x-on-SuSE-10.0/10.1-(PPC)-2a
+   Memcheck:Cond
+   fun:index
+   obj:*ld-2.3.*.so
+}
+{
+   glibc-2.3.x-on-SuSE-10.0/10.1-(PPC)-2b
+   Memcheck:Addr4
+   fun:index
+   fun:expand_dynamic_string_token
+}
+{
+   glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-2c
+   Memcheck:Addr4
+   fun:index
+   obj:*ld-2.3.*.so
+}
+{
+   glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-3
+   Memcheck:Addr4
+   fun:*wordcopy_fwd_dest_aligned*
+   fun:mem*cpy
+   obj:*lib*2.3.*.so
+}
+{
+   glibc-2.3.5-on-SuSE-10.0/10.1-(PPC)-4
+   Memcheck:Addr4
+   fun:bcmp
+   fun:*rpath*
+   fun:*rpath*
+   fun:*rpath*
+}
+
+##----------------------------------------------------------------------##
+# Hacks pertaining to the fact that our intercept mechanism can't
+# always get hold of strlen early enough, due to idiocy in the low
+# level memory manager.
+
+## HACK to do with strlen not being intercepted early enough
+{
+   strlen-not-intercepted-early-enough-HACK-1
+   Memcheck:Addr4
+   fun:strlen
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   strlen-not-intercepted-early-enough-HACK-2
+   Memcheck:Addr4
+   fun:strlen
+   fun:decompose_rpath
+   fun:cache_rpath
+   fun:_dl_map_object
+}
+
+{
+   strlen-not-intercepted-early-enough-HACK-3
+   Memcheck:Cond
+   fun:strlen
+   fun:_dl_new_object
+   fun:_dl_map_object_from_fd
+   fun:_dl_map_object
+}
+
+{
+   strlen-not-intercepted-early-enough-HACK-4
+   Memcheck:Cond
+   fun:strlen
+   fun:expand_dynamic_string_token
+   fun:_dl_map_object
+}
+
+{
+   strlen-not-intercepted-early-enough-HACK-5
+   Memcheck:Cond
+   fun:strlen
+   fun:fillin_rpath
+   fun:_dl_init_paths
+}
+
+
+## HACK to do with index not being intercepted early enough
+{
+   index-not-intercepted-early-enough-HACK-1
+   Memcheck:Cond
+   fun:index
+   obj:*
+   fun:_dl_map_object
+}
+{
+   index-not-intercepted-early-enough-HACK-2
+   Memcheck:Cond
+   fun:index
+   fun:_dl_map_object
+   obj:*
+   fun:_dl_catch_error
+}
+{
+   index-not-intercepted-early-enough-HACK-3
+   Memcheck:Cond
+   fun:index
+   fun:_dl_map_object
+   obj:*
+   fun:_dl_sysdep_start
+}
+
+{
+   index-not-intercepted-early-enough-HACK-4
+   Memcheck:Cond
+   fun:index
+   fun:expand_dynamic_string_token
+}
+
+
+##----------------------------------------------------------------------##
+## MontaVista 3.1 on ppc32 integer only
+{
+   MontaVista-3.1-ppc32-#1
+   Memcheck:Value4
+   obj:/lib/ld-2.3.2.so
+   obj:/lib/ld-2.3.2.so
+   fun:*dl_map_object*
+   obj:/lib/libc-2.3.2.so
+}
+
+{
+   MontaVista-3.1-ppc32-#2
+   Memcheck:Value4
+   fun:malloc
+   obj:/lib/ld-2.3.2.so
+   obj:/lib/ld-2.3.2.so
+   obj:/lib/libc-2.3.2.so
+}
+
+{
+   MontaVista-3.1-ppc32-#3
+   Memcheck:Value4
+   obj:/lib/ld-2.3.2.so
+   obj:/lib/ld-2.3.2.so
+}
+
+##----------------------------------------------------------------------##
+## Ubuntu something (based on Debian 3.0?) on x86
+
+{
+   Ubuntu-stripped-ld.so
+   Memcheck:Cond
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+   obj:/lib/ld-2.3.*.so
+}
+
+##----------------------------------------------------------------------##
+# MontaVista Linux 4.0.1 on ppc32
+{
+    MVL-401-linuxthreads-pthread_create
+    Memcheck:Param
+    write(buf)
+    fun:pthread_create
+}
+{
+   MVL-401-linuxthreads-pthread_create
+   Memcheck:Param
+   write(buf)
+   obj:/lib/libpthread-0.10.so
+   fun:pthread_create
+}
diff --git a/.svn/text-base/glibc-2.34567-NPTL-helgrind.supp.svn-base b/.svn/text-base/glibc-2.34567-NPTL-helgrind.supp.svn-base
new file mode 100644 (file)
index 0000000..2e2abee
--- /dev/null
@@ -0,0 +1,267 @@
+
+# FIXME 22 Jan 09: helgrind-glibc2X-005 overlaps with a lot of
+# other stuff.  They should be removed.
+
+##----------------------------------------------------------------------##
+# Suppressions for the Helgrind tool when using 
+# a glibc-2.{3,4,5,6,7,8,9} system
+
+####################################################
+# glibc-2.X specific
+# These are generic cover-alls which catch a lot of stuff
+# in various combinations of ld, libc and libpthread
+#
+# Note this is heavyhanded and not very clever:
+#
+# - suppress anything that has its top frame in ld.so
+#   That's fine, since it's mostly dynamic linking stuff,
+#   which has various deliberate (harmless) races
+#
+# - suppress anything that has its top frame in libc.so.
+#   This really isn't clever, since it could hide some 
+#   legitimate races.  But the problem is, if we don't do
+#   this, then loads of errors to do with stdio are reported, because
+#   H fails to see glibc's internal locking/unlocking of FILE*s
+#   as required by POSIX.  A better solution is needed.
+
+#{
+#   helgrind-glibc2X-001
+#   Helgrind:Race
+#   obj:/lib*/ld-2.*so*
+#}
+
+# helgrind-glibc2X-002 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-003 was merged into helgrind-glibc2X-001
+
+{
+   helgrind-glibc2X-004
+   Helgrind:Race
+   obj:/lib*/libc-2.*so*
+}
+
+{
+   helgrind-glibc2X-005
+   Helgrind:Race
+   obj:/lib*/libpthread-2.*so*
+}
+
+# helgrind-glibc2X-006 was merged into helgrind-glibc2X-005
+
+# helgrind-glibc2X-007 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-008 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-009 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-010 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-011 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-012 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-013 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-014 was merged into helgrind-glibc2X-001
+
+# helgrind-glibc2X-015 was merged into helgrind-glibc2X-004
+
+# helgrind-glibc2X-016 was merged into helgrind-glibc2X-004
+
+# These are very ugly.  They are needed to suppress errors inside (eg)
+# NPTL's pthread_cond_signal.  Why only one stack frame -- at least we
+# should see the wrapper calling the real functions, right?
+# Unfortunately, no: the real functions are handwritten assembly (in
+# the glibc-2.5 sources) and does not create a proper stack frame.
+# Therefore it's only one level of unwinding before we're back out in
+# user code rather than the 2 levels you'd expect.
+{
+   helgrind-glibc2X-101
+   Helgrind:Race
+   obj:/lib*/libpthread-2.*so*
+   fun:pthread_*
+}
+{
+   helgrind-glibc2X-102
+   Helgrind:Race
+   fun:mythread_wrapper
+   obj:/lib*/libpthread-2.*so*
+}
+{
+   helgrind-glibc2X-103
+   Helgrind:Race
+   fun:pthread_cond_*@@GLIBC_2.*
+}
+{
+   helgrind-glibc2X-104
+   Helgrind:Race
+   fun:__lll_mutex_*
+}
+{
+   helgrind-glibc2X-105
+   Helgrind:Race
+   fun:pthread_rwlock_*lock*
+}
+{
+   helgrind-glibc2X-106
+   Helgrind:Race
+   fun:__lll_lock_wait
+}
+{
+   helgrind-glibc2X-107
+   Helgrind:Race
+   obj:/lib*/libpthread-2.*so*
+   fun:sem_*
+}
+{
+   helgrind-glibc2X-108
+   Helgrind:Race
+   fun:clone
+}
+{
+   helgrind-glibc2X-109
+   Helgrind:Race
+   fun:start_thread
+}
+{
+   helgrind-glibc2X-110
+   Helgrind:Race
+   obj:/lib*/libc-2.*so*
+   fun:pthread_*
+}
+{
+   helgrind-glibc2X-111
+   Helgrind:Race
+   fun:__lll_*lock_*
+}
+{
+   helgrind-glibc2X-113
+   Helgrind:Race
+   fun:pthread_barrier_wait*
+}
+
+
+####################################################
+# qt4 specific (GNU mangling)
+#
+{
+   helgrind-qt4---QMutex::lock()-QMutex::lock()
+   Helgrind:Race
+   ...
+   fun:_ZN6QMutex4lockEv
+   fun:_ZN6QMutex4lockEv
+}
+
+{                                                               
+   helgrind-qt4---QMutex::unlock()-QMutex::unlock()
+   Helgrind:Race                                                
+   ...
+   fun:_ZN6QMutex6unlockEv                                      
+   fun:_ZN6QMutex6unlockEv
+}
+
+{
+   helgrind-qt4---pthread_setspecific-QThreadPrivate::start(void*)
+   Helgrind:Race
+   fun:pthread_setspecific
+   fun:_ZN14QThreadPrivate5startEPv
+}
+
+
+####################################################
+# Other stuff.
+#
+# pthread_exit apparently calls some kind of unwind
+# mechanism - maybe to remove some number of frames
+# from the thread's stack, so as to get back to the 
+# outermost frame for the thread?  Anyway..
+
+{
+   helgrind---*Unwind*-...-pthread_exit
+   Helgrind:Race
+   fun:*Unwind*
+   ...
+   fun:pthread_exit
+}
+
+{
+   helgrind---...-*Unwind*-*pthread_unwind*
+   Helgrind:Race
+   ...
+   fun:*Unwind*
+   fun:*pthread_unwind*
+}
+
+{
+   helgrind---...-*Unwind*-*pthread_unwind*
+   Helgrind:Race
+   ...
+   fun:_Unwind*
+   ...
+   fun:_Unwind_Backtrace
+}
+
+
+
+
+####################################################
+# To do with thread stack allocation and deallocation?
+#
+{
+   helgrind---free_stacks-__deallocate_stack
+   Helgrind:Race
+   fun:free_stacks
+   fun:__deallocate_stack
+}
+
+{
+   helgrind---__deallocate_stack-start_thread-clone
+   Helgrind:Race
+   fun:__deallocate_stack
+   fun:start_thread
+   fun:clone
+}
+
+
+####################################################
+# To do with pthread_{set,get}specific
+#
+{
+   helgrind---pthread_setspecific
+   Helgrind:Race
+   fun:pthread_setspecific
+}
+
+{
+   helgrind---pthread_getspecific
+   Helgrind:Race
+   fun:pthread_getspecific
+}
+
+
+####################################################
+# To do with dynamic linking
+#
+# helgrind---ld.so-...-dlsym was merged into helgrind-glibc2X-001
+
+
+####################################################
+# To do with GNU libgomp
+#
+{
+   helgrind---libgomp43-1
+   Helgrind:Race
+   fun:gomp_ordered_sync
+}
+
+{
+   helgrind---libgomp43-1
+   Helgrind:Race
+   fun:gomp_ordered_next
+}
+
+{
+   helgrind---libgomp43-1
+   Helgrind:Race
+   fun:gomp_ordered_last
+}
diff --git a/.svn/text-base/glibc-2.4.supp.svn-base b/.svn/text-base/glibc-2.4.supp.svn-base
new file mode 100644 (file)
index 0000000..4b372dd
--- /dev/null
@@ -0,0 +1,261 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc 2.4.x
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+##----------------------------------------------------------------------##
+## Suppressions for Fedora Core 5 on ppc32/amd64 (glibc-2.3.90)
+
+{
+   Fedora-Core-5-hack1
+   Memcheck:Cond
+   fun:_dl_start
+   fun:_start
+}
+
+{
+   Fedora-Core-5-hack2
+   Memcheck:Cond
+   obj:/lib*/ld-2.3.90.so
+   obj:/lib*/ld-2.3.90.so
+   obj:/lib*/ld-2.3.90.so
+   obj:/lib*/ld-2.3.90.so
+}
+
+{
+   Fedora-Core-5-hack2a
+   Memcheck:Cond
+   obj:/lib*/ld-2.4*so
+   obj:/lib*/ld-2.4*so
+   obj:/lib*/ld-2.4*so
+   obj:/lib*/ld-2.4*so
+}
+
+{
+   Fedora-Core-5-hack3
+   Memcheck:Cond
+   obj:/lib*/ld-2.3.90.so
+   obj:/lib*/ld-2.3.90.so
+   obj:/lib*/ld-2.3.90.so
+   obj:/lib*/libc-2.3.90.so
+}
+
+{
+   Fedora-Core-5-__strcpy_chk-64bit-hack-TODO-fix-this-properly
+   Memcheck:Addr8
+   fun:__strcpy_chk
+   obj:/usr/lib64/libX11.so.6.2.0
+   obj:/usr/lib64/libX11.so.6.2.0
+}
+
+{
+   Fedora-Core-5-hack3-ld24
+   Memcheck:Cond
+   obj:/lib*/ld-2.4*so*
+   obj:/lib*/ld-2.4*so*
+   obj:/lib*/ld-2.4*so*
+}
+
+{
+   Fedora-Core-5-yet-another-ppc32-hack
+   Memcheck:Addr4
+   fun:_wordcopy_fwd_dest_aligned
+   fun:mempcpy
+   obj:/lib*/libc-2.4*so*
+}
+
+##----------------------------------------------------------------------##
+{
+   glibc-2.3.x-on-SUSE-10.1-(PPC)-1
+   Memcheck:Cond
+   fun:_dl_start_final
+   fun:_dl_start
+   fun:_start
+}
+{
+   glibc-2.3.x-on-SUSE-10.1-(PPC)-2a
+   Memcheck:Cond
+   fun:index
+   obj:*ld-2.3.*.so
+}
+{
+   glibc-2.3.x-on-SuSE-10.1-(PPC)-2b
+   Memcheck:Addr4
+   fun:index
+   fun:expand_dynamic_string_token
+}
+{
+   glibc-2.3.5-on-SuSE-10.1-(PPC)-2c
+   Memcheck:Addr4
+   fun:index
+   obj:*ld-2.3.*.so
+}
+{
+   glibc-2.3.5-on-SuSE-10.1-(PPC)-3
+   Memcheck:Addr4
+   fun:*wordcopy_fwd_dest_aligned*
+   fun:mem*cpy
+   obj:*lib*2.3.*.so
+}
+{
+   index-not-intercepted-early-enough-HACK-4
+   Memcheck:Cond
+   fun:index
+   fun:expand_dynamic_string_token
+}
+
+
+##----------------------------------------------------------------------##
+## Various structure padding things on amd64 SuSE 10.1
+##
+{
+   X11-64bit-padding-1a
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+   fun:X*
+}
+{
+   X11-64bit-padding-1b
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+   fun:_X*
+}
+{
+   X11-64bit-padding-1c
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+}
+{
+   X11-64bit-padding-1d
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/X*/libICE.so*
+   obj:/usr/X*/libICE.so*
+   obj:/usr/X*/libICE.so*
+}
+
+
+{
+   X11-64bit-padding-2a
+   Memcheck:Param
+   writev(vector[...])
+   fun:do_writev
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+}
+{
+   X11-64bit-padding-2b
+   Memcheck:Param
+   writev(vector[...])
+   fun:do_writev
+   fun:writev
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+}
+
+{
+   glibc24-64bit-padding-1a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   fun:get_mapping
+   fun:__nscd_get_map_ref
+   fun:nscd*
+}
+{
+   glibc24-64bit-padding-1b
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:__sendto_nocancel
+   obj:/*libc-2.4.so
+   obj:/*libc-2.4.so
+   obj:/*libc-2.4.so
+}
+{
+   glibc24-64bit-padding-1c
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   fun:__nscd_get_map_ref
+   fun:nscd_get*_r
+   fun:*nscd*
+   obj:/*libc-2.4.so
+}
+
+
+{
+   X11-64bit-padding-3a
+   Memcheck:Param
+   write(buf)
+   obj:/*libpthread-2.4.so*
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+   obj:/usr/X*/libX11.so*
+}
+
+{
+   X11-64bit-padding-4a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   obj:/*libc-2.4.so
+   obj:/*libc-2.4.so
+   obj:/*libc-2.4.so
+}
+{
+   X11-64bit-padding-4b
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   obj:/*libc-2.4.so
+   obj:/*libc-2.4.so
+   obj:/*libc-2.4.so
+}
+
+##----------------------------------------------------------------------##
+# MontaVista Linux 4.0.1 on ppc32
+{
+    MVL-401-linuxthreads-pthread_create
+    Memcheck:Param
+    write(buf)
+    fun:pthread_create
+}
+{
+   MVL-401-linuxthreads-pthread_create
+   Memcheck:Param
+   write(buf)
+   obj:/lib/libpthread-0.10.so
+   fun:pthread_create
+}
diff --git a/.svn/text-base/glibc-2.5.supp.svn-base b/.svn/text-base/glibc-2.5.supp.svn-base
new file mode 100644 (file)
index 0000000..4e71c59
--- /dev/null
@@ -0,0 +1,215 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc 2.4.x
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+{
+   dl-hack1
+   Memcheck:Cond
+   fun:_dl_start
+   fun:_start
+}
+
+{
+   dl-hack2
+   Memcheck:Cond
+   obj:/lib*/ld-2.5*.so
+   obj:/lib*/ld-2.5*.so
+   obj:/lib*/ld-2.5*.so
+   obj:/lib*/ld-2.5*.so
+}
+
+{
+   dl-hack3
+   Memcheck:Cond
+   obj:/lib*/ld-2.5*so*
+   obj:/lib*/ld-2.5*so*
+   obj:/lib*/ld-2.5*so*
+}
+
+##----------------------------------------------------------------------##
+{
+   glibc-2.5.x-on-SUSE-10.2-(PPC)-1
+   Memcheck:Cond
+   fun:_dl_start_final
+   fun:_dl_start
+   fun:_start
+}
+{
+   glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
+   Memcheck:Cond
+   fun:index
+   obj:*ld-2.5.*.so
+}
+{
+   glibc-2.5.x-on-SuSE-10.2-(PPC)-2b
+   Memcheck:Addr4
+   fun:index
+   fun:expand_dynamic_string_token
+}
+{
+   glibc-2.5.5-on-SuSE-10.2-(PPC)-2c
+   Memcheck:Addr4
+   fun:index
+   obj:*ld-2.5.*.so
+}
+{
+   glibc-2.3.5-on-SuSE-10.1-(PPC)-3
+   Memcheck:Addr4
+   fun:*wordcopy_fwd_dest_aligned*
+   fun:mem*cpy
+   obj:*lib*2.5.*.so
+}
+
+##----------------------------------------------------------------------##
+## Various structure padding things on SUSE 10.2
+##
+{
+   X11-64bit-padding-1a
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   fun:X*
+}
+{
+   X11-64bit-padding-1b
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   fun:_X*
+}
+{
+   X11-64bit-padding-1c
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+{
+   X11-64bit-padding-1d
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libICE.so*
+   obj:/usr/lib*/libICE.so*
+   obj:/usr/lib*/libICE.so*
+}
+{
+   X11-64bit-padding-2a
+   Memcheck:Param
+   writev(vector[...])
+   fun:do_writev
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+{
+   X11-64bit-padding-2b
+   Memcheck:Param
+   writev(vector[...])
+   fun:do_writev
+   fun:writev
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+
+{
+   glibc24-64bit-padding-1a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   fun:get_mapping
+   fun:__nscd_get_map_ref
+   fun:nscd*
+}
+{
+   glibc24-64bit-padding-1b
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:__sendto_nocancel
+   obj:/*libc-2.5.so
+   obj:/*libc-2.5.so
+   obj:/*libc-2.5.so
+}
+{
+   glibc24-64bit-padding-1c
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   fun:__nscd_get_map_ref
+   fun:nscd_get*_r
+   fun:*nscd*
+   obj:/*libc-2.5.so
+}
+
+
+{
+   X11-64bit-padding-3a
+   Memcheck:Param
+   write(buf)
+   obj:/*libpthread-2.4.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+
+{
+   X11-64bit-padding-4a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   obj:/*libc-2.5.so
+   obj:/*libc-2.5.so
+   obj:/*libc-2.5.so
+}
+{
+   X11-64bit-padding-4b
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   obj:/*libc-2.5.so
+   obj:/*libc-2.5.so
+   obj:/*libc-2.5.so
+}
+
+##----------------------------------------------------------------------##
+# MontaVista Linux 4.0.1 on ppc32
+{
+    MVL-401-linuxthreads-pthread_create
+    Memcheck:Param
+    write(buf)
+    fun:pthread_create
+}
+{
+   MVL-401-linuxthreads-pthread_create
+   Memcheck:Param
+   write(buf)
+   obj:/lib/libpthread-0.10.so
+   fun:pthread_create
+}
diff --git a/.svn/text-base/glibc-2.6.supp.svn-base b/.svn/text-base/glibc-2.6.supp.svn-base
new file mode 100644 (file)
index 0000000..57df2fb
--- /dev/null
@@ -0,0 +1,264 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc 2.6.x
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+{
+   dl-hack1
+   Memcheck:Cond
+   fun:_dl_start
+   fun:_start
+}
+
+{
+   dl-hack2
+   Memcheck:Cond
+   obj:/lib*/ld-2.6*.so
+   obj:/lib*/ld-2.6*.so
+   obj:/lib*/ld-2.6*.so
+   obj:/lib*/ld-2.6*.so
+}
+
+{
+   dl-hack3-1
+   Memcheck:Cond
+   obj:/lib*/ld-2.6*.so*
+   obj:/lib*/ld-2.6*.so*
+   obj:/lib*/ld-2.6*.so*
+}
+{
+   dl-hack3-2
+   Memcheck:Cond
+   obj:/lib*/ld-2.6*.so*
+   obj:/lib*/ld-2.6*.so*
+   obj:/lib*/libc-2.6*.so*
+}
+
+{
+   dl-hack4-64bit-1
+   Memcheck:Addr8
+   obj:/lib64/ld-2.6*.so*
+   obj:/lib64/ld-2.6*.so*
+   obj:/lib64/ld-2.6*.so*
+}
+{
+   dl-hack4-64bit-2
+   Memcheck:Addr8
+   obj:/lib64/ld-2.6*.so*
+   obj:/lib64/ld-2.6*.so*
+   obj:/lib64/libc-2.6*.so*
+}
+{
+   dl-hack4-64bit-3
+   Memcheck:Addr8
+   obj:/lib64/ld-2.6*.so*
+   obj:/lib64/ld-2.6*.so*
+   obj:/lib64/libdl-2.6*.so*
+}
+
+
+
+##----------------------------------------------------------------------##
+{
+   glibc-2.5.x-on-SUSE-10.2-(PPC)-1
+   Memcheck:Cond
+   fun:_dl_start_final
+   fun:_dl_start
+   fun:_start
+}
+{
+   glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
+   Memcheck:Cond
+   fun:index
+   obj:*ld-2.6.*.so
+}
+{
+   glibc-2.5.x-on-SuSE-10.2-(PPC)-2b
+   Memcheck:Addr4
+   fun:index
+   fun:expand_dynamic_string_token
+}
+{
+   glibc-2.5.5-on-SuSE-10.2-(PPC)-2c
+   Memcheck:Addr4
+   fun:index
+   obj:*ld-2.6.*.so
+}
+{
+   glibc-2.3.5-on-SuSE-10.1-(PPC)-3
+   Memcheck:Addr4
+   fun:*wordcopy_fwd_dest_aligned*
+   fun:mem*cpy
+   obj:*lib*2.6.*.so
+}
+
+{
+   glibc-2.6-on-SUSE-10.3-(x86)
+   Memcheck:Addr4
+   obj:/lib/ld-2.6*.so
+   obj:/lib/ld-2.6*.so
+   obj:/lib/ld-2.6*.so
+}
+
+##----------------------------------------------------------------------##
+## Various structure padding things on SUSE 10.2
+##
+{
+   X11-64bit-padding-1a
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   fun:X*
+}
+{
+   X11-64bit-padding-1b
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   fun:_X*
+}
+{
+   X11-64bit-padding-1c
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+{
+   X11-64bit-padding-1d
+   Memcheck:Param
+   write(buf)
+   fun:__write_nocancel
+   obj:/usr/lib*/libICE.so*
+   obj:/usr/lib*/libICE.so*
+   obj:/usr/lib*/libICE.so*
+}
+{
+   X11-64bit-padding-2a
+   Memcheck:Param
+   writev(vector[...])
+   fun:do_writev
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+{
+   X11-64bit-padding-2b
+   Memcheck:Param
+   writev(vector[...])
+   fun:do_writev
+   fun:writev
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+
+{
+   glibc24-64bit-padding-1a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   fun:get_mapping
+   fun:__nscd_get_map_ref
+   fun:nscd*
+}
+{
+   glibc24-64bit-padding-1b
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:__sendto_nocancel
+   obj:/*libc-2.6.so
+   obj:/*libc-2.6.so
+   obj:/*libc-2.6.so
+}
+{
+   glibc24-64bit-padding-1c
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   fun:__nscd_get_map_ref
+   fun:nscd_get*_r
+   fun:*nscd*
+   obj:/*libc-2.6.so
+}
+
+
+{
+   X11-64bit-padding-3a
+   Memcheck:Param
+   write(buf)
+   obj:/*libpthread-2.4.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+
+{
+   X11-64bit-padding-4a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   obj:/*libc-2.6.so
+   obj:/*libc-2.6.so
+   obj:/*libc-2.6.so
+}
+{
+   X11-64bit-padding-4b
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   obj:/*libc-2.6.so
+   obj:/*libc-2.6.so
+   obj:/*libc-2.6.so
+}
+
+##----------------------------------------------------------------------##
+# MontaVista Linux 4.0.1 on ppc32
+{
+    MVL-401-linuxthreads-pthread_create
+    Memcheck:Param
+    write(buf)
+    fun:pthread_create
+}
+{
+   MVL-401-linuxthreads-pthread_create
+   Memcheck:Param
+   write(buf)
+   obj:/lib/libpthread-0.10.so
+   fun:pthread_create
+}
+
+##----------------------------------------------------------------------##
+# ppc32 running openSUSE 10.3
+{
+   X11-libXaw8-libXaw8-libXaw8
+   Memcheck:Cond
+   obj:/usr/lib*/libXaw8.so*
+   obj:/usr/lib*/libXaw8.so*
+   obj:/usr/lib*/libXaw8.so*
+}
diff --git a/.svn/text-base/glibc-2.7.supp.svn-base b/.svn/text-base/glibc-2.7.supp.svn-base
new file mode 100644 (file)
index 0000000..1079dcf
--- /dev/null
@@ -0,0 +1,30 @@
+
+# Errors to suppress by default with glibc 2.7.x
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+{
+   dl-hack3-1
+   Memcheck:Cond
+   obj:/lib*/ld-2.7*.so*
+   obj:/lib*/ld-2.7*.so*
+   obj:/lib*/ld-2.7*.so*
+}
diff --git a/.svn/text-base/glibc-2.X-drd.supp.svn-base b/.svn/text-base/glibc-2.X-drd.supp.svn-base
new file mode 100644 (file)
index 0000000..441e7a8
--- /dev/null
@@ -0,0 +1,300 @@
+#
+# Suppression patterns for ld, the dynamic loader.
+#
+
+# Suppress all data races triggered by ld.
+{
+   drd-ld
+   drd:ConflictingAccess
+   obj:/lib*/ld-*.so
+}
+
+#
+# Suppression patterns for libc.
+#
+
+# Suppress all data races where the topmost frame is inside libc.so. Although
+# this could hide some real data races, unfortunately this is the only way to
+# not report any false positives on stdio functions. The glibc functions
+# manipulating FILE objects use locking primitives that cannot be intercepted
+# easily. See also the definitions of _IO_lock_lock() etc. in the file
+# nptl/sysdeps/pthread/bits/stdio-lock.h in the glibc source tree.
+{
+   drd-libc-stdio
+   drd:ConflictingAccess
+   obj:/lib*/libc-*
+}
+
+#
+# Suppression patterns for libstdc++, the implementation of the standard C++
+# library included with the gcc compiler.
+#
+# Note: several versions of the libstdc++ library (4.2.2, 4.3.2, 4.4.0, 4.5.0
+# and their predecessors) contain an implementation of the std::string class
+# that triggers conflicting memory accesses. See also
+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40518
+#
+
+# {
+#    drd-libstdc++-std::string::string()
+#    drd:ConflictingAccess
+#    fun:_ZNSsC1ERKSs
+# }
+
+{
+   drd-libstdc++-cxa_guard_release
+   drd:CondErr
+   fun:pthread_cond_broadcast@*
+   fun:__cxa_guard_release
+}
+
+
+#
+# Suppression patterns for libpthread.
+#
+
+{
+   drd-libpthread-pthread_create
+   drd:ConflictingAccess
+   ...
+   fun:pthread_create*
+}
+{
+   drd-libpthread-pthread_join
+   drd:ConflictingAccess
+   fun:pthread_join
+   fun:pthread_join
+}
+{
+   drd-libpthread-__deallocate_stack
+   drd:ConflictingAccess
+   ...
+   fun:__deallocate_stack
+}
+{
+   drd-libpthread-__free_stacks
+   drd:ConflictingAccess
+   fun:__free_stacks
+}
+{
+   drd-libpthread-__free_tcb
+   drd:ConflictingAccess
+   ...
+   fun:__free_tcb
+}
+{
+   drd-libpthread-__nptl_deallocate_tsd
+   drd:ConflictingAccess
+   fun:__nptl_deallocate_tsd
+}
+{
+   drd-libpthread-pthread_detach
+   drd:ConflictingAccess
+   fun:pthread_detach
+   fun:pthread_detach
+}
+{
+   drd-libpthread-pthread_once
+   drd:ConflictingAccess
+   fun:pthread_once
+}
+{
+   drd-libpthread-pthread_cancel_init
+   drd:ConflictingAccess
+   fun:pthread_cancel_init
+}
+{
+   drd-libpthread-_Unwind_ForcedUnwind
+   drd:ConflictingAccess
+   ...
+   fun:_Unwind_ForcedUnwind
+}
+{
+   drd-libpthread-_Unwind_GetCFA
+   drd:ConflictingAccess
+   fun:_Unwind_GetCFA
+}
+{
+   drd-libpthread-_Unwind_Resume
+   drd:ConflictingAccess
+   ...
+   fun:_Unwind_Resume
+}
+{
+   drd-libpthread-?
+   drd:ConflictingAccess
+   obj:/lib/libgcc_s.so.1
+}
+{
+   drd-libpthread-nanosleep
+   drd:ConflictingAccess
+   fun:nanosleep
+}
+
+#
+# Suppression patterns for libgomp.
+#
+
+# Unfortunately many statements in libgomp trigger conflicting accesses. It is
+# not clear to me which of these are safe and which ones not. See also
+# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40362
+{
+   drd-libgomp
+   drd:ConflictingAccess
+   obj:/usr/lib*/libgomp.so*
+}
+
+#
+# Suppression patterns for libX11.
+#
+
+{
+   drd-libX11-XCreateFontSet
+   drd:CondErr
+   fun:pthread_cond_init*
+   fun:_XReply
+   fun:XListFontsWithInfo
+   obj:/usr/lib*/libX11.so*
+   fun:XCreateOC
+   fun:XCreateFontSet
+}
+
+#
+# Suppression patterns for libxcb.
+#
+
+{
+   drd-libxcb-xcb_wait_for_reply
+   drd:CondErr
+   fun:pthread_cond_destroy*
+   fun:xcb_wait_for_reply
+}
+
+#
+# Suppression patterns for libglib.
+#
+
+{
+   drd-libglib-access-g_threads_got_initialized
+   drd:ConflictingAccess
+   ...
+   fun:g_slice_alloc
+   fun:g_ptr_array_sized_new
+}
+{
+   drd-libglib-access-g_threads_got_initialized
+   drd:ConflictingAccess
+   ...
+   fun:_ZN27QEventDispatcherGlibPrivateC1EP13_GMainContext
+   fun:_ZN20QEventDispatcherGlibC1EP7QObject
+   obj:/usr/lib*/libQtCore.so.4.*
+   obj:/usr/lib*/libQtCore.so.4.*
+}
+{
+   drd-libglib-access-g_mem_initialized
+   drd:ConflictingAccess
+   fun:g_malloc0
+}
+{
+   drd-libglib-g_private_get_posix_impl
+   drd:ConflictingAccess
+   fun:g_private_get_posix_impl
+}
+{
+   drd-libglib-g_private_set_posix_impl
+   drd:ConflictingAccess
+   fun:g_private_set_posix_impl
+}
+{
+   drd-libglib-g_get_language_names
+   drd:ConflictingAccess
+   fun:g_slice_free_chain_with_offset
+}
+{
+   drd-libglib-g_main_context_new
+   drd:ConflictingAccess
+   fun:fcntl
+   obj:/usr/lib*/libglib-*.so*
+   fun:g_main_context_new
+}
+
+#
+# Suppression patterns for libQtCore.
+#
+
+{
+   drd-libQtCore-deref-that-calls-QThreadData-destructor
+   drd:ConflictingAccess
+   fun:_ZN11QThreadDataD1Ev
+   obj:/usr/lib*/libQtCore.so.4.*
+}
+{
+   drd-libQtCore-4.0/4.1-Q_GLOBAL_STATIC-connectionList
+   drd:ConflictingAccess
+   obj:/usr/lib*/libQtCore.so.4.*
+   fun:_ZN11QMetaObject8activateEP7QObjectiiPPv
+   fun:_ZN11QMetaObject8activateEP7QObjectPKS_iPPv
+}
+{
+   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
+   drd:ConflictingAccess
+   fun:_ZN14QReadWriteLock12lockForWriteEv
+   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
+   fun:_ZN7QObjectD2Ev
+}
+{
+   drd-libQtCore-QObjectPrivate::clearGuards(QObject*)
+   drd:ConflictingAccess
+   fun:_ZN14QReadWriteLock12lockForWriteEv
+   fun:_ZN12QWriteLocker6relockEv
+   fun:_ZN12QWriteLockerC1EP14QReadWriteLock
+   fun:_ZN14QObjectPrivate11clearGuardsEP7QObject
+   fun:_ZN7QObjectD2Ev
+   fun:_ZN24QAbstractEventDispatcherD2Ev
+   fun:_ZN20QEventDispatcherGlibD0Ev
+}
+{
+   drd-libQtCore-QMutexPool::get(void const*)
+   drd:ConflictingAccess
+   fun:_ZN10QMutexPool3getEPKv
+}
+{
+   drd-libQtCore-qt_gettime_is_monotonic()
+   drd:ConflictingAccess
+   fun:_Z23qt_gettime_is_monotonicv
+}
+
+#
+# Suppression patterns for libboost.
+#
+
+# Suppress the races on boost::once_flag::epoch and on
+# boost::detail::this_thread_epoch. See also the source file
+# boost/thread/pthread/once.hpp in the Boost source tree
+# (https://svn.boost.org/trac/boost/browser/trunk/boost/thread/pthread/once.hpp).
+{
+   drd-libboost-boost::call_once<void (*)()>(boost::once_flag&, void (*)())
+   drd:ConflictingAccess
+   ...
+   fun:_ZN5boost9call_onceIPFvvEEEvRNS_9once_flagET_
+}
+{
+   drd-libboost-boost::detail::get_once_per_thread_epoch()
+   drd:ConflictingAccess
+   fun:_ZN5boost6detail25get_once_per_thread_epochEv
+}
+# Suppress the race reports on boost::detail::current_thread_tls_key. See also
+# https://svn.boost.org/trac/boost/ticket/3526 for more information about why
+# the access pattern of current_thread_tls_key is safe.
+{
+   drd-libboost-boost::detail::get_current_thread_data()
+   drd:ConflictingAccess
+   ...
+   fun:_ZN5boost6detail23get_current_thread_dataEv
+}
+{
+   drd-libboost-boost::detail::set_current_thread_data(boost::detail::thread_data_base*)
+   drd:ConflictingAccess
+   ...
+   fun:_ZN5boost6detail23set_current_thread_dataEPNS0_16thread_data_baseE
+}
diff --git a/.svn/text-base/glibc-2.X.supp.in.svn-base b/.svn/text-base/glibc-2.X.supp.in.svn-base
new file mode 100644 (file)
index 0000000..935bd74
--- /dev/null
@@ -0,0 +1,238 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with glibc @GLIBC_VERSION@.x
+
+# IMPORTANT: DO NOT EDIT glibc-2.X.supp, as it is as a generated
+# file.  Instead edit glibc-2.X.supp.in.
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+##----------------------------------------------------------------------##
+##--- generic suppressions                                           ---##
+##----------------------------------------------------------------------##
+
+{
+   dl-hack3-cond-0
+   Memcheck:Cond
+   fun:_dl_start
+   fun:_start
+}
+{
+   dl-hack3-cond-1
+   Memcheck:Cond
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+}
+{
+   dl-hack3-cond-2
+   Memcheck:Cond
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/libc-@GLIBC_VERSION@*.so*
+}
+{
+   dl-hack3-cond-3
+   Memcheck:Cond
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/libc-@GLIBC_VERSION@*.so*
+   obj:/lib*/libc-@GLIBC_VERSION@*.so*
+}
+{
+   dl-hack3-cond-4
+   Memcheck:Cond
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/libdl-@GLIBC_VERSION@*.so*
+}
+
+{
+   dl-hack4-64bit-addr-1
+   Memcheck:Addr8
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+}
+{
+   dl-hack4-64bit-addr-2
+   Memcheck:Addr8
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/libc-@GLIBC_VERSION@*.so*
+}
+{
+   dl-hack4-64bit-addr-3
+   Memcheck:Addr8
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so*
+   obj:/lib*/libdl-@GLIBC_VERSION@*.so*
+}
+
+{
+   dl-hack5-32bit-addr-1
+   Memcheck:Addr4
+   obj:/lib*/ld-@GLIBC_VERSION@*.so
+   obj:/lib*/ld-@GLIBC_VERSION@*.so
+   obj:/lib*/ld-@GLIBC_VERSION@*.so
+}
+{
+   dl-hack5-32bit-addr-3
+   Memcheck:Addr4
+   obj:/lib*/ld-@GLIBC_VERSION@*.so
+   obj:/lib*/ld-@GLIBC_VERSION@*.so
+   obj:/lib*/libdl-@GLIBC_VERSION@*.so*
+}
+{
+   dl-hack5-32bit-addr-4
+   Memcheck:Addr4
+   obj:/lib*/ld-@GLIBC_VERSION@*.so
+   obj:/lib*/libdl-@GLIBC_VERSION@*.so*
+   obj:/lib*/ld-@GLIBC_VERSION@*.so
+}
+
+
+##----------------------------------------------------------------------##
+##--- Misc ad-hoc hacks                                              ---##
+##----------------------------------------------------------------------##
+{
+   glibc-2.5.x-on-SUSE-10.2-(PPC)-1
+   Memcheck:Cond
+   fun:_dl_start_final
+   fun:_dl_start
+   fun:_start
+}
+{
+   glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
+   Memcheck:Cond
+   fun:index
+   obj:*ld-@GLIBC_VERSION@.*.so
+}
+{
+   glibc-2.5.x-on-SuSE-10.2-(PPC)-2b
+   Memcheck:Addr4
+   fun:index
+   fun:expand_dynamic_string_token
+}
+{
+   glibc-2.5.5-on-SuSE-10.2-(PPC)-2c
+   Memcheck:Addr4
+   fun:index
+   obj:*ld-@GLIBC_VERSION@.*.so
+}
+{
+   glibc-2.3.5-on-SuSE-10.1-(PPC)-3
+   Memcheck:Addr4
+   fun:*wordcopy_fwd_dest_aligned*
+   fun:mem*cpy
+   obj:*lib*@GLIBC_VERSION@.*.so
+}
+
+{
+   glibc-@GLIBC_VERSION@-on-SUSE-10.3-(x86)
+   Memcheck:Addr4
+   obj:/lib/ld-@GLIBC_VERSION@*.so
+   obj:/lib/ld-@GLIBC_VERSION@*.so
+   obj:/lib/ld-@GLIBC_VERSION@*.so
+}
+
+{
+   glibc24-64bit-padding-1a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   fun:get_mapping
+   fun:__nscd_get_map_ref
+   fun:nscd*
+}
+{
+   glibc24-64bit-padding-1b
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:__sendto_nocancel
+   obj:/*libc-@GLIBC_VERSION@.so
+   obj:/*libc-@GLIBC_VERSION@.so
+   obj:/*libc-@GLIBC_VERSION@.so
+}
+{
+   glibc24-64bit-padding-1c
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   fun:__nscd_get_map_ref
+   fun:nscd_get*_r
+   fun:*nscd*
+   obj:/*libc-@GLIBC_VERSION@.so
+}
+
+
+{
+   X11-64bit-padding-3a
+   Memcheck:Param
+   write(buf)
+   obj:/*libpthread-2.4.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+   obj:/usr/lib*/libX11.so*
+}
+
+{
+   X11-64bit-padding-4a
+   Memcheck:Param
+   socketcall.sendto(msg)
+   fun:send
+   obj:/*libc-@GLIBC_VERSION@.so
+   obj:/*libc-@GLIBC_VERSION@.so
+   obj:/*libc-@GLIBC_VERSION@.so
+}
+{
+   X11-64bit-padding-4b
+   Memcheck:Param
+   socketcall.send(msg)
+   fun:send
+   obj:/*libc-@GLIBC_VERSION@.so
+   obj:/*libc-@GLIBC_VERSION@.so
+   obj:/*libc-@GLIBC_VERSION@.so
+}
+
+##----------------------------------------------------------------------##
+# MontaVista Linux 4.0.1 on ppc32
+{
+    MVL-401-linuxthreads-pthread_create
+    Memcheck:Param
+    write(buf)
+    fun:pthread_create
+}
+{
+   MVL-401-linuxthreads-pthread_create
+   Memcheck:Param
+   write(buf)
+   obj:/lib/libpthread-0.10.so
+   fun:pthread_create
+}
+
+##----------------------------------------------------------------------##
+# Ubuntu 10.04 on ARM (Thumb).  Not sure why this is necessary.
+{
+   U1004-ARM-_dl_relocate_object
+   Memcheck:Cond
+   fun:_dl_relocate_object
+}
diff --git a/.svn/text-base/valgrind.pc.in.svn-base b/.svn/text-base/valgrind.pc.in.svn-base
new file mode 100644 (file)
index 0000000..34b3bd1
--- /dev/null
@@ -0,0 +1,16 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@/valgrind
+arch=@VGCONF_ARCH_PRI@
+os=@VGCONF_OS@
+platform=@VGCONF_ARCH_PRI@-@VGCONF_OS@
+valt_load_address=@VALT_LOAD_ADDRESS@
+
+Name: Valgrind
+Description: A dynamic binary instrumentation framework
+Version: @VERSION@
+Requires:
+Libs: -L${libdir}/valgrind -lcoregrind-@VGCONF_ARCH_PRI@-@VGCONF_OS@ -lvex-@VGCONF_ARCH_PRI@-@VGCONF_OS@ -lgcc
+Cflags: -I${includedir}
+
diff --git a/.svn/text-base/valgrind.spec.in.svn-base b/.svn/text-base/valgrind.spec.in.svn-base
new file mode 100644 (file)
index 0000000..5fd3002
--- /dev/null
@@ -0,0 +1,51 @@
+Summary: Valgrind Memory Debugger
+Name: @PACKAGE@
+Version: @VERSION@
+Release: 1
+Epoch: 1
+License: GPL
+URL: http://www.valgrind.org/
+Group: Development/Debuggers
+Packager: Julian Seward <jseward@acm.org>
+Source: @PACKAGE@-@VERSION@.tar.bz2
+
+Buildroot: %{_tmppath}/%{name}-root
+
+%description 
+
+Valgrind is an award-winning instrumentation framework for building dynamic
+analysis tools. There are Valgrind tools that can automatically detect many
+memory management and threading bugs, and profile your programs in detail. You
+can also use Valgrind to build new tools.  Valgrind runs on the following
+platforms: x86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux, x86/MacOSX,
+AMD64/MacOSX.
+
+%prep
+%setup -n @PACKAGE@-@VERSION@
+
+%build
+%configure
+make
+
+%install
+make install DESTDIR=$RPM_BUILD_ROOT
+
+%makeinstall
+mkdir docs.installed
+mv $RPM_BUILD_ROOT%{_datadir}/doc/valgrind/* docs.installed/
+
+%files
+%defattr(-,root,root)
+%doc AUTHORS COPYING FAQ.txt NEWS README*
+%doc docs.installed/html/*.html docs.installed/html/images/*.png
+%{_bindir}/*
+%{_includedir}/valgrind
+%{_libdir}/valgrind
+%{_libdir}/pkgconfig/*
+
+%doc
+%defattr(-,root,root)
+%{_mandir}/*/*
+
+%clean
+[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf ${RPM_BUILD_ROOT}
diff --git a/.svn/text-base/vg-in-place.svn-base b/.svn/text-base/vg-in-place.svn-base
new file mode 100644 (file)
index 0000000..a49036d
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# Figure out an absolute pathname to this file, based on
+# $0 (the name of the file) and $PWD.
+
+dollarzero=$0
+
+if [ "${dollarzero#/}" = "${dollarzero}" ];
+then
+   # Relative name
+   scriptname=$PWD/$dollarzero;
+else
+   # Absolute name
+   scriptname=$dollarzero;
+fi
+
+# echo "Name of this script: " $scriptname
+
+vgbasedir=`dirname $scriptname`
+
+# echo "VG base directory:   " $vgbasedir
+
+
+# We set both VALGRIND_LIB and VALGRIND_LIB_INNER to handle normal and
+# 'inner' builds.
+VALGRIND_LIB="$vgbasedir/.in_place" \
+    VALGRIND_LIB_INNER="$vgbasedir/.in_place" \
+    "$vgbasedir/coregrind/valgrind" "$@"
+
diff --git a/.svn/text-base/xfree-3.supp.svn-base b/.svn/text-base/xfree-3.supp.svn-base
new file mode 100644 (file)
index 0000000..e967d0e
--- /dev/null
@@ -0,0 +1,153 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with XFree86 3.3.6)
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+##----------------------------------------------------------------------##
+
+{
+   X11-Cond-0
+   Memcheck:Cond
+   obj:*libXt.so.6.0
+   obj:*libXt.so.6.0
+   obj:*libXt.so.6.0
+}
+{
+   X11-Cond-1
+   Memcheck:Cond
+   fun:__rawmemchr
+   obj:*libXt.so.6.0
+   obj:*libXt.so.6.0
+}
+
+
+# Suppressions for XFree86-3.3.X
+
+{
+   X11-Addr4-1
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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
+   Memcheck:Addr4
+   fun:__rawmemchr
+   obj:/usr/X11R6/lib/libXt.so.6.0
+   obj:/usr/X11R6/lib/libXt.so.6.0
+}
+
+{
+   X11-Addr4-6
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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
+   Memcheck: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/.svn/text-base/xfree-4.supp.svn-base b/.svn/text-base/xfree-4.supp.svn-base
new file mode 100644 (file)
index 0000000..ca566ea
--- /dev/null
@@ -0,0 +1,402 @@
+
+##----------------------------------------------------------------------##
+
+# Errors to suppress by default with XFree86 4.1.0)
+
+# *** And a bunch of other stuff which is completely unrelated
+# to X.  The default suppressions are a bit of a mess and could do
+# with a good tidying up.
+
+# Format of this file is:
+# {
+#     name_of_suppression
+#     tool_name:supp_kind
+#     (optional extra info for some suppression types)
+#     caller0 name, or /name/of/so/file.so
+#     caller1 name, or ditto
+#     (optionally: caller2 name)
+#     (optionally: caller3 name)
+#  }
+#
+# For Memcheck, the supp_kinds are:
+#
+#     Param Value1 Value2 Value4 Value8 Value16 Jump
+#     Free Addr1 Addr2 Addr4 Addr8 Addr16
+#     Cond (previously known as Value0)
+#
+# and the optional extra info is:
+#     if Param: name of system call param
+
+# Resulting from R H 8.0
+{
+   *libc_write/libX11.so.6.2/*X11TransWrite(Param)
+   Memcheck:Param
+   write(buf)
+   fun:*libc_write
+   obj:/usr/*lib*/libX11.so*
+   fun:*X11TransWrite
+}
+
+{
+   libX11.so.6.2/libX11.so.6.2/libX11.so.6.2(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libX11.so*
+}
+
+{
+   libXt.so.6.2/libXt.so.6.2/libXt.so.6.2(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libXt.so*
+   obj:/usr/*lib*/libXt.so*
+   obj:/usr/*lib*/libXt.so*
+}
+
+
+{
+   libXaw.so.7.0/libXaw.so.7.0/libXaw.so.7.0(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libXaw.so*
+   obj:/usr/*lib*/libXaw.so*
+   obj:/usr/*lib*/libXaw.so*
+}
+
+{
+   libXmu.so.6.2/libXmu.so.6.2/libXmu.so.6.2(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libXmu.so*
+   obj:/usr/*lib*/libXmu.so*
+   obj:/usr/*lib*/libXmu.so*
+}
+
+{
+   libXt.so.6.0/libXt.so.6.0/libXaw.so.7.0(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libXt.so*
+   obj:/usr/*lib*/libXt.so*
+   obj:/usr/*lib*/libXaw.so*
+}
+
+{
+   libXaw.so.7.0/libXaw.so.7.0/libXt.so.6.0(Value4)
+   Memcheck:Value4
+   obj:/usr/*lib*/libXaw.so*
+   obj:/usr/*lib*/libXaw.so*
+   obj:/usr/*lib*/libXt.so*
+}
+
+{
+   libXaw.so.7.0/libXaw.so.7.0/libXt.so.6.0(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libXaw.so*
+   obj:/usr/*lib*/libXaw.so*
+   obj:/usr/*lib*/libXt.so*
+}
+
+{
+   libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libXaw.so*
+}
+
+{
+   libX11.so.6.2/libX11.so.6.2/libXaw.so.7.0(Addr4)
+   Memcheck:Addr4
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libXaw.so*
+}
+
+{
+   libX11.so.6.2/libXaw.so.7.0/libXaw.so.7.0(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libXaw.so*
+   obj:/usr/*lib*/libXaw.so*
+}
+
+{
+   libXpm.so.4.11/libXpm.so.4.11/libXpm.so.4.11
+   Memcheck:Cond
+   obj:/usr/*lib*/libXpm.so.4.11
+   obj:/usr/*lib*/libXpm.so.4.11
+   obj:/usr/*lib*/libXpm.so.4.11
+}
+
+{
+   struct with uninitialized paddings
+   Memcheck:Param
+   writev(vector[...])
+   fun:*_writev
+   fun:_X11TransSocketWritev
+   fun:_X11TransWritev
+   fun:*
+}
+
+{
+   struct with uninitialized paddings - libxcb
+   Memcheck:Param
+   writev(vector[...])
+   obj:/lib*/*.so
+   obj:/usr/lib*/libxcb.so.1.0.0
+   obj:/usr/lib*/libxcb.so.1.0.0
+   fun:xcb_send_request
+   fun:_X*
+}
+
+{
+   struct with uninitialized paddings - libxcb
+   Memcheck:Param
+   writev(vector[...])
+   obj:/lib*/*.so
+   obj:/usr/lib*/libxcb.so.1.0.0
+   obj:/usr/lib*/libxcb.so.1.0.0
+   obj:/usr/lib*/libxcb.so.1.0.0
+   fun:xcb_*
+   fun:_X*
+}
+
+{
+   another struct with uninitialized paddings
+   Memcheck:Param
+   write(buf)
+   obj:*
+   fun:_IceTransSocketWrite
+   fun:_IceTransWrite
+   fun:_IceWrite
+}
+
+{
+   Xorg 6.8.1 uninit _write* padding
+   Memcheck:Param
+   write(buf)
+   fun:*
+   fun:_X11TransWrite
+   obj:/usr/*lib*/libX11.so*
+}
+
+{
+   Xorg 6.8.1 uninit write padding
+   Memcheck:Param
+   write(buf)
+   fun:write
+   fun:_X11TransWrite
+   obj:/usr/*lib*/libX11.so*
+}
+
+{
+   Xorg 6.8.1 ICE uninit __write* padding
+   Memcheck:Param
+   write(buf)
+   obj:*
+   fun:_IceTransWrite
+   fun:_IceWrite
+   fun:IceFlush
+}
+
+{
+   Xorg 6.8.1 writev uninit padding
+   Memcheck:Param
+   writev(vector[...])
+   fun:writev
+   obj:/usr/*lib*/libX11.so*
+   fun:_X11TransWritev
+   fun:_XSend
+}
+
+{
+   Xorg 6.9.0 writev uninit padding
+   Memcheck:Param
+   writev(vector[...])
+   fun:do_writev
+   fun:writev
+   obj:/usr/*lib*/libX11.so*
+   fun:_X11TransWritev
+   fun:_XSend
+}
+
+{
+   X on SUSE11 writev uninit padding
+   Memcheck:Param
+   writev(vector[...])
+   fun:writev
+   obj:/usr/lib*/libxcb.so*
+   obj:/usr/lib*/libxcb.so*
+}
+{
+   X on SUSE11 writev uninit padding 2
+   Memcheck:Param
+   writev(vector[...])
+   obj:/lib*/ld-2.*.so*
+   obj:/usr/lib*/libxcb.so*
+   obj:/usr/lib*/libxcb.so*
+}
+{
+   X on SUSE11 writev uninit padding 3
+   Memcheck:Param
+   writev(vector[...])
+   obj:/lib*/ld-2.*.so*
+   obj:/usr/lib*/libORBit*.so*
+   obj:/usr/lib*/libORBit*.so*
+}
+{
+   X on SUSE11 writev uninit padding 4
+   Memcheck:Param
+   writev(vector[...])
+   obj:/lib*/libc-2.*.so*
+   obj:/usr/lib*/libORBit*.so*
+   obj:/usr/lib*/libORBit*.so*
+}
+
+# There's something strange about a % 127 in XftFontOpenInfo
+# (hashing) which gcc turns into a multiply by 33818641 and
+# some other guff instead.  I don't understand it enough to
+# know if libXft is broken or if memcheck's value tracking is
+# inadequate here.  Anyway, for the moment, suppress it.
+#
+# Use of uninitialised value of size 8
+#   at 0x71A59F8: XftFontOpenInfo (in /usr/X11R6/lib64/libXft.so.2.1.2)
+#   by 0x71A5F0D: XftFontOpenPattern (in /usr/X11R6/lib64/libXft.so.2.1.2)
+#   by 0x65F166E: loadFontConfigFont(QFontPrivate const*, QFontDef const&, 
+#                 QFont::Script) (qfontdatabase_x11.cpp:1942)
+#   by 0x65F5DE4: QFontDatabase::findFont(QFont::Script, QFontPrivate const*,
+#                 QFontDef const&, int) (qfontdatabase.cpp:996)
+{
+   XftFontOpenInfo-umod-127-strangeness
+   Memcheck:Value8
+   obj:/usr/X11*/lib*/libXft.so*
+   obj:/usr/X11*/lib*/libXft.so*
+}
+{
+   XftFontOpenInfo-umod-127-strangeness-a-la-xorg
+   Memcheck:Value8
+   obj:/usr/lib*/libXft.so*
+   obj:/usr/lib*/libXft.so*
+}
+
+{
+   More X padding stuff
+   Memcheck:Param
+   writev(vector[...])
+   fun:*writev*
+   obj:/usr/X11*/lib*/libX11.so*
+   obj:/usr/X11*/lib*/libX11.so*
+}
+
+# Inlined strlen in libX11 on Ubuntu 9.10 amd64, unfortunately.
+# Invalid read of size 4
+#    at 0x9B5CCE6: ??? (in /usr/lib/libX11.so.6.2.0)
+#    by 0x9B5D011: XGetAtomName (in /usr/lib/libX11.so.6.2.0)
+#    by 0x86407C3: gdk_x11_xatom_to_atom_for_display
+#                  (in /usr/lib/libgdk-x11-2.0.so.0.1800.3)
+#    by 0x8636817: ??? (in /usr/lib/libgdk-x11-2.0.so.0.1800.3)
+#  Address 0x1a558e1c is 28 bytes inside a block of size 30 alloc'd
+#    at 0x4C2552D: malloc (vg_replace_malloc.c:236)
+#    by 0x9B642C0: _XUpdateAtomCache (in /usr/lib/libX11.so.6.2.0)
+#    by 0x9B647F1: ??? (in /usr/lib/libX11.so.6.2.0)
+#    by 0x9B81818: ??? (in /usr/lib/libX11.so.6.2.0)
+{
+   libX11.so.6.2.0/libX11.so.6.2.0(Addr4)
+   Memcheck:Addr4
+   obj:/usr/*lib*/libX11.so*
+   obj:/usr/*lib*/libX11.so*
+}
+
+##----------------------------------------------------------------------##
+# Completely inappropriate place, but ...
+
+{
+   ifort-9.X-on-i686-1
+   Memcheck:Addr4
+   fun:unaligned_bigint
+   fun:hash
+   fun:for__add_to_lf_table
+}
+{
+   ifort-9.X-on-amd64-1
+   Memcheck:Addr8
+   fun:unaligned_bigint
+   fun:hash
+   fun:for__add_to_lf_table
+}
+
+
+# zlib-1.2.x uses uninitialised memory in some tricky way which
+# apparently is harmless (it must amount to a vectorised while-loop,
+# nothing else makes sense).  Fools Memcheck though.  See the mentioned
+# URL for details.
+{
+   zlib-1.2.x trickyness (1a): See http://www.zlib.net/zlib_faq.html#faq36
+   Memcheck:Cond
+   obj:/*lib*/libz.so.1.2.*
+   ...
+   obj:/*lib*/libz.so.1.2.*
+   fun:deflate
+}
+{
+   zlib-1.2.x trickyness (1b): See http://www.zlib.net/zlib_faq.html#faq36
+   Memcheck:Cond
+   obj:/*lib*/libz.so.1.2.*
+   fun:deflate
+}
+
+{
+   zlib-1.2.x trickyness (2a): See http://www.zlib.net/zlib_faq.html#faq36
+   Memcheck:Value8
+   obj:/*lib*/libz.so.1.2.*
+   ...
+   obj:/*lib*/libz.so.1.2.*
+   fun:deflate
+}
+{
+   zlib-1.2.x trickyness (2b): See http://www.zlib.net/zlib_faq.html#faq36
+   Memcheck:Value8
+   obj:/*lib*/libz.so.1.2.*
+   fun:deflate
+}
+
+{
+   zlib-1.2.x trickyness (3a): See http://www.zlib.net/zlib_faq.html#faq36
+   Memcheck:Value4
+   obj:/*lib*/libz.so.1.2.*
+   ...
+   obj:/*lib*/libz.so.1.2.*
+   fun:deflate
+}
+{
+   zlib-1.2.x trickyness (3b): See http://www.zlib.net/zlib_faq.html#faq36
+   Memcheck:Value4
+   obj:/*lib*/libz.so.1.2.*
+   fun:deflate
+}
+
+
+##----------------------------------------------------------------------##
+
+## More general versions of some of the old X suppressions above
+{
+   Ubuntu804 libXaw.so.7.0/libXaw.so.7.0/libXaw.so.7.0(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libXaw*so*
+   obj:/usr/*lib*/libXaw*so*
+   obj:/usr/*lib*/libXaw*so*
+}
+{
+   Ubuntu804 libXaw.so.7.0/libXaw.so.7.0/libXt(Cond)
+   Memcheck:Cond
+   obj:/usr/*lib*/libXaw*so*
+   obj:/usr/*lib*/libXaw*so*
+   obj:/usr/*lib*/libXt*so*
+}
+
+{
+   Ubuntu804-hack-1
+   Memcheck:Overlap
+   fun:mempcpy
+   fun:_IO_default_xsputn
+   obj:/lib*/libc-2.*so*
+}