command.h depends on scoped_restore:
extern scoped_restore_tmpl<int> prevent_dont_repeat (void);
But doesn't include the corresponding header
("common/scoped_restore.h"). We haven't noticed a problem because
utils.h includes scoped_restore.h, and defs.h includes utils.h.
However, a patch that makes "symtab.h" include "completer.h", exposed
the issue:
https://sourceware.org/ml/gdb-patches/2017-06/msg00023.html.
Without this fix that would break building all .o files like this:
In file included from src/gdb/completer.h:21:0,
from src/gdb/symtab.h:28,
from src/gdb/language.h:26,
from src/gdb/frame.h:72,
from src/gdb/gdbarch.h:39,
from src/gdb/defs.h:636,
from src/gdb/top.c:20:
src/gdb/command.h:434:8: error: ‘scoped_restore_tmpl’ does not name a type
extern scoped_restore_tmpl<int> prevent_dont_repeat (void);
^
Makefile:1911: recipe for target 'top.o' failed
because defs.h includes gdbarch.h before it includes utils.h.
gdb/ChangeLog:
2017-06-28 Pedro Alves <palves@redhat.com>
* command.h: Include "common/scoped_restore.h".
+2017-06-28 Pedro Alves <palves@redhat.com>
+
+ * command.h: Include "common/scoped_restore.h".
+
2017-06-28 Yao Qi <yao.qi@linaro.org>
* mi/mi-cmd-break.c (mi_argv_to_format): Use obstack_grow_str
#define COMMAND_H 1
#include "gdb_vecs.h"
+#include "common/scoped_restore.h"
/* This file defines the public interface for any code wanting to
create commands. */