-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
EH table missmatch on ARM32 #6246
Comments
The JIT inserts extra no-op after the call on amd64. Looks like that this piece of logic is missing for arm. I would look into how it gets inserted on amd64 and replicate the same on arm. |
I do not remember exactly; thus I cannot sure if this is the case that i've found with @leemgs. However, there had been similar issues caused by LOCALE information. Yes, that looks extremely weird, but the behavior of coreclr RELEASE (not debug) changed erratic based on LOCALE. (e.g., where $ export shows no LOCALE (LC) related info vs where $ export shows something like "ko.kr_UTF-8") Would you show me what |
@myungjoo Here is my target setting.
|
@chunseoklee The patch you refer to was not applied: it was proposed, but a better solution was implemented. See the discussion in dotnet/coreclr#4503. I don't believe the JIT needs to implement the additional NOP insertion on ARM32 due to the reasons stated in that PR conversation. |
@janvorli please, check this approach. [https://github.com/chunseoklee/coreclr/commit/ed9aa2af1fca44074e1574cb05bbe0c44eab03e8] This patch is based on previous discussion( dotnet/coreclr#4503) ), which is not merged. I am not certain this patch is valid. I already have tested on arm target and works fine. |
@chunseoklee This problem could be solved by setting correct value to |
patch updated. IMHO, the patch looks OK. |
Env : arm32/linux
Some coreclr unit tests do not pass since it does not find Exception handler. This occurs only if the executable is compiled with release mode. See the following code.
The jit code for above example looks like :
In this example, AV happens on IL 000020(actually inside AA:test function). But when looking for its handler, its controlPc is set to IL 000022, not IL000020(is this bug ?)
When I set COMPlus_JITMinOpts=1, it pass the test. Note that there is dummy(silly) jump code(IL000026) in code below.
I think that this kind of patch [https://github.com/dotnet/coreclr/pull/4503/commits/40b23c0b8fc8da2e8f0306966c15a63a33a4bccc] should be applied. But one concern is that such dummy instruction could be removed on jit optimization step.
The text was updated successfully, but these errors were encountered: