[Demangle] remove unused status param of itaniumDemangle
No call sites interpreted this value meaningfully. Simplify this interface. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D149707
This commit is contained in:
parent
b9efffa7e9
commit
3b01fa264c
@ -28,7 +28,10 @@ enum : int {
|
||||
demangle_success = 0,
|
||||
};
|
||||
|
||||
char *itaniumDemangle(const char *mangled_name, int *status);
|
||||
/// Returns a non-NULL pointer to a NUL-terminated C style string
|
||||
/// that should be explicitly freed, if successful. Otherwise, may return
|
||||
/// nullptr if mangled_name is not a valid mangling or is nullptr.
|
||||
char *itaniumDemangle(const char *mangled_name);
|
||||
|
||||
enum MSDemangleFlags {
|
||||
MSDF_None = 0,
|
||||
|
||||
@ -48,7 +48,7 @@ std::string llvm::demangle(const std::string &MangledName) {
|
||||
bool llvm::nonMicrosoftDemangle(const char *MangledName, std::string &Result) {
|
||||
char *Demangled = nullptr;
|
||||
if (isItaniumEncoding(MangledName))
|
||||
Demangled = itaniumDemangle(MangledName, nullptr);
|
||||
Demangled = itaniumDemangle(MangledName);
|
||||
else if (isRustEncoding(MangledName))
|
||||
Demangled = rustDemangle(MangledName);
|
||||
else if (isDLangEncoding(MangledName))
|
||||
|
||||
@ -365,31 +365,20 @@ public:
|
||||
|
||||
using Demangler = itanium_demangle::ManglingParser<DefaultAllocator>;
|
||||
|
||||
char *llvm::itaniumDemangle(const char *MangledName, int *Status) {
|
||||
if (MangledName == nullptr) {
|
||||
if (Status)
|
||||
*Status = demangle_invalid_args;
|
||||
char *llvm::itaniumDemangle(const char *MangledName) {
|
||||
if (!MangledName)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
int InternalStatus = demangle_success;
|
||||
Demangler Parser(MangledName, MangledName + std::strlen(MangledName));
|
||||
Node *AST = Parser.parse();
|
||||
if (!AST)
|
||||
return nullptr;
|
||||
|
||||
char *Buf;
|
||||
if (AST == nullptr)
|
||||
InternalStatus = demangle_invalid_mangled_name;
|
||||
else {
|
||||
OutputBuffer OB;
|
||||
assert(Parser.ForwardTemplateRefs.empty());
|
||||
AST->print(OB);
|
||||
OB += '\0';
|
||||
Buf = OB.getBuffer();
|
||||
}
|
||||
|
||||
if (Status)
|
||||
*Status = InternalStatus;
|
||||
return InternalStatus == demangle_success ? Buf : nullptr;
|
||||
OutputBuffer OB;
|
||||
assert(Parser.ForwardTemplateRefs.empty());
|
||||
AST->print(OB);
|
||||
OB += '\0';
|
||||
return OB.getBuffer();
|
||||
}
|
||||
|
||||
ItaniumPartialDemangler::ItaniumPartialDemangler()
|
||||
|
||||
@ -337,10 +337,8 @@ StringRef GCOVFunction::getName(bool demangle) const {
|
||||
if (demangled.empty()) {
|
||||
do {
|
||||
if (Name.startswith("_Z")) {
|
||||
int status = 0;
|
||||
// Name is guaranteed to be NUL-terminated.
|
||||
char *res = itaniumDemangle(Name.data(), &status);
|
||||
if (status == 0) {
|
||||
if (char *res = itaniumDemangle(Name.data())) {
|
||||
demangled = res;
|
||||
free(res);
|
||||
break;
|
||||
|
||||
@ -652,13 +652,12 @@ void llvm::sys::PrintStackTrace(raw_ostream &OS, int Depth) {
|
||||
|
||||
if (dlinfo.dli_sname != nullptr) {
|
||||
OS << ' ';
|
||||
int res;
|
||||
char *d = itaniumDemangle(dlinfo.dli_sname, &res);
|
||||
if (!d)
|
||||
OS << dlinfo.dli_sname;
|
||||
else
|
||||
if (char *d = itaniumDemangle(dlinfo.dli_sname)) {
|
||||
OS << d;
|
||||
free(d);
|
||||
free(d);
|
||||
} else {
|
||||
OS << dlinfo.dli_sname;
|
||||
}
|
||||
|
||||
OS << format(" + %tu", (static_cast<const char *>(StackTrace[i]) -
|
||||
static_cast<const char *>(dlinfo.dli_saddr)));
|
||||
|
||||
@ -84,11 +84,11 @@ static std::string demangle(const std::string &Mangled) {
|
||||
char *Undecorated = nullptr;
|
||||
|
||||
if (Types)
|
||||
Undecorated = itaniumDemangle(DecoratedStr, nullptr);
|
||||
Undecorated = itaniumDemangle(DecoratedStr);
|
||||
|
||||
if (!Undecorated && strncmp(DecoratedStr, "__imp_", 6) == 0) {
|
||||
Prefix = "import thunk for ";
|
||||
Undecorated = itaniumDemangle(DecoratedStr + 6, nullptr);
|
||||
Undecorated = itaniumDemangle(DecoratedStr + 6);
|
||||
}
|
||||
|
||||
Result = Undecorated ? Prefix + Undecorated : Mangled;
|
||||
|
||||
@ -14,9 +14,7 @@
|
||||
|
||||
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) {
|
||||
std::string NullTerminatedString((const char *)Data, Size);
|
||||
int status = 0;
|
||||
if (char *demangle =
|
||||
llvm::itaniumDemangle(NullTerminatedString.c_str(), &status))
|
||||
if (char *demangle = llvm::itaniumDemangle(NullTerminatedString.c_str()))
|
||||
free(demangle);
|
||||
|
||||
return 0;
|
||||
|
||||
@ -7280,8 +7280,7 @@ static const char *SymbolizerSymbolLookUp(void *DisInfo,
|
||||
} else if (SymbolName != nullptr && strncmp(SymbolName, "__Z", 3) == 0) {
|
||||
if (info->demangled_name != nullptr)
|
||||
free(info->demangled_name);
|
||||
int status;
|
||||
info->demangled_name = itaniumDemangle(SymbolName + 1, &status);
|
||||
info->demangled_name = itaniumDemangle(SymbolName + 1);
|
||||
if (info->demangled_name != nullptr) {
|
||||
*ReferenceName = info->demangled_name;
|
||||
*ReferenceType = LLVMDisassembler_ReferenceType_DeMangled_Name;
|
||||
@ -7379,8 +7378,7 @@ static const char *SymbolizerSymbolLookUp(void *DisInfo,
|
||||
} else if (SymbolName != nullptr && strncmp(SymbolName, "__Z", 3) == 0) {
|
||||
if (info->demangled_name != nullptr)
|
||||
free(info->demangled_name);
|
||||
int status;
|
||||
info->demangled_name = itaniumDemangle(SymbolName + 1, &status);
|
||||
info->demangled_name = itaniumDemangle(SymbolName + 1);
|
||||
if (info->demangled_name != nullptr) {
|
||||
*ReferenceName = info->demangled_name;
|
||||
*ReferenceType = LLVMDisassembler_ReferenceType_DeMangled_Name;
|
||||
|
||||
@ -338,15 +338,11 @@ static bool writeReport(LocationInfoTy &LocationInfo) {
|
||||
|
||||
bool Printed = false;
|
||||
if (!NoDemangle) {
|
||||
int Status = 0;
|
||||
char *Demangled = itaniumDemangle(FuncName.c_str(), &Status);
|
||||
if (Demangled && Status == 0) {
|
||||
if (char *Demangled = itaniumDemangle(FuncName.c_str())) {
|
||||
OS << Demangled;
|
||||
Printed = true;
|
||||
}
|
||||
|
||||
if (Demangled)
|
||||
std::free(Demangled);
|
||||
}
|
||||
}
|
||||
|
||||
if (!Printed)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user