Skip to content

Commit 22cea71

Browse files
kasper93adrianstone55
authored andcommitted
Sort symbols also by name when necessary. (adrianstone55#13)
Fixes adrianstone55#7
1 parent ac0c07b commit 22cea71

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

SymbolSort.cs

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1011,7 +1011,12 @@ private static void AddSymbolsForMissingAddresses(List<Symbol> symbols)
10111011
{
10121012
if (symbols.Count > 0)
10131013
{
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+
});
10151020
int highWaterMark = symbols[0].rva_start;
10161021
for (int i = 0, count = symbols.Count; i < count; ++i)
10171022
{
@@ -1413,11 +1418,13 @@ private static void DumpMergedSymbols(TextWriter writer, List<Symbol> symbols, F
14131418
mergedSymbols.Sort(
14141419
delegate(MergedSymbol s0, MergedSymbol s1)
14151420
{
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)
14181425
return s1.total_size - s0.total_size;
1419-
}
1420-
return s1.total_count - s0.total_count;
1426+
1427+
return s0.id.CompareTo(s1.id);
14211428
} );
14221429

14231430
if (showDifferences)
@@ -1450,7 +1457,13 @@ private static void DumpMergedSymbols(TextWriter writer, List<Symbol> symbols, F
14501457
mergedSymbols.Sort(
14511458
delegate(MergedSymbol s0, MergedSymbol s1)
14521459
{
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);
14541467
} );
14551468

14561469
if (showDifferences)
@@ -1828,7 +1841,10 @@ static void Main(string[] args)
18281841
symbols.Sort(
18291842
delegate(Symbol s0, Symbol s1)
18301843
{
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);
18321848
});
18331849
writer.WriteLine("Sorted by Size");
18341850
WriteSymbolList(writer, symbols, maxCount);
@@ -1917,7 +1933,10 @@ static void Main(string[] args)
19171933
if (x.rva_end != y.rva_end)
19181934
return y.rva_end - x.rva_end;
19191935

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);
19211940
});
19221941
writer.WriteLine("{0,12} {1,12} {2,12} {3,12} {4,-120} {5}",
19231942
"Addr. Start", "Addr. End", "Unique Size", "Section/Type", "Name", "Source");

0 commit comments

Comments
 (0)