Skip to content
Discussion options

You must be logged in to vote

On macOS ARM64e, Objective‑C IMPs are entered through code that expects a PAC‑authenticated LR (x30).
When you call the IMP manually like a normal function pointer, you skip the ObjC dispatcher, so LR is not signed the way the IMP expects.

As soon as the function prologue/epilogue checks LR, the PAC authentication fails →
macOS raises:
EXC_BAD_ACCESS (invalid PAC)

Why normal calls work:
[obj test] routes through objc_msgSend, which sets up a proper authenticated frame.

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by vsosh2025iossecstaticlibb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Programming Help Discussions around programming languages, open source and software development
2 participants