https://bugs.winehq.org/show_bug.cgi?id=51862
Bug ID: 51862 Summary: dlls/ntdll/unix/system.c: In function ‘init_cpu_info’ Product: Wine Version: 6.18 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: version2013@protonmail.com Distribution: ---
Created attachment 70774 --> https://bugs.winehq.org/attachment.cgi?id=70774 log.txt
in distro:
# uname --kernel-release 3.14.56
# gcc --version 4.8.4
# ldd --version 2.19
config line: configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-x --libdir=/usr/lib32 CFLAGS="-O2 -march=i686 -mtune=i686"
Compiling wine-6.18 and wine-6.19, fails with:
/dlls/ntdll/unix/system.c: In function ‘init_cpu_info’: /dlls/ntdll/unix/system.c:250:5: error: inconsistent operand constraints in an ‘asm’
https://bugs.winehq.org/show_bug.cgi?id=51862
Nathan Bennett version2013@protonmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Distribution|--- |Other
https://bugs.winehq.org/show_bug.cgi?id=51862
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |dark.shadow4@web.de
--- Comment #1 from Fabian Maurer dark.shadow4@web.de --- Not sure what the minimum supported GCC version is, but is there a reason you can't update your GCC?
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #2 from Nathan Bennett version2013@protonmail.com --- Even if I could update GCC in this specific distro version I am using, I was hoping to continue using this older distro with newer versions of wine.
It appears I may have to cease compiling wine in this specific distro version. Last wine that compiled successfully was 6.16.
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #3 from Nathan Bennett version2013@protonmail.com --- Clarifying what I wrote; updating my GCC is irrelevant to my point.
I was hoping to continue using older distros, with older GCC, to compile newer versions of wine.
I suppose it is to be expected, as wine is updated, another older GCC version fails to compile the updated wine.
A minimum GCC version is absent official documentation, as far as I am aware.
https://bugs.winehq.org/show_bug.cgi?id=51862
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Keywords| |regression, source Regression SHA1| |7b95cdffa6b12eca9c10a6ab45b | |50fcf1f9fa3a4 Ever confirmed|0 |1
--- Comment #4 from Fabian Maurer dark.shadow4@web.de --- Confirming.
Well, not entirely sure why you'd use that old of a distro, but I guess you have your reasons. I personally don't see why we shouldn't support that, as long as the effort isn't too much.
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #5 from Fabian Maurer dark.shadow4@web.de --- Created attachment 70787 --> https://bugs.winehq.org/attachment.cgi?id=70787 Patch to fix compilation with gcc 4.8
Attaching a patch that *should* fix the issue. Not 100% sure, since I use a newer distro and running code compiled with gcc 4.8 crashes with a segfault instantly... Please report back on whether that fixes the issue for you, and whether wine actually works with that.
https://bugs.winehq.org/show_bug.cgi?id=51862
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #6 from Zebediah Figura z.figura12@gmail.com --- (In reply to Fabian Maurer from comment #5)
Created attachment 70787 [details] Patch to fix compilation with gcc 4.8
Attaching a patch that *should* fix the issue. Not 100% sure, since I use a newer distro and running code compiled with gcc 4.8 crashes with a segfault instantly... Please report back on whether that fixes the issue for you, and whether wine actually works with that.
That can't work. There's no guarantee that ebx doesn't get scratched between two separate asm blocks, and you're missing an ebx clobber in the first block anyway.
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #7 from Fabian Maurer dark.shadow4@web.de --- Created attachment 70789 --> https://bugs.winehq.org/attachment.cgi?id=70789 Patch v2
Thanks, I knew I must've missed something... I mean, it worked, but I admit I don't know what you all need for inline assembly to *reliably* work.
Anyways, the point is that we can't clobber ebx. What about the new patch I attached?
https://bugs.winehq.org/show_bug.cgi?id=51862
Fabian Maurer dark.shadow4@web.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #70787|0 |1 is obsolete| |
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #8 from Nathan Bennett version2013@protonmail.com --- (In reply to Fabian Maurer from comment #7) Used Patch v2 Compiling finished with 'Wine Build Complete'.
Thank you.
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #9 from Nathan Bennett version2013@protonmail.com --- (In reply to Fabian Maurer from comment #7) wine-6.21 Used Patch v2 Compiling finished with 'Wine Build Complete'.
Thank you.
https://bugs.winehq.org/show_bug.cgi?id=51862
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetest@luukku.com
https://bugs.winehq.org/show_bug.cgi?id=51862
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jacek@codeweavers.com
--- Comment #10 from Jacek Caban jacek@codeweavers.com --- Created attachment 71290 --> https://bugs.winehq.org/attachment.cgi?id=71290 fix
We could use something like the attached patch to avoid the problem. In theory we have a similar problem in __cpuidex from intrin.h. That one is used only for PE parts, so an archaic host GCC does not use it as long as mingw is available.
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #11 from Fabian Maurer dark.shadow4@web.de --- @Jacek Caban Yes, that looks similar to how it was before it got changed. However, isn't my shorter version preferable?
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #12 from Jacek Caban jacek@codeweavers.com --- When inline assembly is causing problems, I think it's safer to just avoid inline assembly instead of working around problems.
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #13 from Fabian Maurer dark.shadow4@web.de --- It's a well known issue with older gcc (can't clobber ebx), I don't see how that's unsafe. I mean, the x64 version already works, just need a tweak for 32bit. I would prefer the simpler version, since it's a lot less invasive. Just backup and restore the register.
https://bugs.winehq.org/show_bug.cgi?id=51862
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1| |d0413d833f430a487589283c53f | |797da2b4f48a0 Status|NEW |RESOLVED
--- Comment #14 from Jacek Caban jacek@codeweavers.com --- Inline assembly works around the problem while full assembly implementation avoids the problem in the first place and it's less invasive comparing to pre-regression code.
It's fixed in git.
https://bugs.winehq.org/show_bug.cgi?id=51862
Matteo Bruni matteo.mystral@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|dlls/ntdll/unix/system.c: |Error compiling function |In function ‘init_cpu_info’ |init_cpu_info() in | |dlls/ntdll/unix/system.c | |with GCC 4.8.4
https://bugs.winehq.org/show_bug.cgi?id=51862
--- Comment #15 from Nathan Bennett version2013@protonmail.com --- Compiling wine-7.0-rc2 results in "Wine build complete" Thank you.
https://bugs.winehq.org/show_bug.cgi?id=51862
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #16 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 7.0-rc3.