* child_info.h: Modify magic number.
* dcrt0.cc (_cygwin_testing): Define. (_dll_crt0): Set _cygwin_testing if CYGWIN_TESTING environment variable exists. Don't issue "conflicting versions" error if _cygwin_testing is true. * shared.cc (shared_name): Use _cygwin_testing global rather than testing the environment. * syscalls.cc (_write): Remove debugging info.
This commit is contained in:
parent
db8b09c306
commit
9867ecfdb3
|
@ -1,3 +1,14 @@
|
|||
Sun Sep 2 22:09:31 2001 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* child_info.h: Modify magic number.
|
||||
* dcrt0.cc (_cygwin_testing): Define.
|
||||
(_dll_crt0): Set _cygwin_testing if CYGWIN_TESTING environment variable
|
||||
exists. Don't issue "conflicting versions" error if _cygwin_testing is
|
||||
true.
|
||||
* shared.cc (shared_name): Use _cygwin_testing global rather than
|
||||
testing the environment.
|
||||
* syscalls.cc (_write): Remove debugging info.
|
||||
|
||||
Sat Sep 1 01:37:13 2001 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* tty.cc (tty::create_inuse): Eliminate unneeded argument.
|
||||
|
@ -342,8 +353,8 @@ Fri Aug 3 14:02:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
|||
|
||||
Fri Aug 3 13:04:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* path.cc (fchdir): Set the fhandler's path to absolute value to
|
||||
ensure changing to the correct directory even if the fhandler originally
|
||||
* path.cc (fchdir): Set the fhandler's path to absolute value to ensure
|
||||
changing to the correct directory even if the fhandler originally
|
||||
points to a relative path.
|
||||
|
||||
Thu Aug 2 17:59:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
@ -447,7 +458,7 @@ Wed 18 Jul 2001 12:54:17 Corinna Vinschen <corinna@vinschen.de>
|
|||
|
||||
Wed 18 Jul 2001 11:56:00 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* syscalls.cc (_unlink): Explicitely check for non-existant file.
|
||||
* syscalls.cc (_unlink): Explicitly check for non-existant file.
|
||||
|
||||
Tue 17 Jul 2001 10:19:00 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
|
@ -793,7 +804,7 @@ Sat Jun 2 23:11:52 2001 Christopher Faylor <cgf@cygnus.com>
|
|||
|
||||
Sat Jun 2 14:07:28 2001 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* cygheap.cc (cygheap_root::cygheap_rot): Remove constructor.
|
||||
* cygheap.cc (cygheap_root::cygheap_root): Remove constructor.
|
||||
(cygheap_root::~cygheap_root): Remove destructor.
|
||||
(cygheap_root::operator =): Remove.
|
||||
(cygheap_root::set): New method.
|
||||
|
@ -851,7 +862,8 @@ Wed May 30 23:51:32 2001 Christopher Faylor <cgf@cygnus.com>
|
|||
|
||||
* fhandler.h (fhandler_base::isremote): New method.
|
||||
(fhandler_base::set_isremote): Ditto.
|
||||
(fhandler_base::set_execable_p): Also record "don't care if executable state".
|
||||
(fhandler_base::set_execable_p): Also record "don't care if executable
|
||||
state".
|
||||
(fhandler_base::dont_care_if_execable): New method.
|
||||
* path.cc (path_conv::check): Clear new flags. Appropriately set
|
||||
vol_flags, drive_type, and is_remote_drive.
|
||||
|
|
|
@ -12,7 +12,7 @@ details. */
|
|||
|
||||
enum
|
||||
{
|
||||
PROC_MAGIC = 0xaf10f000,
|
||||
PROC_MAGIC = 0xaf11f000,
|
||||
PROC_FORK = PROC_MAGIC + 1,
|
||||
PROC_EXEC = PROC_MAGIC + 2,
|
||||
PROC_SPAWN = PROC_MAGIC + 3,
|
||||
|
|
|
@ -72,6 +72,8 @@ unsigned int signal_shift_subtract = 1;
|
|||
ResourceLocks _reslock NO_COPY;
|
||||
MTinterface _mtinterf NO_COPY;
|
||||
|
||||
bool NO_COPY _cygwin_testing;
|
||||
|
||||
extern "C"
|
||||
{
|
||||
void *export_malloc (unsigned int);
|
||||
|
@ -872,15 +874,18 @@ dll_crt0_1 ()
|
|||
extern "C" void __stdcall
|
||||
_dll_crt0 ()
|
||||
{
|
||||
char envbuf[8];
|
||||
#ifdef DEBUGGING
|
||||
char buf[80];
|
||||
if (GetEnvironmentVariable ("CYGWIN_SLEEP", buf, sizeof (buf)))
|
||||
if (GetEnvironmentVariable ("CYGWIN_SLEEP", envbuf, sizeof (envbuf) - 1))
|
||||
{
|
||||
console_printf ("Sleeping %d, pid %u\n", atoi (buf), GetCurrentProcessId ());
|
||||
Sleep (atoi (buf));
|
||||
console_printf ("Sleeping %d, pid %u\n", atoi (envbuf), GetCurrentProcessId ());
|
||||
Sleep (atoi (envbuf));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (GetEnvironmentVariable ("CYGWIN_TESTING", envbuf, sizeof (envbuf) - 1))
|
||||
_cygwin_testing = 1;
|
||||
|
||||
char zeros[sizeof (fork_info->zero)] = {0};
|
||||
#ifdef DEBUGGING
|
||||
strace.microseconds ();
|
||||
|
@ -921,7 +926,9 @@ _dll_crt0 ()
|
|||
break;
|
||||
}
|
||||
default:
|
||||
if ((fork_info->type & PROC_MAGIC_MASK) == PROC_MAGIC_GENERIC)
|
||||
if (_cygwin_testing)
|
||||
fork_info = NULL;
|
||||
else if ((fork_info->type & PROC_MAGIC_MASK) == PROC_MAGIC_GENERIC)
|
||||
api_fatal ("conflicting versions of cygwin1.dll detected. Use only the most recent version.\n");
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -62,7 +62,7 @@ class mmap_record
|
|||
base_address_ (b),
|
||||
map_map_ (NULL)
|
||||
{
|
||||
if (fd >= 0 && !cygheap->fdtab.not_open (fd))
|
||||
if (fd >= 0 && !cygheap->fdtab.not_open (fd))
|
||||
devtype_ = cygheap->fdtab[fd]->get_device ();
|
||||
}
|
||||
|
||||
|
@ -80,16 +80,16 @@ class mmap_record
|
|||
|
||||
void alloc_map ()
|
||||
{
|
||||
/* Allocate one bit per page */
|
||||
map_map_ = (DWORD *) calloc (MAPSIZE(PAGE_CNT (size_to_map_)),
|
||||
/* Allocate one bit per page */
|
||||
map_map_ = (DWORD *) calloc (MAPSIZE(PAGE_CNT (size_to_map_)),
|
||||
sizeof (DWORD));
|
||||
if (iswinnt)
|
||||
{
|
||||
DWORD old_prot;
|
||||
if (!VirtualProtect (base_address_, size_to_map_,
|
||||
PAGE_NOACCESS, &old_prot))
|
||||
PAGE_NOACCESS, &old_prot))
|
||||
syscall_printf ("-1 = alloc_map (): %E");
|
||||
}
|
||||
}
|
||||
}
|
||||
void free_map () { if (map_map_) free (map_map_); }
|
||||
|
||||
|
@ -111,11 +111,11 @@ mmap_record::find_empty (DWORD pages)
|
|||
for (start = 0; start <= mapped_pages - pages; ++start)
|
||||
if (!MAP_ISSET (start))
|
||||
{
|
||||
DWORD cnt;
|
||||
for (cnt = 0; cnt < pages; ++cnt)
|
||||
DWORD cnt;
|
||||
for (cnt = 0; cnt < pages; ++cnt)
|
||||
if (MAP_ISSET (start + cnt))
|
||||
break;
|
||||
if (cnt >= pages)
|
||||
if (cnt >= pages)
|
||||
return start;
|
||||
}
|
||||
return (DWORD)-1;
|
||||
|
@ -143,10 +143,10 @@ mmap_record::map_map (DWORD off, DWORD len)
|
|||
{
|
||||
off = find_empty (len);
|
||||
if (off != (DWORD)-1)
|
||||
{
|
||||
{
|
||||
if (iswinnt
|
||||
&& !VirtualProtect (base_address_ + off * getpagesize (),
|
||||
len * getpagesize (), prot, &old_prot))
|
||||
&& !VirtualProtect (base_address_ + off * getpagesize (),
|
||||
len * getpagesize (), prot, &old_prot))
|
||||
syscall_printf ("-1 = map_map (): %E");
|
||||
|
||||
while (len-- > 0)
|
||||
|
@ -159,7 +159,7 @@ mmap_record::map_map (DWORD off, DWORD len)
|
|||
DWORD start = off / getpagesize ();
|
||||
if (iswinnt
|
||||
&& !VirtualProtect (base_address_ + start * getpagesize (),
|
||||
len * getpagesize (), prot, &old_prot))
|
||||
len * getpagesize (), prot, &old_prot))
|
||||
syscall_printf ("-1 = map_map (): %E");
|
||||
|
||||
for (; len-- > 0; ++start)
|
||||
|
@ -176,7 +176,7 @@ mmap_record::unmap_map (caddr_t addr, DWORD len)
|
|||
len = PAGE_CNT (len);
|
||||
if (iswinnt
|
||||
&& !VirtualProtect (base_address_ + off * getpagesize (),
|
||||
len * getpagesize (), PAGE_NOACCESS, &old_prot))
|
||||
len * getpagesize (), PAGE_NOACCESS, &old_prot))
|
||||
syscall_printf ("-1 = unmap_map (): %E");
|
||||
|
||||
for (; len-- > 0; ++off)
|
||||
|
@ -211,7 +211,7 @@ mmap_record::fixup_map ()
|
|||
|
||||
for (DWORD off = PAGE_CNT (size_to_map_); off > 0; --off)
|
||||
VirtualProtect (base_address_ + off * getpagesize (),
|
||||
getpagesize (),
|
||||
getpagesize (),
|
||||
MAP_ISSET (off - 1) ? prot : PAGE_NOACCESS,
|
||||
&old_prot);
|
||||
}
|
||||
|
@ -309,7 +309,7 @@ list::match (caddr_t addr, DWORD len, off_t start)
|
|||
{
|
||||
for (int i = start + 1; i < nrecs; ++i)
|
||||
if (addr >= recs[i].get_address ()
|
||||
&& addr + len <= recs[i].get_address () + recs[i].get_size ())
|
||||
&& addr + len <= recs[i].get_address () + recs[i].get_size ())
|
||||
return i;
|
||||
return (off_t)-1;
|
||||
}
|
||||
|
@ -354,9 +354,9 @@ map::get_list_by_fd (int fd)
|
|||
#if 0 /* The fd isn't sufficient since it could already be another file. */
|
||||
if (lists[i]->fd == fd
|
||||
#else /* so we use the name hash value to identify the file unless
|
||||
it's not an anonymous mapping. */
|
||||
it's not an anonymous mapping. */
|
||||
if ((fd == -1 && lists[i]->fd == -1)
|
||||
|| (fd != -1 && lists[i]->hash == cygheap->fdtab[fd]->get_namehash ()))
|
||||
|| (fd != -1 && lists[i]->hash == cygheap->fdtab[fd]->get_namehash ()))
|
||||
#endif
|
||||
return lists[i];
|
||||
return 0;
|
||||
|
@ -481,7 +481,7 @@ mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t off)
|
|||
}
|
||||
fh = cygheap->fdtab[fd];
|
||||
if (fh->get_device () == FH_DISK)
|
||||
{
|
||||
{
|
||||
DWORD fsiz = GetFileSize (fh->get_handle (), NULL);
|
||||
fsiz -= gran_off;
|
||||
if (gran_len > fsiz)
|
||||
|
@ -489,7 +489,7 @@ mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t off)
|
|||
}
|
||||
else if (fh->get_device () == FH_ZERO)
|
||||
/* mmap /dev/zero is like MAP_ANONYMOUS. */
|
||||
fd = -1;
|
||||
fd = -1;
|
||||
}
|
||||
if (fd == -1)
|
||||
{
|
||||
|
@ -538,13 +538,13 @@ mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t off)
|
|||
/* Create a new one */
|
||||
l = new list;
|
||||
if (l == 0)
|
||||
{
|
||||
fh->munmap (h, base, gran_len);
|
||||
set_errno (ENOMEM);
|
||||
syscall_printf ("-1 = mmap(): ENOMEM");
|
||||
ReleaseResourceLock(LOCK_MMAP_LIST, READ_LOCK | WRITE_LOCK, "mmap");
|
||||
return MAP_FAILED;
|
||||
}
|
||||
{
|
||||
fh->munmap (h, base, gran_len);
|
||||
set_errno (ENOMEM);
|
||||
syscall_printf ("-1 = mmap(): ENOMEM");
|
||||
ReleaseResourceLock(LOCK_MMAP_LIST, READ_LOCK | WRITE_LOCK, "mmap");
|
||||
return MAP_FAILED;
|
||||
}
|
||||
l = mmapped_areas->add_list (l, fd);
|
||||
}
|
||||
|
||||
|
@ -597,9 +597,9 @@ munmap (caddr_t addr, size_t len)
|
|||
{
|
||||
mmap_record *rec = l->recs + li;
|
||||
if (rec->unmap_map (addr, len))
|
||||
{
|
||||
{
|
||||
fhandler_base *fh = rec->alloc_fh ();
|
||||
fh->munmap (rec->get_handle (), addr, len);
|
||||
fh->munmap (rec->get_handle (), addr, len);
|
||||
rec->free_fh (fh);
|
||||
|
||||
/* Delete the entry. */
|
||||
|
@ -661,12 +661,12 @@ msync (caddr_t addr, size_t len, int flags)
|
|||
if (rec->get_address () == addr)
|
||||
{
|
||||
fhandler_base *fh = rec->alloc_fh ();
|
||||
int ret = fh->msync (rec->get_handle (), addr, len, flags);
|
||||
int ret = fh->msync (rec->get_handle (), addr, len, flags);
|
||||
rec->free_fh (fh);
|
||||
|
||||
if (ret)
|
||||
if (ret)
|
||||
syscall_printf ("%d = msync(): %E", ret);
|
||||
else
|
||||
else
|
||||
syscall_printf ("0 = msync()");
|
||||
|
||||
ReleaseResourceLock(LOCK_MMAP_LIST, WRITE_LOCK | READ_LOCK, "msync");
|
||||
|
@ -698,7 +698,7 @@ msync (caddr_t addr, size_t len, int flags)
|
|||
*/
|
||||
HANDLE
|
||||
fhandler_base::mmap (caddr_t *addr, size_t len, DWORD access,
|
||||
int flags, off_t off)
|
||||
int flags, off_t off)
|
||||
{
|
||||
set_errno (ENODEV);
|
||||
return INVALID_HANDLE_VALUE;
|
||||
|
@ -729,7 +729,7 @@ fhandler_base::fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
|
|||
/* Implementation for disk files. */
|
||||
HANDLE
|
||||
fhandler_disk_file::mmap (caddr_t *addr, size_t len, DWORD access,
|
||||
int flags, off_t off)
|
||||
int flags, off_t off)
|
||||
{
|
||||
DWORD protect;
|
||||
|
||||
|
@ -751,12 +751,12 @@ fhandler_disk_file::mmap (caddr_t *addr, size_t len, DWORD access,
|
|||
&& !(access & FILE_MAP_COPY))
|
||||
{
|
||||
/* Grrr, the whole stuff is just needed to try to get a reliable
|
||||
mapping of the same file. Even that uprising isn't bullet
|
||||
mapping of the same file. Even that uprising isn't bullet
|
||||
proof but it does it's best... */
|
||||
char namebuf[MAX_PATH];
|
||||
cygwin_conv_to_full_posix_path (get_name (), namebuf);
|
||||
for (int i = strlen (namebuf) - 1; i >= 0; --i)
|
||||
namebuf[i] = cyg_tolower (namebuf [i]);
|
||||
namebuf[i] = cyg_tolower (namebuf [i]);
|
||||
|
||||
if (!(h = OpenFileMapping (access, TRUE, namebuf)))
|
||||
h = CreateFileMapping (get_handle(), &sec_none, protect, 0, 0, namebuf);
|
||||
|
@ -773,20 +773,20 @@ fhandler_disk_file::mmap (caddr_t *addr, size_t len, DWORD access,
|
|||
}
|
||||
|
||||
void *base = MapViewOfFileEx (h, access, 0, off, len,
|
||||
(flags & MAP_FIXED) ? *addr : NULL);
|
||||
(flags & MAP_FIXED) ? *addr : NULL);
|
||||
|
||||
if (!base || ((flags & MAP_FIXED) && base != *addr))
|
||||
{
|
||||
if (!base)
|
||||
{
|
||||
__seterrno ();
|
||||
syscall_printf ("-1 = mmap(): MapViewOfFileEx failed with %E");
|
||||
}
|
||||
{
|
||||
__seterrno ();
|
||||
syscall_printf ("-1 = mmap(): MapViewOfFileEx failed with %E");
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
set_errno (EINVAL);
|
||||
syscall_printf ("-1 = mmap(): address shift with MAP_FIXED given");
|
||||
}
|
||||
syscall_printf ("-1 = mmap(): address shift with MAP_FIXED given");
|
||||
}
|
||||
CloseHandle (h);
|
||||
return INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
@ -906,10 +906,10 @@ fixup_mmaps_after_fork ()
|
|||
|
||||
fhandler_base *fh = rec->alloc_fh ();
|
||||
BOOL ret = fh->fixup_mmap_after_fork (rec->get_handle (),
|
||||
rec->get_access (),
|
||||
rec->get_offset (),
|
||||
rec->get_size (),
|
||||
rec->get_address ());
|
||||
rec->get_access (),
|
||||
rec->get_offset (),
|
||||
rec->get_size (),
|
||||
rec->get_address ());
|
||||
rec->free_fh (fh);
|
||||
|
||||
if (!ret)
|
||||
|
|
|
@ -43,10 +43,10 @@ char * __stdcall
|
|||
shared_name (const char *str, int num)
|
||||
{
|
||||
static NO_COPY char buf[MAX_PATH] = {0};
|
||||
char envbuf[6];
|
||||
extern bool _cygwin_testing;
|
||||
|
||||
__small_sprintf (buf, "%s.%s.%d", cygwin_version.shared_id, str, num);
|
||||
if (GetEnvironmentVariable ("CYGWIN_TESTING", envbuf, 5))
|
||||
if (!_cygwin_testing)
|
||||
strcat (buf, cygwin_version.dll_build_date);
|
||||
return buf;
|
||||
}
|
||||
|
|
|
@ -348,7 +348,7 @@ _write (int fd, const void *ptr, size_t len)
|
|||
fh = cygheap->fdtab[fd];
|
||||
|
||||
res = fh->bg_check (SIGTTOU);
|
||||
syscall_printf ("write fh %p, name '%s' bg_check %d, bg_eof %d", fh, fh->get_name(), res, bg_eof);
|
||||
|
||||
if (res > bg_eof)
|
||||
{
|
||||
myself->process_state |= PID_TTYOU;
|
||||
|
|
Loading…
Reference in New Issue