mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-25 15:26:14 +08:00
host-mingw32.c (mingw32_gt_pch_use_address): Make object_name unique for each process.
2009-04-01 Kai Tietz <kai.tietz@onevision.com> Andrey Galkin <agalkin@hypercom.com> PR/39492 * config/i386/host-mingw32.c (mingw32_gt_pch_use_address): Make object_name unique for each process. Co-Authored-By: Andrey Galkin <agalkin@hypercom.com> From-SVN: r145394
This commit is contained in:
parent
03742a9b01
commit
73d21f56d1
@ -1,3 +1,10 @@
|
||||
2009-04-01 Kai Tietz <kai.tietz@onevision.com>
|
||||
Andrey Galkin <agalkin@hypercom.com>
|
||||
|
||||
PR/39492
|
||||
* config/i386/host-mingw32.c (mingw32_gt_pch_use_address):
|
||||
Make object_name unique for each process.
|
||||
|
||||
2009-04-01 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR other/39591
|
||||
|
@ -120,8 +120,19 @@ mingw32_gt_pch_use_address (void *addr, size_t size, int fd,
|
||||
namespace when running an application in a Terminal Server
|
||||
session. This causes failure since, by default, applications
|
||||
don't get SeCreateGlobalPrivilege. We don't need global
|
||||
memory sharing so explicitly put object into Local namespace. */
|
||||
const char object_name[] = "Local\\MinGWGCCPCH";
|
||||
memory sharing so explicitly put object into Local namespace.
|
||||
|
||||
There is also another issue, which appears if multiple concurrent
|
||||
GCC processes are using PCH functionality. MapViewOfFileEx returns
|
||||
"Access Denied" error. So we need to make the session-wide mapping
|
||||
name unique. Let's use current process ID for that. */
|
||||
#define OBJECT_NAME_FMT "Local\\MinGWGCCPCH-"
|
||||
|
||||
/* Allocate enough space for name prefix and max possible DWORD
|
||||
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
|
||||
and earlier, backslashes are invalid in object name. So, we need
|
||||
|
Loading…
Reference in New Issue
Block a user