xul.dll from Mypal 27.9.4 has a resource entry without any data.
Windows returns this as null-terminated string, instead of pointing past the data.
The first commit adds a test,
the second commit fixes the bugs (and removes the todo_wine).
Original ticket for reference: https://jira.reactos.org/browse/CORE-15781
--
v4: kernelbase: Fix VerQueryValueW with no data
https://gitlab.winehq.org/wine/wine/-/merge_requests/1263
Currently, unwinding the unix libraries (or full ELF builds) requires having libunwind available.
When starting up a wine environment, an exception of type `RPC_S_SERVER_UNAVAILABLE` gets thrown - and if libunwind isn't available, this breaks the startup. Thus, currently on ARM/ARM64, libunwind is essentially mandatory.
Additionally, at least on ARM, libunwind seems brittle (commits in latest git master breaks the unwinding use cases in Wine, see e.g. https://github.com/libunwind/libunwind/pull/203#issuecomment-984126066.
For ARM, libunwind has currently relied on DWARF debug info in the `.debug_frame` section, since Linux on ARM doesn't use DWARF for runtime unwinding. This MR adds ARM EHABI unwind opcodes where necessary, and adds a local reimplementation of an ARM EHABI/EXIDX/EXTBL unwinder, similar to the DWARF one.
With these changes, unwinding on ARM seems to work fine, even without libunwind.
See the individual commit messages for more commentary on the decisions taken so far (I've tried to write up all relevant considerations there - it's a fair amount of commentery).
A couple open questions:
- I wrote the ARM EHABI unwind code mostly with `stdint.h` types like `uint32_t`(as it's in the ntdll/unix directory anyway), but I can rewrite it with `DWORD` or similar if that's preferred.
- The ARM EHABI opcodes are enabled for `defined(__arm__) && defined(__ELF__) && defined(__GNUC__) && !defined(__SEH__) && !defined(__ARM_DWARF_EH__)` - there's no define to check for for knowing it's used and enabled, but it has to be implicitly assumed if no other other unwind mechanism is signaled.
- The `dl_iterate_phdr` function, used for finding the EXIDX section for locating ARM EHABI unwind info, is used within `#ifdef linux`. It might be available on other OSes too (like FreeBSD etc). Or should I go ahead and add a configure check for it?
--
v2: ntdll: Implement ARM EHABI unwinding
ntdll: Add ARM EHABI unwind instructions in assembly functions
https://gitlab.winehq.org/wine/wine/-/merge_requests/1162
xul.dll from Mypal 27.9.4 has a resource entry without any data.
Windows returns this as null-terminated string, instead of pointing past the data.
The first commit adds a test,
the second commit fixes the bugs (and removes the todo_wine).
Original ticket for reference: https://jira.reactos.org/browse/CORE-15781
--
v3: kernelbase: Fix VerQueryValueW with no data
https://gitlab.winehq.org/wine/wine/-/merge_requests/1263
This is slightly different from dlltool but I think it should be compatible. The transition is done by first replacing dlltool with its bugs, and fixing them in separate changes.
I based the ARM / AARCH64 implementation on the existing code around, but I have no idea if it is correct, and dlltool also doesn't include any delay load implementation for ARM.
--
v3: winebuild: Put the delay import descriptor in data section.
winebuild: Fix import hint value for symbols imported by name.
winebuild: Implement delay import lib generation without dlltool.
makedep: Pass DLLFLAGS to winebuild --implib invocations.
winebuild: Implement import lib generation without dlltool.
winebuild: Introduce a new --without-dlltool winebuild flag.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1001
xul.dll from Mypal 27.9.4 has a resource entry without any data.
Windows returns this as null-terminated string, instead of pointing past the data.
The first commit adds a test,
the second commit fixes the bugs (and removes the todo_wine).
Original ticket for reference: https://jira.reactos.org/browse/CORE-15781
--
v2: kernelbase: Fix VerQueryValueW with no data
version/tests: Add a test for an empty value in VerQueryValueW
https://gitlab.winehq.org/wine/wine/-/merge_requests/1263
The storage event url prop fix is tested after the location.hash tests are added, implicitly. I didn't find a need to add extra tests for no reason there.
The super_navigate changes for fragments is also necessary for the location.hash tests (and its behavior, apparently)…
--
v4: mshtml: Implement document.importNode.
mshtml: Implement HTMLLocation_put_hash.
mshtml: Always use super_navigate when navigating fragments.
mshtml: Don't include fragment in storage event's url prop.
mshtml: Return E_ABORT if wine-gecko's OnDataAvailable aborts the binding.
mshtml: Improve locale stub for KeyboardEvent.
mshtml: Implement isContentEditable for HTML elements.
mshtml/tests: Handle broken localStorage on native.
https://gitlab.winehq.org/wine/wine/-/merge_requests/1206