diff options
| author | Mark Rowe <mark@vector35.com> | 2025-09-24 14:54:25 -0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2025-10-02 09:09:17 -0700 |
| commit | dcf112606cb9b76fabd54963b5536e0dd12401f8 (patch) | |
| tree | 55f60d0bea8ad77632df3492ddaf0175835a258c /rust/src/workflow | |
| parent | 75c7715221b7beb78caaaf0c3fd815461914664c (diff) | |
[MachO] Tweak handling of LC_FUNCTION_STARTS
`LC_FUNCTION_STARTS` includes both functions and jump tables. We want to
avoid calling `AddFunctionForAnalysis` on jump tables since it can
result in a function being created at the jump table's location with a
bogus body.
We already skip adding functions for entries in `LC_FUNCTION_STARTS` if
the lifting of their first few bytes end up including `LLIL_UNDEF`.
However, arm64 intentionally lifts `udf` instructions (i.e., opcodes in
the Permanently Undefined range) to `LLIL_TRAP` in order to preserve the
immediate portion of the instruction.
To address this, `MachoView::IsValidFunctionStart` now returns false if
the first lifted instruction is `LLIL_TRAP` in addition to when the
lifting contains `LLIL_UNDEF`.
Diffstat (limited to 'rust/src/workflow')
0 files changed, 0 insertions, 0 deletions
