[lld][nfc] Remove lld::demangle() (partial revert of D116279)
{D116279}, in addition to adding support for other demanglers, also factored out some of the demangling logic. However, I don't think the abstraction really carries its weight -- after {D135942}, only the ELF and WASM backends call it with anything other than a non-constant `shouldDemangle` argument. The COFF and Mach-O backends were already doing the should-demangle check before calling `demangle()`. Reviewed By: MaskRay, #lld-macho Differential Revision: https://reviews.llvm.org/D135943
This commit is contained in:
parent
316123a2fc
commit
32647c8f53
|
@ -36,9 +36,9 @@ static std::string maybeDemangleSymbol(StringRef symName) {
|
|||
StringRef demangleInput = prefixless;
|
||||
if (config->machine == I386)
|
||||
demangleInput.consume_front("_");
|
||||
std::string demangled = demangle(demangleInput, true);
|
||||
std::string demangled = demangle(demangleInput.str());
|
||||
if (demangled != demangleInput)
|
||||
return prefix + demangle(demangleInput, true);
|
||||
return prefix + demangle(demangleInput.str());
|
||||
return (prefix + prefixless).str();
|
||||
}
|
||||
return std::string(symName);
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include "lld/Common/Memory.h"
|
||||
#include "lld/Common/Strings.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/Demangle/Demangle.h"
|
||||
|
||||
using namespace llvm;
|
||||
using namespace llvm::object;
|
||||
|
@ -145,13 +146,12 @@ StringMap<SmallVector<Symbol *, 0>> &SymbolTable::getDemangledSyms() {
|
|||
StringRef name = sym->getName();
|
||||
size_t pos = name.find('@');
|
||||
if (pos == std::string::npos)
|
||||
demangled = demangle(name, config->demangle);
|
||||
demangled = demangle(name.str());
|
||||
else if (pos + 1 == name.size() || name[pos + 1] == '@')
|
||||
demangled = demangle(name.substr(0, pos), config->demangle);
|
||||
demangled = demangle(name.substr(0, pos).str());
|
||||
else
|
||||
demangled = (demangle(name.substr(0, pos), config->demangle) +
|
||||
name.substr(pos))
|
||||
.str();
|
||||
demangled =
|
||||
(demangle(name.substr(0, pos).str()) + name.substr(pos)).str();
|
||||
(*demangledSyms)[demangled].push_back(sym);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include "Target.h"
|
||||
#include "Writer.h"
|
||||
#include "lld/Common/ErrorHandler.h"
|
||||
#include "lld/Common/Strings.h"
|
||||
#include "llvm/Demangle/Demangle.h"
|
||||
#include "llvm/Support/Compiler.h"
|
||||
#include <cstring>
|
||||
|
||||
|
@ -43,9 +43,16 @@ LLVM_ATTRIBUTE_UNUSED static inline void assertSymbols() {
|
|||
AssertSymbol<LazyObject>();
|
||||
}
|
||||
|
||||
// Returns a symbol for an error message.
|
||||
static std::string maybeDemangleSymbol(StringRef symName) {
|
||||
if (elf::config->demangle)
|
||||
return demangle(symName.str());
|
||||
return symName.str();
|
||||
}
|
||||
|
||||
std::string lld::toString(const elf::Symbol &sym) {
|
||||
StringRef name = sym.getName();
|
||||
std::string ret = demangle(name, config->demangle);
|
||||
std::string ret = maybeDemangleSymbol(name);
|
||||
|
||||
const char *suffix = sym.getVersionSuffix();
|
||||
if (*suffix == '@')
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "SyntheticSections.h"
|
||||
#include "lld/Common/ErrorHandler.h"
|
||||
#include "lld/Common/Memory.h"
|
||||
#include "llvm/Demangle/Demangle.h"
|
||||
|
||||
using namespace llvm;
|
||||
using namespace lld;
|
||||
|
|
|
@ -13,19 +13,11 @@
|
|||
#include "llvm/ADT/Optional.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/Demangle/Demangle.h"
|
||||
#include "llvm/Support/GlobPattern.h"
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace lld {
|
||||
// Returns a demangled symbol name. If Name is not a mangled name, it returns
|
||||
// name.
|
||||
inline std::string demangle(llvm::StringRef symName, bool shouldDemangle) {
|
||||
if (shouldDemangle)
|
||||
return llvm::demangle(symName.str().c_str());
|
||||
return std::string(symName);
|
||||
}
|
||||
|
||||
llvm::SmallVector<uint8_t, 0> parseHex(llvm::StringRef s);
|
||||
bool isValidCIdentifier(llvm::StringRef s);
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
#include "OutputSegment.h"
|
||||
#include "lld/Common/ErrorHandler.h"
|
||||
#include "lld/Common/Memory.h"
|
||||
#include "lld/Common/Strings.h"
|
||||
#include "llvm/Demangle/Demangle.h"
|
||||
|
||||
#define DEBUG_TYPE "lld"
|
||||
|
||||
|
@ -34,8 +34,9 @@ std::string maybeDemangleSymbol(StringRef name) {
|
|||
// `main` in the case where we need to pass it arguments.
|
||||
if (name == "__main_argc_argv")
|
||||
return "main";
|
||||
|
||||
return demangle(name, config->demangle);
|
||||
if (wasm::config->demangle)
|
||||
return demangle(name.str());
|
||||
return name.str();
|
||||
}
|
||||
|
||||
std::string toString(wasm::Symbol::Kind kind) {
|
||||
|
|
Loading…
Reference in New Issue