-
Notifications
You must be signed in to change notification settings - Fork 194
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
[PAUTHABIELF64] Possible typo in R_AARCH64_AUTH_GOT_LO12_NC
#253
Comments
I'm on vacation this week. Will get back to you after Easter. It is most likely a typo, my memory is that I wanted to match the existing dynamic relocations. I'll check when I get back to see if there is any other reason. |
As pointed out in ARM-software#253 the R_AARCH64_AUTH_GOT_LO12_NC is meant to be the AUTH variant of R_AARCH64_LD64_GOT_LO12_NC. As there is also a R_AARCH64_LD32_GOT_LO12_NC relocation rename the relocation to R_AARCH64_LD64_AUTH_GOT_LO12_NC. These relocations are in the appendix as we are currently expecting the GOT to be RELRO and unsigned in most signing schemas.
I agree this is a typo. I've created #255 to fix. To the best of my knowledge the Appendix on GOT generating relocations hasn't been implemented before. At the time of writing the interested parties preferred to have a RELRO unsigned GOT. |
There is no equivalent for this relocation in the standard ABI it could be used for runtime code to calculate the address of a GOT slot in a similar way to obtaining the address of a static data item. However there is no way to express the address of a GOT slot in source code, and the compiler can use a load to get the contents of the GOT slot directly without first calculating the address. Part of ARM-software#253
There is no equivalent for this relocation in the standard ABI it is used by runtime code to calculate the address of a GOT slot so it can be used as one of the inputs to an authenticate instruction. Add a note that this matches up with the :got_auth_lo12: operator for future reference. Part of ARM-software#253
As pointed out in #253 the R_AARCH64_AUTH_GOT_LO12_NC is meant to be the AUTH variant of R_AARCH64_LD64_GOT_LO12_NC. As there is also a R_AARCH64_LD32_GOT_LO12_NC relocation rename the relocation to R_AARCH64_LD64_AUTH_GOT_LO12_NC. These relocations are in the appendix as we are currently expecting the GOT to be RELRO and unsigned in most signing schemas.
There is no equivalent for this relocation in the standard ABI it is used by runtime code to calculate the address of a GOT slot so it can be used as one of the inputs to an authenticate instruction. Add a note that this matches up with the :got_auth_lo12: operator for future reference. Part of #253
Closing the issue as resolved in #255 |
In https://github.com/ARM-software/abi-aa/blob/main/pauthabielf64/pauthabielf64.rst#auth-variant-got-generating-relocations, AUTH variants of GOT-generating relocations are defined. Their names are in most cases basically the same as corresponding non-AUTH relocs names, but for
R_AARCH64_AUTH_GOT_LO12_NC
, it's not true: the non-AUTH variant containsLD64
(R_<CLS>_LD64_GOT_LO12_NC
), so the AUTH variant should probably beR_AARCH64_AUTH_LD64_GOT_LO12_NC
. IfLD64
is considered redundant since we don't have 32-bit versions of AUTH relocations, it should be probably deleted from other AUTH relocs names: inR_AARCH64_AUTH_LD64_GOTOFF_LO15
andR_AARCH64_AUTH_LD64_GOTPAGE_LO15
,LD64
is present.Is
LD64
omitted inR_AARCH64_AUTH_GOT_LO12_NC
intentionally? If yes, it would be nice if you explain rationale of such decision.The text was updated successfully, but these errors were encountered: