From 5dbda1ece15293d15445a80d035ed7dc39a17373 Mon Sep 17 00:00:00 2001 From: Martin Storsjo Date: Thu, 13 Jul 2017 17:03:02 +0000 Subject: [PATCH] [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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307927 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../AArch64/Inputs/reloc-addend.obj.macho-aarch64 | Bin 0 -> 424 bytes .../llvm-objdump/AArch64/macho-reloc-addend.test | 6 ++++++ tools/llvm-objdump/llvm-objdump.cpp | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64 create mode 100644 test/tools/llvm-objdump/AArch64/macho-reloc-addend.test diff --git a/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64 b/test/tools/llvm-objdump/AArch64/Inputs/reloc-addend.obj.macho-aarch64 new file mode 100644 index 0000000000000000000000000000000000000000..58ed3c7a48fc5e67a957095a1257488c1829ff81 GIT binary patch literal 424 zcmX^A>+L@t1_nk3AOI08Kr8^}fkYS>B!PGan1!7H>IDM>s2&)f9ViOIFr(t*OHwOJ zAZkHme0+#&LgetPlainRelocationExternal(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 SOrErr = SI->getName();