Handle empty versions.
They are significant now that we support @ in symbol names. llvm-svn: 274071
This commit is contained in:
parent
2100aa08b7
commit
857d7c5dd0
|
@ -84,6 +84,7 @@ private:
|
|||
|
||||
void VersionScriptParser::parseVersion(StringRef Version) {
|
||||
expect("{");
|
||||
Config->SymbolVersions.push_back(elf::Version(Version));
|
||||
if (peek() == "global:") {
|
||||
next();
|
||||
parseVersionSymbols(Version);
|
||||
|
@ -108,12 +109,10 @@ void VersionScriptParser::parseLocal() {
|
|||
|
||||
void VersionScriptParser::parseVersionSymbols(StringRef Version) {
|
||||
std::vector<StringRef> *Globals;
|
||||
if (Version.empty()) {
|
||||
if (Version.empty())
|
||||
Globals = &Config->VersionScriptGlobals;
|
||||
} else {
|
||||
Config->SymbolVersions.push_back(elf::Version(Version));
|
||||
else
|
||||
Globals = &Config->SymbolVersions.back().Globals;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
StringRef Cur = peek();
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
ver {
|
||||
};
|
|
@ -0,0 +1,25 @@
|
|||
// REQUIRES: x86
|
||||
// RUN: llvm-mc %s -o %t.o -filetype=obj -triple=x86_64-pc-linux
|
||||
// RUN: ld.lld %t.o -o %t.so -shared -version-script %p/Inputs/empty-ver.ver
|
||||
// RUN: llvm-readobj -version-info %t.so | FileCheck %s
|
||||
|
||||
// CHECK: Version symbols {
|
||||
// CHECK-NEXT: Section Name:
|
||||
// CHECK-NEXT: Address:
|
||||
// CHECK-NEXT: Offset:
|
||||
// CHECK-NEXT: Link:
|
||||
// CHECK-NEXT: Symbols [
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Version: 0
|
||||
// CHECK-NEXT: Name: @
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: Symbol {
|
||||
// CHECK-NEXT: Version: 2
|
||||
// CHECK-NEXT: Name: foo@ver
|
||||
// CHECK-NEXT: }
|
||||
// CHECK-NEXT: ]
|
||||
// CHECK-NEXT: }
|
||||
|
||||
|
||||
.global foo@ver
|
||||
foo@ver:
|
Loading…
Reference in New Issue