Skip to content

Commit 72b8d25

Browse files
authored
[NFC] refactor demangle of llvm-nm (#67481)
since we landed the patch `https://reviews.llvm.org/D139864 [llvm-cxxfilt] Do not consider the prefix dot as part of the demangled symbol name`. we can simply the code on the llvm-nm demanlge by using the llvm::demangle directly. --------- Co-authored-by: zhijian <[email protected]>
1 parent 880fa7f commit 72b8d25

File tree

1 file changed

+2
-33
lines changed

1 file changed

+2
-33
lines changed

llvm/tools/llvm-nm/llvm-nm.cpp

Lines changed: 2 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -629,30 +629,6 @@ static void darwinPrintStab(MachOObjectFile *MachO, const NMSymbol &S) {
629629
outs() << format(" %02x", NType);
630630
}
631631

632-
static std::optional<std::string> demangle(StringRef Name) {
633-
std::string Demangled;
634-
if (nonMicrosoftDemangle(Name, Demangled))
635-
return Demangled;
636-
return std::nullopt;
637-
}
638-
639-
static std::optional<std::string> demangleXCOFF(StringRef Name) {
640-
if (Name.empty() || Name[0] != '.')
641-
return demangle(Name);
642-
643-
Name = Name.drop_front();
644-
std::optional<std::string> DemangledName = demangle(Name);
645-
if (DemangledName)
646-
return "." + *DemangledName;
647-
return std::nullopt;
648-
}
649-
650-
static std::optional<std::string> demangleMachO(StringRef Name) {
651-
if (!Name.empty() && Name[0] == '_')
652-
Name = Name.drop_front();
653-
return demangle(Name);
654-
}
655-
656632
static bool symbolIsDefined(const NMSymbol &Sym) {
657633
return Sym.TypeChar != 'U' && Sym.TypeChar != 'w' && Sym.TypeChar != 'v';
658634
}
@@ -822,15 +798,8 @@ static void printSymbolList(SymbolicFile &Obj,
822798

823799
std::string Name = S.Name;
824800
MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(&Obj);
825-
if (Demangle) {
826-
function_ref<std::optional<std::string>(StringRef)> Fn = ::demangle;
827-
if (Obj.isXCOFF())
828-
Fn = demangleXCOFF;
829-
if (Obj.isMachO())
830-
Fn = demangleMachO;
831-
if (std::optional<std::string> Opt = Fn(S.Name))
832-
Name = *Opt;
833-
}
801+
if (Demangle)
802+
Name = demangle(Name);
834803

835804
if (PrintFileName)
836805
writeFileName(outs(), ArchiveName, ArchitectureName);

0 commit comments

Comments
 (0)