Skip to content

Commit a2422f2

Browse files
authored
Fix compiler errors for ARM64 build (winsiderss#1113)
1 parent 95ddde7 commit a2422f2

File tree

4 files changed

+50
-13
lines changed

4 files changed

+50
-13
lines changed

phlib/include/phnative.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1825,6 +1825,31 @@ typedef struct _PH_PROCESS_DEBUG_HEAP_INFORMATION32
18251825
PH_PROCESS_DEBUG_HEAP_ENTRY32 Heaps[1];
18261826
} PH_PROCESS_DEBUG_HEAP_INFORMATION32, *PPH_PROCESS_DEBUG_HEAP_INFORMATION32;
18271827

1828+
typedef struct _PH_IMAGE_RUNTIME_FUNCTION_ENTRY_AMD64 {
1829+
DWORD BeginAddress;
1830+
DWORD EndAddress;
1831+
union {
1832+
DWORD UnwindInfoAddress;
1833+
DWORD UnwindData;
1834+
} DUMMYUNIONNAME;
1835+
} PH_IMAGE_RUNTIME_FUNCTION_ENTRY_AMD64, *PPH_IMAGE_RUNTIME_FUNCTION_ENTRY_AMD64;
1836+
1837+
typedef struct _PH_IMAGE_RUNTIME_FUNCTION_ENTRY_ARM64 {
1838+
DWORD BeginAddress;
1839+
union {
1840+
DWORD UnwindData;
1841+
struct {
1842+
DWORD Flag : 2;
1843+
DWORD FunctionLength : 11;
1844+
DWORD RegF : 3;
1845+
DWORD RegI : 4;
1846+
DWORD H : 1;
1847+
DWORD CR : 2;
1848+
DWORD FrameSize : 9;
1849+
} DUMMYSTRUCTNAME;
1850+
} DUMMYUNIONNAME;
1851+
} PH_IMAGE_RUNTIME_FUNCTION_ENTRY_ARM64, *PPH_IMAGE_RUNTIME_FUNCTION_ENTRY_ARM64;
1852+
18281853
PHLIBAPI
18291854
NTSTATUS
18301855
NTAPI

phlib/symprv.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1963,14 +1963,14 @@ NTSTATUS PhWalkThreadStack(
19631963
stackFrame.StackFrameSize = sizeof(STACKFRAME_EX);
19641964

19651965
// Program counter, Stack pointer, Frame pointer
1966-
#ifdef _ARM64_
1966+
#if defined(_ARM64_)
19671967
stackFrame.AddrPC.Mode = AddrModeFlat;
19681968
stackFrame.AddrPC.Offset = context.Pc;
19691969
stackFrame.AddrStack.Mode = AddrModeFlat;
19701970
stackFrame.AddrStack.Offset = context.Sp;
19711971
stackFrame.AddrFrame.Mode = AddrModeFlat;
19721972
stackFrame.AddrFrame.Offset = context.Fp;
1973-
#else
1973+
#elif defined(_AMD64_)
19741974
stackFrame.AddrPC.Mode = AddrModeFlat;
19751975
stackFrame.AddrPC.Offset = context.Rip;
19761976
stackFrame.AddrStack.Mode = AddrModeFlat;

tools/peview/peexceptprp.c

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ VOID PvEnumerateExceptionEntries(
115115
{
116116
for (ULONG i = 0; i < exceptions.NumberOfEntries; i++)
117117
{
118-
PIMAGE_RUNTIME_FUNCTION_ENTRY entry = PTR_ADD_OFFSET(exceptions.ExceptionDirectory, i * sizeof(IMAGE_RUNTIME_FUNCTION_ENTRY));
118+
PPH_IMAGE_RUNTIME_FUNCTION_ENTRY_AMD64 entry = PTR_ADD_OFFSET(exceptions.ExceptionDirectory, i * sizeof(PH_IMAGE_RUNTIME_FUNCTION_ENTRY_AMD64));
119119
INT lvItemIndex;
120120
PPH_STRING symbol;
121121
PPH_STRING symbolName = NULL;
@@ -175,19 +175,23 @@ VOID PvEnumerateExceptionEntries(
175175
}
176176
}
177177
}
178+
else if (imageMachine == IMAGE_FILE_MACHINE_ARM64)
179+
{
180+
/* Todo */
181+
}
178182

179183
//ExtendedListView_SortItems(ListViewHandle);
180184
ExtendedListView_SetRedraw(ListViewHandle, TRUE);
181185
}
182186

183-
INT NTAPI PvpPeExceptionSizeCompareFunction(
187+
INT NTAPI PvpPeExceptionSizeCompareFunctionAmd64(
184188
_In_ PVOID Item1,
185189
_In_ PVOID Item2,
186190
_In_ PVOID Context
187191
)
188192
{
189-
PIMAGE_RUNTIME_FUNCTION_ENTRY entry1 = Item1;
190-
PIMAGE_RUNTIME_FUNCTION_ENTRY entry2 = Item2;
193+
PPH_IMAGE_RUNTIME_FUNCTION_ENTRY_AMD64 entry1 = Item1;
194+
PPH_IMAGE_RUNTIME_FUNCTION_ENTRY_AMD64 entry2 = Item2;
191195

192196
return uintptrcmp((ULONG_PTR)entry1->EndAddress - entry1->BeginAddress, (ULONG_PTR)entry2->EndAddress - entry2->BeginAddress);
193197
}
@@ -245,7 +249,7 @@ INT_PTR CALLBACK PvpPeExceptionDlgProc(
245249
PhAddListViewColumn(context->ListViewHandle, 1, 1, 1, LVCFMT_LEFT, 100, L"SEH Handler");
246250
PhAddListViewColumn(context->ListViewHandle, 2, 2, 2, LVCFMT_LEFT, 200, L"Symbol");
247251
PhAddListViewColumn(context->ListViewHandle, 3, 3, 3, LVCFMT_LEFT, 100, L"Section");
248-
PhLoadListViewColumnsFromSetting(L"ImageExceptions32ListViewColumns", context->ListViewHandle);
252+
PhLoadListViewColumnsFromSetting(L"ImageExceptionsIa32ListViewColumns", context->ListViewHandle);
249253
}
250254
else if (imageMachine == IMAGE_FILE_MACHINE_AMD64)
251255
{
@@ -255,9 +259,13 @@ INT_PTR CALLBACK PvpPeExceptionDlgProc(
255259
PhAddListViewColumn(context->ListViewHandle, 4, 4, 4, LVCFMT_LEFT, 100, L"Size");
256260
PhAddListViewColumn(context->ListViewHandle, 5, 5, 5, LVCFMT_LEFT, 200, L"Symbol");
257261
PhAddListViewColumn(context->ListViewHandle, 6, 6, 6, LVCFMT_LEFT, 100, L"Section");
258-
PhLoadListViewColumnsFromSetting(L"ImageExceptions64ListViewColumns", context->ListViewHandle);
262+
PhLoadListViewColumnsFromSetting(L"ImageExceptionsAmd64ListViewColumns", context->ListViewHandle);
259263

260-
ExtendedListView_SetCompareFunction(context->ListViewHandle, 4, PvpPeExceptionSizeCompareFunction);
264+
ExtendedListView_SetCompareFunction(context->ListViewHandle, 4, PvpPeExceptionSizeCompareFunctionAmd64);
265+
}
266+
else if (imageMachine == IMAGE_FILE_MACHINE_ARM64)
267+
{
268+
/* Todo */
261269
}
262270

263271
PhInitializeLayoutManager(&context->LayoutManager, hwndDlg);
@@ -279,11 +287,15 @@ INT_PTR CALLBACK PvpPeExceptionDlgProc(
279287

280288
if (imageMachine == IMAGE_FILE_MACHINE_I386)
281289
{
282-
PhSaveListViewColumnsToSetting(L"ImageExceptions32ListViewColumns", context->ListViewHandle);
290+
PhSaveListViewColumnsToSetting(L"ImageExceptionsIa32ListViewColumns", context->ListViewHandle);
283291
}
284292
else if (imageMachine == IMAGE_FILE_MACHINE_AMD64)
285293
{
286-
PhSaveListViewColumnsToSetting(L"ImageExceptions64ListViewColumns", context->ListViewHandle);
294+
PhSaveListViewColumnsToSetting(L"ImageExceptionsAmd64ListViewColumns", context->ListViewHandle);
295+
}
296+
else if (imageMachine == IMAGE_FILE_MACHINE_ARM64)
297+
{
298+
/* Todo */
287299
}
288300

289301
PhDeleteLayoutManager(&context->LayoutManager);

tools/peview/settings.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ VOID PhAddDefaultSettings(
6161
PhpAddStringSetting(L"ImageResourcesTreeListColumns", L"");
6262
PhpAddStringSetting(L"ImageResourcesTreeListSort", L"0,1"); // 0, AscendingSortOrder
6363
PhpAddStringSetting(L"ImageLoadCfgListViewColumns", L"");
64-
PhpAddStringSetting(L"ImageExceptions32ListViewColumns", L"");
65-
PhpAddStringSetting(L"ImageExceptions64ListViewColumns", L"");
64+
PhpAddStringSetting(L"ImageExceptionsIa32ListViewColumns", L"");
65+
PhpAddStringSetting(L"ImageExceptionsAmd64ListViewColumns", L"");
6666
PhpAddStringSetting(L"ImageHeadersListViewColumns", L"");
6767
PhpAddStringSetting(L"ImageHeadersListViewGroupStates", L"");
6868
PhpAddStringSetting(L"ImageLayoutTreeColumns", L"");

0 commit comments

Comments
 (0)