-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement unwinding for ARM #5265
Comments
Graydon has been implementing a new, platform-agnostic unwinding strategy that we could use on ARM, at least in the short term. |
Yeah I was trying to use that patch yesterday but there were too many conflicts :( |
Giving "arm-enable-ehabl" option to llvm may make llvm generate frame information for each function. We are investigating how to give that option. I also trying to apply return-unwind. This is my branch to apply the "return unwinding". Any opinion about this? |
@graydon What's the state of return-unwind? |
Looks like llvm implementation of arm call frame information is incomplete. |
I'll refresh the return unwind patch. It's paused pending performance investigation, but I guess can ... plausibly land as an option. |
There are two options to enable unwinding for ARM
|
Partial Fix for #5265 - Enabling LLVM ARM ehabi option. - Add ARM debug information manually for ccall.s - Compile object file using Android-NDK. Current LLVM trunk version can generate ARM debug information for assembly files but it is incomplete for object files. Unwinding on ARM can be done with LLVM trunk(the LLVM submodule of rust has problem on generating ARM debug information). See #5368 The Android-NDK detour(0f89eab) can be removed after LLVM has complete feature of generating ARM debug information for object file.
LLVM
include/llvm/MC/MCAsmInfo.h
includes:enum ExceptionsType { None, DwarfCFI, SjLj, ARM, Win64 };
ARM seems to have its own unwinding format. Here is ARM documentation. LLVM may handle this for us, but it may not. At least, currently, unwinding is broken on ARM.
At the very least, ARM
morestack.S
needs to have manual unwinding information as it was done for i386 and x86_64.See also #908 (for Windows) and #4489 (morestack for ARM).
The text was updated successfully, but these errors were encountered: