diff options
author | Egor Chesakov <Egor.Chesakov@microsoft.com> | 2018-06-27 16:50:15 -0700 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2018-06-27 16:50:15 -0700 |
commit | 1a24a272d018f643694d455ba4c432b4bb36adde (patch) | |
tree | db6cae1b3a37fe49a9b8f035bf831512ab8eff58 | |
parent | 634b609ee641980baa8d44160d4701ab94daec49 (diff) | |
download | coreclr-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.h | 6 | ||||
-rw-r--r-- | src/zap/zapimport.cpp | 10 | ||||
-rw-r--r-- | src/zap/zapinfo.cpp | 2 | ||||
-rw-r--r-- | src/zap/zaprelocs.cpp | 6 |
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: { |