@@ -1011,7 +1011,12 @@ private static void AddSymbolsForMissingAddresses(List<Symbol> symbols)
1011
1011
{
1012
1012
if ( symbols . Count > 0 )
1013
1013
{
1014
- symbols . Sort ( delegate ( Symbol x , Symbol y ) { return x . rva_start - y . rva_start ; } ) ;
1014
+ symbols . Sort ( delegate ( Symbol x , Symbol y ) {
1015
+ if ( x . rva_start != y . rva_start )
1016
+ return x . rva_start - y . rva_start ;
1017
+
1018
+ return x . name . CompareTo ( y . name ) ;
1019
+ } ) ;
1015
1020
int highWaterMark = symbols [ 0 ] . rva_start ;
1016
1021
for ( int i = 0 , count = symbols . Count ; i < count ; ++ i )
1017
1022
{
@@ -1413,11 +1418,13 @@ private static void DumpMergedSymbols(TextWriter writer, List<Symbol> symbols, F
1413
1418
mergedSymbols . Sort (
1414
1419
delegate ( MergedSymbol s0 , MergedSymbol s1 )
1415
1420
{
1416
- if ( s0 . total_count == s1 . total_count )
1417
- {
1421
+ if ( s0 . total_count != s1 . total_count )
1422
+ return s1 . total_count - s0 . total_count ;
1423
+
1424
+ if ( s0 . total_size != s1 . total_size )
1418
1425
return s1 . total_size - s0 . total_size ;
1419
- }
1420
- return s1 . total_count - s0 . total_count ;
1426
+
1427
+ return s0 . id . CompareTo ( s1 . id ) ;
1421
1428
} ) ;
1422
1429
1423
1430
if ( showDifferences )
@@ -1450,7 +1457,13 @@ private static void DumpMergedSymbols(TextWriter writer, List<Symbol> symbols, F
1450
1457
mergedSymbols . Sort (
1451
1458
delegate ( MergedSymbol s0 , MergedSymbol s1 )
1452
1459
{
1453
- return s1 . total_size - s0 . total_size ;
1460
+ if ( s0 . total_size != s1 . total_size )
1461
+ return s1 . total_size - s0 . total_size ;
1462
+
1463
+ if ( s0 . total_count != s1 . total_count )
1464
+ return s1 . total_count - s0 . total_count ;
1465
+
1466
+ return s0 . id . CompareTo ( s1 . id ) ;
1454
1467
} ) ;
1455
1468
1456
1469
if ( showDifferences )
@@ -1828,7 +1841,10 @@ static void Main(string[] args)
1828
1841
symbols . Sort (
1829
1842
delegate ( Symbol s0 , Symbol s1 )
1830
1843
{
1831
- return s1 . size - s0 . size ;
1844
+ if ( s1 . size != s0 . size )
1845
+ return s1 . size - s0 . size ;
1846
+
1847
+ return s0 . name . CompareTo ( s1 . name ) ;
1832
1848
} ) ;
1833
1849
writer . WriteLine ( "Sorted by Size" ) ;
1834
1850
WriteSymbolList ( writer , symbols , maxCount ) ;
@@ -1917,7 +1933,10 @@ static void Main(string[] args)
1917
1933
if ( x . rva_end != y . rva_end )
1918
1934
return y . rva_end - x . rva_end ;
1919
1935
1920
- return y . size - x . size ;
1936
+ if ( y . size != x . size )
1937
+ return y . size - x . size ;
1938
+
1939
+ return x . name . CompareTo ( y . name ) ;
1921
1940
} ) ;
1922
1941
writer . WriteLine ( "{0,12} {1,12} {2,12} {3,12} {4,-120} {5}" ,
1923
1942
"Addr. Start" , "Addr. End" , "Unique Size" , "Section/Type" , "Name" , "Source" ) ;
0 commit comments