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) {
|
void VersionScriptParser::parseVersion(StringRef Version) {
|
||||||
expect("{");
|
expect("{");
|
||||||
|
Config->SymbolVersions.push_back(elf::Version(Version));
|
||||||
if (peek() == "global:") {
|
if (peek() == "global:") {
|
||||||
next();
|
next();
|
||||||
parseVersionSymbols(Version);
|
parseVersionSymbols(Version);
|
||||||
|
@ -108,12 +109,10 @@ void VersionScriptParser::parseLocal() {
|
||||||
|
|
||||||
void VersionScriptParser::parseVersionSymbols(StringRef Version) {
|
void VersionScriptParser::parseVersionSymbols(StringRef Version) {
|
||||||
std::vector<StringRef> *Globals;
|
std::vector<StringRef> *Globals;
|
||||||
if (Version.empty()) {
|
if (Version.empty())
|
||||||
Globals = &Config->VersionScriptGlobals;
|
Globals = &Config->VersionScriptGlobals;
|
||||||
} else {
|
else
|
||||||
Config->SymbolVersions.push_back(elf::Version(Version));
|
|
||||||
Globals = &Config->SymbolVersions.back().Globals;
|
Globals = &Config->SymbolVersions.back().Globals;
|
||||||
}
|
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
StringRef Cur = peek();
|
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