summaryrefslogtreecommitdiff
path: root/src/ToolBox
diff options
context:
space:
mode:
authorBruce Forstall <brucefo@microsoft.com>2016-08-22 21:52:16 -0700
committerGitHub <noreply@github.com>2016-08-22 21:52:16 -0700
commit5cc75c3933979b788073ff065d81916680bccf5a (patch)
treee8a40d5499fbee513d9a3b7e32354c657651fe35 /src/ToolBox
parent1aa8df1fe0f2b05160b24f4cfb246702db94cc49 (diff)
parentf2324b6744f05a051829a2aa65b745bb073d6f98 (diff)
downloadcoreclr-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.cpp22
-rw-r--r--src/ToolBox/superpmi/superpmi-shared/runtimedetails.h10
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>