[all-commits] [llvm/llvm-project] 0f24ff: [lld/mac] Don't fold UNWIND_X86_64_MODE_STACK_IND ...
Nico Weber via All-commits
all-commits at lists.llvm.org
Sun Jun 27 03:49:51 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 0f24ffcdfa9bb2b6380cedbb24f16d4ab9920dd7
https://github.com/llvm/llvm-project/commit/0f24ffcdfa9bb2b6380cedbb24f16d4ab9920dd7
Author: Nico Weber <thakis at chromium.org>
Date: 2021-06-27 (Sun, 27 Jun 2021)
Changed paths:
M lld/MachO/UnwindInfoSection.cpp
A lld/test/MachO/compact-unwind-stack-ind.s
Log Message:
-----------
[lld/mac] Don't fold UNWIND_X86_64_MODE_STACK_IND unwind entries
libunwind uses unwind info to find the function address belonging
to the current instruction pointer. libunwind/src/CompactUnwinder.hpp's
step functions read functionStart for UNWIND_X86_64_MODE_STACK_IND
(and for nothing else), so these encodings need a dedicated entry
per function, so that the runtime can get the stacksize off the
`subq` instrunction in the function's prologue.
This matches ld64.
(CompactUnwinder.hpp from https://opensource.apple.com/source/libunwind/
also reads functionStart in a few more cases if `SUPPORT_OLD_BINARIES` is set,
but it defaults to 0, and ld64 seems to not worry about these additional
cases.)
Related upstream bug: https://crbug.com/1220175
Differential Revision: https://reviews.llvm.org/D104978
More information about the All-commits
mailing list