core: Add command-line option --defaultsupp

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14080 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_main.c b/coregrind/m_main.c
index c34d3ea..ba12b4b 100644
--- a/coregrind/m_main.c
+++ b/coregrind/m_main.c
@@ -127,6 +127,7 @@
 "    --error-limit=no|yes      stop showing new errors if too many? [yes]\n"
 "    --error-exitcode=<number> exit code to return if errors found [0=disable]\n"
 "    --show-below-main=no|yes  continue stack traces below main() [no]\n"
+"    --defaultsupp=yes|no      load default suppressions [yes]\n"
 "    --suppressions=<filename> suppress errors described in <filename>\n"
 "    --gen-suppressions=no|yes|all    print suppressions for errors? [no]\n"
 "    --db-attach=no|yes        start debugger when errors detected? [no]\n"
@@ -690,6 +691,8 @@
       else if VG_STR_CLO(arg, "--xml-user-comment",
                               VG_(clo_xml_user_comment)) {}
 
+      else if VG_BOOL_CLO(arg, "--defaultsupp", VG_(clo_default_supp)) { }
+
       else if VG_STR_CLO(arg, "--suppressions", tmp_str) {
          if (VG_(clo_n_suppressions) >= VG_CLO_MAX_SFILES) {
             VG_(fmsg_bad_option)(arg,
@@ -1114,7 +1117,8 @@
 
    // Suppressions related stuff
 
-   if (VG_(clo_n_suppressions) < VG_CLO_MAX_SFILES-1 &&
+   if (VG_(clo_default_supp) &&
+       VG_(clo_n_suppressions) < VG_CLO_MAX_SFILES-1 &&
        (VG_(needs).core_errors || VG_(needs).tool_errors)) {
       /* If we haven't reached the max number of suppressions, load
          the default one. */
diff --git a/coregrind/m_options.c b/coregrind/m_options.c
index b9edd11..a331f0e 100644
--- a/coregrind/m_options.c
+++ b/coregrind/m_options.c
@@ -78,6 +78,7 @@
 HChar* VG_(clo_xml_fname_expanded) = NULL;
 Bool   VG_(clo_time_stamp)     = False;
 Int    VG_(clo_input_fd)       = 0; /* stdin */
+Bool   VG_(clo_default_supp)   = True;
 Int    VG_(clo_n_suppressions) = 0;
 const HChar* VG_(clo_suppressions)[VG_CLO_MAX_SFILES];
 Int    VG_(clo_n_fullpath_after) = 0;
diff --git a/coregrind/pub_core_options.h b/coregrind/pub_core_options.h
index d296929..97aa3f5 100644
--- a/coregrind/pub_core_options.h
+++ b/coregrind/pub_core_options.h
@@ -139,6 +139,8 @@
 /* The file descriptor to read for input.  default: 0 == stdin */
 extern Int   VG_(clo_input_fd);
 
+/* Whether or not to load the default suppressions. */
+extern Bool  VG_(clo_default_supp);
 /* The number of suppression files specified. */
 extern Int   VG_(clo_n_suppressions);
 /* The names of the suppression files. */
diff --git a/docs/xml/manual-core.xml b/docs/xml/manual-core.xml
index 7c32aae..0fd7f02 100644
--- a/docs/xml/manual-core.xml
+++ b/docs/xml/manual-core.xml
@@ -396,10 +396,11 @@
 --1610-- used_suppression:      2 glibc-2.5.x-on-SUSE-10.2-(PPC)-2a /usr/lib/valgrind/default.supp:1234
 ]]></programlisting>
 
-<para>Multiple suppressions files are allowed.  By default, Valgrind
-uses <filename>$PREFIX/lib/valgrind/default.supp</filename>.  You can
-ask to add suppressions from another file, by specifying
-<option>--suppressions=/path/to/file.supp</option>.
+<para>Multiple suppressions files are allowed.  Valgrind loads suppression
+patterns from <filename>$PREFIX/lib/valgrind/default.supp</filename> unless
+<option>--defaultsupp=no</option> has been specified.  You can
+ask to add suppressions from additional files by specifying
+<option>--suppressions=/path/to/file.supp</option> one or more times.
 </para>
 
 <para>If you want to understand more about suppressions, look at an