diff options
| author | Justin Cady <desk@justincady.com> | 2023-03-06 09:35:39 -0500 |
|---|---|---|
| committer | Justin Cady <desk@justincady.com> | 2023-03-07 12:44:02 -0500 |
| commit | 447aa48b4a02fa9e22fa45b2fb7a85c12df2e6c3 (patch) | |
| tree | f113c8926475b5bf37c14afd9e82f64348b004be /lld/ELF/LinkerScript.cpp | |
| parent | ba45f63782fa04a530d451dedb3cd58ed6e99664 (diff) | |
[ELF] Add REVERSE input section description keyword
The `REVERSE` keyword is described here:
https://sourceware.org/bugzilla/show_bug.cgi?id=27565
It complements `SORT` by allowing the order of input sections to be reversed.
This is particularly useful for order-dependent sections such as .init_array,
where `REVERSE` can be used to either detect static initialization order fiasco
issues or as a mechanism to maintain .ctors element order while transitioning to
the modern .init_array. Such a transition is described here:
https://discourse.llvm.org/t/is-it-possible-to-manually-specify-init-array-order/68649
Differential Revision: https://reviews.llvm.org/D145381
Diffstat (limited to 'lld/ELF/LinkerScript.cpp')
| -rw-r--r-- | lld/ELF/LinkerScript.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/lld/ELF/LinkerScript.cpp b/lld/ELF/LinkerScript.cpp index 668a79b5edd7..9207751cb7d2 100644 --- a/lld/ELF/LinkerScript.cpp +++ b/lld/ELF/LinkerScript.cpp @@ -457,6 +457,8 @@ static void sortSections(MutableArrayRef<InputSectionBase *> vec, return llvm::stable_sort(vec, nameComparator); case SortSectionPolicy::Priority: return llvm::stable_sort(vec, priorityComparator); + case SortSectionPolicy::Reverse: + return std::reverse(vec.begin(), vec.end()); } } |
