diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index b92962e8484601ee1dc60efc668dc44357d72cc8..77777d369520dc7704e1c4b1a79428ce62fa9bda 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2009-06-19  Samuel Bronson  <naesten@gmail.com>
+
+	PR cli/9930:
+	* cli/cli-decode.c (apropos_cmd): Skip traversing abbreviations
+	for prefix commands to avoid duplicates in the output.
+
 2009-06-19  Samuel Bronson  <naesten@gmail.com>
 
 	PR cli/9930:
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index f8f6f28b2f3f461cd4727b66f3295e4b672ebe95..3e4f6f57f9a01ca01e3308b8e7dadb8e3502c538 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -779,8 +779,11 @@ apropos_cmd (struct ui_file *stream, struct cmd_list_element *commandlist,
 				      0 /* don't recurse */, stream);
 	    }
 	}
-      /* Check if this command has subcommands */
-      if (c->prefixlist != NULL)
+      /* Check if this command has subcommands and is not an abbreviation.
+	 We skip listing subcommands of abbreviations in order to avoid
+	 duplicates in the output.
+       */
+      if (c->prefixlist != NULL && !c->abbrev_flag)
 	{
 	  /* Recursively call ourselves on the subcommand list,
 	     passing the right prefix in.