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 321961 lld/ELF/Arch/AArch64.cpp
 lld/ELF/Driver.cpp
 lld/ELF/InputFiles.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-gnu-ifunc-plt.s
 lld/test/ELF/aarch64-prel16.s
 lld/test/ELF/aarch64-prel32.s
 lld/test/ELF/emulation-aarch64.s
 lld/test/ELF/lto/aarch64.ll
 
 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.