relevant bug reports: - https://bugs.winehq.org/show_bug.cgi?id=41712 - https://bugs.winehq.org/show_bug.cgi?id=51051 -- v21: ntoskrnl: move i386 specific Rtl*ByteSwap() into separate source. ntoskrnl: move _chkstk() / __chkstk() into separate source. msvcrt: move i386 specific _ftol() into separate source. kernel32: move x86-64 specific GetProcAddress() into separate source. kernel32: move i386 specific Interlocked*() into separate source. kernel32: move i386 specific ExitProcess() into separate source. kernelbase: move x86-64 specific GetProcAddress() into separate source. ntdll: move i386 specific Rtl*ByteSwap() into separate source. tools: add LTO quirks. makedep: support skipping/disabling LTO. configure: enable building Wine with LTO. makedep: support LTO builds. winegcc: support LTO builds. winebuild: support LTO builds. tools: helper functions for LTO builds. ntdll: add attribute "used" to a few symbols that should not be discarded. loader: add attribute "used" to a few symbols that should not be discarded. This merge request has too many patches to be relayed via email. Please visit the URL below to see the contents of the merge request. https://gitlab.winehq.org/wine/wine/-/merge_requests/7111
@servantoftestator I was lucky, so I'm testing Wine 11.0-rc1 with this PR. i386 was built just fine, now waiting for "x86-64 + i386". -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7111#note_125536
On Fri Dec 12 17:49:17 2025 +0000, Konstantin Demin wrote:
I've rebased PR on top of 11.0-rc1, and everything is fine. I'm building Wine with some special handling: first of all, build "affected" binaries - ref. [recipe](https://git.krd.sh/krd/wine/src/commit/695df16f48eec71cba41973e5f193482ab5c5...). Also, here are [i386](https://deb.krd.sh/trixie/pool/ports-wine-dump/wine/11.0~rc1-1/i386/wine-bcr...) build log, [amd64](https://deb.krd.sh/trixie/pool/ports-wine-dump/wine/11.0~rc1-1/amd64/wine-bc...) build log. After checking my build logs it doesn't seem tools/makedep.c is respecting the lto skip lists for me. After manually adding all the files in the lto skip lists to the appropriate [Makefile.in](http://makefile.in)'s using `LTO_SKIP_SRC` it linked successfully.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/7111#note_125561
On Sat Dec 13 02:03:01 2025 +0000, servantoftestator wrote:
After checking my build logs it doesn't seem tools/makedep.c is respecting the lto skip lists for me. After manually adding all the files in the lto skip lists to the appropriate [Makefile.in](http://makefile.in)'s using `LTO_SKIP_SRC` it linked successfully. Maybe you're using "non-standard" build directory? I'm building "as is" and there're no issues. However, I'm glad that you've solved FTBFS with provided directives (`LTO_SKIP_SRC`).
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/7111#note_125570
On Sat Dec 13 15:28:20 2025 +0000, Konstantin Demin wrote:
Maybe you're using "non-standard" build directory? I'm building "as is" and there're no issues. However, I'm glad that you've solved FTBFS with provided directives (`LTO_SKIP_SRC`). Yeah I was using non standard build directories. But even manually changing the directory in tools/makeopts.c to the exact location of the link list did not work for me. Also i'm using new WOW64, not old i386 + x86_64 wow. I had to exclude some files used in the i386 build in the x86_64 build because of that. Specifically the ones relating to \_ftol.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/7111#note_125578
On Sat Dec 13 21:41:52 2025 +0000, servantoftestator wrote:
Yeah I was using non standard build directories. But even manually changing the directory in tools/makeopts.c to the exact location of the link list did not work for me. Also i'm using new WOW64, not old i386 + x86_64 wow. I had to exclude some files used in the i386 build in the x86_64 build because of that. Specifically the ones relating to \_ftol. In that case, you'd copy skiplists to your build directory:
build/tools/lto-skip.* ```sh mkdir -p build/tools for i in tools/lto-skip.* ; do ln -s "$PWD/$i" ./build/tools/ done ``` -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7111#note_125583
On Sun Dec 14 07:12:34 2025 +0000, Konstantin Demin wrote:
In that case, you'd copy skiplists to your build directory: build/tools/lto-skip.* ```sh mkdir -p build/tools for i in tools/lto-skip.* ; do ln -s "$PWD/$i" ./build/tools/ done ``` Yep I tried that one as well before ending up on manually adding to the Makefile.in's. I copied the list files to the build directories in their root and in their tools folders that were autogenerated to no avail. I also tried copying to the root of where I was building and under a tools folder which did not work. I was compiling from a different directory then the standard build dir, while not being in the directories themselves. I shouldn't have to do any of this manual copying anyways even if it had worked.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/7111#note_125587
participants (3)
-
Konstantin Demin (@rockdrilla) -
Konstantin Demin (@rockdrilla) -
servantoftestator (@servantoftestator)