Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modify __int64 definition in PAL to match the OS definition #77056

Merged
merged 6 commits into from
Oct 18, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/coreclr/debug/createdump/crashinfounix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -378,7 +378,7 @@ CrashInfo::VisitProgramHeader(uint64_t loadbias, uint64_t baseAddress, Phdr* phd

uint64_t ehFrameStart;
uint64_t ehFrameSize;
if (PAL_GetUnwindInfoSize(baseAddress, ehFrameHdrStart, ReadMemoryAdapter, &ehFrameStart, &ehFrameSize))
if (PAL_GetUnwindInfoSize(baseAddress, ehFrameHdrStart, ReadMemoryAdapter, (ULONG64*)&ehFrameStart, (ULONG64*)&ehFrameSize))
janvorli marked this conversation as resolved.
Show resolved Hide resolved
{
TRACE("VisitProgramHeader: ehFrameStart %016llx ehFrameSize %08llx\n", ehFrameStart, ehFrameSize);
if (ehFrameStart != 0 && ehFrameSize != 0)
Expand Down
2 changes: 0 additions & 2 deletions src/coreclr/debug/inc/dacdbistructures.inl
Original file line number Diff line number Diff line change
Expand Up @@ -640,8 +640,6 @@ void FieldData::ClearFields()
m_pFldStaticAddress = NULL;
}

typedef ULONG_PTR SIZE_T;

inline
BOOL FieldData::OkToGetOrSetInstanceOffset()
{
Expand Down
8 changes: 8 additions & 0 deletions src/coreclr/inc/check.inl
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,14 @@ inline CHECK CheckOverflow(const void *address, UINT64 offset)
CHECK_OK;
}

#if defined(HOST_UNIX) && defined(HOST_64BIT)
AaronRobinsonMSFT marked this conversation as resolved.
Show resolved Hide resolved
inline CHECK CheckOverflow(const void *address, SIZE_T offset)
{
CHECK((UINT64) address + offset >= (UINT64) address);

CHECK_OK;
}
#endif // HOST_UNIX && HOST_BIT64

inline CHECK CheckUnderflow(UINT value1, UINT value2)
{
Expand Down
26 changes: 26 additions & 0 deletions src/coreclr/inc/clrtypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,15 @@ inline UINT64 AlignUp(UINT64 value, UINT alignment)
return (value+alignment-1)&~(UINT64)(alignment-1);
}

#if defined(HOST_UNIX) && defined(HOST_64BIT)
inline SIZE_T AlignUp(SIZE_T value, UINT alignment)
{
STATIC_CONTRACT_LEAF;
STATIC_CONTRACT_SUPPORTS_DAC;
return (value+alignment-1)&~(SIZE_T)(alignment-1);
}
#endif // HOST_UNIX && HOST_BIT64

inline UINT AlignDown(UINT value, UINT alignment)
{
STATIC_CONTRACT_LEAF;
Expand Down Expand Up @@ -381,6 +390,14 @@ inline UINT AlignmentPad(UINT64 value, UINT alignment)
return (UINT) (AlignUp(value, alignment) - value);
}

#if defined(HOST_UNIX) && defined(HOST_64BIT)
inline UINT AlignmentPad(SIZE_T value, UINT alignment)
{
STATIC_CONTRACT_WRAPPER;
return (UINT) (AlignUp(value, alignment) - value);
}
#endif // HOST_UNIX && HOST_BIT64

inline UINT AlignmentTrim(UINT value, UINT alignment)
{
STATIC_CONTRACT_LEAF;
Expand All @@ -406,4 +423,13 @@ inline UINT AlignmentTrim(UINT64 value, UINT alignment)
return ((UINT)value)&(alignment-1);
}

#if defined(HOST_UNIX) && defined(HOST_64BIT)
inline UINT AlignmentTrim(SIZE_T value, UINT alignment)
{
STATIC_CONTRACT_LEAF;
STATIC_CONTRACT_SUPPORTS_DAC;
return ((UINT)value)&(alignment-1);
}
#endif // HOST_UNIX && HOST_BIT64

#endif // CLRTYPES_H_
6 changes: 6 additions & 0 deletions src/coreclr/inc/daccess.h
Original file line number Diff line number Diff line change
Expand Up @@ -1027,6 +1027,12 @@ class __DPtrBase : public __TPtrBase
{
return DPtrType(DacTAddrOffset(m_addr, val, sizeof(type)));
}
#if defined(HOST_UNIX) && defined(HOST_64BIT)
DPtrType operator+(unsigned long long val)
{
return DPtrType(DacTAddrOffset(m_addr, val, sizeof(type)));
}
#endif // HOST_UNIX && HOST_BIT64
DPtrType operator+(short val)
{
return DPtrType(m_addr + val * sizeof(type));
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/inc/regdisp.h
Original file line number Diff line number Diff line change
Expand Up @@ -561,7 +561,7 @@ inline size_t * getRegAddr (unsigned regNum, PTR_CONTEXT regs)
return (PTR_size_t)(PTR_BYTE(regs) + OFFSET_OF_REGISTERS[regNum]);
#elif defined(TARGET_AMD64)
_ASSERTE(regNum < 16);
return &regs->Rax + regNum;
return (size_t *)&regs->Rax + regNum;
#elif defined(TARGET_ARM)
_ASSERTE(regNum < 16);
return (size_t *)&regs->R0 + regNum;
Expand Down
9 changes: 9 additions & 0 deletions src/coreclr/jit/compiler.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,13 @@ inline unsigned genLog2(unsigned __int64 value)
#endif
}

#if defined(HOST_UNIX) && defined(HOST_64BIT)
inline unsigned genLog2(size_t value)
{
return genLog2((unsigned __int64) value);
}
#endif // HOST_UNIX && HOST_BIT64

/*****************************************************************************
*
* Return the lowest bit that is set in the given register mask.
Expand Down Expand Up @@ -1536,7 +1543,9 @@ void GenTree::BashToConst(T value, var_types type /* = TYP_UNDEF */)
{
static_assert_no_msg((std::is_same<T, int32_t>::value || std::is_same<T, int64_t>::value ||
std::is_same<T, long long>::value || std::is_same<T, float>::value ||
std::is_same<T, ssize_t>::value ||
std::is_same<T, double>::value));

static_assert_no_msg(sizeof(int64_t) == sizeof(long long));

var_types typeOfValue = TYP_UNDEF;
Expand Down
2 changes: 1 addition & 1 deletion src/coreclr/jit/gentree.h
Original file line number Diff line number Diff line change
Expand Up @@ -3287,7 +3287,7 @@ inline void GenTreeIntConCommon::SetIntegralValue(int64_t value)
template <typename T>
inline void GenTreeIntConCommon::SetValueTruncating(T value)
{
static_assert_no_msg((std::is_same<T, int32_t>::value || std::is_same<T, int64_t>::value));
static_assert_no_msg((std::is_same<T, int32_t>::value || std::is_same<T, int64_t>::value || std::is_same<T, ssize_t>::value));

if (TypeIs(TYP_LONG))
{
Expand Down
11 changes: 9 additions & 2 deletions src/coreclr/jit/jit.h
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,8 @@
#error Unsupported or unset target architecture
#endif

typedef ptrdiff_t ssize_t;

// Include the AMD64 unwind codes when appropriate.
#if defined(TARGET_AMD64)
#include "win64unwind.h"
Expand Down Expand Up @@ -349,8 +351,6 @@ typedef int NATIVE_OFFSET;
// this is used for native code sizes.
typedef unsigned UNATIVE_OFFSET;

typedef ptrdiff_t ssize_t;

// Type used for weights (e.g. block and edge weights)
typedef double weight_t;

Expand Down Expand Up @@ -630,9 +630,16 @@ inline unsigned int unsigned_abs(int x)

#ifdef TARGET_64BIT
inline size_t unsigned_abs(ssize_t x)
{
return ((size_t)abs((__int64)x));
}

#ifdef HOST_UNIX
inline size_t unsigned_abs(__int64 x)
{
return ((size_t)abs(x));
}
#endif HOST_UNIX
#endif // TARGET_64BIT

/*****************************************************************************/
Expand Down
4 changes: 2 additions & 2 deletions src/coreclr/jit/register.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ REGALIAS(EDI, RDI)

#ifdef TARGET_AMD64
#define XMMBASE 16
#define XMMMASK(x) (__int64(1) << ((x)+XMMBASE))
#define XMMMASK(x) ((__int64)(1) << ((x)+XMMBASE))
#else // !TARGET_AMD64
#define XMMBASE 8
#define XMMMASK(x) (__int32(1) << ((x)+XMMBASE))
#define XMMMASK(x) ((__int32)(1) << ((x)+XMMBASE))
#endif // !TARGET_AMD64

REGDEF(XMM0, 0+XMMBASE, XMMMASK(0), "mm0" )
Expand Down
1 change: 1 addition & 0 deletions src/coreclr/jit/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -821,6 +821,7 @@ template <typename T>
bool FitsIn(var_types type, T value)
{
static_assert_no_msg((std::is_same<T, int32_t>::value || std::is_same<T, int64_t>::value ||
std::is_same<T, size_t>::value || std::is_same<T, ssize_t>::value ||
std::is_same<T, uint32_t>::value || std::is_same<T, uint64_t>::value));

switch (type)
Expand Down
6 changes: 6 additions & 0 deletions src/coreclr/pal/inc/pal.h
Original file line number Diff line number Diff line change
Expand Up @@ -4323,6 +4323,12 @@ inline __int64 abs(__int64 _X) {
return llabs(_X);
}

#ifdef HOST_64BIT
inline __int64 abs(SSIZE_T _X) {
return llabs((__int64)_X);
}
#endif

}
#endif

Expand Down
19 changes: 10 additions & 9 deletions src/coreclr/pal/inc/pal_mstypes.h
Original file line number Diff line number Diff line change
Expand Up @@ -195,12 +195,7 @@ extern "C" {
// they must be either signed or unsigned) and we want to be able to use
// __int64 as though it were intrinsic

#ifdef HOST_64BIT
Copy link
Contributor

@shushanhf shushanhf Oct 19, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is an error after deleting this on LoongArch64.

In file included from /home/qiao/work_qiao/runtime/src/coreclr/debug/di/platformspecific.cpp:37:
/home/qiao/work_qiao/runtime/src/coreclr/debug/di/loongarch64/cordbregisterset.cpp:272:18: error: cannot initialize a variable of type 'ULONG64 *'
      (aka 'unsigned long long *') with an rvalue of type 'SIZE_T *' (aka 'unsigned long *')
        ULONG64* pSrc  = &m_rd->A0;
                 ^       ~~~~~~~~~
1 error generated.

Copy link
Contributor

@shushanhf shushanhf Oct 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jkotas
Why define the ULONG64 as unsigned long long ?
While define SIZE_T as unsigned long ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jkotas Why define the ULONG64 as unsigned long long ? While define SIZE_T as unsigned long ?

Thanks
I had noted #77268

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this has been special cased to MacOS only in this PR: #77268, so guessing that should solve your issue?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this has been special cased to MacOS only in this PR: #77268, so guessing that should solve your issue?

Yes, it's ok for LA64 now.
Thanks.

#define __int64 long
#else // HOST_64BIT
#define __int64 long long
#endif // HOST_64BIT

#define __int32 int
#define __int16 short int
#define __int8 char // assumes char is signed
Expand Down Expand Up @@ -543,8 +538,13 @@ typedef _W64 unsigned __int32 DWORD_PTR, *PDWORD_PTR;
#define UlongToPtr(ul) ULongToPtr(ul)
#define UintToPtr(ui) UIntToPtr(ui)

typedef ULONG_PTR SIZE_T, *PSIZE_T;
typedef LONG_PTR SSIZE_T, *PSSIZE_T;
#ifdef HOST_64BIT
typedef unsigned long SIZE_T;
typedef long SSIZE_T;
#else
typedef unsigned int SIZE_T;
typedef int SSIZE_T;
#endif
AaronRobinsonMSFT marked this conversation as resolved.
Show resolved Hide resolved

#ifndef SIZE_T_MAX
#define SIZE_T_MAX ULONG_PTR_MAX
Expand All @@ -562,6 +562,7 @@ typedef LONG_PTR SSIZE_T, *PSSIZE_T;
#if defined(__APPLE_CC__) || defined(__linux__)
#ifdef HOST_64BIT
typedef unsigned long size_t;
typedef long ssize_t;
typedef long ptrdiff_t;
#else // !HOST_64BIT
typedef unsigned int size_t;
Expand Down Expand Up @@ -596,8 +597,8 @@ typedef int intptr_t;
typedef unsigned int uintptr_t;
#endif // !HOST_64BIT
#else
typedef INT_PTR intptr_t;
typedef UINT_PTR uintptr_t;
typedef long int intptr_t;
typedef unsigned long int uintptr_t;
#endif

#endif // PAL_STDCPP_COMPAT
Expand Down
114 changes: 57 additions & 57 deletions src/coreclr/pal/src/exception/remote-unwind.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1820,12 +1820,12 @@ static void GetContextPointer(unw_cursor_t *cursor, unw_context_t *unwContext, i
static void GetContextPointers(unw_cursor_t *cursor, unw_context_t *unwContext, KNONVOLATILE_CONTEXT_POINTERS *contextPointers)
{
#if defined(TARGET_AMD64)
GetContextPointer(cursor, unwContext, UNW_X86_64_RBP, &contextPointers->Rbp);
GetContextPointer(cursor, unwContext, UNW_X86_64_RBX, &contextPointers->Rbx);
GetContextPointer(cursor, unwContext, UNW_X86_64_R12, &contextPointers->R12);
GetContextPointer(cursor, unwContext, UNW_X86_64_R13, &contextPointers->R13);
GetContextPointer(cursor, unwContext, UNW_X86_64_R14, &contextPointers->R14);
GetContextPointer(cursor, unwContext, UNW_X86_64_R15, &contextPointers->R15);
GetContextPointer(cursor, unwContext, UNW_X86_64_RBP, (SIZE_T**)&contextPointers->Rbp);
GetContextPointer(cursor, unwContext, UNW_X86_64_RBX, (SIZE_T**)&contextPointers->Rbx);
GetContextPointer(cursor, unwContext, UNW_X86_64_R12, (SIZE_T**)&contextPointers->R12);
GetContextPointer(cursor, unwContext, UNW_X86_64_R13, (SIZE_T**)&contextPointers->R13);
GetContextPointer(cursor, unwContext, UNW_X86_64_R14, (SIZE_T**)&contextPointers->R14);
GetContextPointer(cursor, unwContext, UNW_X86_64_R15, (SIZE_T**)&contextPointers->R15);
#elif defined(TARGET_X86)
GetContextPointer(cursor, unwContext, UNW_X86_EBX, &contextPointers->Ebx);
GetContextPointer(cursor, unwContext, UNW_X86_EBP, &contextPointers->Ebp);
Expand All @@ -1841,60 +1841,60 @@ static void GetContextPointers(unw_cursor_t *cursor, unw_context_t *unwContext,
GetContextPointer(cursor, unwContext, UNW_ARM_R10, &contextPointers->R10);
GetContextPointer(cursor, unwContext, UNW_ARM_R11, &contextPointers->R11);
#elif defined(TARGET_ARM64)
GetContextPointer(cursor, unwContext, UNW_AARCH64_X19, &contextPointers->X19);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X20, &contextPointers->X20);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X21, &contextPointers->X21);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X22, &contextPointers->X22);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X23, &contextPointers->X23);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X24, &contextPointers->X24);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X25, &contextPointers->X25);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X26, &contextPointers->X26);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X27, &contextPointers->X27);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X28, &contextPointers->X28);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X29, &contextPointers->Fp);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X19, (SIZE_T**)&contextPointers->X19);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X20, (SIZE_T**)&contextPointers->X20);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X21, (SIZE_T**)&contextPointers->X21);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X22, (SIZE_T**)&contextPointers->X22);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X23, (SIZE_T**)&contextPointers->X23);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X24, (SIZE_T**)&contextPointers->X24);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X25, (SIZE_T**)&contextPointers->X25);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X26, (SIZE_T**)&contextPointers->X26);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X27, (SIZE_T**)&contextPointers->X27);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X28, (SIZE_T**)&contextPointers->X28);
GetContextPointer(cursor, unwContext, UNW_AARCH64_X29, (SIZE_T**)&contextPointers->Fp);
#elif defined(TARGET_LOONGARCH64)
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R1, &contextPointers->Ra);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R2, &contextPointers->Tp);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R22, &contextPointers->Fp);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R23, &contextPointers->S0);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R24, &contextPointers->S1);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R25, &contextPointers->S2);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R26, &contextPointers->S3);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R27, &contextPointers->S4);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R28, &contextPointers->S5);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R29, &contextPointers->S6);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R30, &contextPointers->S7);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R31, &contextPointers->S8);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R1, (SIZE_T **)&contextPointers->Ra);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R2, (SIZE_T **)&contextPointers->Tp);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R22, (SIZE_T **)&contextPointers->Fp);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R23, (SIZE_T **)&contextPointers->S0);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R24, (SIZE_T **)&contextPointers->S1);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R25, (SIZE_T **)&contextPointers->S2);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R26, (SIZE_T **)&contextPointers->S3);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R27, (SIZE_T **)&contextPointers->S4);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R28, (SIZE_T **)&contextPointers->S5);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R29, (SIZE_T **)&contextPointers->S6);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R30, (SIZE_T **)&contextPointers->S7);
GetContextPointer(cursor, unwContext, UNW_LOONGARCH64_R31, (SIZE_T **)&contextPointers->S8);
#elif defined(TARGET_S390X)
GetContextPointer(cursor, unwContext, UNW_S390X_R6, &contextPointers->R6);
GetContextPointer(cursor, unwContext, UNW_S390X_R7, &contextPointers->R7);
GetContextPointer(cursor, unwContext, UNW_S390X_R8, &contextPointers->R8);
GetContextPointer(cursor, unwContext, UNW_S390X_R9, &contextPointers->R9);
GetContextPointer(cursor, unwContext, UNW_S390X_R10, &contextPointers->R10);
GetContextPointer(cursor, unwContext, UNW_S390X_R11, &contextPointers->R11);
GetContextPointer(cursor, unwContext, UNW_S390X_R12, &contextPointers->R12);
GetContextPointer(cursor, unwContext, UNW_S390X_R13, &contextPointers->R13);
GetContextPointer(cursor, unwContext, UNW_S390X_R14, &contextPointers->R14);
GetContextPointer(cursor, unwContext, UNW_S390X_R15, &contextPointers->R15);
GetContextPointer(cursor, unwContext, UNW_S390X_R6, (SIZE_T **)&contextPointers->R6);
GetContextPointer(cursor, unwContext, UNW_S390X_R7, (SIZE_T **)&contextPointers->R7);
GetContextPointer(cursor, unwContext, UNW_S390X_R8, (SIZE_T **)&contextPointers->R8);
GetContextPointer(cursor, unwContext, UNW_S390X_R9, (SIZE_T **)&contextPointers->R9);
GetContextPointer(cursor, unwContext, UNW_S390X_R10, (SIZE_T **)&contextPointers->R10);
GetContextPointer(cursor, unwContext, UNW_S390X_R11, (SIZE_T **)&contextPointers->R11);
GetContextPointer(cursor, unwContext, UNW_S390X_R12, (SIZE_T **)&contextPointers->R12);
GetContextPointer(cursor, unwContext, UNW_S390X_R13, (SIZE_T **)&contextPointers->R13);
GetContextPointer(cursor, unwContext, UNW_S390X_R14, (SIZE_T **)&contextPointers->R14);
GetContextPointer(cursor, unwContext, UNW_S390X_R15, (SIZE_T **)&contextPointers->R15);
#elif defined(TARGET_POWERPC64)
GetContextPointer(cursor, unwContext, UNW_PPC64_R14, &contextPointers->R14);
GetContextPointer(cursor, unwContext, UNW_PPC64_R15, &contextPointers->R15);
GetContextPointer(cursor, unwContext, UNW_PPC64_R16, &contextPointers->R16);
GetContextPointer(cursor, unwContext, UNW_PPC64_R17, &contextPointers->R17);
GetContextPointer(cursor, unwContext, UNW_PPC64_R18, &contextPointers->R18);
GetContextPointer(cursor, unwContext, UNW_PPC64_R19, &contextPointers->R19);
GetContextPointer(cursor, unwContext, UNW_PPC64_R20, &contextPointers->R20);
GetContextPointer(cursor, unwContext, UNW_PPC64_R21, &contextPointers->R21);
GetContextPointer(cursor, unwContext, UNW_PPC64_R22, &contextPointers->R22);
GetContextPointer(cursor, unwContext, UNW_PPC64_R23, &contextPointers->R23);
GetContextPointer(cursor, unwContext, UNW_PPC64_R24, &contextPointers->R24);
GetContextPointer(cursor, unwContext, UNW_PPC64_R25, &contextPointers->R25);
GetContextPointer(cursor, unwContext, UNW_PPC64_R26, &contextPointers->R26);
GetContextPointer(cursor, unwContext, UNW_PPC64_R27, &contextPointers->R27);
GetContextPointer(cursor, unwContext, UNW_PPC64_R28, &contextPointers->R28);
GetContextPointer(cursor, unwContext, UNW_PPC64_R29, &contextPointers->R29);
GetContextPointer(cursor, unwContext, UNW_PPC64_R30, &contextPointers->R30);
GetContextPointer(cursor, unwContext, UNW_PPC64_R31, &contextPointers->R31);
GetContextPointer(cursor, unwContext, UNW_PPC64_R14, (SIZE_T **)&contextPointers->R14);
GetContextPointer(cursor, unwContext, UNW_PPC64_R15, (SIZE_T **)&contextPointers->R15);
GetContextPointer(cursor, unwContext, UNW_PPC64_R16, (SIZE_T **)&contextPointers->R16);
GetContextPointer(cursor, unwContext, UNW_PPC64_R17, (SIZE_T **)&contextPointers->R17);
GetContextPointer(cursor, unwContext, UNW_PPC64_R18, (SIZE_T **)&contextPointers->R18);
GetContextPointer(cursor, unwContext, UNW_PPC64_R19, (SIZE_T **)&contextPointers->R19);
GetContextPointer(cursor, unwContext, UNW_PPC64_R20, (SIZE_T **)&contextPointers->R20);
GetContextPointer(cursor, unwContext, UNW_PPC64_R21, (SIZE_T **)&contextPointers->R21);
GetContextPointer(cursor, unwContext, UNW_PPC64_R22, (SIZE_T **)&contextPointers->R22);
GetContextPointer(cursor, unwContext, UNW_PPC64_R23, (SIZE_T **)&contextPointers->R23);
GetContextPointer(cursor, unwContext, UNW_PPC64_R24, (SIZE_T **)&contextPointers->R24);
GetContextPointer(cursor, unwContext, UNW_PPC64_R25, (SIZE_T **)&contextPointers->R25);
GetContextPointer(cursor, unwContext, UNW_PPC64_R26, (SIZE_T **)&contextPointers->R26);
GetContextPointer(cursor, unwContext, UNW_PPC64_R27, (SIZE_T **)&contextPointers->R27);
GetContextPointer(cursor, unwContext, UNW_PPC64_R28, (SIZE_T **)&contextPointers->R28);
GetContextPointer(cursor, unwContext, UNW_PPC64_R29, (SIZE_T **)&contextPointers->R29);
GetContextPointer(cursor, unwContext, UNW_PPC64_R30, (SIZE_T **)&contextPointers->R30);
GetContextPointer(cursor, unwContext, UNW_PPC64_R31, (SIZE_T **)&contextPointers->R31);
#else
#error unsupported architecture
#endif
Expand Down
Loading