[llvm] r307927 - [llvm-objdump] Properly print MachO aarch64 addend relocations

Martin Storsjo via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 13 10:03:02 PDT 2017


Author: mstorsjo
Date: Thu Jul 13 10:03:02 2017
New Revision: 307927

URL: http://llvm.org/viewvc/llvm-project?rev=307927&view=rev
Log:
[llvm-objdump] Properly print MachO aarch64 addend relocations

Previously such relocations fell into the last case for local
symbols, using the relocation addend as symbol index, leading to
a crash.

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

Added:
    llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64
    llvm/trunk/test/tools/llvm-objdump/AArch64/macho-reloc-addend.test
Modified:
    llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp

Added: llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64?rev=307927&view=auto
==============================================================================
Binary files llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64 (added) and llvm/trunk/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64 Thu Jul 13 10:03:02 2017 differ

Added: llvm/trunk/test/tools/llvm-objdump/AArch64/macho-reloc-addend.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/AArch64/macho-reloc-addend.test?rev=307927&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/AArch64/macho-reloc-addend.test (added)
+++ llvm/trunk/test/tools/llvm-objdump/AArch64/macho-reloc-addend.test Thu Jul 13 10:03:02 2017
@@ -0,0 +1,6 @@
+RUN: llvm-objdump -r %p/Inputs/reloc-addend.obj.macho-aarch64 | FileCheck %s
+
+CHECK-DAG: 0000000000000004 ARM64_RELOC_ADDEND 0x999
+CHECK-DAG: 0000000000000004 ARM64_RELOC_PAGEOFF12 _stringbuf
+CHECK-DAG: 0000000000000000 ARM64_RELOC_ADDEND 0x999
+CHECK-DAG: 0000000000000000 ARM64_RELOC_PAGE21 _stringbuf

Modified: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp?rev=307927&r1=307926&r2=307927&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp Thu Jul 13 10:03:02 2017
@@ -870,7 +870,10 @@ static void printRelocationTargetName(co
   bool isExtern = O->getPlainRelocationExternal(RE);
   uint64_t Val = O->getPlainRelocationSymbolNum(RE);
 
-  if (isExtern) {
+  if (O->getAnyRelocationType(RE) == MachO::ARM64_RELOC_ADDEND) {
+    fmt << format("0x%x", Val);
+    return;
+  } else if (isExtern) {
     symbol_iterator SI = O->symbol_begin();
     advance(SI, Val);
     Expected<StringRef> SOrErr = SI->getName();




More information about the llvm-commits mailing list