The branch main has been updated by des:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=aacbe7384221d2eafa326864bbbe2f22a10063ce

commit aacbe7384221d2eafa326864bbbe2f22a10063ce
Author:     Dag-Erling Smørgrav <[email protected]>
AuthorDate: 2023-09-06 17:11:04 +0000
Commit:     Dag-Erling Smørgrav <[email protected]>
CommitDate: 2023-09-06 17:11:13 +0000

    unifdef: Handle redefined symbols correctly.
    
    MFC after:      1 week
    Sponsored by:   Klara, Inc.
    Reviewed by:    kevans
    Differential Revision:  https://reviews.freebsd.org/D41758
---
 contrib/unifdef/unifdef.c             |  6 +++++-
 usr.bin/unifdef/tests/unifdef_test.sh | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/contrib/unifdef/unifdef.c b/contrib/unifdef/unifdef.c
index 82f6acd66038..3dd4ace7b81e 100644
--- a/contrib/unifdef/unifdef.c
+++ b/contrib/unifdef/unifdef.c
@@ -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
diff --git a/usr.bin/unifdef/tests/unifdef_test.sh 
b/usr.bin/unifdef/tests/unifdef_test.sh
index 98adef3adfdc..dfb08c187724 100644
--- a/usr.bin/unifdef/tests/unifdef_test.sh
+++ b/usr.bin/unifdef/tests/unifdef_test.sh
@@ -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
 }

Reply via email to