* Merge in cygwin-64bit-branch.
This commit is contained in:
@ -1,3 +1,7 @@
|
||||
2013-04-23 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* Merge in cygwin-64bit-branch. See ChangeLog.64bit for details.
|
||||
|
||||
2012-11-27 Christopher Faylor <me.cygwin2012@cgf.cx>
|
||||
|
||||
* Makefile.in: Remove old from CFLAGS and move C*FLAGS so that they can
|
||||
|
87
winsup/cygserver/ChangeLog.64bit
Normal file
87
winsup/cygserver/ChangeLog.64bit
Normal file
@ -0,0 +1,87 @@
|
||||
2013-03-07 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* msg.cc (client_request_msg::serve): Revert change to refuse 64 bit
|
||||
processes on 32 bit systems.
|
||||
* sem.cc (client_request_sem::serve): Ditto.
|
||||
* shm.cc (client_request_shm::serve): Ditto.
|
||||
|
||||
2013-03-01 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* client.cc: Revert changes to handle 32 bit processes on 64 bit
|
||||
systems.
|
||||
* sysv_msg.cc: Ditto.
|
||||
* sysv_sem.cc: Ditto.
|
||||
* sysv_shm.cc: Ditto.
|
||||
|
||||
2013-02-13 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* Makefile.in (cygserver.exe): Make cygwin_build a tooldir (-B instead
|
||||
of -L) to support bootstrapping.
|
||||
|
||||
2013-02-09 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* configure: Regenerate to fix wrong ac_unique_file dependency.
|
||||
|
||||
2012-12-06 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* sysv_msg.cc (conv_timespec32_to_timespec): Move implementation to
|
||||
cygserver_ipc.h.
|
||||
(conv_timespec_to_timespec32): Ditto.
|
||||
(conv_msqid_ds32_to_msqid_ds): Drop and move code into copyin_msqid_ds.
|
||||
(conv_msqid_ds_to_msqid_ds32): Drop and move code into copyout_msqid_ds.
|
||||
* sysv_sem.cc (copyin_semid_ds): New inline function on Cygwin.
|
||||
(copyout_semid_ds): Ditto.
|
||||
(__semctl): Use a conditional arg_size value rather than a fixed
|
||||
sizeof(real_arg) throughout, to accommodate 64/32 bit conversion.
|
||||
Use copyout_semid_ds and copyin_semid_ds to copy semid_ds
|
||||
structures from cygserver to client and vice versa on Cygwin.
|
||||
* sysv_shm.cc (copyin_shmid_ds): New inline function on Cygwin.
|
||||
(copyout_shmid_ds): Ditto.
|
||||
(shmctl): Use copyout_shmid_ds and copyin_shmid_ds to copy shmid_ds
|
||||
structures from cygserver to client and vice versa on Cygwin.
|
||||
|
||||
2012-12-05 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* client.cc (client_request::header_t::header_t): Accommodate changes
|
||||
to msglen member.
|
||||
(client_request::handle_request): Ditto.
|
||||
(client_request::client_request): Zero out entire parameter block.
|
||||
Explain why.
|
||||
* sysv_msg.cc (conv_timespec32_to_timespec): New inline function on
|
||||
64 bit Cygwin.
|
||||
(conv_timespec_to_timespec32): Ditto.
|
||||
(conv_msqid_ds32_to_msqid_ds): Ditto.
|
||||
(conv_msqid_ds_to_msqid_ds32): Ditto.
|
||||
(copyin_msqid_ds): New inline function on Cygwin.
|
||||
(copyout_msqid_ds): Ditto.
|
||||
(msgctl): Use copyout_msqid_ds and copyin_msqid_ds to copy msqid_ds
|
||||
structures from cygserver to client and vice versa on Cygwin.
|
||||
(msgsnd): Special case copyin of msg_type on 64 bit Cygwin.
|
||||
(msgrcv): Special case copyout of msg_type on 64 bit Cygwin.
|
||||
|
||||
2012-12-04 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* bsd_helper.cc (tunable_int_fetch): Convert 2nd parameter to
|
||||
int32_t.
|
||||
* bsd_helper.h (tunable_int_fetch): Fix declaration accordingly.
|
||||
* bsd_log.cc (log_level): Change type to int32_t.
|
||||
* bsd_log.h (log_level): Fix declaration accordingly.
|
||||
* bsd_mutex.cc (msgmni): Change type to int32_t.
|
||||
(semmni): Ditto.
|
||||
* cygserver.cc: Fix debug output to be target agnostic. Use same
|
||||
style throughout.
|
||||
* msg.cc (client_request_msg::serve): Refuse to serve 64 bit processes
|
||||
from 32 bit cygserver.
|
||||
* sem.cc (client_request_sem::serve): Ditto.
|
||||
* shm.cc (client_request_shm::serve): Ditto.
|
||||
* sysv_shm.cc (shm_delete_mapping): Mark size as unused to make gcc
|
||||
happy.
|
||||
(kern_shmat): Ditto with flags.
|
||||
* process.h (class process): Change type of _cleaning_up member to LONG.
|
||||
* threaded_queue.h (class threaded_queue): Ditto for _workers_count.
|
||||
|
||||
2012-08-14 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* configure.in: Add AC_NO_EXECUTABLES to allow bootstrap.
|
||||
* configure: Regenerate.
|
||||
|
@ -71,7 +71,7 @@ libclean:
|
||||
fullclean: clean libclean
|
||||
|
||||
cygserver.exe: $(CYGWIN_LIB) $(OBJS) $(CYGWIN_OBJS)
|
||||
$(CXX) -o $@ ${wordlist 2,999,$^} -static -static-libgcc -L$(cygwin_build) -lntdll
|
||||
$(CXX) -o $@ ${wordlist 2,999,$^} -static -static-libgcc -B$(cygwin_build) -lntdll
|
||||
|
||||
$(cygwin_build)/%.o: $(cygwin_source)/%.cc
|
||||
@$(MAKE) -C $(@D) $(@F)
|
||||
|
@ -655,7 +655,7 @@ tunable_param_init (const char *config_file, bool force)
|
||||
}
|
||||
|
||||
void
|
||||
tunable_int_fetch (const char *name, long *tunable_target)
|
||||
tunable_int_fetch (const char *name, int32_t *tunable_target)
|
||||
{
|
||||
tun_struct *s;
|
||||
for (s = &tunable_params[0]; s->name; ++s)
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* bsd_helper.h: Helps integrating BSD kernel code
|
||||
|
||||
Copyright 2003 Red Hat, Inc.
|
||||
Copyright 2003, 2012 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
@ -60,7 +60,7 @@ vm_object_t vm_object_duplicate (struct thread *td, vm_object_t object);
|
||||
void vm_object_deallocate (vm_object_t object);
|
||||
|
||||
void tunable_param_init (const char *, bool);
|
||||
void tunable_int_fetch (const char *, long *);
|
||||
void tunable_int_fetch (const char *, int32_t *);
|
||||
void tunable_bool_fetch (const char *, tun_bool_t *);
|
||||
|
||||
#endif /* _BSD_HELPER_H */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* bsd_log.cc
|
||||
|
||||
Copyright 2003, 2004 Red Hat Inc.
|
||||
Copyright 2003, 2004, 2012 Red Hat Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
@ -14,7 +14,7 @@ details. */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
long log_level = 8; /* Illegal value. Don't change! */
|
||||
int32_t log_level = 8; /* Illegal value. Don't change! */
|
||||
tun_bool_t log_debug = TUN_UNDEF;
|
||||
tun_bool_t log_syslog = TUN_UNDEF;
|
||||
tun_bool_t log_stderr = TUN_UNDEF;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* bsd_log.h: Helps integrating BSD kernel code
|
||||
|
||||
Copyright 2003 Red Hat, Inc.
|
||||
Copyright 2003, 2012 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
@ -13,7 +13,7 @@ details. */
|
||||
#include <sys/types.h>
|
||||
#include <sys/syslog.h>
|
||||
|
||||
extern long log_level;
|
||||
extern int32_t log_level;
|
||||
extern tun_bool_t log_debug;
|
||||
extern tun_bool_t log_syslog;
|
||||
extern tun_bool_t log_stderr;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* bsd_mutex.cc
|
||||
|
||||
Copyright 2003, 2004, 2005, 2007 Red Hat Inc.
|
||||
Copyright 2003, 2004, 2005, 2007, 2012 Red Hat Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
@ -285,8 +285,8 @@ msleep_init (void)
|
||||
msleep_glob_evt = CreateEvent (NULL, TRUE, FALSE, NULL);
|
||||
if (!msleep_glob_evt)
|
||||
panic ("CreateEvent in msleep_init failed: %lu", GetLastError ());
|
||||
long msgmni = support_msgqueues ? msginfo.msgmni : 0;
|
||||
long semmni = support_semaphores ? seminfo.semmni : 0;
|
||||
int32_t msgmni = support_msgqueues ? msginfo.msgmni : 0;
|
||||
int32_t semmni = support_semaphores ? seminfo.semmni : 0;
|
||||
TUNABLE_INT_FETCH ("kern.ipc.msgmni", &msgmni);
|
||||
TUNABLE_INT_FETCH ("kern.ipc.semmni", &semmni);
|
||||
debug ("Try allocating msgmni (%d) + semmni (%d) msleep records",
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* client.cc
|
||||
|
||||
Copyright 2001, 2002, 2003, 2004, 2008, 2009 Red Hat Inc.
|
||||
Copyright 2001, 2002, 2003, 2004, 2008, 2009, 2012, 2013 Red Hat Inc.
|
||||
|
||||
Written by Egor Duda <deo@logos-m.ru>
|
||||
|
||||
@ -115,11 +115,11 @@ client_request_attach_tty::send (transport_layer_base * const conn)
|
||||
}
|
||||
|
||||
client_request::header_t::header_t (const request_code_t request_code,
|
||||
const size_t msglen)
|
||||
: msglen (msglen),
|
||||
request_code (request_code)
|
||||
const size_t len)
|
||||
: request_code (request_code)
|
||||
{
|
||||
assert (request_code >= 0 && request_code < CYGSERVER_REQUEST_LAST);
|
||||
msglen = len;
|
||||
}
|
||||
|
||||
// FIXME: also check write and read result for -1.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* cygserver.cc
|
||||
|
||||
Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2011 Red Hat Inc.
|
||||
Copyright 2001, 2002, 2003, 2004, 2005, 2007, 2011, 2012 Red Hat Inc.
|
||||
|
||||
Written by Egor Duda <deo@logos-m.ru>
|
||||
|
||||
@ -51,13 +51,13 @@ setup_privileges ()
|
||||
rc = OpenProcessToken (GetCurrentProcess () , TOKEN_ALL_ACCESS , &hToken) ;
|
||||
if (!rc)
|
||||
{
|
||||
debug ("error opening process token (%lu)", GetLastError ());
|
||||
debug ("error opening process token (err %u)", GetLastError ());
|
||||
return false;
|
||||
}
|
||||
rc = LookupPrivilegeValue (NULL, SE_DEBUG_NAME, &sPrivileges.Privileges[0].Luid);
|
||||
if (!rc)
|
||||
{
|
||||
debug ("error getting privilege luid (%lu)", GetLastError ());
|
||||
debug ("error getting privilege luid (err %u)", GetLastError ());
|
||||
ret_val = false;
|
||||
goto out;
|
||||
}
|
||||
@ -66,7 +66,7 @@ setup_privileges ()
|
||||
rc = AdjustTokenPrivileges (hToken, FALSE, &sPrivileges, 0, NULL, NULL) ;
|
||||
if (!rc)
|
||||
{
|
||||
debug ("error adjusting privilege level. (%lu)", GetLastError ());
|
||||
debug ("error adjusting privilege level. (err %u)", GetLastError ());
|
||||
ret_val = false;
|
||||
goto out;
|
||||
}
|
||||
@ -106,8 +106,8 @@ check_and_dup_handle (HANDLE from_process, HANDLE to_process,
|
||||
0, bInheritHandle,
|
||||
DUPLICATE_SAME_ACCESS))
|
||||
{
|
||||
log (LOG_ERR, "error getting handle(%u) to server (%lu)",
|
||||
(unsigned int)from_handle, GetLastError ());
|
||||
log (LOG_ERR, "error getting handle(%p) to server (err %u)",
|
||||
from_handle, GetLastError ());
|
||||
goto out;
|
||||
}
|
||||
} else
|
||||
@ -119,7 +119,7 @@ check_and_dup_handle (HANDLE from_process, HANDLE to_process,
|
||||
| DACL_SECURITY_INFORMATION),
|
||||
sd, sizeof (sd_buf), &bytes_needed))
|
||||
{
|
||||
log (LOG_ERR, "error getting handle SD (%lu)", GetLastError ());
|
||||
log (LOG_ERR, "error getting handle SD (err %u)", GetLastError ());
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -128,8 +128,7 @@ check_and_dup_handle (HANDLE from_process, HANDLE to_process,
|
||||
if (!AccessCheck (sd, from_process_token, access, &access_mapping,
|
||||
&ps, &ps_len, &access, &status))
|
||||
{
|
||||
log (LOG_ERR, "error checking access rights (%lu)",
|
||||
GetLastError ());
|
||||
log (LOG_ERR, "error checking access rights (err %u)", GetLastError ());
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -143,7 +142,7 @@ check_and_dup_handle (HANDLE from_process, HANDLE to_process,
|
||||
to_process, to_handle_ptr,
|
||||
access, bInheritHandle, 0))
|
||||
{
|
||||
log (LOG_ERR, "error getting handle to client (%lu)", GetLastError ());
|
||||
log (LOG_ERR, "error getting handle to client (err %u)", GetLastError ());
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -191,8 +190,7 @@ client_request_attach_tty::serve (transport_layer_base *const conn,
|
||||
|
||||
if (!from_process_handle)
|
||||
{
|
||||
log (LOG_ERR, "error opening `from' process, error = %lu",
|
||||
GetLastError ());
|
||||
log (LOG_ERR, "error opening `from' process (err %u)", GetLastError ());
|
||||
error_code (EACCES);
|
||||
return;
|
||||
}
|
||||
@ -204,8 +202,7 @@ client_request_attach_tty::serve (transport_layer_base *const conn,
|
||||
|
||||
if (!to_process_handle)
|
||||
{
|
||||
log (LOG_ERR, "error opening `to' process, error = %lu",
|
||||
GetLastError ());
|
||||
log (LOG_ERR, "error opening `to' process (err %u)", GetLastError ());
|
||||
CloseHandle (from_process_handle);
|
||||
error_code (EACCES);
|
||||
return;
|
||||
@ -228,7 +225,7 @@ client_request_attach_tty::serve (transport_layer_base *const conn,
|
||||
TRUE,
|
||||
&token_handle);
|
||||
|
||||
debug ("opened thread token, rc=%lu", rc);
|
||||
debug ("opened thread token, rc=%u", rc);
|
||||
if (!conn->revert_to_self ())
|
||||
{
|
||||
CloseHandle (from_process_handle);
|
||||
@ -239,8 +236,7 @@ client_request_attach_tty::serve (transport_layer_base *const conn,
|
||||
|
||||
if (!rc)
|
||||
{
|
||||
log (LOG_ERR, "error opening thread token, error = %lu",
|
||||
GetLastError ());
|
||||
log (LOG_ERR, "error opening thread token (err %u)", GetLastError ());
|
||||
CloseHandle (from_process_handle);
|
||||
CloseHandle (to_process_handle);
|
||||
error_code (EACCES);
|
||||
@ -264,7 +260,7 @@ client_request_attach_tty::serve (transport_layer_base *const conn,
|
||||
from_master,
|
||||
&req.from_master, TRUE) != 0)
|
||||
{
|
||||
log (LOG_ERR, "error duplicating from_master handle, error = %lu",
|
||||
log (LOG_ERR, "error duplicating from_master handle (err %u)",
|
||||
GetLastError ());
|
||||
error_code (EACCES);
|
||||
}
|
||||
@ -276,7 +272,7 @@ client_request_attach_tty::serve (transport_layer_base *const conn,
|
||||
to_master,
|
||||
&req.to_master, TRUE) != 0)
|
||||
{
|
||||
log (LOG_ERR, "error duplicating to_master handle, error = %lu",
|
||||
log (LOG_ERR, "error duplicating to_master handle (err %u)",
|
||||
GetLastError ());
|
||||
error_code (EACCES);
|
||||
}
|
||||
@ -285,9 +281,8 @@ client_request_attach_tty::serve (transport_layer_base *const conn,
|
||||
CloseHandle (to_process_handle);
|
||||
CloseHandle (token_handle);
|
||||
|
||||
debug ("%lu(%lu, %lu) -> %lu(%lu,%lu)",
|
||||
req.master_pid, from_master, to_master,
|
||||
req.pid, req.from_master, req.to_master);
|
||||
debug ("%u(%p, %p) -> %u(%p,%p)", req.master_pid, from_master, to_master,
|
||||
req.pid, req.from_master, req.to_master);
|
||||
|
||||
return;
|
||||
}
|
||||
@ -374,7 +369,7 @@ server_submission_loop::request_loop ()
|
||||
*/
|
||||
if (!SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_HIGHEST + 1))
|
||||
if (!SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_HIGHEST))
|
||||
debug ("failed to raise accept thread priority, error = %lu",
|
||||
debug ("failed to raise accept thread priority (err %u)",
|
||||
GetLastError ());
|
||||
|
||||
while (_running)
|
||||
@ -393,7 +388,7 @@ server_submission_loop::request_loop ()
|
||||
if (!conn && errno == EINTR)
|
||||
{
|
||||
if (!SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_NORMAL))
|
||||
debug ("failed to reset thread priority, error = %lu",
|
||||
debug ("failed to reset thread priority (err %u)",
|
||||
GetLastError ());
|
||||
|
||||
Sleep (0);
|
||||
@ -401,7 +396,7 @@ server_submission_loop::request_loop ()
|
||||
THREAD_PRIORITY_HIGHEST + 1))
|
||||
if (!SetThreadPriority (GetCurrentThread (),
|
||||
THREAD_PRIORITY_HIGHEST))
|
||||
debug ("failed to raise thread priority, error = %lu",
|
||||
debug ("failed to raise thread priority (err %u)",
|
||||
GetLastError ());
|
||||
}
|
||||
if (conn)
|
||||
@ -534,9 +529,9 @@ main (const int argc, char *argv[])
|
||||
|
||||
const char opts[] = "c:deEf:hl:mp:qr:sSVyY";
|
||||
|
||||
long cleanup_threads = 0;
|
||||
long request_threads = 0;
|
||||
long process_cache_size = 0;
|
||||
int32_t cleanup_threads = 0;
|
||||
int32_t request_threads = 0;
|
||||
int32_t process_cache_size = 0;
|
||||
bool shutdown = false;
|
||||
const char *config_file = DEF_CONFIG_FILE;
|
||||
bool force_config_file = false;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* msg.cc: Single unix specification IPC interface for Cygwin.
|
||||
|
||||
Copyright 2003, 2004 Red Hat, Inc.
|
||||
Copyright 2003, 2004, 2012 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* process.h
|
||||
|
||||
Copyright 2001, 2002, 2003, 2004, 2005 Red Hat Inc.
|
||||
Copyright 2001, 2002, 2003, 2004, 2005, 2012 Red Hat Inc.
|
||||
|
||||
Written by Robert Collins <rbtcollins@hotmail.com>
|
||||
|
||||
@ -103,7 +103,7 @@ private:
|
||||
const DWORD _winpid;
|
||||
HANDLE _hProcess;
|
||||
HANDLE _signal_arrived;
|
||||
long _cleaning_up;
|
||||
LONG _cleaning_up;
|
||||
DWORD _exit_status; // Set in the constructor and in exit_code ().
|
||||
cleanup_routine *_routines_head;
|
||||
/* used to prevent races-on-delete */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* sem.cc: Single unix specification IPC interface for Cygwin.
|
||||
|
||||
Copyright 2003, 2004 Red Hat, Inc.
|
||||
Copyright 2003, 2004, 2012 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* shm.cc: Single unix specification IPC interface for Cygwin.
|
||||
|
||||
Copyright 2003, 2004 Red Hat, Inc.
|
||||
Copyright 2003, 2004, 2012 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
|
@ -258,7 +258,7 @@ shm_delete_mapping(struct vmspace *vm, struct shmmap_state *shmmap_s)
|
||||
{
|
||||
struct shmid_ds *shmseg;
|
||||
int segnum, result;
|
||||
size_t size;
|
||||
size_t size __attribute__ ((unused));
|
||||
|
||||
GIANT_REQUIRED;
|
||||
|
||||
@ -335,7 +335,7 @@ int
|
||||
kern_shmat(struct thread *td, int shmid, const void *shmaddr, int shmflg)
|
||||
{
|
||||
struct proc *p = td->td_proc;
|
||||
int i, flags;
|
||||
int i, flags __attribute__ ((unused));
|
||||
struct shmid_ds *shmseg;
|
||||
struct shmmap_state *shmmap_s = NULL;
|
||||
#ifndef __CYGWIN__
|
||||
@ -512,7 +512,7 @@ done2:
|
||||
return (EINVAL);
|
||||
#endif
|
||||
}
|
||||
#endif /* __CYGWIN__ */
|
||||
#endif /* !__CYGWIN__ */
|
||||
|
||||
#ifndef _SYS_SYSPROTO_H_
|
||||
struct shmctl_args {
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* threaded_queue.h
|
||||
|
||||
Copyright 2001, 2002, 2003 Red Hat Inc.
|
||||
Copyright 2001, 2002, 2003, 2012 Red Hat Inc.
|
||||
|
||||
Written by Robert Collins <rbtcollins@hotmail.com>
|
||||
|
||||
@ -50,7 +50,7 @@ public:
|
||||
void add (queue_request *);
|
||||
|
||||
private:
|
||||
long _workers_count;
|
||||
LONG _workers_count;
|
||||
bool _running;
|
||||
|
||||
queue_submission_loop *_submitters_head;
|
||||
|
Reference in New Issue
Block a user