Parse symbol versions in scanVersionScript() instead of insert().
authorRui Ueyama <ruiu@google.com>
Wed, 23 Nov 2016 05:48:40 +0000 (05:48 +0000)
committerRui Ueyama <ruiu@google.com>
Wed, 23 Nov 2016 05:48:40 +0000 (05:48 +0000)
commit35fa6c58adaf02815c5b333a78a7059e12d62a2d
tree5417b890e655388a2be5dc0c7c8a4fd8217caa6f
parent399ac5c3fbe029bf200437fcbbf95189a96adb9f
Parse symbol versions in scanVersionScript() instead of insert().

There are two ways to set symbol versions. One way is to use symbol
definition file, and the other is to embed version names to symbol
names. In the latter way, symbol name is in the form of `foo@version1`
where `foo` is a real name and `version1` is a version.

We were parsing symbol names in insert(). That seems unnecessarily
too early. We can do it later after we resolve all symbols. Doing it
lazily is a good thing because it makes code easier to read
(because now we have a separate pass to parse symbol names). Also
it could slightly improve performance because if two identical symbols
have versions, we now parse them only once.

llvm-svn: 287741
lld/ELF/SymbolTable.cpp
lld/ELF/SymbolTable.h
lld/ELF/Symbols.cpp
lld/ELF/Symbols.h