From 764a0da0a3827f9e8d886f61d43d29b525107f17 Mon Sep 17 00:00:00 2001 From: Michael Cronenworth Date: Mon, 23 Mar 2015 21:57:56 -0500 Subject: [PATCH] Update to 1.7.39 --- .gitignore | 6 +- sources | 6 +- wine-gcc5.patch | 161 ++++++++++++++++++++++++++++++++++++++++++++++++ wine.spec | 28 +++++---- 4 files changed, 182 insertions(+), 19 deletions(-) create mode 100644 wine-gcc5.patch diff --git a/.gitignore b/.gitignore index 562e43c..68c8868 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -/wine-1.7.38.tar.bz2 -/wine-1.7.38.tar.bz2.sign -/wine-staging-1.7.38.tar.gz +/wine-1.7.39.tar.bz2 +/wine-1.7.39.tar.bz2.sign +/wine-staging-1.7.39.tar.gz diff --git a/sources b/sources index 59fb56f..12e114f 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -0e2c4eae7b5093cb4b7018974994915f wine-1.7.38.tar.bz2 -63ed73652a1b0068ca096f1324e643d6 wine-1.7.38.tar.bz2.sign -a6385ebf1c6830cc4732bb9a49bb4419 wine-staging-1.7.38.tar.gz +eada8f9fde77a72e1d1f682020d4cbfe wine-1.7.39.tar.bz2 +3d1c993249d4ca1971a69724657286ab wine-1.7.39.tar.bz2.sign +88b30faba37a5889843a96bfbc81af35 wine-staging-1.7.39.tar.gz diff --git a/wine-gcc5.patch b/wine-gcc5.patch new file mode 100644 index 0000000..e90ede6 --- /dev/null +++ b/wine-gcc5.patch @@ -0,0 +1,161 @@ +--- wine-1.7.38/dlls/ntdll/sec.c.orig 2015-03-06 07:27:36.000000000 -0600 ++++ wine-1.7.38/dlls/ntdll/sec.c 2015-03-19 10:42:37.117665983 -0500 +@@ -1714,7 +1714,7 @@ + * the native function returns something like + * "S-1-5-21-0000000000-000000000-0000000000-500"; + */ +-NTSTATUS WINAPI RtlConvertSidToUnicodeString( ++NTSTATUS WINAPI __attribute__((optimize("O0"))) RtlConvertSidToUnicodeString( + PUNICODE_STRING String, + PSID pSid, + BOOLEAN AllocateString) +--- wine-1.7.38/dlls/ntdll/directory.c.orig 2015-03-19 13:53:47.952588902 -0500 ++++ wine-1.7.38/dlls/ntdll/directory.c 2015-03-19 13:52:51.571954998 -0500 +@@ -3008,7 +3008,7 @@ + * element doesn't have to exist; in that case STATUS_NO_SUCH_FILE is + * returned, but the unix name is still filled in properly. + */ +-NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret, ++NTSTATUS CDECL __attribute__((optimize("O0"))) wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret, + UINT disposition, BOOLEAN check_case ) + { + static const WCHAR unixW[] = {'u','n','i','x'}; +--- wine-1.7.38/dlls/kernel32/volume.c.orig 2015-03-19 15:01:23.647111174 -0500 ++++ wine-1.7.38/dlls/kernel32/volume.c 2015-03-19 15:00:59.460854627 -0500 +@@ -714,7 +714,7 @@ + /*********************************************************************** + * GetVolumeInformationW (KERNEL32.@) + */ +-BOOL WINAPI GetVolumeInformationW( LPCWSTR root, LPWSTR label, DWORD label_len, ++BOOL WINAPI __attribute__((optimize("O0"))) GetVolumeInformationW( LPCWSTR root, LPWSTR label, DWORD label_len, + DWORD *serial, DWORD *filename_len, DWORD *flags, + LPWSTR fsname, DWORD fsname_len ) + { +--- wine-1.7.39/dlls/ntdll/virtual.c.orig 2015-03-23 09:22:18.512141978 -0500 ++++ wine-1.7.39/dlls/ntdll/virtual.c 2015-03-23 09:22:47.951415202 -0500 +@@ -2346,7 +2346,7 @@ + * NtQueryVirtualMemory (NTDLL.@) + * ZwQueryVirtualMemory (NTDLL.@) + */ +-NTSTATUS WINAPI NtQueryVirtualMemory( HANDLE process, LPCVOID addr, ++NTSTATUS WINAPI __attribute__((optimize("O0"))) NtQueryVirtualMemory( HANDLE process, LPCVOID addr, + MEMORY_INFORMATION_CLASS info_class, PVOID buffer, + SIZE_T len, SIZE_T *res_len ) + { +--- wine-1.7.39/dlls/kernel32/process.c.orig 2015-03-23 11:35:21.490412754 -0500 ++++ wine-1.7.39/dlls/kernel32/process.c 2015-03-23 12:12:36.928665968 -0500 +@@ -1088,7 +1088,7 @@ + * + * Startup routine of a new process. Runs on the new process stack. + */ +-static DWORD WINAPI start_process( PEB *peb ) ++static DWORD WINAPI __attribute__((optimize("O0"))) start_process( PEB *peb ) + { + IMAGE_NT_HEADERS *nt; + LPTHREAD_START_ROUTINE entry; +--- wine-1.7.39/dlls/winex11.drv/window.c.orig 2015-03-23 12:14:36.789785691 -0500 ++++ wine-1.7.39/dlls/winex11.drv/window.c 2015-03-23 12:35:56.656863213 -0500 +@@ -1270,7 +1270,7 @@ + * + * Synchronize the X client window position with the Windows one + */ +-static void sync_client_position( struct x11drv_win_data *data, ++static void __attribute__((optimize("O0"))) sync_client_position( struct x11drv_win_data *data, + const RECT *old_client_rect, const RECT *old_whole_rect ) + { + int mask = 0; +--- wine-1.7.39/dlls/gdi32/freetype.c.orig 2015-03-20 08:41:44.000000000 -0500 ++++ wine-1.7.39/dlls/gdi32/freetype.c 2015-03-23 14:15:25.884759565 -0500 +@@ -6389,7 +6389,7 @@ + + static const BYTE masks[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; + +-static DWORD get_glyph_outline(GdiFont *incoming_font, UINT glyph, UINT format, ++static DWORD __attribute__((optimize("O0"))) get_glyph_outline(GdiFont *incoming_font, UINT glyph, UINT format, + LPGLYPHMETRICS lpgm, ABC *abc, DWORD buflen, LPVOID buf, + const MAT2* lpmat) + { +--- wine-1.7.39/dlls/rpcrt4/rpc_binding.c.orig 2015-03-20 08:41:44.000000000 -0500 ++++ wine-1.7.39/dlls/rpcrt4/rpc_binding.c 2015-03-23 17:00:45.215424859 -0500 +@@ -984,7 +984,7 @@ + /*********************************************************************** + * RpcBindingCopy (RPCRT4.@) + */ +-RPC_STATUS RPC_ENTRY RpcBindingCopy( ++RPC_STATUS RPC_ENTRY __attribute__((optimize("O0"))) RpcBindingCopy( + RPC_BINDING_HANDLE SourceBinding, + RPC_BINDING_HANDLE* DestinationBinding) + { +--- wine-1.7.39/dlls/gdi32/font.c.orig 2015-03-23 20:33:48.751656009 -0500 ++++ wine-1.7.39/dlls/gdi32/font.c 2015-03-23 20:33:52.295693767 -0500 +@@ -1297,7 +1297,7 @@ + * Return the size of the string as it would be if it was output properly by + * e.g. TextOut. + */ +-BOOL WINAPI GetTextExtentExPointW( HDC hdc, LPCWSTR str, INT count, INT max_ext, ++BOOL WINAPI __attribute__((optimize("O0"))) GetTextExtentExPointW( HDC hdc, LPCWSTR str, INT count, INT max_ext, + LPINT nfit, LPINT dxs, LPSIZE size ) + { + DC *dc; +--- wine-1.7.39/dlls/gdi32/mapping.c.orig 2015-03-23 20:21:39.025790911 -0500 ++++ wine-1.7.39/dlls/gdi32/mapping.c 2015-03-23 20:27:31.380589949 -0500 +@@ -324,7 +324,7 @@ + /*********************************************************************** + * DPtoLP (GDI32.@) + */ +-BOOL WINAPI DPtoLP( HDC hdc, LPPOINT points, INT count ) ++BOOL WINAPI __attribute__((optimize("O0"))) DPtoLP( HDC hdc, LPPOINT points, INT count ) + { + DC * dc = get_dc_ptr( hdc ); + if (!dc) return FALSE; +@@ -352,7 +352,7 @@ + /*********************************************************************** + * LPtoDP (GDI32.@) + */ +-BOOL WINAPI LPtoDP( HDC hdc, LPPOINT points, INT count ) ++BOOL WINAPI __attribute__((optimize("O0"))) LPtoDP( HDC hdc, LPPOINT points, INT count ) + { + DC * dc = get_dc_ptr( hdc ); + if (!dc) return FALSE; +--- wine-1.7.39/dlls/user32/win.c.orig 2015-03-23 21:42:20.861715642 -0500 ++++ wine-1.7.39/dlls/user32/win.c 2015-03-23 21:45:49.223517788 -0500 +@@ -2955,7 +2955,7 @@ + /***************************************************************** + * SetParent (USER32.@) + */ +-HWND WINAPI SetParent( HWND hwnd, HWND parent ) ++HWND WINAPI __attribute__((optimize("O0"))) SetParent( HWND hwnd, HWND parent ) + { + HWND full_handle; + HWND old_parent = 0; +--- wine-1.7.39/programs/winecfg/appdefaults.c.orig 2015-03-23 21:15:50.402096990 -0500 ++++ wine-1.7.39/programs/winecfg/appdefaults.c 2015-03-23 21:16:22.345452810 -0500 +@@ -78,7 +78,7 @@ + static const char szKeyNT[] = "Software\\Microsoft\\Windows NT\\CurrentVersion"; + static const char szKeyProdNT[] = "System\\CurrentControlSet\\Control\\ProductOptions"; + +-static int get_registry_version(void) ++static int __attribute__((optimize("O0"))) get_registry_version(void) + { + int i, best = -1, platform, major, minor = 0, build = 0; + char *p, *ver, *type = NULL; +--- wine-1.7.39/programs/winemenubuilder/winemenubuilder.c.orig 2015-03-23 21:18:24.651815189 -0500 ++++ wine-1.7.39/programs/winemenubuilder/winemenubuilder.c 2015-03-23 21:24:20.565779739 -0500 +@@ -2323,7 +2323,7 @@ + return ret; + } + +-static void update_association(LPCWSTR extension, LPCSTR mimeType, LPCWSTR progId, ++static void __attribute__((optimize("O0"))) update_association(LPCWSTR extension, LPCSTR mimeType, LPCWSTR progId, + LPCSTR appName, LPCSTR desktopFile, LPCSTR openWithIcon) + { + static const WCHAR ProgIDW[] = {'P','r','o','g','I','D',0}; +@@ -2400,7 +2400,7 @@ + HeapFree(GetProcessHeap(), 0, openWithIconW); + } + +-static BOOL cleanup_associations(void) ++static BOOL __attribute__((optimize("O0"))) cleanup_associations(void) + { + static const WCHAR openW[] = {'o','p','e','n',0}; + static const WCHAR DesktopFileW[] = {'D','e','s','k','t','o','p','F','i','l','e',0}; diff --git a/wine.spec b/wine.spec index 31b5817..108dc40 100644 --- a/wine.spec +++ b/wine.spec @@ -21,8 +21,8 @@ %endif Name: wine -Version: 1.7.38 -Release: 3%{?dist} +Version: 1.7.39 +Release: 1%{?dist} Summary: A compatibility layer for windows applications Group: Applications/Emulators @@ -68,6 +68,8 @@ Source501: wine-tahoma.conf Source502: wine-README-tahoma Patch511: wine-cjk.patch +# temporary workaround for GCC 5.0 optimization regressions +Patch512: wine-gcc5.patch # wine compholio patches for pipelight. # pulseaudio-patch is covered by that patch-set, too. @@ -615,6 +617,9 @@ This package adds the opencl driver for wine. %prep %setup -q %patch511 -p1 -b.cjk +%if 0%{?fedora} > 21 +%patch512 -p1 -b.gcc5 +%endif # setup and apply compholio-patches or pulseaudio-patch. # since the pulse patch is included in the compholio patches use it from @@ -640,20 +645,13 @@ autoreconf %build -%if 0%{?fedora} > 21 -# GCC 5 has a optimization that causes wine to break -%ifnarch %{arm} -export CFLAGS="\ --fbranch-count-reg -fcombine-stack-adjustments -fcompare-elim -fcprop-registers -fdefer-pop -fforward-propagate -fguess-branch-probability -fif-conversion2 -fif-conversion -finline-functions-called-once -fipa-pure-const -fipa-profile -fipa-reference -fmerge-constants -fmove-loop-invariants -fshrink-wrap -fsplit-wide-types -fssa-phiopt -ftree-bit-ccp -ftree-ccp -ftree-ch -ftree-copy-prop -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-fre -ftree-sink -ftree-slsr -ftree-sra -ftree-pta -ftree-ter \ --falign-functions -falign-jumps -falign-labels -falign-loops -fcaller-saves -fcrossjumping -fcse-follow-jumps -fdevirtualize -fdevirtualize-speculatively -fexpensive-optimizations -fgcse -fhoist-adjacent-loads -findirect-inlining -finline-small-functions -fipa-cp -fipa-cp-alignment -fipa-icf -fipa-icf-functions -fipa-ra -fipa-sra -fisolate-erroneous-paths-dereference -flra-remat -foptimize-sibling-calls -foptimize-strlen -fpartial-inlining -fpeephole2 -freorder-blocks -freorder-blocks-and-partition -freorder-functions -frerun-cse-after-loop -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -fthread-jumps -ftree-builtin-call-dce -ftree-pre -ftree-switch-conversion -ftree-tail-merge -ftree-vrp -fvect-cost-model=cheap \ --pipe -Wall -Werror=format-security -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -g -mtune=generic -Wno-error" -%else -export CFLAGS="-O0 -g -pipe -Wall -Werror=format-security -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -Wno-error" -%endif -%else # disable fortify as it breaks wine # http://bugs.winehq.org/show_bug.cgi?id=24606 # http://bugs.winehq.org/show_bug.cgi?id=25073 +%if 0%{?fedora} > 21 +export TEMP_CFLAGS="`echo $RPM_OPT_FLAGS | sed -e 's/-O2/-O1/'`" +export CFLAGS="`echo $TEMP_CFLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//'` -Wno-error" +%else export CFLAGS="`echo $RPM_OPT_FLAGS | sed -e 's/-Wp,-D_FORTIFY_SOURCE=2//'` -Wno-error" %endif @@ -1854,6 +1852,10 @@ fi %{_libdir}/wine/opencl.dll.so %changelog +* Sun Mar 22 2015 Michael Cronenworth 1.7.39-1 +- version upgrade +- Enable some optimizations and workarounds for GCC5 regressions + * Tue Mar 10 2015 Adam Jackson 1.7.38-3 - Drop sysvinit subpackage on F23+