Skip to content
This repository has been archived by the owner on Nov 1, 2020. It is now read-only.

ARM64: Fix Android linker issues #8326

Merged

Conversation

RalfKornmannEnvision
Copy link
Contributor

  • Add implementation for unused function in libunwind that is not removed by the Android linker
  • Fix the data type for the pointer to return address macro as the android linker did not relocate the full address with the wrong type
  • Make all assembler functions hidden. This way they are not added to the GOT. This forces the linker to resolve all calls to the functions itself instead of using the PLT. Using the PLT will trash X16&X17. Some of the functions implemented in assembler require that these two register are not changed. Beside of this using the PLT adds more overhead.

- Add implementation for unused function in libunwind that is not removed by the Android linker
- Fix the data type for the pointer to return address macro as the android linker did not relocate the full address with the wrong type
- Make all assembler functions hidden. This way they are not added to the GOT. This forces the linker to resolve all calls to the functions itself instead of using the PLT. Using the PLT will trash X16&X17. Some of the functions implemented in assembler require that these two register are not changed. Beside of this using the PLT adds more overhead.
Copy link
Member

@jkotas jkotas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks

@jkotas jkotas merged commit 2dfab60 into dotnet:master Sep 14, 2020
@RalfKornmannEnvision RalfKornmannEnvision deleted the ARM64-Android-Linker-Fixes branch September 14, 2020 19:05
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants