[all-commits] [llvm/llvm-project] 952b68: Support stepping through Darwin "branch islands" (...

jimingham via All-commits all-commits at lists.llvm.org
Tue May 13 13:33:14 PDT 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 952b680fd1a283883ee2075146a7b10ea9510e8a
      https://github.com/llvm/llvm-project/commit/952b680fd1a283883ee2075146a7b10ea9510e8a
  Author: jimingham <jingham at apple.com>
  Date:   2025-05-13 (Tue, 13 May 2025)

  Changed paths:
    M lldb/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderDarwin.cpp
    A lldb/test/API/macosx/branch-islands/Makefile
    A lldb/test/API/macosx/branch-islands/TestBranchIslands.py
    A lldb/test/API/macosx/branch-islands/foo.c
    A lldb/test/API/macosx/branch-islands/main.c
    A lldb/test/API/macosx/branch-islands/padding1.s
    A lldb/test/API/macosx/branch-islands/padding2.s
    A lldb/test/API/macosx/branch-islands/padding3.s
    A lldb/test/API/macosx/branch-islands/padding4.s

  Log Message:
  -----------
  Support stepping through Darwin "branch islands" (#139301)

When an intra-module jump doesn't fit in the immediate branch slot, the
Darwin linker inserts "branch island" symbols, and emits code to jump
from branch island to branch island till it makes it to the actual
function.

The previous submissions failed because in that environment the linker
was putting the `foo.island` symbol at the same address as the `padding`
symbol we we emitting to make our faked-up large binary. This submission
jams a byte after the padding symbol so that the other symbols can't
overlap it.



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