pass $test
     }
 }
+
+# Test command redefining itself
+
+proc_with_prefix test_command_redefining_itself {} {
+    # Start with a fresh gdb
+    clean_restart
+
+
+    gdb_test_multiline "input command redefining itself" \
+       "python" "" \
+       "class redefine_cmd (gdb.Command):" "" \
+       "  def __init__ (self, msg):" "" \
+       "    super (redefine_cmd, self).__init__ (\"redefine_cmd\", gdb.COMMAND_OBSCURE)" "" \
+       "    self._msg = msg" "" \
+       "  def invoke (self, arg, from_tty):" "" \
+       "    print (\"redefine_cmd output, msg = %s\" % self._msg)" "" \
+       "    redefine_cmd (arg)" "" \
+       "redefine_cmd (\"XXX\")" "" \
+       "end" ""
+
+    gdb_test "redefine_cmd AAA" \
+       "redefine_cmd output, msg = XXX" \
+       "call command redefining itself 1"
+
+    gdb_test "redefine_cmd BBB" \
+       "redefine_cmd output, msg = AAA" \
+       "call command redefining itself 2"
+}
+
+test_command_redefining_itself