[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