[llvm] r220119 - [llvm-objdump] Fix mach-o binding decompression error
Nick Kledzik
kledzik at apple.com
Fri Oct 17 18:21:02 PDT 2014
Author: kledzik
Date: Fri Oct 17 20:21:02 2014
New Revision: 220119
URL: http://llvm.org/viewvc/llvm-project?rev=220119&view=rev
Log:
[llvm-objdump] Fix mach-o binding decompression error
Added:
llvm/trunk/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64 (with props)
llvm/trunk/test/tools/llvm-objdump/macho-bind2.test
Modified:
llvm/trunk/lib/Object/MachOObjectFile.cpp
Modified: llvm/trunk/lib/Object/MachOObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/MachOObjectFile.cpp?rev=220119&r1=220118&r2=220119&view=diff
==============================================================================
--- llvm/trunk/lib/Object/MachOObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/MachOObjectFile.cpp Fri Oct 17 20:21:02 2014
@@ -1974,20 +1974,20 @@ void MachOBindEntry::moveNext() {
SegmentOffset) << "\n");
return;
case MachO::BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB:
- AdvanceAmount = readULEB128();
+ AdvanceAmount = readULEB128() + PointerSize;
RemainingLoopCount = 0;
if (TableKind == Kind::Lazy)
Malformed = true;
DEBUG_WITH_TYPE(
"mach-o-bind",
- llvm::dbgs() << "BIND_OPCODE_DO_BIND_IMM_TIMES: "
+ llvm::dbgs() << "BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB: "
<< format("SegmentOffset=0x%06X", SegmentOffset)
<< ", AdvanceAmount=" << AdvanceAmount
<< ", RemainingLoopCount=" << RemainingLoopCount
<< "\n");
return;
case MachO::BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED:
- AdvanceAmount = ImmValue * PointerSize;
+ AdvanceAmount = ImmValue * PointerSize + PointerSize;
RemainingLoopCount = 0;
if (TableKind == Kind::Lazy)
Malformed = true;
Added: llvm/trunk/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64?rev=220119&view=auto
==============================================================================
Binary file - no diff available.
Propchange: llvm/trunk/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64
------------------------------------------------------------------------------
svn:executable = *
Propchange: llvm/trunk/test/tools/llvm-objdump/Inputs/bind2.macho-x86_64
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: llvm/trunk/test/tools/llvm-objdump/macho-bind2.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/macho-bind2.test?rev=220119&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/macho-bind2.test (added)
+++ llvm/trunk/test/tools/llvm-objdump/macho-bind2.test Fri Oct 17 20:21:02 2014
@@ -0,0 +1,5 @@
+# RUN: llvm-objdump -macho -bind %p/Inputs/bind2.macho-x86_64 | FileCheck %s
+
+# CHECK: __DATA __data 0x00001008 pointer 0 libSystem _malloc
+# CHECK: __DATA __data 0x00001050 pointer 0 libSystem _malloc
+# CHECK: __DATA __data 0x00001458 pointer 0 libSystem _malloc
More information about the llvm-commits
mailing list