forked from OSchip/llvm-project
[lld-macho] Have inputOrder default to less than INT_MAX
We make it less than INT_MAX in order not to conflict with the ordering of zerofill sections, which must always be placed at the end of their segment. This is the more structural fix for the issue addressed in {D104596}. Reviewed By: #lld-macho, thakis Differential Revision: https://reviews.llvm.org/D104607
This commit is contained in:
parent
89e66a3ab3
commit
f79e7a5a48
|
@ -1341,6 +1341,7 @@ bool macho::link(ArrayRef<const char *> argsArr, bool canExitEarly,
|
|||
}
|
||||
}
|
||||
}
|
||||
assert(inputSections.size() < UnspecifiedInputOrder);
|
||||
}
|
||||
|
||||
if (config->deadStrip)
|
||||
|
|
|
@ -20,6 +20,12 @@ namespace macho {
|
|||
class InputSection;
|
||||
class OutputSegment;
|
||||
|
||||
// The default order value for OutputSections that are not constructed from
|
||||
// InputSections (i.e. SyntheticSections). We make it less than INT_MAX in order
|
||||
// not to conflict with the ordering of zerofill sections, which must always be
|
||||
// placed at the end of their segment.
|
||||
constexpr int UnspecifiedInputOrder = std::numeric_limits<int>::max() - 1024;
|
||||
|
||||
// Output sections represent the finalized sections present within the final
|
||||
// linked executable. They can represent special sections (like the symbol
|
||||
// table), or represent coalesced sections from the various inputs given to the
|
||||
|
@ -61,7 +67,7 @@ public:
|
|||
// For output sections that don't have explicit ordering requirements, their
|
||||
// output order should be based on the order of the input sections they
|
||||
// contain.
|
||||
int inputOrder = std::numeric_limits<int>::max();
|
||||
int inputOrder = UnspecifiedInputOrder;
|
||||
|
||||
uint32_t index = 0;
|
||||
uint64_t addr = 0;
|
||||
|
|
|
@ -51,7 +51,7 @@ public:
|
|||
uint64_t fileOff = 0;
|
||||
uint64_t fileSize = 0;
|
||||
uint64_t vmSize = 0;
|
||||
int inputOrder = std::numeric_limits<int>::max();
|
||||
int inputOrder = UnspecifiedInputOrder;
|
||||
StringRef name;
|
||||
uint32_t maxProt = 0;
|
||||
uint32_t initProt = 0;
|
||||
|
|
Loading…
Reference in New Issue