Commit graph

1363 commits

Author SHA1 Message Date
Alexandre Julliard
06fdcba7cf loader: Build relative paths at run-time instead of depending on makedep. 2024-06-25 13:32:57 +02:00
Alexandre Julliard
0fb9e616bc makefiles: Hardcode the dll directory.
It's Wine-specific anyway.
2024-06-24 15:21:42 +02:00
Brendan Shanks
7b82f507bd loader: Use zerofill sections instead of preloader on macOS when building with Xcode 15.3.
Xcode 15.3 adds a new linker flag ('-no_huge') which allows the loader
to use zero-fill sections to reserve the areas currently being
reserved by the preloader.

This means the preloader is no longer needed (a good thing, since it's
heavily dependent on private APIs).

The preloader will still be used when Xcode <15.3 is being used, or when
building for i386 (32-bit for 10.14 and earlier).
2024-06-21 17:33:24 +02:00
Paul Gofman
1bccb4cf9a wine.inf: Add Explorer\Advanced registry key. 2024-05-22 22:28:44 +02:00
Paul Gofman
c3d641927a wine.inf: Add InstallationType field to CurrentVersion. 2024-05-20 11:55:32 +02:00
Zebediah Figura
b381f9d095 wine.inf: Set the EnableLUA value to 1.
This signifies that UAC is active.

Foobar2000 checks this value, and won't even try to elevate itself otherwise.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50727
2024-03-04 15:39:06 +01:00
Michael Müller
cfab11e16a wine.inf: Register the New menu as a directory background context menu handler.
CDBurnerXP expects the ContextMenuHandlers key to exist, and apparently
enumerates it until it receives ERROR_NO_MORE_ITEMS. If it fails to open the
key, it will spin forever trying to call RegEnumKeyExW(NULL) and getting
ERROR_INVALID_HANDLE.

We could simply create an empty ContextMenuHandlers key here, but this will
allow the New menu to work in the builtin explorer view once shellex handlers
are implemented.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=29523
2024-03-01 23:14:22 +01:00
Zebediah Figura
227408c4fc wine.inf: Add ShellNew registry entries for Folder. 2024-02-29 19:21:08 +01:00
Rémi Bernon
0ed830eac5 mouhid.sys: Introduce a new HID pointer device driver.
This only matches with digitizer devices for now, it could later be
used for HID mice but for now we use a different path for that.
2024-02-14 19:19:32 +01:00
Alexandre Julliard
5a26d87bab Revert "loader: Associate folder with explorer".
This reverts commit 7a941fd59a.
It doesn't work properly since explorer fails to launch, and it breaks
the tests.
2024-01-30 22:41:17 +01:00
Vijay Kiran Kamuju
f51b4d014e wine.inf: Create security directory.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52399
2024-01-22 10:11:27 +01:00
Haidong Yu
7a941fd59a loader: Associate folder with explorer.
Signed-off-by: Haidong Yu <yuhaidong@uniontech.com>
2024-01-18 18:08:48 +01:00
Alexandre Julliard
8d628b1254 loader: Remove absolute paths references from the man page.
All paths are relative to the installation directory by default.
2024-01-02 21:54:41 +01:00
Shaun Ren
ad8f354f62 msttsengine: Add stub dll. 2023-11-08 17:25:41 +01:00
Alexandre Julliard
4502eb56ba configure: Use hidden visibility also when building Unix libraries. 2023-11-08 10:27:21 +01:00
Hans Leidekker
fd00d8e4cc ntdll: Bump current build number to 19043 (Win10 2009).
Based on Proton commit 0fa76dd66a8.
2023-10-31 17:04:57 +01:00
Alex Henrie
b520a19fc2 loader: Associate Wine with internet shortcuts. 2023-10-30 13:33:28 +01:00
Alexandre Julliard
8db7f7a6ae Revert "loader: Translate wine.desktop to Catalan".
This reverts commit 7a22152ba1.
There was already a translation.
2023-10-19 14:56:32 +02:00
Alex Henrie
e5679b5ff6 loader: Add separating dash to Spanish translation of wine.desktop. 2023-10-17 21:48:20 +02:00
Alex Henrie
7a22152ba1 loader: Translate wine.desktop to Catalan. 2023-10-17 21:48:20 +02:00
Alex Henrie
474536c0d6 loader: Associate Wine with batch files. 2023-10-17 21:48:20 +02:00
Dmitry Timoshkov
3acdfe3180 srvsvc: Add LanmanServer stub service.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
2023-09-08 17:47:32 +02:00
Jinoh Kang
da74da2939 loader: Don't return from __stack_chk_fail() stub in preloader.
GCC expects __stack_chk_fail() to be noreturn[1].  Returning from
__stack_chk_fail() can thus lead to subtle failures.

When crashing, use a volatile NULL pointer dereference.  Ideally we
would like to "abort()" here, but doing so would require two more
syscall definitions just for a cold function.  After all, the function
isn't even used at all if -fno-stack-protector is specified.

Also, don't say "stack smashing" (unlike glibc).  The preloader
currently initializes the stack canary value to a fixed value (0), which
serves little value in protecting against actual buffer overrun attacks.

[1]: https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gccint/Stack-Smashing-Protection.html
2023-09-04 11:40:38 +02:00
Jinoh Kang
81f7329f4c loader: Fix calculation of thread_data address in Linux x86-64 preloader.
Fixes: ac1761d1da
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55508
2023-09-04 11:39:14 +02:00
Brendan Shanks
4e6dbf3b9e loader: In macOS preloader, add __program_vars section.
This is needed to be a correct macOS 10.7 binary.
2023-07-18 15:16:12 +02:00
Brendan Shanks
cfa0dd9dd9 loader: On 64-bit macOS, reserve the low 8GB using a zerofill section.
A zerofill section is the only way to reserve address space and prevent
system frameworks from using it, including preventing allocations
before any preloader code runs:
- starting with Ventura, dyld allocates private memory from 0x1000-0x81000.
  This breaks EXEs that have an image base of 0x10000.
- Rosetta allocates memory starting at 0x100000000, which breaks EXEs based there.
- starting with Monterey, for proper 10.7 binaries (which include a __program_vars section),
  libSystem initializes itself before the preloader runs. This fragments the <4GB
  address space which is needed for Wow64.

This will need to be adjusted if any EXEs based at 0x200000000 or higher
are found.
2023-07-18 15:16:12 +02:00
Jinoh Kang
966233aee6 loader: Set the visibility of symbols in preloader to "hidden".
Today, the preloader is linked with -fPIE in spite of the fact that the
preloader is a non-PIE statically linked binary.  This is due to a
limitation in tools/makedep that makes it difficult to specify CFLAGS
for each individual object file's recipe.

This can seemingly cause problems with some GOTPCREL(X) relocations
inside the preloader. Since preloader does not link to the system
library directly, there is no need for a Global Offset Table (GOT).
However, a few extern (non-static) function symbols are declared, the
use of which makes GCC emit instructions that references those symbols
by indirection through GOT.  The linker then tries to optimize such
instructions to eliminate GOT references, which can fail due to various
reasons.

This stands in contradiction with Jinoh Kang's suggestion (in bug 55050)
that "-fPIE is harmless even when applied to an object linked into
non-PIE executables." The claim is theoretically true since
position-independent code can in principle be relocated to any address
(fixed or dynamic); however, it fails due to some peculiar practical
issues, which is arguably a limitation in the linker's implementation
(since it can be worked around with -Wl,--no-relax without issues).

Fix this by eliminating GOT usage by setting the default visibility of
non-static declarations to "hidden". Assuming GCC's medium code model
(-mcmodel=medium; default code model for x86_64), this suppresses any
unnecessary PLT or GOT relocations for defined symbols, and provides
opportunity for GCC to optimize the code better.

Fixes: 78ed343842
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55091
2023-06-20 20:27:45 +02:00
Alexandre Julliard
ac1761d1da loader: Build the preloader as PIE on 64-bit. 2023-06-19 17:32:24 +02:00
Alexandre Julliard
78ed343842 loader: Force building the main loader as PIE on 64-bit.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55050
2023-06-19 17:30:45 +02:00
Tim Clem
6b0836e3f1 loader: Reserve some space for 32-bit top-down allocations on 64-bit. 2023-05-31 22:50:10 +02:00
Hans Leidekker
956e580f06 wine.inf: Use FLG_ADDREG_NOCLOBBER for CurrentMajor/MinorVersionNumber.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54844
2023-04-17 18:55:41 +02:00
Sven Baars
cabd68728d wine.inf: Put the Clients key in the right place. 2023-03-29 22:29:37 +02:00
Louis Lenders
e8b0c92395 wine.inf: Add EditionID to HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54675
2023-03-27 15:48:14 +02:00
Brendan Shanks
93941d6ec6 loader: In macOS preloader, stop using mincore() to test if a region is empty. 2023-03-06 11:09:29 +01:00
Brendan Shanks
c10207e2a7 loader: In macOS preloader, move the top-down allocations area down.
On Ventura, the Rosetta runtime and dyld shared cache now reach down
to 0x7ff7fffb8000 on my system.
2023-03-06 11:09:21 +01:00
Alexandre Julliard
7611492ddc wine.inf: Add keys for the platform-specific Wow64 backend. 2023-03-02 18:12:52 +01:00
Alexandre Julliard
aebc819abf wine.inf: Set Program Files variables separately for all WoW platforms. 2023-03-02 18:12:28 +01:00
Alexandre Julliard
863858da2a wine.inf: Remove redundant platform-specific sections. 2023-03-02 18:11:32 +01:00
Shaun Ren
d83e03f638 wine.inf: Enable ir50_32 video codec. 2023-02-13 21:39:40 +01:00
Brendan Shanks
36bb7175c1 loader: In macOS preloader, fix an environment variable sometimes being lost. 2023-02-08 09:01:34 +01:00
Zebediah Figura
aff181e6d9 scardsvr: Add stub service.
The Rutoken driver installer tries to start this service, and fails if it
doesn't exist.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54396
2023-02-08 08:58:25 +01:00
Zebediah Figura
c08310a882 wine.inf: Always use FLG_ADDREG_APPEND for SvcHost entries.
Now that FLG_ADDREG_APPEND is changed to correctly create the value if it
doesn't exist, this is safe, and less error-prone when adding new services.
2023-02-08 08:58:10 +01:00
Hans Leidekker
69154f0329 ntdll: Default to Windows 10. 2023-02-01 17:11:47 +01:00
Floris Renaud
11bd4b53a9 loader: Document the WINE_D3D_CONFIG environment variable. 2023-01-24 15:22:49 +01:00
Brendan Shanks
f99eef6847 loader: In macOS preloader, set NXArgc, NXArgv, and environ on i386 and x86_64. 2022-12-07 23:20:39 +01:00
Piotr Caban
b090025479 wineps: Register print processor. 2022-12-07 17:10:26 +01:00
Piotr Caban
28aa2017d7 wine.inf: Also install wineps.drv to print processor directory. 2022-12-07 17:10:23 +01:00
Piotr Caban
3285363da6 winprint: Register winprint print processor. 2022-12-05 20:04:54 +01:00
Brendan Shanks
9ab93415f7 loader: In macOS preloader, manually set 'environ' to work around a bug in macOS 12 and later.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54009
2022-12-01 10:25:19 +01:00
Brendan Shanks
588e555425 loader: In macOS preloader, fix up argc/argv in C rather than asm. 2022-12-01 10:25:19 +01:00