Skip to content
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

AArch64: Fix helper trampoline lookup of ARM64Trg1SymImmInstruction #7083

Merged

Conversation

Akira1Saitoh
Copy link
Contributor

OMR #7077 introduced the callUsesHelperImplementation() query to add a TR_Helper relocation for methods that are actually helper calls. That PR also changes the way the binary encoder finds necessary trampolines. Before OMR #7077, methodTrampolineLookup() was used for call targets whose method object returns false for the isHelper() query. The behavior was changed to call findHelperTrampoline() instead of methodTrampolineLookup() if the callUsesHelperImplementation() query returns true.

The problem is that the symbol reference for a certain method (which is actually a helper call) does not have a valid helper index as the reference number, thus causing findHelperTrampoline to return an incorrect address.

This commit fixes the binary encoder to use methodTrampolineLookup for the call target whose method object returns false for the isHelper() query.

OMR eclipse-omr#7077 introduced the `callUsesHelperImplementation()` query to add
a `TR_Helper` relocation for methods that are actually helper calls.
That PR also changes the way the binary encoder finds necessary trampolines.
Before OMR eclipse-omr#7077, `methodTrampolineLookup()` was used for call targets
whose method object returns false for the `isHelper()` query. The behavior
was changed to call `findHelperTrampoline()` instead of `methodTrampolineLookup()`
if the `callUsesHelperImplementation()` query returns true.

The problem is that the symbol reference for a certain method (which is
actually a helper call) does not have a valid helper index as the reference
number, thus causing `findHelperTrampoline` to return an incorrect address.

This commit fixes the binary encoder to use `methodTrampolineLookup`
for the call target whose method object returns false for the `isHelper()` query.

Signed-off-by: Akira Saitoh <saiaki@jp.ibm.com>
@knn-k
Copy link
Contributor

knn-k commented Aug 1, 2023

Jenkins build aarch64,amac

@knn-k
Copy link
Contributor

knn-k commented Aug 1, 2023

Jenkins build amac

@knn-k knn-k merged commit cbe1877 into eclipse-omr:master Aug 1, 2023
5 checks passed
@Akira1Saitoh Akira1Saitoh changed the title AArch64: Fix helper trampoline lookup fo ARM64Trg1SymImmInstruction AArch64: Fix helper trampoline lookup of ARM64Trg1SymImmInstruction Aug 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants