[PATCH] D34668: llvm-nm: Add suport for symbol demangling (-C/--demangle)
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 27 17:35:15 PDT 2017
Sam Clegg via Phabricator <reviews at reviews.llvm.org> writes:
> +static Optional<std::string> demangle(StringRef Name, bool StripUnderscore) {
> + if (StripUnderscore && Name.size() > 0 && Name[0] == '_')
> + Name = Name.substr(1);
> +
> + if (Name.size() < 2 || !Name.startswith("_Z"))
> + return None;
I don't think you need the .size() checks. It is safe to just use startswith.
> @@ -724,6 +745,12 @@
> for (SymbolListT::iterator I = SymbolList.begin(), E = SymbolList.end();
> I != E; ++I) {
> uint32_t SymFlags;
> + std::string Name = I->Name.str();
> + MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(&Obj);
> + if (Demangle) {
> + if (Optional<std::string> Opt = demangle(I->Name, MachO != nullptr))
You can just use isa<MachOObjectFile>(Obj).
LGTM with that.
Cheers,
Rafael
More information about the llvm-commits
mailing list