You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by rh...@apache.org on 2021/06/10 09:07:46 UTC

svn commit: r1890668 - in /subversion/trunk: build/generator/gen_win.py build/generator/templates/vcnet_vcxproj.ezt subversion/libsvn_subr/win32_crashrpt.c

Author: rhuijben
Date: Thu Jun 10 09:07:46 2021
New Revision: 1890668

URL: http://svn.apache.org/viewvc?rev=1890668&view=rev
Log:
Following up on r1890223, allow building on ARM64.

Do minimal work to allow building. Recognize ARM64 in the
win32 crash handler to at least create dumps. Add TODO comments.

* build/generator/gen_win.py
  Generate ARM platform configurations for .vcxproj style projects
  
* build/generator/templates/vcnet_vcxproj.ezt
  Assume ARM64 is a WIN64 variant and properly set machine type
  for LIB.
  
* trunk/subversion/libsvn_subr/win32_crashrpt.c
  (FORMAT_PTR) Set for ARM64
  (write_process_info,
   write_stacktrace): Stub for ARM64.

Modified:
    subversion/trunk/build/generator/gen_win.py
    subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt
    subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c

Modified: subversion/trunk/build/generator/gen_win.py
URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/gen_win.py?rev=1890668&r1=1890667&r2=1890668&view=diff
==============================================================================
--- subversion/trunk/build/generator/gen_win.py (original)
+++ subversion/trunk/build/generator/gen_win.py Thu Jun 10 09:07:46 2021
@@ -128,7 +128,7 @@ class WinGeneratorBase(gen_win_dependenc
     # VC 2002 and VC 2003 only allow a single platform per project file
     if subdir == 'vcnet-vcproj':
       if self.vcproj_version != '7.00' and self.vcproj_version != '7.10':
-        self.platforms = ['Win32','x64']
+        self.platforms = ['Win32', 'x64', 'ARM64']
 
     #Here we can add additional modes to compile for
     self.configs = ['Debug','Release']

Modified: subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt
URL: http://svn.apache.org/viewvc/subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt?rev=1890668&r1=1890667&r2=1890668&view=diff
==============================================================================
--- subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt (original)
+++ subversion/trunk/build/generator/templates/vcnet_vcxproj.ezt Thu Jun 10 09:07:46 2021
@@ -61,7 +61,7 @@
       <IntrinsicFunctions>true</IntrinsicFunctions>
 [end]      <AdditionalIncludeDirectories>$(SolutionDir)[configs.name];[for configs.includes][configs.includes];[end]%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <StringPooling>true</StringPooling>
-      <PreprocessorDefinitions>[if-any instrument_apr_pools]APR_POOL_DEBUG=[instrument_apr_pools];[end][is platforms "x64"]WIN64;[end][for configs.defines][configs.defines];[end]%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>[if-any instrument_apr_pools]APR_POOL_DEBUG=[instrument_apr_pools];[end][is platforms "x64"]WIN64;[end][is platforms "ARM64"]WIN64;[end][for configs.defines][configs.defines];[end]%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <WarningLevel>Level4</WarningLevel>
       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
       <DisableSpecificWarnings>4100;4127;4206;4512;4701;4706;4800;%(DisableSpecificWarnings)</DisableSpecificWarnings>
@@ -70,7 +70,7 @@
 [end]    </ClCompile>
     <ResourceCompile>
       <AdditionalIncludeDirectories>[for configs.includes][configs.includes];[end]%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <PreprocessorDefinitions>SVN_FILE_NAME=[target.output_name];SVN_FILE_DESCRIPTION=[target.desc];[is platforms "x64"]WIN64;[end][for configs.defines][configs.defines];[end]%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <PreprocessorDefinitions>SVN_FILE_NAME=[target.output_name];SVN_FILE_DESCRIPTION=[target.desc];[is platforms "x64"]WIN64;[end][is platforms "ARM64"]WIN64;[end][for configs.defines][configs.defines];[end]%(PreprocessorDefinitions)</PreprocessorDefinitions>
     </ResourceCompile>
 [is config_type "Application"]    <Link>
       <AdditionalDependencies>[for configs.libs][configs.libs];[end]%(AdditionalDependencies)</AdditionalDependencies>
@@ -92,7 +92,7 @@
 [if-any def_file]      <ModuleDefinitionFile>[def_file]</ModuleDefinitionFile>
 [end]    </Link>
 [else][is config_type "StaticLibrary"]    <Lib>
-      <TargetMachine>[is platforms "X64"]MachineX64[else]MachineX86[end]</TargetMachine>
+      <TargetMachine>[is platforms "X64"]MachineX64[else][is platforms "ARM64"]MachineARM64[else]MachineX86[end][end]</TargetMachine>
 [is configs.name "Debug"]      <IgnoreSpecificDefaultLibraries>msvcrt.lib</IgnoreSpecificDefaultLibraries>
 [end]    </Lib>
 [end][end][end]  </ItemDefinitionGroup>

Modified: subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c?rev=1890668&r1=1890667&r2=1890668&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c (original)
+++ subversion/trunk/subversion/libsvn_subr/win32_crashrpt.c Thu Jun 10 09:07:46 2021
@@ -53,6 +53,8 @@ static HANDLE dbghelp_dll = INVALID_HAND
 #define FORMAT_PTR "0x%08Ix"
 #elif defined(_M_X64)
 #define FORMAT_PTR "0x%016Ix"
+#elif defined(_M_ARM64)
+#define FORMAT_PTR "0x%016Ix"
 #endif
 
 /*** Code. ***/
@@ -253,6 +255,8 @@ write_process_info(EXCEPTION_RECORD *exc
                 "cs=%04x  ss=%04x  ds=%04x  es=%04x  fs=%04x  gs=%04x\n",
                 context->SegCs, context->SegSs, context->SegDs,
                 context->SegEs, context->SegFs, context->SegGs);
+#elif defined(_M_ARM64)
+  /* TODO: Print ARM64 registers */
 #else
 #error Unknown processortype, please disable SVN_USE_WIN32_CRASHHANDLER
 #endif
@@ -515,7 +519,7 @@ write_function_detail(STACKFRAME64 stack
 static void
 write_stacktrace(CONTEXT *context, FILE *log_file)
 {
-#if defined (_M_IX86) || defined(_M_X64) || defined(_M_IA64)
+#if defined (_M_IX86) || defined(_M_X64) || defined(_M_IA64) || defined(_M_ARM64)
   HANDLE proc = GetCurrentProcess();
   STACKFRAME64 stack_frame;
   DWORD machine;
@@ -562,6 +566,9 @@ write_stacktrace(CONTEXT *context, FILE
   stack_frame.AddrStack.Offset  = context->SP;
   stack_frame.AddrBStore.Mode   = AddrModeFlat;
   stack_frame.AddrBStore.Offset = context->RsBSP;
+#elif defined(_M_ARM64)
+  machine = IMAGE_FILE_MACHINE_ARM64;
+  return; /* TODO: Find ARM64 settings for stack trace */
 #else
 #error Unknown processortype, please disable SVN_USE_WIN32_CRASHHANDLER
 #endif