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.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/x86/arch_x86.cpp b/arch/x86/arch_x86.cpp
index f639040e..af3f4901 100644
--- a/arch/x86/arch_x86.cpp
+++ b/arch/x86/arch_x86.cpp
@@ -4416,6 +4416,16 @@ public:
memcpy(dest, (uint8_t*)&write, sizeof(uint64_t));
return true;
}
+ case R_X86_64_DTPMOD64: {
+ uint64_t write = 0;
+ memcpy(dest, (uint8_t*)&write, sizeof(uint64_t));
+ return true;
+ }
+ case R_X86_64_DTPOFF64: {
+ uint64_t write = reloc->GetTarget() + info.addend;
+ memcpy(dest, (uint8_t*)&write, sizeof(uint64_t));
+ return true;
+ }
default:
return RelocationHandler::ApplyRelocation(view, arch, reloc, dest, len);
}
@@ -4509,6 +4519,21 @@ public:
reloc.size = 8;
reloc.truncateSize = 8;
break;
+ case R_X86_64_DTPMOD64:
+ reloc.pcRelative = false;
+ reloc.baseRelative = false;
+ reloc.hasSign = false;
+ reloc.size = 8;
+ reloc.truncateSize = 8;
+ reloc.symbolIndex = 0;
+ break;
+ case R_X86_64_DTPOFF64:
+ reloc.pcRelative = false;
+ reloc.baseRelative = false;
+ reloc.hasSign = false;
+ reloc.size = 8;
+ reloc.truncateSize = 8;
+ break;
case R_X86_64_GOTOFF64:
case R_X86_64_GOT64:
case R_X86_64_GOTPLT64: