[all-commits] [llvm/llvm-project] 58f3c5: [lld-macho] Fix thunks for non-__text TEXT section...
Leonard Grey via All-commits
all-commits at lists.llvm.org
Tue Jul 23 08:03:18 PDT 2024
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 58f3c5e696021d9e571f868ed3bb4b27b3722df4
https://github.com/llvm/llvm-project/commit/58f3c5e696021d9e571f868ed3bb4b27b3722df4
Author: Leonard Grey <lgrey at chromium.org>
Date: 2024-07-23 (Tue, 23 Jul 2024)
Changed paths:
M lld/MachO/CMakeLists.txt
M lld/MachO/ConcatOutputSection.cpp
M lld/MachO/InputSection.cpp
M lld/MachO/OutputSegment.cpp
M lld/MachO/OutputSegment.h
A lld/MachO/Sections.cpp
A lld/MachO/Sections.h
M lld/test/MachO/arm64-thunks.s
M lld/test/MachO/section-order.s
M llvm/utils/gn/secondary/lld/MachO/BUILD.gn
Log Message:
-----------
[lld-macho] Fix thunks for non-__text TEXT sections (#99052)
This supersedes https://github.com/llvm/llvm-project/pull/87818 and
fixes https://github.com/llvm/llvm-project/issues/52767
When calculating arm64 thunks, we make a few assumptions that may not
hold when considering code sections outside of `__text`:
1. That a section needs thunks only if its size is larger than the
branch range.
2. That any calls into `__stubs` are necessarily forward jumps (that is,
the section with the jump is ordered before `__stubs`)
Sections like this exist in the wild, most prominently the
`__lcxx_overrides` section introduced in
https://github.com/llvm/llvm-project/pull/69498
This change:
- Ensures that if one section in `__TEXT` gets thunks, all of them do.
- Makes all code sections in `__TEXT` contiguous (and guaranteed to be
placed before `__stubs`)
To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications
More information about the All-commits
mailing list