Fix a test failure when theming is off. A toolbar without TBSTYLE_FLAT will fill its checked button
background rectangle when theming is inactive, overwriting the checked pattern required for the test.
Some Windows version expect output to be aligned on 4 bytes.
Notes (from i386 and x86_64 tests):
- MSVC and Mingw/gcc don't layout the two variables (sdki, sdki_ex)
the same way.
- MSVC aligns each variable on 4-byte boundary,
- MingW/GCC stores them in a 8-byte chunk, but starting from the
end of the buffer: hence none of them is on a 4-byte boundary.
So, fixing the alignment of variables is not sufficient to
workaround the compilers' discrepancy on all source code.
I didn't find a generic way to align on 4 bytes structures of size
smaller than 4 bytes (apart from adding the DECLSPEC_ALIGN to
each of the offending structures, likely not that many though).
Ideas welcomed.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53684
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
The caller already analyses get_subtests() errors and provides
a detailed error message in the information section of the report
so the report(R_ERROR) pop up / stderr message is redundant.
Method decriptor's strings are internally stored in ANSI, and
potentially converted from Unicode using current code page.
Test was expecting loss in Unicode to ANSI conversion.
Adapt test to also support loss-less conversion (that's the case
when code page is UTF-8).
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52873
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
This change is adding DWARF (CFI) unwind information to the
hand-written assembly of the `__wine_syscall_dispatcher` function.
This enables unwinding through the dispatcher from the Linux stack
into (and through) the Windows stack.
The general idea is that the `syscall_frame` struct contains the
content of the callee-save registers before the function call
(in particular the stack pointer and the return address). At any
point of the execution, we have a pointer into the `syscall_frame`
in $rcx, $rbp or $rsp.
For the CFI codes the general idea is that we are defining the
computations of the callee-save registers based on the
`syscall_frame` using DWARF’s `breg` instruction, rather than
relative to CFA.
This change adds a bunch of convenience macros, to (hopefully)
improve readability of the CFI instructions.
Note: Those change was used with great success for unwinding through
the dispatcher using a modified LLDB shown in the
“how-wine-works-101” (https://werat.dev/blog/how-wine-works-101/)
blog post as well as for in the Orbit profiler
(https://github.com/google/orbit), that has mixed-callstack
unwinding support.
Test: Inspect callstacks reported by the Orbit profiler while
running some Windows targets using the modified wine, as well as
verify debugging reports correct callstacks when stepping with our
modified LLDB through the dispatcher itself (so that we are able
to unwind through the dispatcher at any instruction).
In some 32bit modules, MingW/GCC generates in Dwarf debug information,
a cfa address to be computed as:
deref(register XX + offset)
which is too complicated to be expressed through regular DbgHelp APIs.
So silence the FIXME, and report a 'too complex' error (instead of
'internal').
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52790
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>
- split in two sub helpers (one to get size, the other to fill content in)
(this avoids reallocating buffer)
- return error in case no range is present (but range dwarf attribute is)
Signed-off-by: Eric Pouech <eric.pouech@gmail.com>