http://bugs.winehq.org/show_bug.cgi?id=27349
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #22 from Anastasius Focht focht@gmx.net 2012-03-12 19:17:55 CDT --- Hello Stefan,
feel free to create new bug(s).
I retested some SafeDisc v2.x games, they all work with recent Wine:
BF1942 original: Safedisc v2.60.052 BF1942 patched to 1.6.19: Safedisc v2.80.010 IL-2 FB: Safedisc v2.80.011 NFS Underground: Safedisc v2.90.040
---
For completeness I measured the influence of optimization levels, frame pointer omission and visibility of functions.
gcc version 4.6.2 20111027 (Red Hat 4.6.2-1) (GCC)
--- snip --- CFLAGS="-g -gdwarf-2 -O2" (default "-fno-omit-frame-pointer" enforced by Wine)
kernel32 user32 gdi32 condition (cx < threshold) -------------------------------------------------------------------- c1: 0x3E 0x47 0x39 0x5F c2: 0x1B 0x2D 0x21 0x3C c3: 0x00 0x00 0x00 0x5A --- snip ---
--- snip --- CFLAGS="-g -gdwarf-2 -O2 -fomit-frame-pointer" (override of Wine's default)
kernel32 user32 gdi32 condition (cx < threshold) -------------------------------------------------------------------- c1: 0x41 0x49 0x3C 0x5F c2: 0x20 0x32 0x23 0x3C c3: 0x00 0x00 0x00 0x5A --- snip ---
--- snip --- CFLAGS="-g -gdwarf-2 -O0" (default "-fno-omit-frame-pointer" enforced by Wine)
kernel32 user32 gdi32 condition (cx < threshold) -------------------------------------------------------------------- c1: 0x44 0x50 0x50 0x5F c2: 0x21 0x33 0x39 0x3C c3: 0x00 0x00 0x00 0x5A --- snip ---
Disabling "DECLSPEC_HIDDEN" (__attribute__((visibility ("hidden")))):
--- snip --- CFLAGS="-g -gdwarf-2 -O0" (default "-fno-omit-frame-pointer" enforced by Wine)
kernel32 user32 gdi32 condition (cx < threshold) -------------------------------------------------------------------- c1: 0x4B 0x55 0x53 0x5F c2: 0x2C 0x3C* 0x43* 0x3C c3: 0x00 0x00 0x00 0x5A
* = threshold exceeded -> bad --- snip ---
I'm a bit surprised about "-O0" being worst, there might be additional metrics involved here (align/padding?).
Summarizing the improvements:
- more API hotpatchable - more functions with hidden visibility - enforcing "-fno-omit-frame-pointer" (http://source.winehq.org/git/wine.git/commit/5cfe7db1854ff1142d598eaf49f6050...)
Current Wine built with default settings keeps a safe distance to threshold so I think it's fine to close this bug.
Regards