llvm-nm: Make sort more stable when symbol names are equal.
authorDaniel Dunbar <daniel@zuster.org>
Tue, 13 Nov 2012 19:39:55 +0000 (19:39 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Tue, 13 Nov 2012 19:39:55 +0000 (19:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167866 91177308-0d34-0410-b5e6-96231b3b80d8

test/Object/coff-archive.test
tools/llvm-nm/llvm-nm.cpp

index fc968bb944c1495e33f7f54a8a98ccc65dba8b07..60f7a703c46b02758eb43c39055002d785a36c28 100644 (file)
@@ -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
index 153de9529352c551a2b38027a404c3cd39e449b5..27efd74264da93a541c8d69fa3e4b8821091ef75 100644 (file)
@@ -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;