This patch adds
- Big-endian values for R_AARCH64_{ABS,PREL}{16,32,64} and R_AARCH64_PLT32
- aarch64elfb & aarch64linuxb BFD emulations
- elf64-bigaarch64 output format (bfdname)
Paths
| Differential D96188
[ELF] Support aarch64_be ClosedPublic Authored by MaskRay on Feb 5 2021, 5:03 PM.
Details
Summary This patch adds
Diff Detail
Event TimelineHerald added subscribers: danielkiss, kristof.beyls, arichardson, emaste. · View Herald TranscriptFeb 5 2021, 5:03 PM Comment Actions Tested in an aarch64_be rootfs ld.lld can link gcc compiled object files and produce working executables and shared objects. MaskRay added a parent revision: D96211: [llvm-objdump] Support PLT decoding for aarch64_be.Feb 6 2021, 12:55 PM Comment Actions Changes LGTM. I think the PLT32 relocation also needs to be write32 rather than write32le (https://github.com/ARM-software/abi-aa/blob/master/aaelf64/aaelf64.rst#575static-data-relocations) I couldn't immediately spot anything else missing.
This revision is now accepted and ready to land.Feb 8 2021, 4:58 AM This revision was landed with ongoing or failed builds.Feb 8 2021, 8:55 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 321955 lld/ELF/Arch/AArch64.cpp
lld/ELF/Driver.cpp
lld/ELF/ScriptParser.cpp
lld/test/ELF/aarch64-abs16.s
lld/test/ELF/aarch64-abs32.s
lld/test/ELF/aarch64-data-relocs.s
lld/test/ELF/aarch64-prel16.s
lld/test/ELF/aarch64-prel32.s
lld/test/ELF/emulation-aarch64.s
|
I think PLT32 should be write as it is data (a 32-bit offset).
At the moment it is only used by Fuchsia for relative vtables so I wouldn't expect this to show up in linux.