@@ -1075,9 +1075,14 @@ void create_builtin_stream(void)
static struct symbol_list *sparse_tokenstream(struct token *token)
{
+ int builtin = token && !token->pos.stream;
+
// Preprocess the stream
token = preprocess(token);
+ if (dump_macro_defs && !builtin)
+ dump_macro_definitions();
+
if (preprocess_only) {
while (!eof_token(token)) {
int prec = 1;
new file mode 100644
new file mode 100644
@@ -0,0 +1,7 @@
+/*
+ * check-name: dump-macros with empty file
+ * check-command: sparse -E -dD empty-file
+ *
+ * check-output-ignore
+check-output-pattern-1-times: #define __CHECKER__ 1
+ */
new file mode 100644
@@ -0,0 +1,7 @@
+/*
+ * check-name: dump-macros with multiple files
+ * check-command: sparse -E -dD empty-file $file
+ *
+ * check-output-ignore
+check-output-pattern-2-times: #define __CHECKER__ 1
+ */
new file mode 100644
@@ -0,0 +1,18 @@
+#define ABC abc
+#undef ABC
+
+#define DEF def
+#undef DEF
+#define DEF xyz
+
+#define NYDEF ydef
+/*
+ * check-name: dump-macros
+ * check-command: sparse -E -dD -DIJK=ijk -UNDEF -UNYDEF $file
+ *
+ * check-output-ignore
+check-output-pattern-1-times: #define __CHECKER__ 1
+check-output-contains: #define IJK ijk
+check-output-contains: #define DEF xyz
+check-output-contains: #define NYDEF ydef
+ */
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- lib.c | 5 +++++ validation/empty-file | 0 validation/preprocessor/dump-macros-empty.c | 7 +++++++ validation/preprocessor/dump-macros-multi.c | 7 +++++++ validation/preprocessor/dump-macros.c | 18 ++++++++++++++++++ 5 files changed, 37 insertions(+) create mode 100644 validation/empty-file create mode 100644 validation/preprocessor/dump-macros-empty.c create mode 100644 validation/preprocessor/dump-macros-multi.c create mode 100644 validation/preprocessor/dump-macros.c