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

TR_RelocationRecordClassAddress is relocated incorrectly on platforms that use an ordered pair #15696

Closed
dsouzai opened this issue Aug 10, 2022 · 1 comment · Fixed by #20144

Comments

@dsouzai
Copy link
Contributor

dsouzai commented Aug 10, 2022

In , the new constantpool address is acquired via

uintptr_t oldValue = (uintptr_t) reloTarget->loadAddress(reloLocationHigh, reloLocationLow);
uintptr_t newConstantPool = computeNewConstantPool(reloRuntime, reloTarget, oldValue);

However, because the oldValue read from the loaded code is an old J9Class pointer, the code that calculates the new constantpool pointer in

uintptr_t methodCP = oldValue - oldCPBase + (uintptr_t)J9_CP_FROM_METHOD((J9Method *)ramMethod);

is going to end up yielding an invalid pointer. I believe the reason there hasn't been any issues is because this path is likely disabled.

Copy link

Issue Number: 15696
Status: Closed
Actual Components: comp:jit, comp:jit:aot
Actual Assignees: No one :(
PR Assignees: luke-li-2003

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant