summaryrefslogtreecommitdiff
path: root/arch/x86/arch_x86.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/arch_x86.cpp')
-rw-r--r--arch/x86/arch_x86.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/x86/arch_x86.cpp b/arch/x86/arch_x86.cpp
index a79163da..f639040e 100644
--- a/arch/x86/arch_x86.cpp
+++ b/arch/x86/arch_x86.cpp
@@ -4117,10 +4117,10 @@ public:
case (uint64_t)-1: // Magic number defined in MachOView.cpp
// We need to write a jump absolute `jmp target`
dest[0] = '\xe9';
- ((uint32_t*)&dest[1])[0] = target - (uint32_t)reloc->GetAddress() - 5;
+ ((uint32_t*)&dest[1])[0] = target + (uint32_t)info.addend - (uint32_t)reloc->GetAddress() - 5;
break;
case (uint64_t)-2: // Magic number defined in MachOView.cpp
- dest32[0] = target;
+ dest32[0] = target + (uint32_t)info.addend;
break;
case GENERIC_RELOC_VANILLA:
switch (info.size)
@@ -4307,7 +4307,7 @@ public:
dest64[0] = dest64[0] + info.next->target - target;
break;
case (uint64_t) -2:
- dest64[0] = reloc->GetTarget();
+ dest64[0] = info.target + info.addend;
break;
}
return true;