unifdef: Handle redefined symbols correctly.

MFC after:	1 week
Sponsored by:	Klara, Inc.
Reviewed by:	kevans
Differential Revision:	https://reviews.freebsd.org/D41758
This commit is contained in:
Dag-Erling Smørgrav 2023-09-06 17:11:04 +00:00
parent b37a6938e3
commit aacbe73842
2 changed files with 26 additions and 1 deletions

View File

@ -1550,8 +1550,12 @@ addsym2(bool ignorethis, const char *symname, const char *val)
sym->value = val;
r = RB_INSERT(MACROMAP, &macro_tree, sym);
assert(r == NULL);
debugsym("addsym", sym);
} else {
sym->ignore = ignorethis;
sym->value = val;
debugsym("updsym", sym);
}
debugsym("addsym", sym);
}
static void

View File

@ -17,6 +17,27 @@ EOF
atf_check -o file:f unifdef <f
}
atf_test_case redefine
redefine_head() {
atf_set descr "redefine the same symbol"
}
redefine_body() {
cat >file <<EOF
#if FOO
a
#else
b
#endif
EOF
atf_check -s exit:1 -o inline:"a\n" unifdef -DFOO <file
atf_check -s exit:1 -o inline:"a\n" unifdef -UFOO -DFOO <file
atf_check -s exit:1 -o inline:"a\n" unifdef -DFOO=0 -DFOO <file
atf_check -s exit:1 -o inline:"b\n" unifdef -UFOO <file
atf_check -s exit:1 -o inline:"b\n" unifdef -DFOO -UFOO <file
atf_check -s exit:1 -o inline:"b\n" unifdef -DFOO -DFOO=0 <file
}
atf_init_test_cases() {
atf_add_test_case hash_comment
atf_add_test_case redefine
}