diff options
author | Bruce Forstall <brucefo@microsoft.com> | 2016-08-22 21:52:16 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-22 21:52:16 -0700 |
commit | 5cc75c3933979b788073ff065d81916680bccf5a (patch) | |
tree | e8a40d5499fbee513d9a3b7e32354c657651fe35 /src/ToolBox | |
parent | 1aa8df1fe0f2b05160b24f4cfb246702db94cc49 (diff) | |
parent | f2324b6744f05a051829a2aa65b745bb073d6f98 (diff) | |
download | coreclr-5cc75c3933979b788073ff065d81916680bccf5a.tar.gz coreclr-5cc75c3933979b788073ff065d81916680bccf5a.tar.bz2 coreclr-5cc75c3933979b788073ff065d81916680bccf5a.zip |
Merge pull request #6848 from BruceForstall/FixArm64SuperPmi2
Fix superpmi arm64 build
Diffstat (limited to 'src/ToolBox')
-rw-r--r-- | src/ToolBox/superpmi/superpmi-shared/compileresult.cpp | 22 | ||||
-rw-r--r-- | src/ToolBox/superpmi/superpmi-shared/runtimedetails.h | 10 |
2 files changed, 22 insertions, 10 deletions
diff --git a/src/ToolBox/superpmi/superpmi-shared/compileresult.cpp b/src/ToolBox/superpmi/superpmi-shared/compileresult.cpp index dfb7ecd7de..8b7961d664 100644 --- a/src/ToolBox/superpmi/superpmi-shared/compileresult.cpp +++ b/src/ToolBox/superpmi/superpmi-shared/compileresult.cpp @@ -729,7 +729,7 @@ void CompileResult::applyRelocs(unsigned char *block1, ULONG blocksize1, void *o break; #endif // _TARGET_X86_ - #if defined(_TARGET_X86_) || defined(_TARGET_AMD64_) + #if defined(_TARGET_X86_) || defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) case IMAGE_REL_BASED_REL32: { DWORDLONG target = tmp.target + tmp.addlDelta; @@ -737,7 +737,7 @@ void CompileResult::applyRelocs(unsigned char *block1, ULONG blocksize1, void *o DWORDLONG baseAddr = fixupLocation + sizeof(INT32); INT64 delta = (INT64)((BYTE *)target - baseAddr); - #if defined(_TARGET_AMD64_) + #if defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) if (delta != (INT64)(int)delta) { // This isn't going to fit in a signed 32-bit address. Use something that will fit, @@ -750,11 +750,11 @@ void CompileResult::applyRelocs(unsigned char *block1, ULONG blocksize1, void *o delta = newdelta; } - #endif // defined(_TARGET_AMD64_) + #endif // defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) if (delta != (INT64)(int)delta) { - #if defined(_TARGET_AMD64_) + #if defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) LogError("REL32 relocation overflows field! delta=0x%016llX", delta); #else LogError("REL32 relocation overflows field! delta=0x%08X", delta); @@ -770,9 +770,9 @@ void CompileResult::applyRelocs(unsigned char *block1, ULONG blocksize1, void *o } } break; - #endif // defined(_TARGET_X86_) || defined(_TARGET_AMD64_) + #endif // defined(_TARGET_X86_) || defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) - #if defined(_TARGET_AMD64_) + #if defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) case IMAGE_REL_BASED_DIR64: { DWORDLONG fixupLocation = tmp.location + tmp.slotNum; @@ -786,7 +786,15 @@ void CompileResult::applyRelocs(unsigned char *block1, ULONG blocksize1, void *o } } break; - #endif // defined(_TARGET_AMD64_) + #endif // defined(_TARGET_AMD64_) || defined(_TARGET_ARM64_) + + #ifdef _TARGET_ARM64_ + case IMAGE_REL_ARM64_BRANCH26: // 26 bit offset << 2 & sign ext, for B and BL + case IMAGE_REL_ARM64_PAGEBASE_REL21: + case IMAGE_REL_ARM64_PAGEOFFSET_12A: + LogError("Unimplemented reloc type %u", tmp.fRelocType); + break; + #endif // _TARGET_ARM64_ default: LogError("Unknown reloc type %u", tmp.fRelocType); diff --git a/src/ToolBox/superpmi/superpmi-shared/runtimedetails.h b/src/ToolBox/superpmi/superpmi-shared/runtimedetails.h index 77caafc181..4677299e3a 100644 --- a/src/ToolBox/superpmi/superpmi-shared/runtimedetails.h +++ b/src/ToolBox/superpmi/superpmi-shared/runtimedetails.h @@ -11,13 +11,17 @@ //Our little collection of enough of the CLR data to get the JIT up and working... #define FEATURE_CLRSQM -#ifdef _M_X64 + +#if !defined(_TARGET_AMD64_) && !defined(_TARGET_X86_) && !defined(_TARGET_ARM64_) && !defined(_TARGET_ARM_) +#if defined(_M_X64) #define _TARGET_AMD64_ 1 -#endif -#ifdef _M_IX86 +#elif defined(_M_IX86) #define _TARGET_X86_ 1 #endif +#endif // _TARGET_* not previously defined + #define __EXCEPTION_RECORD_CLR //trick out clrntexception.h to not include another exception record.... + #include <mscoree.h> #include <corjit.h> #include <utilcode.h> |