re PR bootstrap/39660 (Mingw Bootstrap stops with "..host-mingw32.c:140: error: ISO C90 forbids mixed..")
PR bootstrap/39660 * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't mix declarations and code. From-SVN: r145711
This commit is contained in:
parent
e04c614e09
commit
8e481a2ca6
@ -1,3 +1,9 @@
|
|||||||
|
2009-04-08 Danny Smith <dannysmith@users.sourceforge.net>
|
||||||
|
|
||||||
|
PR bootstrap/39660
|
||||||
|
* config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Don't
|
||||||
|
mix declarations and code.
|
||||||
|
|
||||||
2009-04-08 Ben Elliston <bje@au.ibm.com>
|
2009-04-08 Ben Elliston <bje@au.ibm.com>
|
||||||
|
|
||||||
* gcc.c: Replace `CC' with `GCC' throughout.
|
* gcc.c: Replace `CC' with `GCC' throughout.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* mingw32 host-specific hook definitions.
|
/* mingw32 host-specific hook definitions.
|
||||||
Copyright (C) 2004, 2007 Free Software Foundation, Inc.
|
Copyright (C) 2004, 2007, 2009 Free Software Foundation, Inc.
|
||||||
|
|
||||||
This file is part of GCC.
|
This file is part of GCC.
|
||||||
|
|
||||||
@ -122,23 +122,19 @@ mingw32_gt_pch_use_address (void *addr, size_t size, int fd,
|
|||||||
don't get SeCreateGlobalPrivilege. We don't need global
|
don't get SeCreateGlobalPrivilege. We don't need global
|
||||||
memory sharing so explicitly put object into Local namespace.
|
memory sharing so explicitly put object into Local namespace.
|
||||||
|
|
||||||
There is also another issue, which appears if multiple concurrent
|
If multiple concurrent GCC processes are using PCH functionality,
|
||||||
GCC processes are using PCH functionality. MapViewOfFileEx returns
|
MapViewOfFileEx returns "Access Denied" error. So we ensure the
|
||||||
"Access Denied" error. So we need to make the session-wide mapping
|
session-wide mapping name is unique by appending process ID. */
|
||||||
name unique. Let's use current process ID for that. */
|
|
||||||
#define OBJECT_NAME_FMT "Local\\MinGWGCCPCH-"
|
#define OBJECT_NAME_FMT "Local\\MinGWGCCPCH-"
|
||||||
|
|
||||||
/* Allocate enough space for name prefix and max possible DWORD
|
char* object_name = NULL;
|
||||||
hexadecimal representation. */
|
|
||||||
char object_name[sizeof (OBJECT_NAME_FMT) + sizeof (DWORD) * 2];
|
|
||||||
snprintf (object_name, sizeof (object_name), OBJECT_NAME_FMT "%lx",
|
|
||||||
GetCurrentProcessId());
|
|
||||||
|
|
||||||
/* However, the documentation for CreateFileMapping says that on NT4
|
/* However, the documentation for CreateFileMapping says that on NT4
|
||||||
and earlier, backslashes are invalid in object name. So, we need
|
and earlier, backslashes are invalid in object name. So, we need
|
||||||
to check if we are on Windows2000 or higher. */
|
to check if we are on Windows2000 or higher. */
|
||||||
OSVERSIONINFO version_info;
|
OSVERSIONINFO version_info;
|
||||||
|
version_info.dwOSVersionInfoSize = sizeof (version_info);
|
||||||
|
|
||||||
if (size == 0)
|
if (size == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -147,14 +143,23 @@ mingw32_gt_pch_use_address (void *addr, size_t size, int fd,
|
|||||||
if ((offset & (va_granularity - 1)) != 0 || size > pch_VA_max_size)
|
if ((offset & (va_granularity - 1)) != 0 || size > pch_VA_max_size)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
/* Determine the version of Windows we are running on. */
|
|
||||||
version_info.dwOSVersionInfoSize = sizeof (version_info);
|
|
||||||
GetVersionEx (&version_info);
|
|
||||||
|
|
||||||
|
/* Determine the version of Windows we are running on and use a
|
||||||
|
uniquely-named local object if running > 4. */
|
||||||
|
GetVersionEx (&version_info);
|
||||||
|
if (version_info.dwMajorVersion > 4)
|
||||||
|
{
|
||||||
|
char local_object_name [sizeof (OBJECT_NAME_FMT)
|
||||||
|
+ sizeof (DWORD) * 2];
|
||||||
|
snprintf (local_object_name, sizeof (local_object_name),
|
||||||
|
OBJECT_NAME_FMT "%lx", GetCurrentProcessId());
|
||||||
|
object_name = local_object_name;
|
||||||
|
}
|
||||||
|
|
||||||
mmap_handle = CreateFileMappingA ((HANDLE) _get_osfhandle (fd), NULL,
|
mmap_handle = CreateFileMappingA ((HANDLE) _get_osfhandle (fd), NULL,
|
||||||
PAGE_WRITECOPY | SEC_COMMIT, 0, 0,
|
PAGE_WRITECOPY | SEC_COMMIT, 0, 0,
|
||||||
version_info.dwMajorVersion > 4
|
object_name);
|
||||||
? object_name : NULL);
|
|
||||||
if (mmap_handle == NULL)
|
if (mmap_handle == NULL)
|
||||||
{
|
{
|
||||||
w32_error (__FUNCTION__, __FILE__, __LINE__, "CreateFileMapping");
|
w32_error (__FUNCTION__, __FILE__, __LINE__, "CreateFileMapping");
|
||||||
|
Loading…
Reference in New Issue
Block a user