diff options
-rw-r--r-- | lld/ELF/SymbolListFile.cpp | 2 | ||||
-rw-r--r-- | lld/test/ELF/Inputs/version-script-err.script | 4 | ||||
-rw-r--r-- | lld/test/ELF/version-script-err.s | 5 |
3 files changed, 10 insertions, 1 deletions
diff --git a/lld/ELF/SymbolListFile.cpp b/lld/ELF/SymbolListFile.cpp index 2d5d1c52371..86e77edcae1 100644 --- a/lld/ELF/SymbolListFile.cpp +++ b/lld/ELF/SymbolListFile.cpp @@ -115,7 +115,7 @@ void VersionScriptParser::parseVersionSymbols(StringRef Version) { for (;;) { StringRef Cur = peek(); - if (Cur == "}" || Cur == "local:") + if (Cur == "}" || Cur == "local:" || Error) return; next(); Globals->push_back(Cur); diff --git a/lld/test/ELF/Inputs/version-script-err.script b/lld/test/ELF/Inputs/version-script-err.script new file mode 100644 index 00000000000..37de5980466 --- /dev/null +++ b/lld/test/ELF/Inputs/version-script-err.script @@ -0,0 +1,4 @@ +{ + global: + foo +}; diff --git a/lld/test/ELF/version-script-err.s b/lld/test/ELF/version-script-err.s new file mode 100644 index 00000000000..d0813427158 --- /dev/null +++ b/lld/test/ELF/version-script-err.s @@ -0,0 +1,5 @@ +// REQUIRES: x86 + +// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o +// RUN: not ld.lld -shared %t.o -o %t.so --version-script %p/Inputs/version-script-err.script 2>&1 | FileCheck %s +// CHECK: ; expected, but got } |