[PATCH] D112843: [aarch64/mac] Correctly disassembly @TLVPPAGE(OFF) relocs

Nico Weber via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 29 12:53:59 PDT 2021


thakis created this revision.
thakis added a reviewer: lhames.
Herald added subscribers: hiraditya, kristof.beyls.
thakis requested review of this revision.
Herald added a project: LLVM.

`llvm-otool -tV foo.o` and `llvm-objdump --macho -d foo.o` would
previously fail on object files containing @TLVPPAGE or @TLVPPAGEOFF relocs.

Fixes PR52356.


https://reviews.llvm.org/D112843

Files:
  llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
  llvm/test/MC/AArch64/arm64-tls-modifiers-darwin.s


Index: llvm/test/MC/AArch64/arm64-tls-modifiers-darwin.s
===================================================================
--- llvm/test/MC/AArch64/arm64-tls-modifiers-darwin.s
+++ llvm/test/MC/AArch64/arm64-tls-modifiers-darwin.s
@@ -1,5 +1,7 @@
 ; RUN: llvm-mc -triple=arm64-apple-ios7.0 %s -o - | FileCheck %s
-; RUN: llvm-mc -triple=arm64-apple-ios7.0 -filetype=obj %s -o - | llvm-objdump -r - | FileCheck %s --check-prefix=CHECK-OBJ
+; RUN: llvm-mc -triple=arm64-apple-ios7.0 -filetype=obj %s -o %t.o
+; RUN: llvm-objdump -r %t.o | FileCheck %s --check-prefix=CHECK-OBJ
+; RUN: llvm-otool -tV %t.o | FileCheck %s --check-prefix=CHECK-DIS
 
         adrp x2, _var at TLVPPAGE
         ldr x0, [x15, _var at TLVPPAGEOFF]
@@ -11,3 +13,7 @@
 ; CHECK-OBJ: 8 ARM64_RELOC_TLVP_LOAD_PAGEOFF12 _var
 ; CHECK-OBJ: 4 ARM64_RELOC_TLVP_LOAD_PAGEOFF12 _var
 ; CHECK-OBJ: 0 ARM64_RELOC_TLVP_LOAD_PAGE21 _var
+
+; CHECK-DIS: 0000000000000000 adrp x2, _var at TLVPPAGE
+; CHECK-DIS: 0000000000000004 ldr x0, [x15, _var at TLVPPAGEOFF]
+; CHECK-DIS: 0000000000000008 add x30, x0, _var at TLVPPAGEOFF
Index: llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
===================================================================
--- llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
+++ llvm/lib/Target/AArch64/Disassembler/AArch64ExternalSymbolizer.cpp
@@ -34,7 +34,9 @@
   case LLVMDisassembler_VariantKind_ARM64_GOTPAGEOFF:
     return MCSymbolRefExpr::VK_GOTPAGEOFF;
   case LLVMDisassembler_VariantKind_ARM64_TLVP:
+    return MCSymbolRefExpr::VK_TLVPPAGE;
   case LLVMDisassembler_VariantKind_ARM64_TLVOFF:
+    return MCSymbolRefExpr::VK_TLVPPAGEOFF;
   default:
     llvm_unreachable("bad LLVMDisassembler_VariantKind");
   }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D112843.383471.patch
Type: text/x-patch
Size: 1738 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211029/95ec4af9/attachment.bin>


More information about the llvm-commits mailing list