diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/test/tools/llvm-objdump/ARM/Inputs/reloc-half.obj.macho-arm | bin | 0 -> 360 bytes | |||
-rw-r--r-- | llvm/test/tools/llvm-objdump/ARM/macho-reloc-half.test | 4 | ||||
-rw-r--r-- | llvm/tools/llvm-objdump/llvm-objdump.cpp | 2 |
3 files changed, 5 insertions, 1 deletions
diff --git a/llvm/test/tools/llvm-objdump/ARM/Inputs/reloc-half.obj.macho-arm b/llvm/test/tools/llvm-objdump/ARM/Inputs/reloc-half.obj.macho-arm Binary files differnew file mode 100644 index 00000000000..79d19962e00 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/Inputs/reloc-half.obj.macho-arm diff --git a/llvm/test/tools/llvm-objdump/ARM/macho-reloc-half.test b/llvm/test/tools/llvm-objdump/ARM/macho-reloc-half.test new file mode 100644 index 00000000000..888c7f58911 --- /dev/null +++ b/llvm/test/tools/llvm-objdump/ARM/macho-reloc-half.test @@ -0,0 +1,4 @@ +RUN: llvm-objdump -r %p/Inputs/reloc-half.obj.macho-arm | FileCheck %s + +CHECK-DAG: 00000004 ARM_RELOC_HALF :upper16:(_stringbuf) +CHECK-DAG: 00000000 ARM_RELOC_HALF :lower16:(_stringbuf) diff --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp index be5635a3d4c..812f1af3ac6 100644 --- a/llvm/tools/llvm-objdump/llvm-objdump.cpp +++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp @@ -1032,7 +1032,7 @@ static std::error_code getRelocationValueString(const MachOObjectFile *Obj, case MachO::ARM_RELOC_HALF_SECTDIFF: { // Half relocations steal a bit from the length field to encode // whether this is an upper16 or a lower16 relocation. - bool isUpper = Obj->getAnyRelocationLength(RE) >> 1; + bool isUpper = (Obj->getAnyRelocationLength(RE) & 0x1) == 1; if (isUpper) fmt << ":upper16:("; |