[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