From c7ac7d8d408bccf696a7b08ffbdbff837438ea2a Mon Sep 17 00:00:00 2001 From: Sai Sanjay Chikne Date: Sun, 10 May 2026 14:41:51 +0000 Subject: [PATCH] test: add test for anonymous version definition diagnostic Add a lit test covering the error diagnostics emitted when an anonymous version definition is used in combination with other named version definitions in a version script. Two cases are tested: - Named version node first, anonymous second: emits 'anonymous version definition is used in combination with other version definitions' - Anonymous version node first, named second: emits 'EOF expected, but got VER_1.0' Test location: test/Common/standalone/VersionScriptAnonymousMixed/ Fixes #1124 Signed-off-by: Sai Sanjay Chikne --- .../VersionScriptAnonymousMixed/Inputs/1.c | 2 ++ .../Inputs/vs_anon_first | 6 ++++++ .../VersionScriptAnonymousMixed/Inputs/vs_mixed | 6 ++++++ .../VersionScriptAnonymousMixed.test | 13 +++++++++++++ 4 files changed, 27 insertions(+) create mode 100644 test/Common/standalone/VersionScriptAnonymousMixed/Inputs/1.c create mode 100644 test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_anon_first create mode 100644 test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_mixed create mode 100644 test/Common/standalone/VersionScriptAnonymousMixed/VersionScriptAnonymousMixed.test diff --git a/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/1.c b/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/1.c new file mode 100644 index 000000000..cd529553b --- /dev/null +++ b/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/1.c @@ -0,0 +1,2 @@ +void foo() {} +void bar() {} diff --git a/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_anon_first b/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_anon_first new file mode 100644 index 000000000..d0e088820 --- /dev/null +++ b/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_anon_first @@ -0,0 +1,6 @@ +{ + global: bar; +}; +VER_1.0 { + global: foo; +}; diff --git a/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_mixed b/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_mixed new file mode 100644 index 000000000..a75a2110c --- /dev/null +++ b/test/Common/standalone/VersionScriptAnonymousMixed/Inputs/vs_mixed @@ -0,0 +1,6 @@ +VER_1.0 { + global: foo; +}; +{ + global: bar; +}; diff --git a/test/Common/standalone/VersionScriptAnonymousMixed/VersionScriptAnonymousMixed.test b/test/Common/standalone/VersionScriptAnonymousMixed/VersionScriptAnonymousMixed.test new file mode 100644 index 000000000..17cc14fcf --- /dev/null +++ b/test/Common/standalone/VersionScriptAnonymousMixed/VersionScriptAnonymousMixed.test @@ -0,0 +1,13 @@ +#---VersionScriptAnonymousMixed.test--------------------- SharedLibrary,VS------------------# +#BEGIN_COMMENT +# Test that an error is emitted when an anonymous version definition +# is used in combination with other named version definitions +# in a version script. +#END_COMMENT + +RUN: %clang %clangopts -c -fpic %p/Inputs/1.c -o %t1.o +RUN: %not %link %linkopts -shared -o %t1.so %t1.o --version-script=%p/Inputs/vs_mixed 2>&1 | %filecheck %s --check-prefix=NAMED +RUN: %not %link %linkopts -shared -o %t1.so %t1.o --version-script=%p/Inputs/vs_anon_first 2>&1 | %filecheck %s --check-prefix=ANON + +NAMED: Error: {{.*}}: anonymous version definition is used in combination with other version definitions +ANON: Error: {{.*}}: EOF expected, but got VER_1.0