From: Daniel Dunbar Date: Tue, 13 Nov 2012 19:39:55 +0000 (+0000) Subject: llvm-nm: Make sort more stable when symbol names are equal. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ed074e9a1b69a55e91d9f8976cdced3a06d6058a;p=oota-llvm.git llvm-nm: Make sort more stable when symbol names are equal. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167866 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Object/coff-archive.test b/test/Object/coff-archive.test index fc968bb944c..60f7a703c46 100644 --- a/test/Object/coff-archive.test +++ b/test/Object/coff-archive.test @@ -153,8 +153,8 @@ CHECKIDX: U ??_7type_info@@6B@ CHECKIDX: 00000000 R ??_C@_0BC@IHENMCGI@b?5cannot?5be?5zero?$CB?$AA@ CHECKIDX: w ??_Einvalid_argument@std@@UAEPAXI@Z CHECKIDX: w ??_Elogic_error@std@@UAEPAXI@Z -CHECKIDX: U ??_Ginvalid_argument@std@@UAEPAXI@Z CHECKIDX: 00000000 T ??_Ginvalid_argument@std@@UAEPAXI@Z +CHECKIDX: U ??_Ginvalid_argument@std@@UAEPAXI@Z CHECKIDX: 00000000 T ??_Glogic_error@std@@UAEPAXI@Z CHECKIDX: U ??_Glogic_error@std@@UAEPAXI@Z CHECKIDX: 00000000 D ??_R0?AVexception@std@@@8 diff --git a/tools/llvm-nm/llvm-nm.cpp b/tools/llvm-nm/llvm-nm.cpp index 153de952935..27efd74264d 100644 --- a/tools/llvm-nm/llvm-nm.cpp +++ b/tools/llvm-nm/llvm-nm.cpp @@ -150,6 +150,8 @@ namespace { return true; else if (a.Address == b.Address && a.Name < b.Name) return true; + else if (a.Address == b.Address && a.Name == b.Name && a.Size < b.Size) + return true; else return false; @@ -160,12 +162,21 @@ namespace { return true; else if (a.Size == b.Size && a.Name < b.Name) return true; + else if (a.Size == b.Size && a.Name == b.Name && a.Address < b.Address) + return true; else return false; } static bool CompareSymbolName(const NMSymbol &a, const NMSymbol &b) { - return a.Name < b.Name; + if (a.Name < b.Name) + return true; + else if (a.Name == b.Name && a.Size < b.Size) + return true; + else if (a.Name == b.Name && a.Size == b.Size && a.Address < b.Address) + return true; + else + return false; } StringRef CurrentFilename;