diff --git a/include/ChangeLog b/include/ChangeLog
index d1f4fbc97a6ca43b2f7c3520380338c631d4ee0c..bf5df1d2b221b7a2af4565f381eba69adca9ec23 100644
--- a/include/ChangeLog
+++ b/include/ChangeLog
@@ -1,3 +1,8 @@
+2001-12-06  Richard Henderson  <rth@redhat.com>
+
+	* demangle.h (no_demangling): New.
+	(NO_DEMANGLING_STYLE_STRING): New.
+
 2001-10-24  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 	* include/safe-ctype.h (_sch_isbasic, IS_ISOBASIC): New.
diff --git a/include/demangle.h b/include/demangle.h
index a314a2410cd110c710797a1d26196f335fab7362..a898218f4b84c7b8b50d9ad94028d7dc25c06d07 100644
--- a/include/demangle.h
+++ b/include/demangle.h
@@ -54,6 +54,7 @@
 
 extern enum demangling_styles
 {
+  no_demangling = -1,
   unknown_demangling = 0,
   auto_demangling = DMGL_AUTO,
   gnu_demangling = DMGL_GNU,
@@ -68,6 +69,7 @@ extern enum demangling_styles
 
 /* Define string names for the various demangling styles. */
 
+#define NO_DEMANGLING_STYLE_STRING            "none"
 #define AUTO_DEMANGLING_STYLE_STRING	      "auto"
 #define GNU_DEMANGLING_STYLE_STRING    	      "gnu"
 #define LUCID_DEMANGLING_STYLE_STRING	      "lucid"
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index cad39224ca94b30c584f262ff08f57b648aa1b1e..3ba5c38b0ac37fecd0cb7980e8230d9ce7f91538 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2001-12-06  Richard Henderson  <rth@redhat.com>
+
+	* cplus-dem.c (libiberty_demanglers): Add no_demangling case.
+	(cplus_demangle): Support no_demangling.
+
 2001-11-27  Zack Weinberg  <zack@codesourcery.com>
 
 	* _doprnt.c: Moved here from gcc/doprint.c.  Adjust to build
diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c
index e19340c5ada10ed84df8c48af21a86bdab0dd6cd..a35ff14624e65d58e949c6bb2e8982bbb952e8b5 100644
--- a/libiberty/cplus-dem.c
+++ b/libiberty/cplus-dem.c
@@ -258,6 +258,12 @@ typedef enum type_kind_t
 
 const struct demangler_engine libiberty_demanglers[] =
 {
+  {
+    NO_DEMANGLING_STYLE_STRING,
+    no_demangling,
+    "Demangling disabled"
+  }
+  ,
   {
     AUTO_DEMANGLING_STYLE_STRING,
       auto_demangling,
@@ -909,6 +915,10 @@ cplus_demangle (mangled, options)
 {
   char *ret;
   struct work_stuff work[1];
+
+  if (current_demangling_style == no_demangling)
+    return xstrdup (mangled);
+
   memset ((char *) work, 0, sizeof (work));
   work->options = options;
   if ((work->options & DMGL_STYLE_MASK) == 0)