[llvm-objdump] Support PLT decoding for aarch64_be
authorFangrui Song <i@maskray.me>
Mon, 8 Feb 2021 16:50:25 +0000 (08:50 -0800)
committerFangrui Song <i@maskray.me>
Mon, 8 Feb 2021 16:50:26 +0000 (08:50 -0800)
Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D96211

llvm/lib/Object/ELFObjectFile.cpp
llvm/test/tools/llvm-objdump/ELF/AArch64/plt.test

index 91871a6..faf614a 100644 (file)
@@ -581,6 +581,7 @@ ELFObjectFileBase::getPltAddresses() const {
       JumpSlotReloc = ELF::R_X86_64_JUMP_SLOT;
       break;
     case Triple::aarch64:
+    case Triple::aarch64_be:
       JumpSlotReloc = ELF::R_AARCH64_JUMP_SLOT;
       break;
     default:
index 915b1c0..6252c63 100644 (file)
@@ -6,8 +6,9 @@
 # CHECK: bl {{.*}} <__cfi_slowpath@plt>
 
 # RUN: yaml2obj %s -o %t.aarch64
-# RUN: llvm-objdump -d --mattr=+bti %t.aarch64 | \
-# RUN:   FileCheck --check-prefix=CHECK-BTI %s
+# RUN: llvm-objdump -d --mattr=+bti %t.aarch64 | FileCheck --check-prefix=CHECK-BTI %s
+# RUN: yaml2obj -DENDIAN=MSB %s -o %t.aarch64_be
+# RUN: llvm-objdump -d --mattr=+bti %t.aarch64_be | FileCheck --check-prefix=CHECK-BTI %s
 # CHECK-BTI: bl {{.*}} <f1@plt>
 # CHECK-BTI: bl {{.*}} <f2@plt>
 # CHECK-BTI: Disassembly of section .plt:
@@ -34,7 +35,7 @@
 --- !ELF
 FileHeader:
   Class:   ELFCLASS64
-  Data:    ELFDATA2LSB
+  Data:    ELFDATA2[[ENDIAN=LSB]]
   Type:    ET_EXEC
   Machine: EM_AARCH64
 Sections:
@@ -62,6 +63,7 @@ Sections:
     Content: 5F2403D5F07BBFA910010090110A40F91042009120021FD61F2003D51F2003D55F2403D510010090110E40F9106200919F2103D520021FD65F2403D510010090111240F9108200919F2103D520021FD6
   - Name:    .got.plt
     Type:    SHT_PROGBITS
+## The content is in little-endian, but it does not affect aarch64_be PLT decoding.
     Content: '000000000000000000000000000000000000000000000000100021000000000010002100000000001000210000000000'
 Symbols:
   - Name:    f1