Staging repository for Wine
Go to file
Zebediah Figura 53e890acb9 ntdll-x86_64_Builtin_Frames: Remove patch.
There is no record at all of what this was for.

However, it's not hard to make a good guess. The effect of the patch is to skip
walking the TEB chain if the faulting %esp is *above* the first element in the
TEB chain.

The most obvious thing this protects against is the case where the application
switched stacks and the new stack happened to be at a higher address. Without
this patch, we would walk through the whole TEB chain, since all of its entries
would be below the target frame we are unwinding to. But they wouldn't actually
be "inner to" it, and so we'd incorrectly hit Wine try/catch blocks.

The most notable such try/catch block is the unhandled exception filter itself,
and it would necessarily have been triggered by any such exception if no other
blocks were.

One can further speculate that this patch, like many others in Wine-Staging, was
written for Cygwin, which is known to switch stacks.

Besides Wine commits c22aa54e9977785eafcd7cc3811116e5f4dd2da8, and other more
targeted workarounds to specific functions, the workaround introduced by this
patch was obviated by a similar, but more complete and holistic, workaround
upstream, namely 8fe95d29d32533e8fa28383c0211555eb71ea6c1.

Thus this patch has been, in almost the simplest sense, upstreamed. Remove it.
2024-02-22 23:31:30 -06:00
.github macOS.yml: Fix GitHub workflow 2023-02-17 01:21:49 +00:00
patches ntdll-x86_64_Builtin_Frames: Remove patch. 2024-02-22 23:31:30 -06:00
staging Rebase against 232b18d820e08fe6534249a64d3afdbf35d0b688. 2024-02-23 10:04:43 +11:00
.gitignore patchupdate.py: Delete. 2023-02-16 14:37:54 -06:00
LICENSE.md Update Copyright year 2020-01-07 12:25:46 +11:00
precommit-hook.sh precommit-hook.sh: Use 'grep -q' instead of redirection to /dev/null. 2016-07-01 20:13:03 +02:00
README.md readme: Deprecate patchinstall.sh in favor of patchinstall.py. 2023-01-30 12:18:11 -06:00

What is Wine Staging?

Wine Staging is the testing area of winehq.org. It contains bug fixes and features, which have not been integrated into the development branch yet. The idea of Wine Staging is to provide experimental features faster to end users and to give developers the possibility to discuss and improve their patches before they are integrated into the main branch. More information about Wine Staging can also be found on the WineHQ wiki.

Installation

Ready-to-use packages for Wine Staging are available for a variety of Linux distributions and for Mac OS X. Just follow the installation instructions for your operating system.

On most distributions the wine-staging package is installed to /opt/wine-staging, such that multiple Wine versions can be installed in parallel. If this is the case for your distribution, you will have to type /opt/wine-staging/bin/wine instead of just wine. The same also applies for other wine-specific programs like winecfg. To learn more about how to use Wine Staging, please take a look at the usage instructions.

Building

Wine Staging is maintained as a set of patches which has to be applied on top of the development branch. In order to build Wine Staging, the first step is to setup a build environment for Wine, including all required dependencies. A lot of information about that is collected in the WineHQ Wiki.

In order to apply all Wine Staging patches it is recommended to use the patchinstall.py utility which takes care of applying all patches in the correct order. For reference, the possible commandline arguments are:

Usage: ./staging/patchinstall.py [DESTDIR=path] [-W patchset] [patchset ...]

Autogenerated script to apply all Wine Staging patches on your Wine
source tree.

Configuration:
  DESTDIR=path         Specify the path to the wine source tree
  --all                Select all patches
  --force-autoconf     Run autoreconf and tools/make_requests after each patch
  --help               Display this help and exit
  --no-autoconf        Do not run autoreconf and tools/make_requests
  --no-patchlist       Do not apply patchlist (needed for 'wine --patches')
  --upstream-commit    Print the upstream Wine commit SHA1 and exit
  --version            Show version information and exit
  -W patchset          Exclude a specific patchset

Backends:
  --backend=patch      Use regular 'patch' utility to apply patches (default)
  --backend=git-am     Use 'git am' to apply patches
  --backend=git-apply  Use 'git apply' to apply patches

If you want to apply all patches with the patch utility, the commandline should look similar to this:

./staging/patchinstall.py DESTDIR="/path/to/wine" --all

Before you proceed with the compilation, please make sure that you installed all additional build dependencies required for the Wine Staging features you are interested in (check output of ./configure). More information about building Wine Staging, optional build dependencies, and hints for packagers are collected in our Wiki.

Contributing

For information on contributing to Wine-Staging, please see https://wiki.winehq.org/Wine-Staging_Contributing. Note that GitHub pull requests are strongly dispreferred, especially for patches.

Donations

wine-staging is a large set of experimental patches which provide various improvements to WINE, but are not quite suitable for upstreaming. This set of patches has been continuously managed for many years by a small group of volunteers. The way this works is that we often review patches attached to various bug reports found at https://bugs.winehq.org/ which may fix bugs, but may not be quite suitable to be upstreamed due to needing some cleanup or more proper implementation. In the event that this happens, we add the patches to wine-staging instead, and keep them updated and maintained as well as attempt to clean them up to be upstreamed. We also both write and verify patches which fix various bugs that may not have patches, and in turn allow them run better using WINE. This includes testing on various hardware, games and applications.

Any expenses for applications, games, or hardware which we do not own comes out of pocket. In order to alleviate these expenses, we are now accepting donations. This in turn allows us to continue to perform testing, provide fixes, and get them upstreamed, ultimately aiming to provide a better experience for all WINE users. All of our work is provided publicly for free and can be found at https://gitlab.winehq.org/wine/wine-staging. We do not expect to be paid for any of the work provided, nor will donators receive any special benefits or compensation.

Donations are recieved through Patreon. Anyone interested may donate here:

https://www.patreon.com/winestaging