diff --git a/lld/ELF/Driver.cpp b/lld/ELF/Driver.cpp --- a/lld/ELF/Driver.cpp +++ b/lld/ELF/Driver.cpp @@ -124,6 +124,7 @@ StringSwitch>(S) .Cases("aarch64elf", "aarch64linux", "aarch64_elf64_le_vec", {ELF64LEKind, EM_AARCH64}) + .Cases("aarch64elfb", "aarch64linuxb", {ELF64BEKind, EM_AARCH64}) .Cases("armelf", "armelf_linux_eabi", {ELF32LEKind, EM_ARM}) .Case("elf32_x86_64", {ELF32LEKind, EM_X86_64}) .Cases("elf32btsmip", "elf32btsmipn32", {ELF32BEKind, EM_MIPS}) diff --git a/lld/test/ELF/emulation-aarch64.s b/lld/test/ELF/emulation-aarch64.s --- a/lld/test/ELF/emulation-aarch64.s +++ b/lld/test/ELF/emulation-aarch64.s @@ -53,5 +53,29 @@ # AARCH64-FBSD-NEXT: Flags [ (0x0) # AARCH64-FBSD-NEXT: ] +# RUN: llvm-mc -filetype=obj -triple=aarch64_be-unknown-linux %s -o %t6 +# RUN: ld.lld -maarch64elfb %t6 -o %t7 +# RUN: llvm-readobj -file-headers %t7 | FileCheck --check-prefix=AARCH64BE %s +# RUN: ld.lld -maarch64linuxb %t6 -o %t8 +# RUN: llvm-readobj -file-headers %t8 | FileCheck --check-prefix=AARCH64BE %s +# AARCH64BE: ElfHeader { +# AARCH64BE-NEXT: Ident { +# AARCH64BE-NEXT: Magic: (7F 45 4C 46) +# AARCH64BE-NEXT: Class: 64-bit (0x2) +# AARCH64BE-NEXT: DataEncoding: BigEndian (0x2) +# AARCH64BE-NEXT: FileVersion: 1 +# AARCH64BE-NEXT: OS/ABI: SystemV (0x0) +# AARCH64BE-NEXT: ABIVersion: 0 +# AARCH64BE-NEXT: Unused: (00 00 00 00 00 00 00) +# AARCH64BE-NEXT: } +# AARCH64BE-NEXT: Type: Executable (0x2) +# AARCH64BE-NEXT: Machine: EM_AARCH64 (0xB7) +# AARCH64BE-NEXT: Version: 1 +# AARCH64BE-NEXT: Entry: 0x210000 +# AARCH64BE-NEXT: ProgramHeaderOffset: 0x40 +# AARCH64BE-NEXT: SectionHeaderOffset: 0x10070 +# AARCH64BE-NEXT: Flags [ (0x0) +# AARCH64BE-NEXT: ] + .globl _start _start: