forked from OSchip/llvm-project
Move feature-specific functions out of Strings.cpp.
Functions declared in Strings.h should provide generic string operations for the linker, but some of them are too specific to some features. This patch moves them to the location where they are used. llvm-svn: 307949
This commit is contained in:
parent
3b8acb2c5a
commit
1e77ad1456
|
@ -229,6 +229,19 @@ bool LinkerScript::shouldKeep(InputSectionBase *S) {
|
|||
return false;
|
||||
}
|
||||
|
||||
// If an input string is in the form of "foo.N" where N is a number,
|
||||
// return N. Otherwise, returns 65536, which is one greater than the
|
||||
// lowest priority.
|
||||
static int getPriority(StringRef S) {
|
||||
size_t Pos = S.rfind('.');
|
||||
if (Pos == StringRef::npos)
|
||||
return 65536;
|
||||
int V;
|
||||
if (!to_integer(S.substr(Pos + 1), V, 10))
|
||||
return 65536;
|
||||
return V;
|
||||
}
|
||||
|
||||
// A helper function for the SORT() command.
|
||||
static std::function<bool(InputSectionBase *, InputSectionBase *)>
|
||||
getComparator(SortSectionPolicy K) {
|
||||
|
|
|
@ -113,6 +113,12 @@ private:
|
|||
};
|
||||
} // namespace
|
||||
|
||||
static StringRef unquote(StringRef S) {
|
||||
if (S.startswith("\""))
|
||||
return S.substr(1, S.size() - 2);
|
||||
return S;
|
||||
}
|
||||
|
||||
static bool isUnderSysroot(StringRef Path) {
|
||||
if (Config->Sysroot == "")
|
||||
return false;
|
||||
|
@ -1103,6 +1109,10 @@ void ScriptParser::readVersionDeclaration(StringRef VerStr) {
|
|||
expect(";");
|
||||
}
|
||||
|
||||
static bool hasWildcard(StringRef S) {
|
||||
return S.find_first_of("?*[") != StringRef::npos;
|
||||
}
|
||||
|
||||
// Reads a list of symbols, e.g. "{ global: foo; bar; local: *; };".
|
||||
std::pair<std::vector<SymbolVersion>, std::vector<SymbolVersion>>
|
||||
ScriptParser::readSymbols() {
|
||||
|
|
|
@ -38,29 +38,6 @@ bool StringMatcher::match(StringRef S) const {
|
|||
return false;
|
||||
}
|
||||
|
||||
// If an input string is in the form of "foo.N" where N is a number,
|
||||
// return N. Otherwise, returns 65536, which is one greater than the
|
||||
// lowest priority.
|
||||
int elf::getPriority(StringRef S) {
|
||||
size_t Pos = S.rfind('.');
|
||||
if (Pos == StringRef::npos)
|
||||
return 65536;
|
||||
int V;
|
||||
if (!to_integer(S.substr(Pos + 1), V, 10))
|
||||
return 65536;
|
||||
return V;
|
||||
}
|
||||
|
||||
bool elf::hasWildcard(StringRef S) {
|
||||
return S.find_first_of("?*[") != StringRef::npos;
|
||||
}
|
||||
|
||||
StringRef elf::unquote(StringRef S) {
|
||||
if (!S.startswith("\""))
|
||||
return S;
|
||||
return S.substr(1, S.size() - 2);
|
||||
}
|
||||
|
||||
// Converts a hex string (e.g. "deadbeef") to a vector.
|
||||
std::vector<uint8_t> elf::parseHex(StringRef S) {
|
||||
std::vector<uint8_t> Hex;
|
||||
|
|
|
@ -21,11 +21,8 @@
|
|||
namespace lld {
|
||||
namespace elf {
|
||||
|
||||
int getPriority(StringRef S);
|
||||
bool hasWildcard(StringRef S);
|
||||
std::vector<uint8_t> parseHex(StringRef S);
|
||||
bool isValidCIdentifier(StringRef S);
|
||||
StringRef unquote(StringRef S);
|
||||
|
||||
// This is a lazy version of StringRef. String size is computed lazily
|
||||
// when it is needed. It is more efficient than StringRef to instantiate
|
||||
|
|
Loading…
Reference in New Issue