blob: 0abd833aed850439b7220a9bf40c79b372578506 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
The x64 exe loses most of the stack information during runtime, while the ARM64EC exe with the same code runs normally
FEX Version: git head: https://github.com/FEX-Emu/FEX/commit/09e622d5a03d55e39ff81668ab08a6595ddc5c5b
Wine Version: Wine tag 10.5
Reproduction Steps:
1. run x64 exe on wine-arm64ec build get empty stack;
2. run arm64ec exe on the same wine get normal stack;
the exe file:
[exe.zip](https://github.com/user-attachments/files/20153585/exe.zip)
The relevant data information is as follows:
info of x64 exe:
input parameters when calling functions in the executable:
input of NdrClientCall2: 00000001400034C0 0000000140005078 00000070D568FF20 0000000000000001 0000007012345678 00000070D568FF50
Register dump:
ARM64 EL0t Mode
Pc:0000004ff6da1788 Sp:00000070d568fdd0 Lr:0000004ff6dc661c Cpsr:00000000(----)
x0: 00000001400034c0 x1: 0000000140005078 x2: 00000070d568ff40 x3: 0000000000000001 x4: 00000070d568ff00
x5: 0000000000000000 x6: 00000070d4bafff8 x7: 0000007fffa0f680 x8: 00000070d568fed8 x9: 0000004ff6da1784
x10:0000007fec4057d0 x11:0000004ffd2ac7ec x12:00000000000000ff x13:0000000000000000 x14:0000000000000000
x15:0000000000000018 ip0:00000000d63f0200 ip1:0000004ff6dc65f4 x18:0000000000000000 x19:0000000000000000
x20:0000000000000000 x21:0000000000000000 x22:0000000000000000 x23:0000000000000000 x24:0000000000000000
x25:0000004ff6dd2800 x26:0000000000000000 x27:0000004ff6d40000 x28:0000000000000000 Fp:00000070d568fed0
Stack dump:
0x000070d568fdd0: 00000070d568fed0 0000004ff6dc661c
0x000070d568fde0: 0000000000000000 0000000000000000
0x000070d568fdf0: 0000000000000000 0000000000000000
0x000070d568fe00: 0000000000000000 0000000000000000
0x000070d568fe10: 0000000000000000 0000000000000000
0x000070d568fe20: 0000000000000000 0000000000000000
0x000070d568fe30: 0000000000000000 0000000000000000
0x000070d568fe40: 0000000000000000 0000000000000000
0x000070d568fe50: 0000000000000000 0000000000000000
0x000070d568fe60: 0000000000000000 0000000000000000
0x000070d568fe70: 0000000000000000 0000000000000000
0x000070d568fe80: 0000000000000000 0000000000000000
info of arm64ec exe:
input parameters when calling functions in the executable:
input of NdrClientCall2: 00000001400073A0 000000014000A068 0000007257D4FF10 0000004F00000001 0000004F12345678 0000007257D4FF40
Register dump:
ARM64 EL0t Mode
Pc:0000004ff6da1788 Sp:0000007257d4fe90 Lr:00000001400019c0 Cpsr:40000000(-Z--)
x0: 00000001400073a0 x1: 000000014000a068 x2: 0000007257d4ff30 x3: 0000000000000001 x4: 0000007257d4fef0
x5: 0000000000000010 x6: 0000007257d4f2e0 x7: 0000000000000104 x8: 0000007257d4ff40 x9: 0000ccccfffcef76
x10:0000000140003068 x11:0000004ff6da1784 x12:00000001000ffa68 x13:0000000000000000 x14:0000000000000000
x15:0000000000000000 ip0:ccccfffcef76e95d ip1:ccccfffcef760000 x18:0000000000000000 x19:0000004ff6d40000
x20:0000004ff6dd2800 x21:0000000140007000 x22:000000014000a000 x23:0000000000000000 x24:0000000000000000
x25:0000000012345678 x26:0000000000000000 x27:0000000000000000 x28:0000000000000000 Fp:0000007257d4ff50
Stack dump:
0x00007257d4fe90: 0000007257d4ff50 00000001400019c0
0x00007257d4fea0: 0000007257d4ff50 0000000140001984
0x00007257d4feb0: 0000004ff6d40000 0000004ff6dd2800
0x00007257d4fec0: 0000000140007000 0000000000000000
0x00007257d4fed0: 0000000000000000 00000001400073a0
0x00007257d4fee0: 000000014000a068 0000007257d4ff10
0x00007257d4fef0: 0000000012345678 0000007257d4ff40
0x00007257d4ff00: 0000007257d4ff40 0000000140002620
0x00007257d4ff10: 00000074e89ed170 00000001deadbeef
0x00007257d4ff20: 00000074e89ed170 00000074e89eff90
0x00007257d4ff30: 00000074e89ed170 00000001deadbeef
0x00007257d4ff40: 0000000000000000 ffff84263ef41bad
|