From https://llvm.org/bugs/show_bug.cgi?id=24115 diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index e7ee312..b9e4779 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -486,7 +486,7 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, std::string ArchiveName, std::string ArchitectureName) { if (!NoSort) { - std::function Cmp; + bool (*Cmp)(const NMSymbol &, const NMSymbol &); if (NumericSort) Cmp = compareSymbolAddress; else if (SizeSort) @@ -495,8 +495,9 @@ static void sortAndPrintSymbolList(SymbolicFile &Obj, bool printName, Cmp = compareSymbolName; if (ReverseSort) - Cmp = [=](const NMSymbol &A, const NMSymbol &B) { return Cmp(B, A); }; - std::sort(SymbolList.begin(), SymbolList.end(), Cmp); + std::sort(SymbolList.begin(), SymbolList.end(), [=](const NMSymbol &A, const NMSymbol &B) { return Cmp(B, A); }); + else + std::sort(SymbolList.begin(), SymbolList.end(), Cmp); } if (!PrintFileName) {