- fixes effective calling convention used in test (causing some crashes
#53536)
- properly set entries in .spec files
- only export these functions on 32bit
- always inline them on 64bit
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1794
Follow GCC recommendations for getting rid of it.
MingW/GCC 12 complains with:
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c: In function 'test_effect_parameter_value':
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c:1838:71: warning: expression does not compute the number of elements in this array; element type is 'DWORD' {aka 'long unsigned int'}, not 'D3DXMATRIX' {aka 'struct _D3DMATRIX'} [-Wsizeof-array-div]
1838 | const D3DXMATRIX *matrix_pointer_array[sizeof(input_value)/sizeof(D3DXMATRIX)];
| ^
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c:1838:71: note: add parentheses around the second 'sizeof' to silence this warning
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c:1835:19: note: array 'input_value' declared here
1835 | DWORD input_value[EFFECT_PARAMETER_VALUE_ARRAY_SIZE];
| ^~~~~~~~~~~
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
--
v2: d3dx9: Get rid of GCC warning.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1766
I believe this performs similarly, if not better, than how direct calls previously performed. It is possible to make things even better with tail calls on the PE side, but it is going to be a little bit harder, and I'll make another MR later.
FWIW except for vkoverhead benchmark, I still yet to see a real case scenario where it makes a difference, though I think this is straightforward enough.
CC @mbriar
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1763
Follow GCC recommendations for getting rid of it.
MingW/GCC 12 complains with:
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c: In function 'test_effect_parameter_value':
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c:1838:71: warning: expression does not compute the number of elements in this array; element type is 'DWORD' {aka 'long unsigned int'}, not 'D3DXMATRIX' {aka 'struct _D3DMATRIX'} [-Wsizeof-array-div]
1838 | const D3DXMATRIX *matrix_pointer_array[sizeof(input_value)/sizeof(D3DXMATRIX)];
| ^
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c:1838:71: note: add parentheses around the second 'sizeof' to silence this warning
/home/eric/work/wine/dlls/d3dx9_36/tests/effect.c:1835:19: note: array 'input_value' declared here
1835 | DWORD input_value[EFFECT_PARAMETER_VALUE_ARRAY_SIZE];
| ^~~~~~~~~~~
Signed-off-by: Eric Pouech <eric.pouech(a)gmail.com>
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/1766
Valgrind support requires a fork, which I've published to https://gitlab.winehq.org/rbernon/valgrind. The fork implements loading DWARF debug info from PE files, instead of the old and broken upstream PDB support. I've tried to upstream these changes a long time ago but didn't receive any feedback.
I think we could maybe consider keeping a fork, which I'm happy to maintain, as the changes aren't too large. We may want to investigate adding 32-on-64 support, which may require a bit more changes (to VEX specifically, because its amd64 guest doesn't support segment register manipulation).
The changes here are not all related to Valgrind, and I'll create separate MR for those which may make sense independently from Valgrind / GDB.
Also included is a suppression file to silent some annoying false positives, many of which are coming from the cross-stack accesses during syscalls, which are confusing Valgrind's stack heuristics. One can try this out with something like:
`WINELOADERNOEXEC=1 valgrind --suppressions=tools/valgrind.supp wine64/loader/wine64 wine64/programs/winecfg/winecfg.exe`
--
v5: ntdll: Avoid writing to invalid memory in i386 unix dispatcher.
ntdll: Set %rsp before args in x86_64 call_user_mode_callback.
ntdll: Fix incorrect i386 call_user_mode_callback CFI.
ntdll: Fix valgrind notifications from ntdll.so.
ntdll: Import valgrind headers for PE side ntdll.
ntdll: Allocate a truly separate stack for the kernel stack.
ntdll: Maintain a PE module link map and expose it to GDB.
ntdll: Pass a UNICODE_STRING to load_builtin and virtual_map_image.
loader: Expose a shadow copy of ld.so link map to GDB.
ntdll: Add .cfi_signal_frame to __wine_syscall_dispatcher.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1074