GP-1675: Sorting PRELINK Mach-O files before processing them

This commit is contained in:
Ryan Kurtz
2022-01-13 01:22:20 -05:00
parent 0e9792ac45
commit e6bc828e81

View File

@@ -182,6 +182,7 @@ public class MachoPrelinkProgramBuilder extends MachoProgramBuilder {
}
// Process each PRELINK Mach-O
Collections.sort(prelinkMachoInfoList);
monitor.initialize(prelinkMachoInfoList.size());
for (int i = 0; i < prelinkMachoInfoList.size(); i++) {
PrelinkMachoInfo info = prelinkMachoInfoList.get(i);
@@ -192,7 +193,7 @@ public class MachoPrelinkProgramBuilder extends MachoProgramBuilder {
info.processMemoryBlocks();
info.markupHeaders();
info.addToProgramTree(next);
info.addToProgramTree(next); // assumes list is sorted
monitor.incrementProgress(1);
}
@@ -533,7 +534,7 @@ public class MachoPrelinkProgramBuilder extends MachoProgramBuilder {
/**
* Convenience class to store information we need about an individual PRELINK Mach-O.
*/
private class PrelinkMachoInfo {
private class PrelinkMachoInfo implements Comparable<PrelinkMachoInfo> {
private Address headerAddr;
private MachHeader header;
@@ -621,5 +622,10 @@ public class MachoPrelinkProgramBuilder extends MachoProgramBuilder {
}
}
}
@Override
public int compareTo(PrelinkMachoInfo o) {
return headerAddr.compareTo(o.headerAddr);
}
}
}