diff options
author | Ben Pye <ben@curlybracket.co.uk> | 2015-07-01 15:10:09 +0100 |
---|---|---|
committer | Ben Pye <ben@curlybracket.co.uk> | 2015-07-24 16:45:35 +0100 |
commit | 9cd8273572260317c6acc126333e5a6e56aaeb06 (patch) | |
tree | f125e83a6908151322aa20940b63c64c621c1169 /src/ToolBox | |
parent | acca43b33dcd97d1dc5d92147a3047a3bdfaf1ce (diff) | |
download | coreclr-9cd8273572260317c6acc126333e5a6e56aaeb06.tar.gz coreclr-9cd8273572260317c6acc126333e5a6e56aaeb06.tar.bz2 coreclr-9cd8273572260317c6acc126333e5a6e56aaeb06.zip |
Add ARM target for CoreCLR on Linux.
c_runtime/vprintf/test1 is disabled as casting NULL to va_list is
against the C specification.
Fix SetFilePointer tests on 32 bit platforms.
Define _FILE_OFFSET_BITS=64 so that we have long file support on 32 bit
platforms.
Implement context capture/restore for ARM.
Link libgcc_s before libunwind on ARM so C++ exceptions work.
Translate armasm to gas syntax.
Specify Thumb, VFPv3, ARMv7 for the ARM target.
Add ARM configuration to mscorlib build
Implement GetLogicalProcessorCacheSizeFromOS in PAL.
Set UNWIND_CONTEXT_IS_UCONTEXT_T from configure check.
Diffstat (limited to 'src/ToolBox')
-rw-r--r-- | src/ToolBox/SOS/Strike/CMakeLists.txt | 33 | ||||
-rw-r--r-- | src/ToolBox/SOS/lldbplugin/CMakeLists.txt | 15 | ||||
-rw-r--r-- | src/ToolBox/SOS/lldbplugin/debugclient.cpp | 21 |
3 files changed, 55 insertions, 14 deletions
diff --git a/src/ToolBox/SOS/Strike/CMakeLists.txt b/src/ToolBox/SOS/Strike/CMakeLists.txt index 9e9ef54ca0..ce909d7989 100644 --- a/src/ToolBox/SOS/Strike/CMakeLists.txt +++ b/src/ToolBox/SOS/Strike/CMakeLists.txt @@ -1,7 +1,14 @@ -add_definitions(-DSOS_TARGET_AMD64=1) -add_definitions(-D_TARGET_WIN64_=1) -add_definitions(-DDBG_TARGET_64BIT) -add_definitions(-DDBG_TARGET_WIN64=1) +if(CLR_CMAKE_PLATFORM_ARCH_AMD64) + add_definitions(-DSOS_TARGET_AMD64=1) + add_definitions(-D_TARGET_WIN64_=1) + add_definitions(-DDBG_TARGET_64BIT) + add_definitions(-DDBG_TARGET_WIN64=1) +elseif(CLR_CMAKE_PLATFORM_ARCH_ARM) + add_definitions(-DSOS_TARGET_ARM=1) + add_definitions(-D_TARGET_WIN32_=1) + add_definitions(-DDBG_TARGET_32BIT) + add_definitions(-DDBG_TARGET_WIN32=1) +endif() add_definitions(-DSTRIKE) remove_definitions(-DUNICODE) @@ -38,12 +45,18 @@ if(WIN32) WatchCmd.cpp Native.rc ) - - set(SOS_SOURCES_AMD64 - disasmX86.cpp - ) - - list(APPEND SOS_SOURCES ${SOS_SOURCES_AMD64}) + + if(CLR_CMAKE_PLATFORM_ARCH_AMD64) + set(SOS_SOURCES_ARCH + disasmX86.cpp + ) + elseif(CLR_CMAKE_PLATFORM_ARCH_ARM) + set(SOS_SOURCES_ARCH + disasmARM.cpp + ) + endif() + + list(APPEND SOS_SOURCES ${SOS_SOURCES_ARCH}) add_definitions(-DFX_VER_INTERNALNAME_STR=SOS.dll) diff --git a/src/ToolBox/SOS/lldbplugin/CMakeLists.txt b/src/ToolBox/SOS/lldbplugin/CMakeLists.txt index 945c23acf8..798c91a142 100644 --- a/src/ToolBox/SOS/lldbplugin/CMakeLists.txt +++ b/src/ToolBox/SOS/lldbplugin/CMakeLists.txt @@ -2,10 +2,17 @@ project(sosplugin) set(CMAKE_INCLUDE_CURRENT_DIR ON) -add_definitions(-D_TARGET_AMD64_=1) -add_definitions(-DDBG_TARGET_64BIT=1) -add_definitions(-DDBG_TARGET_AMD64=1) -add_definitions(-DDBG_TARGET_WIN64=1) +if(CLR_CMAKE_PLATFORM_ARCH_AMD64) + add_definitions(-D_TARGET_AMD64_=1) + add_definitions(-DDBG_TARGET_64BIT=1) + add_definitions(-DDBG_TARGET_AMD64=1) + add_definitions(-DDBG_TARGET_WIN64=1) +elseif(CLR_CMAKE_PLATFORM_ARCH_ARM) + add_definitions(-D_TARGET_ARM_=1) + add_definitions(-DDBG_TARGET_32BIT=1) + add_definitions(-DDBG_TARGET_ARM=1) + add_definitions(-DDBG_TARGET_WIN32=1) +endif() set(ENABLE_LLDBPLUGIN ${CLR_CMAKE_PLATFORM_UNIX} CACHE BOOL "Enable building the SOS plugin for LLDB.") set(REQUIRE_LLDBPLUGIN ${CLR_CMAKE_PLATFORM_LINUX} CACHE BOOL "Require building the SOS plugin for LLDB.") diff --git a/src/ToolBox/SOS/lldbplugin/debugclient.cpp b/src/ToolBox/SOS/lldbplugin/debugclient.cpp index 75d5cee594..f2a690b73b 100644 --- a/src/ToolBox/SOS/lldbplugin/debugclient.cpp +++ b/src/ToolBox/SOS/lldbplugin/debugclient.cpp @@ -849,6 +849,7 @@ DebugClient::GetThreadContextById( dtcontext = (DT_CONTEXT*)context; dtcontext->ContextFlags = contextFlags; +#ifdef DBG_TARGET_AMD64 dtcontext->Rip = frame.GetPC(); dtcontext->Rsp = frame.GetSP(); dtcontext->Rbp = frame.GetFP(); @@ -875,6 +876,26 @@ DebugClient::GetThreadContextById( dtcontext->SegEs = GetRegister(frame, "es"); dtcontext->SegFs = GetRegister(frame, "fs"); dtcontext->SegGs = GetRegister(frame, "gs"); +#elif DBG_TARGET_ARM + dtcontext->Pc = frame.GetPC(); + dtcontext->Sp = frame.GetSP(); + dtcontext->Lr = GetRegister(frame, "lr"); + dtcontext->Cpsr = GetRegister(frame, "cpsr"); + + dtcontext->R0 = GetRegister(frame, "r0"); + dtcontext->R1 = GetRegister(frame, "r1"); + dtcontext->R2 = GetRegister(frame, "r2"); + dtcontext->R3 = GetRegister(frame, "r3"); + dtcontext->R4 = GetRegister(frame, "r4"); + dtcontext->R5 = GetRegister(frame, "r5"); + dtcontext->R6 = GetRegister(frame, "r6"); + dtcontext->R7 = GetRegister(frame, "r7"); + dtcontext->R8 = GetRegister(frame, "r8"); + dtcontext->R9 = GetRegister(frame, "r9"); + dtcontext->R10 = GetRegister(frame, "r10"); + dtcontext->R11 = GetRegister(frame, "r11"); + dtcontext->R12 = GetRegister(frame, "r12"); +#endif hr = S_OK; |