- apply patch from trunk, that fixes crash on startup on certain systems

OBS-URL: https://build.opensuse.org/package/show/windows:mingw:win64/mingw64-runtime?expand=0&rev=21
This commit is contained in:
Dominik Schmidt 2011-12-20 14:38:55 +00:00 committed by Git OBS Bridge
parent 9acc158c7c
commit 8a44af02d3
3 changed files with 62 additions and 3 deletions

View File

@ -0,0 +1,51 @@
diff --git a/crt/pseudo-reloc.c b/crt/pseudo-reloc.c
index 308ecda..9c582b0 100644
--- a/crt/pseudo-reloc.c
+++ b/crt/pseudo-reloc.c
@@ -252,15 +252,17 @@ restore_modified_sections (void)
static void
__write_memory (void *addr, const void *src, size_t len)
{
-#ifndef __MINGW64_VERSION_MAJOR
MEMORY_BASIC_INFORMATION b;
DWORD oldprot;
-#endif /* ! __MINGW64_VERSION_MAJOR */
+ int call_unprotect = 0;
if (!len)
return;
-#ifndef __MINGW64_VERSION_MAJOR
+#ifdef __MINGW64_VERSION_MAJOR
+ mark_section_writable ((LPVOID) addr);
+#endif
+
if (!VirtualQuery (addr, &b, sizeof(b)))
{
__report_error (" VirtualQuery failed for %d bytes at address %p",
@@ -269,19 +271,17 @@ __write_memory (void *addr, const void *src, size_t len)
/* Temporarily allow write access to read-only protected memory. */
if (b.Protect != PAGE_EXECUTE_READWRITE && b.Protect != PAGE_READWRITE)
- VirtualProtect (b.BaseAddress, b.RegionSize, PAGE_EXECUTE_READWRITE,
- &oldprot);
-#else /* ! __MINGW64_VERSION_MAJOR */
- mark_section_writable ((LPVOID) addr);
-#endif /* __MINGW64_VERSION_MAJOR */
+ {
+ call_unprotect = 1;
+ VirtualProtect (b.BaseAddress, b.RegionSize, PAGE_EXECUTE_READWRITE,
+ &oldprot);
+ }
/* write the data. */
memcpy (addr, src, len);
/* Restore original protection. */
-#ifndef __MINGW64_VERSION_MAJOR
- if (b.Protect != PAGE_EXECUTE_READWRITE && b.Protect != PAGE_READWRITE)
+ if (call_unprotect && b.Protect != PAGE_EXECUTE_READWRITE && b.Protect != PAGE_READWRITE)
VirtualProtect (b.BaseAddress, b.RegionSize, oldprot, &oldprot);
-#endif /* !__MINGW64_VERSION_MAJOR */
}
#define RP_VERSION_V1 0

5
mingw64-runtime.changes Normal file
View File

@ -0,0 +1,5 @@
-------------------------------------------------------------------
Tue Dec 20 16:21:59 UTC 2011 - dev@dominik-schmidt.de
- apply patch from trunk, that fixes crash on startup on certain systems

View File

@ -16,10 +16,12 @@ URL: http://mingw-w64.sourceforge.net/
Source0: http://dl.sourceforge.net/sourceforge/mingw-w64/mingw-w64-runtime-%{version}.tar.bz2 Source0: http://dl.sourceforge.net/sourceforge/mingw-w64/mingw-w64-runtime-%{version}.tar.bz2
Source100: %{name}-rpmlintrc Source100: %{name}-rpmlintrc
Patch0: mingw-w64-runtime-1.0.1-vfw32mri.patch Patch0: mingw-w64-runtime-1.0.1-vfw32mri.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # PATCH-FIX-UPSTREAM mingw-w64-runtime-1.0.1-fix-startup-crash.patch - patch taken from trunk, can be dropped with next release
Patch1: mingw-w64-runtime-1.0.1-fix-startup-crash.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildArch: noarch BuildArch: noarch
#!BuildIgnore: post-build-checks #!BuildIgnore: post-build-checks
BuildRequires: mingw64-filesystem BuildRequires: mingw64-filesystem
BuildRequires: mingw64-cross-binutils BuildRequires: mingw64-cross-binutils
@ -38,11 +40,12 @@ MinGW Win64 cross-compiler runtime, base libraries.
%prep %prep
%setup -q -n mingw-w64-runtime-%{version} %setup -q -n mingw-w64-runtime-%{version}
%patch0 -p0 %patch0 -p0
%patch1 -p1
%build %build
./configure --host=%{_mingw64_target} --prefix=%{_prefix} --with-sysroot=%{_mingw64_sysroot} --disable-lib32 --enable-lib64 ./configure --host=%{_mingw64_target} --prefix=%{_prefix} --with-sysroot=%{_mingw64_sysroot} --disable-lib32 --enable-lib64
make make
%install %install
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT