summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgor Chesakov <Egor.Chesakov@microsoft.com>2018-06-27 16:50:15 -0700
committerJan Kotas <jkotas@microsoft.com>2018-06-27 16:50:15 -0700
commit1a24a272d018f643694d455ba4c432b4bb36adde (patch)
treedb6cae1b3a37fe49a9b8f035bf831512ab8eff58
parent634b609ee641980baa8d44160d4701ab94daec49 (diff)
downloadcoreclr-1a24a272d018f643694d455ba4c432b4bb36adde.tar.gz
coreclr-1a24a272d018f643694d455ba4c432b4bb36adde.tar.bz2
coreclr-1a24a272d018f643694d455ba4c432b4bb36adde.zip
Cross-bitness in ZapRelocs (#18665)
* Cast to UINT32 to avoid warnings on Windows in ZapBaseRelocs::WriteReloc in src/zap/zaprelocs.cpp * Replace TADDR with DWORD in ZapInfo::recordRelocation IMAGE_REL_BASED_PTR in src/zap/zapinfo.cpp * Replace sizeof(cell) with TARGET_POINTER_SIZE in src/zap/zapimport.cpp * Replace TADDR with DWORD in ZapBaseRelocs::WriteReloc IMAGE_REL_BASED_PTR in src/zap/zaprelocs.cpp * Define target_size_t type * Replace TADDR with target_size_t in ZapInfo::recordRelocation in src/zap/zapinfo.cpp * Replace SIZE_T PVOID with target_size_t in src/zap/zapimport.cpp * Replace TADDR with target_size_t in src/zap/zaprelocs.cpp * Rename target_size_t to TARGET_POINTER_TYPE
-rw-r--r--src/zap/common.h6
-rw-r--r--src/zap/zapimport.cpp10
-rw-r--r--src/zap/zapinfo.cpp2
-rw-r--r--src/zap/zaprelocs.cpp6
4 files changed, 15 insertions, 9 deletions
diff --git a/src/zap/common.h b/src/zap/common.h
index 3db0b84eaf..c4397c20bc 100644
--- a/src/zap/common.h
+++ b/src/zap/common.h
@@ -27,6 +27,12 @@
#endif
#endif // !_TARGET_X86_ || FEATURE_PAL
+#ifdef _TARGET_64BIT_
+typedef unsigned __int64 TARGET_POINTER_TYPE;
+#else
+typedef unsigned int TARGET_POINTER_TYPE;
+#endif
+
#include "utilcode.h"
#include "corjit.h"
#include "jithost.h"
diff --git a/src/zap/zapimport.cpp b/src/zap/zapimport.cpp
index 49ec137973..e35d0b9de3 100644
--- a/src/zap/zapimport.cpp
+++ b/src/zap/zapimport.cpp
@@ -362,12 +362,12 @@ void ZapImport::Save(ZapWriter * pZapWriter)
{
if (IsReadyToRunCompilation())
{
- SIZE_T value = 0;
+ TARGET_POINTER_TYPE value = 0;
pZapWriter->Write(&value, sizeof(value));
return;
}
- SIZE_T token = CORCOMPILE_TAG_TOKEN(GetBlob()->GetRVA());
+ TARGET_POINTER_TYPE token = CORCOMPILE_TAG_TOKEN(GetBlob()->GetRVA());
pZapWriter->Write(&token, sizeof(token));
}
@@ -639,7 +639,7 @@ public:
{
ZapImage * pImage = ZapImage::GetImage(pZapWriter);
- PVOID cell;
+ TARGET_POINTER_TYPE cell;
pImage->WriteReloc(&cell, 0, m_pDelayLoadHelper, 0, IMAGE_REL_BASED_PTR);
pZapWriter->Write(&cell, sizeof(cell));
}
@@ -745,7 +745,7 @@ public:
{
ZapImage * pImage = ZapImage::GetImage(pZapWriter);
- PVOID cell;
+ TARGET_POINTER_TYPE cell;
pImage->WriteReloc(&cell, 0, m_pDelayLoadHelper, 0, IMAGE_REL_BASED_PTR);
pZapWriter->Write(&cell, sizeof(cell));
}
@@ -1725,7 +1725,7 @@ public:
{
ZapImage * pImage = ZapImage::GetImage(pZapWriter);
- PVOID cell;
+ TARGET_POINTER_TYPE cell;
pImage->WriteReloc(&cell, 0, m_pDelayLoadHelper, 0, IMAGE_REL_BASED_PTR);
pZapWriter->Write(&cell, sizeof(cell));
}
diff --git a/src/zap/zapinfo.cpp b/src/zap/zapinfo.cpp
index 634a63e331..40ab579e02 100644
--- a/src/zap/zapinfo.cpp
+++ b/src/zap/zapinfo.cpp
@@ -2574,7 +2574,7 @@ void ZapInfo::recordRelocation(void *location, void *target,
break;
case IMAGE_REL_BASED_PTR:
- *(UNALIGNED TADDR *)location = (TADDR)targetOffset;
+ *(UNALIGNED TARGET_POINTER_TYPE *)location = (TARGET_POINTER_TYPE)targetOffset;
break;
#if defined(_TARGET_X86_) || defined(_TARGET_AMD64_)
diff --git a/src/zap/zaprelocs.cpp b/src/zap/zaprelocs.cpp
index 3718f2c99e..abfa76b30c 100644
--- a/src/zap/zaprelocs.cpp
+++ b/src/zap/zaprelocs.cpp
@@ -48,7 +48,7 @@ void ZapBaseRelocs::WriteReloc(PVOID pSrc, int offset, ZapNode * pTarget, int ta
// Misaligned relocs disable ASLR on ARM. We should never ever emit them.
_ASSERTE(IS_ALIGNED(rva, TARGET_POINTER_SIZE));
#endif
- *(UNALIGNED TADDR *)pLocation = pActualTarget;
+ *(UNALIGNED TARGET_POINTER_TYPE *)pLocation = (TARGET_POINTER_TYPE)pActualTarget;
break;
case IMAGE_REL_BASED_RELPTR:
@@ -92,7 +92,7 @@ void ZapBaseRelocs::WriteReloc(PVOID pSrc, int offset, ZapNode * pTarget, int ta
// description of IMAGE_REL_BASED_REL_THUMB_MOV32_PCREL
const UINT32 offsetCorrection = 12;
- UINT32 imm32 = pActualTarget - (pSite + offsetCorrection);
+ UINT32 imm32 = UINT32(pActualTarget - (pSite + offsetCorrection));
PutThumb2Mov32((UINT16 *)pLocation, imm32);
@@ -122,7 +122,7 @@ void ZapBaseRelocs::WriteReloc(PVOID pSrc, int offset, ZapNode * pTarget, int ta
}
// IMAGE_REL_BASED_THUMB_BRANCH24 does not need base reloc entry
return;
-#endif
+#endif // defined(_TARGET_ARM_)
#if defined(_TARGET_ARM64_)
case IMAGE_REL_ARM64_BRANCH26:
{