Index: dll/win32/dbghelp/compat.h =================================================================== --- dll/win32/dbghelp/compat.h (revision 68086) +++ dll/win32/dbghelp/compat.h (working copy) @@ -256,7 +256,108 @@ DWORD SegSs; BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; } CONTEXT, *PCONTEXT; + +#else /* ARM? */ + +/* The following flags control the contents of the CONTEXT structure. */ + +#define CONTEXT_ARM 0x0200000 +#define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001) +#define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002) +#define CONTEXT_FLOATING_POINT (CONTEXT_ARM | 0x00000004) +#define CONTEXT_DEBUG_REGISTERS (CONTEXT_ARM | 0x00000008) + +#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER) + +#define EXCEPTION_READ_FAULT 0 +#define EXCEPTION_WRITE_FAULT 1 +#define EXCEPTION_EXECUTE_FAULT 8 + +typedef struct _RUNTIME_FUNCTION +{ + DWORD BeginAddress; + union { + DWORD UnwindData; + struct { + DWORD Flag : 2; + DWORD FunctionLength : 11; + DWORD Ret : 2; + DWORD H : 1; + DWORD Reg : 3; + DWORD R : 1; + DWORD L : 1; + DWORD C : 1; + DWORD StackAdjust : 10; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; +} RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; + +#define UNWIND_HISTORY_TABLE_SIZE 12 +typedef struct _UNWIND_HISTORY_TABLE_ENTRY +{ + DWORD ImageBase; + PRUNTIME_FUNCTION FunctionEntry; +} UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; + +typedef struct _UNWIND_HISTORY_TABLE +{ + DWORD Count; + BYTE LocalHint; + BYTE GlobalHint; + BYTE Search; + BYTE Once; + DWORD LowAddress; + DWORD HighAddress; + UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; +} UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; + +typedef struct _CONTEXT { + /* The flags values within this flag control the contents of + a CONTEXT record. + + If the context record is used as an input parameter, then + for each portion of the context record controlled by a flag + whose value is set, it is assumed that that portion of the + context record contains valid context. If the context record + is being used to modify a thread's context, then only that + portion of the threads context will be modified. + + If the context record is used as an IN OUT parameter to capture + the context of a thread, then only those portions of the thread's + context corresponding to set flags will be returned. + + The context record is never used as an OUT only parameter. */ + + ULONG ContextFlags; + + /* This section is specified/returned if the ContextFlags word contains + the flag CONTEXT_INTEGER. */ + ULONG R0; + ULONG R1; + ULONG R2; + ULONG R3; + ULONG R4; + ULONG R5; + ULONG R6; + ULONG R7; + ULONG R8; + ULONG R9; + ULONG R10; + ULONG Fp; + ULONG Ip; + + /* These are selected by CONTEXT_CONTROL */ + ULONG Sp; + ULONG Lr; + ULONG Pc; + ULONG Cpsr; +} CONTEXT; + +BOOLEAN CDECL RtlAddFunctionTable(RUNTIME_FUNCTION*,DWORD,DWORD); +BOOLEAN CDECL RtlDeleteFunctionTable(RUNTIME_FUNCTION*); +PRUNTIME_FUNCTION WINAPI RtlLookupFunctionEntry(ULONG_PTR,DWORD*,UNWIND_HISTORY_TABLE*); #endif + typedef EXCEPTION_DISPOSITION NTAPI Index: lib/sdk/crt/crt.cmake =================================================================== --- lib/sdk/crt/crt.cmake (revision 68086) +++ lib/sdk/crt/crt.cmake (working copy) @@ -505,7 +505,6 @@ math/arm/log.s math/arm/log10.s math/arm/pow.s - math/arm/sqrt.s math/arm/tan.s math/arm/_logb.s math/arm/__dtoi64.s Index: tools/rsym/CMakeLists.txt =================================================================== --- tools/rsym/CMakeLists.txt (revision 68086) +++ tools/rsym/CMakeLists.txt (working copy) @@ -7,6 +7,8 @@ add_executable(rsym rsym.c) elseif(ARCH STREQUAL "amd64") add_executable(rsym rsym64.c) +elseif(ARCH STREQUAL "arm") + add_executable(rsym rsym64.c) endif() target_link_libraries(rsym rsym_common dbghelphost zlibhost unicode)