diff options
author | cvs2svn <> | 2014-02-18 19:58:41 +0000 |
---|---|---|
committer | cvs2svn <> | 2014-02-18 19:58:41 +0000 |
commit | b5279ecc51ff751ccd052fbb7c20efd529575f7e (patch) | |
tree | 64141e96a5d64ae59fb7f410270e4daa41878a03 /winsup/testsuite/winsup.api/cygload.cc | |
parent | a2a48cb593a9b3cc3f5c63c39f52c32db31cec50 (diff) | |
download | cygnal-cygwin-pre-user-db.tar.gz cygnal-cygwin-pre-user-db.tar.bz2 cygnal-cygwin-pre-user-db.zip |
This commit was manufactured by cvs2svn to create tag 'cygwin-pre-user-db'.cygwin-pre-user-db
Sprout from cygwin-1_7_29-release-branchpoint 2014-02-18 19:58:40 UTC cvs2svn 'This commit was manufactured by cvs2svn to create branch 'cygwin-1_7_29'
Cherrypick from master 2014-02-08 22:25:11 UTC Corinna Vinschen <corinna@vinschen.de> 'Fix ChangeLog':
winsup/cygwin/ChangeLog
winsup/cygwin/miscfuncs.cc
winsup/cygwin/miscfuncs.h
winsup/cygwin/mount.cc
Delete:
winsup/COPYING
winsup/CYGWIN_LICENSE
winsup/ChangeLog
winsup/Makefile.common
winsup/Makefile.in
winsup/README
winsup/acinclude.m4
winsup/aclocal.m4
winsup/autogen.sh
winsup/c++wrap
winsup/ccwrap
winsup/config.guess
winsup/config.sub
winsup/configure
winsup/configure.ac
winsup/configure.cygwin
winsup/cygserver/ChangeLog
winsup/cygserver/ChangeLog.64bit
winsup/cygserver/Makefile.in
winsup/cygserver/README
winsup/cygserver/aclocal.m4
winsup/cygserver/autogen.sh
winsup/cygserver/bsd_helper.cc
winsup/cygserver/bsd_helper.h
winsup/cygserver/bsd_log.cc
winsup/cygserver/bsd_log.h
winsup/cygserver/bsd_mutex.cc
winsup/cygserver/bsd_mutex.h
winsup/cygserver/client.cc
winsup/cygserver/configure
winsup/cygserver/configure.ac
winsup/cygserver/cygserver-config
winsup/cygserver/cygserver.cc
winsup/cygserver/cygserver.conf
winsup/cygserver/msg.cc
winsup/cygserver/process.cc
winsup/cygserver/process.h
winsup/cygserver/sem.cc
winsup/cygserver/setpwd.cc
winsup/cygserver/shm.cc
winsup/cygserver/sysv_msg.cc
winsup/cygserver/sysv_sem.cc
winsup/cygserver/sysv_shm.cc
winsup/cygserver/threaded_queue.cc
winsup/cygserver/threaded_queue.h
winsup/cygserver/transport.cc
winsup/cygserver/transport.h
winsup/cygserver/transport_pipes.cc
winsup/cygserver/transport_pipes.h
winsup/cygserver/woutsup.h
winsup/cygwin/release/1.7.29
winsup/doc/.cvsignore
winsup/doc/ChangeLog
winsup/doc/Makefile.in
winsup/doc/README
winsup/doc/Wishlist
winsup/doc/aclocal.m4
winsup/doc/bodysnatcher.pl
winsup/doc/configure
winsup/doc/configure.ac
winsup/doc/cygserver.xml
winsup/doc/cygwin-api.in.xml
winsup/doc/cygwin-ug-net.xml
winsup/doc/cygwin.xsl
winsup/doc/cygwinenv.xml
winsup/doc/dll.xml
winsup/doc/doctool.c
winsup/doc/doctool.txt
winsup/doc/effectively.xml
winsup/doc/faq-api.xml
winsup/doc/faq-copyright.xml
winsup/doc/faq-programming.xml
winsup/doc/faq-resources.xml
winsup/doc/faq-setup.xml
winsup/doc/faq-using.xml
winsup/doc/faq-what.xml
winsup/doc/faq.xml
winsup/doc/fhandler-tut.txt
winsup/doc/filemodes.xml
winsup/doc/fo.xsl
winsup/doc/gcc.xml
winsup/doc/gdb.xml
winsup/doc/highlights.xml
winsup/doc/legal.xml
winsup/doc/new-features.xml
winsup/doc/ntsec.xml
winsup/doc/ov-ex-unix.xml
winsup/doc/ov-ex-win.xml
winsup/doc/overview.xml
winsup/doc/pathnames.xml
winsup/doc/programming.xml
winsup/doc/setup-env.xml
winsup/doc/setup-files.xml
winsup/doc/setup-locale.xml
winsup/doc/setup-maxmem.xml
winsup/doc/setup-net.xml
winsup/doc/specialnames.xml
winsup/doc/textbinary.xml
winsup/doc/ug-info.xml
winsup/doc/using.xml
winsup/doc/windres.xml
winsup/doc/xidepend
winsup/install-sh
winsup/lsaauth/ChangeLog
winsup/lsaauth/ChangeLog.64bit
winsup/lsaauth/Makefile.in
winsup/lsaauth/aclocal.m4
winsup/lsaauth/configure
winsup/lsaauth/configure.ac
winsup/lsaauth/cyglsa-config
winsup/lsaauth/cyglsa.c
winsup/lsaauth/cyglsa.din
winsup/lsaauth/cyglsa64.def
winsup/testsuite/ChangeLog
winsup/testsuite/Makefile.in
winsup/testsuite/README
winsup/testsuite/aclocal.m4
winsup/testsuite/config/default.exp
winsup/testsuite/configure
winsup/testsuite/configure.ac
winsup/testsuite/cygrun.c
winsup/testsuite/libltp/include/dataascii.h
winsup/testsuite/libltp/include/databin.h
winsup/testsuite/libltp/include/file_lock.h
winsup/testsuite/libltp/include/forker.h
winsup/testsuite/libltp/include/open_flags.h
winsup/testsuite/libltp/include/pattern.h
winsup/testsuite/libltp/include/random_range.h
winsup/testsuite/libltp/include/rmobj.h
winsup/testsuite/libltp/include/search_path.h
winsup/testsuite/libltp/include/str_to_bytes.h
winsup/testsuite/libltp/include/string_to_tokens.h
winsup/testsuite/libltp/include/test.h
winsup/testsuite/libltp/include/tlibio.h
winsup/testsuite/libltp/include/usctest.h
winsup/testsuite/libltp/include/write_log.h
winsup/testsuite/libltp/lib/dataascii.c
winsup/testsuite/libltp/lib/databin.c
winsup/testsuite/libltp/lib/datapid.c
winsup/testsuite/libltp/lib/forker.c
winsup/testsuite/libltp/lib/get_high_address.c
winsup/testsuite/libltp/lib/libtestsuite.c
winsup/testsuite/libltp/lib/open_flags.c
winsup/testsuite/libltp/lib/parse_opts.c
winsup/testsuite/libltp/lib/pattern.c
winsup/testsuite/libltp/lib/rmobj.c
winsup/testsuite/libltp/lib/search_path.c
winsup/testsuite/libltp/lib/str_to_bytes.c
winsup/testsuite/libltp/lib/string_to_tokens.c
winsup/testsuite/libltp/lib/tst_res.c
winsup/testsuite/libltp/lib/tst_sig.c
winsup/testsuite/libltp/lib/tst_tmpdir.c
winsup/testsuite/libltp/lib/write_log.c
winsup/testsuite/winsup.api/checksignal.c
winsup/testsuite/winsup.api/crlf.c
winsup/testsuite/winsup.api/cygload.cc
winsup/testsuite/winsup.api/cygload.exp
winsup/testsuite/winsup.api/cygload.h
winsup/testsuite/winsup.api/devdsp.c
winsup/testsuite/winsup.api/devdsp_okay.h
winsup/testsuite/winsup.api/devzero.c
winsup/testsuite/winsup.api/iospeed.c
winsup/testsuite/winsup.api/known_bugs.tcl
winsup/testsuite/winsup.api/ltp/access01.c
winsup/testsuite/winsup.api/ltp/access03.c
winsup/testsuite/winsup.api/ltp/access04.c
winsup/testsuite/winsup.api/ltp/access05.c
winsup/testsuite/winsup.api/ltp/alarm01.c
winsup/testsuite/winsup.api/ltp/alarm02.c
winsup/testsuite/winsup.api/ltp/alarm03.c
winsup/testsuite/winsup.api/ltp/alarm07.c
winsup/testsuite/winsup.api/ltp/asyncio02.c
winsup/testsuite/winsup.api/ltp/chdir02.c
winsup/testsuite/winsup.api/ltp/chdir04.c
winsup/testsuite/winsup.api/ltp/chmod01.c
winsup/testsuite/winsup.api/ltp/chmod02.c
winsup/testsuite/winsup.api/ltp/chown01.c
winsup/testsuite/winsup.api/ltp/close01.c
winsup/testsuite/winsup.api/ltp/close02.c
winsup/testsuite/winsup.api/ltp/close08.c
winsup/testsuite/winsup.api/ltp/creat01.c
winsup/testsuite/winsup.api/ltp/creat03.c
winsup/testsuite/winsup.api/ltp/creat09.c
winsup/testsuite/winsup.api/ltp/dup01.c
winsup/testsuite/winsup.api/ltp/dup02.c
winsup/testsuite/winsup.api/ltp/dup03.c
winsup/testsuite/winsup.api/ltp/dup04.c
winsup/testsuite/winsup.api/ltp/dup05.c
winsup/testsuite/winsup.api/ltp/execl01.c
winsup/testsuite/winsup.api/ltp/execle01.c
winsup/testsuite/winsup.api/ltp/execlp01.c
winsup/testsuite/winsup.api/ltp/execv01.c
winsup/testsuite/winsup.api/ltp/execve01.c
winsup/testsuite/winsup.api/ltp/execvp01.c
winsup/testsuite/winsup.api/ltp/exit01.c
winsup/testsuite/winsup.api/ltp/exit02.c
winsup/testsuite/winsup.api/ltp/fchdir01.c
winsup/testsuite/winsup.api/ltp/fchdir02.c
winsup/testsuite/winsup.api/ltp/fchmod01.c
winsup/testsuite/winsup.api/ltp/fchown01.c
winsup/testsuite/winsup.api/ltp/fcntl02.c
winsup/testsuite/winsup.api/ltp/fcntl03.c
winsup/testsuite/winsup.api/ltp/fcntl04.c
winsup/testsuite/winsup.api/ltp/fcntl05.c
winsup/testsuite/winsup.api/ltp/fcntl07.c
winsup/testsuite/winsup.api/ltp/fcntl07B.c
winsup/testsuite/winsup.api/ltp/fcntl08.c
winsup/testsuite/winsup.api/ltp/fcntl09.c
winsup/testsuite/winsup.api/ltp/fcntl10.c
winsup/testsuite/winsup.api/ltp/fork01.c
winsup/testsuite/winsup.api/ltp/fork02.c
winsup/testsuite/winsup.api/ltp/fork03.c
winsup/testsuite/winsup.api/ltp/fork04.c
winsup/testsuite/winsup.api/ltp/fork06.c
winsup/testsuite/winsup.api/ltp/fork07.c
winsup/testsuite/winsup.api/ltp/fork09.c
winsup/testsuite/winsup.api/ltp/fork10.c
winsup/testsuite/winsup.api/ltp/fork11.c
winsup/testsuite/winsup.api/ltp/fpathconf01.c
winsup/testsuite/winsup.api/ltp/fstat01.c
winsup/testsuite/winsup.api/ltp/fstat02.c
winsup/testsuite/winsup.api/ltp/fstat03.c
winsup/testsuite/winsup.api/ltp/fstat04.c
winsup/testsuite/winsup.api/ltp/fsync01.c
winsup/testsuite/winsup.api/ltp/ftruncate01.c
winsup/testsuite/winsup.api/ltp/ftruncate02.c
winsup/testsuite/winsup.api/ltp/ftruncate03.c
winsup/testsuite/winsup.api/ltp/getegid01.c
winsup/testsuite/winsup.api/ltp/geteuid01.c
winsup/testsuite/winsup.api/ltp/getgid01.c
winsup/testsuite/winsup.api/ltp/getgid02.c
winsup/testsuite/winsup.api/ltp/getgid03.c
winsup/testsuite/winsup.api/ltp/getgroups01.c
winsup/testsuite/winsup.api/ltp/getgroups02.c
winsup/testsuite/winsup.api/ltp/gethostid01.c
winsup/testsuite/winsup.api/ltp/gethostname01.c
winsup/testsuite/winsup.api/ltp/getpgid01.c
winsup/testsuite/winsup.api/ltp/getpgid02.c
winsup/testsuite/winsup.api/ltp/getpgrp01.c
winsup/testsuite/winsup.api/ltp/getpid01.c
winsup/testsuite/winsup.api/ltp/getpid02.c
winsup/testsuite/winsup.api/ltp/getppid01.c
winsup/testsuite/winsup.api/ltp/getppid02.c
winsup/testsuite/winsup.api/ltp/getuid01.c
winsup/testsuite/winsup.api/ltp/getuid02.c
winsup/testsuite/winsup.api/ltp/getuid03.c
winsup/testsuite/winsup.api/ltp/kill01.c
winsup/testsuite/winsup.api/ltp/kill02.c
winsup/testsuite/winsup.api/ltp/kill03.c
winsup/testsuite/winsup.api/ltp/kill04.c
winsup/testsuite/winsup.api/ltp/kill09.c
winsup/testsuite/winsup.api/ltp/link02.c
winsup/testsuite/winsup.api/ltp/link03.c
winsup/testsuite/winsup.api/ltp/link04.c
winsup/testsuite/winsup.api/ltp/link05.c
winsup/testsuite/winsup.api/ltp/lseek01.c
winsup/testsuite/winsup.api/ltp/lseek02.c
winsup/testsuite/winsup.api/ltp/lseek03.c
winsup/testsuite/winsup.api/ltp/lseek04.c
winsup/testsuite/winsup.api/ltp/lseek05.c
winsup/testsuite/winsup.api/ltp/lseek06.c
winsup/testsuite/winsup.api/ltp/lseek07.c
winsup/testsuite/winsup.api/ltp/lseek08.c
winsup/testsuite/winsup.api/ltp/lseek09.c
winsup/testsuite/winsup.api/ltp/lseek10.c
winsup/testsuite/winsup.api/ltp/lstat02.c
winsup/testsuite/winsup.api/ltp/mkdir01.c
winsup/testsuite/winsup.api/ltp/mkdir08.c
winsup/testsuite/winsup.api/ltp/mknod01.c
winsup/testsuite/winsup.api/ltp/mmap001.c
winsup/testsuite/winsup.api/ltp/mmap02.c
winsup/testsuite/winsup.api/ltp/mmap03.c
winsup/testsuite/winsup.api/ltp/mmap04.c
winsup/testsuite/winsup.api/ltp/mmap05.c
winsup/testsuite/winsup.api/ltp/mmap06.c
winsup/testsuite/winsup.api/ltp/mmap07.c
winsup/testsuite/winsup.api/ltp/mmap08.c
winsup/testsuite/winsup.api/ltp/munmap01.c
winsup/testsuite/winsup.api/ltp/munmap02.c
winsup/testsuite/winsup.api/ltp/nice05.c
winsup/testsuite/winsup.api/ltp/open02.c
winsup/testsuite/winsup.api/ltp/open03.c
winsup/testsuite/winsup.api/ltp/pathconf01.c
winsup/testsuite/winsup.api/ltp/pause01.c
winsup/testsuite/winsup.api/ltp/pipe01.c
winsup/testsuite/winsup.api/ltp/pipe08.c
winsup/testsuite/winsup.api/ltp/pipe09.c
winsup/testsuite/winsup.api/ltp/pipe10.c
winsup/testsuite/winsup.api/ltp/pipe11.c
winsup/testsuite/winsup.api/ltp/poll01.c
winsup/testsuite/winsup.api/ltp/read01.c
winsup/testsuite/winsup.api/ltp/read04.c
winsup/testsuite/winsup.api/ltp/readdir01.c
winsup/testsuite/winsup.api/ltp/readlink01.c
winsup/testsuite/winsup.api/ltp/readlink02.c
winsup/testsuite/winsup.api/ltp/readlink03.c
winsup/testsuite/winsup.api/ltp/rename01.c
winsup/testsuite/winsup.api/ltp/rename02.c
winsup/testsuite/winsup.api/ltp/rename08.c
winsup/testsuite/winsup.api/ltp/rename10.c
winsup/testsuite/winsup.api/ltp/rmdir01.c
winsup/testsuite/winsup.api/ltp/rmdir04.c
winsup/testsuite/winsup.api/ltp/rmdir05.c
winsup/testsuite/winsup.api/ltp/sbrk01.c
winsup/testsuite/winsup.api/ltp/select01.c
winsup/testsuite/winsup.api/ltp/select02.c
winsup/testsuite/winsup.api/ltp/select03.c
winsup/testsuite/winsup.api/ltp/setgid01.c
winsup/testsuite/winsup.api/ltp/setgroups01.c
winsup/testsuite/winsup.api/ltp/setpgid01.c
winsup/testsuite/winsup.api/ltp/setregid01.c
winsup/testsuite/winsup.api/ltp/setreuid01.c
winsup/testsuite/winsup.api/ltp/setuid01.c
winsup/testsuite/winsup.api/ltp/setuid02.c
winsup/testsuite/winsup.api/ltp/signal03.c
winsup/testsuite/winsup.api/ltp/stat01.c
winsup/testsuite/winsup.api/ltp/stat02.c
winsup/testsuite/winsup.api/ltp/stat03.c
winsup/testsuite/winsup.api/ltp/stat05.c
winsup/testsuite/winsup.api/ltp/stat06.c
winsup/testsuite/winsup.api/ltp/symlink01.c
winsup/testsuite/winsup.api/ltp/symlink02.c
winsup/testsuite/winsup.api/ltp/symlink03.c
winsup/testsuite/winsup.api/ltp/symlink04.c
winsup/testsuite/winsup.api/ltp/symlink05.c
winsup/testsuite/winsup.api/ltp/sync01.c
winsup/testsuite/winsup.api/ltp/sync02.c
winsup/testsuite/winsup.api/ltp/time01.c
winsup/testsuite/winsup.api/ltp/time02.c
winsup/testsuite/winsup.api/ltp/times01.c
winsup/testsuite/winsup.api/ltp/times02.c
winsup/testsuite/winsup.api/ltp/times03.c
winsup/testsuite/winsup.api/ltp/truncate01.c
winsup/testsuite/winsup.api/ltp/truncate02.c
winsup/testsuite/winsup.api/ltp/ulimit01.c
winsup/testsuite/winsup.api/ltp/umask01.c
winsup/testsuite/winsup.api/ltp/umask02.c
winsup/testsuite/winsup.api/ltp/umask03.c
winsup/testsuite/winsup.api/ltp/uname01.c
winsup/testsuite/winsup.api/ltp/unlink05.c
winsup/testsuite/winsup.api/ltp/unlink06.c
winsup/testsuite/winsup.api/ltp/unlink07.c
winsup/testsuite/winsup.api/ltp/unlink08.c
winsup/testsuite/winsup.api/ltp/vfork01.c
winsup/testsuite/winsup.api/ltp/wait02.c
winsup/testsuite/winsup.api/ltp/wait401.c
winsup/testsuite/winsup.api/ltp/wait402.c
winsup/testsuite/winsup.api/ltp/write01.c
winsup/testsuite/winsup.api/ltp/write02.c
winsup/testsuite/winsup.api/ltp/write03.c
winsup/testsuite/winsup.api/mmaptest01.c
winsup/testsuite/winsup.api/mmaptest02.c
winsup/testsuite/winsup.api/mmaptest03.c
winsup/testsuite/winsup.api/mmaptest04.c
winsup/testsuite/winsup.api/msgtest.c
winsup/testsuite/winsup.api/nullgetcwd.c
winsup/testsuite/winsup.api/pthread/cancel1.c
winsup/testsuite/winsup.api/pthread/cancel10.c
winsup/testsuite/winsup.api/pthread/cancel11.c
winsup/testsuite/winsup.api/pthread/cancel12.c
winsup/testsuite/winsup.api/pthread/cancel2.c
winsup/testsuite/winsup.api/pthread/cancel3.c
winsup/testsuite/winsup.api/pthread/cancel4.c
winsup/testsuite/winsup.api/pthread/cancel5.c
winsup/testsuite/winsup.api/pthread/cancel6.c
winsup/testsuite/winsup.api/pthread/cancel7.c
winsup/testsuite/winsup.api/pthread/cancel8.c
winsup/testsuite/winsup.api/pthread/cancel9.c
winsup/testsuite/winsup.api/pthread/cleanup2.c
winsup/testsuite/winsup.api/pthread/cleanup3.c
winsup/testsuite/winsup.api/pthread/condvar1.c
winsup/testsuite/winsup.api/pthread/condvar2.c
winsup/testsuite/winsup.api/pthread/condvar2_1.c
winsup/testsuite/winsup.api/pthread/condvar3.c
winsup/testsuite/winsup.api/pthread/condvar3_1.c
winsup/testsuite/winsup.api/pthread/condvar3_2.c
winsup/testsuite/winsup.api/pthread/condvar3_3.c
winsup/testsuite/winsup.api/pthread/condvar4.c
winsup/testsuite/winsup.api/pthread/condvar5.c
winsup/testsuite/winsup.api/pthread/condvar6.c
winsup/testsuite/winsup.api/pthread/condvar7.c
winsup/testsuite/winsup.api/pthread/condvar8.c
winsup/testsuite/winsup.api/pthread/condvar9.c
winsup/testsuite/winsup.api/pthread/count1.c
winsup/testsuite/winsup.api/pthread/create1.c
winsup/testsuite/winsup.api/pthread/create2.c
winsup/testsuite/winsup.api/pthread/equal1.c
winsup/testsuite/winsup.api/pthread/exit1.c
winsup/testsuite/winsup.api/pthread/exit2.c
winsup/testsuite/winsup.api/pthread/exit3.c
winsup/testsuite/winsup.api/pthread/inherit1.c
winsup/testsuite/winsup.api/pthread/join0.c
winsup/testsuite/winsup.api/pthread/join1.c
winsup/testsuite/winsup.api/pthread/join2.c
winsup/testsuite/winsup.api/pthread/mainthreadexits.c
winsup/testsuite/winsup.api/pthread/mutex1.c
winsup/testsuite/winsup.api/pthread/mutex1d.c
winsup/testsuite/winsup.api/pthread/mutex1e.c
winsup/testsuite/winsup.api/pthread/mutex1n.c
winsup/testsuite/winsup.api/pthread/mutex1r.c
winsup/testsuite/winsup.api/pthread/mutex2.c
winsup/testsuite/winsup.api/pthread/mutex3.c
winsup/testsuite/winsup.api/pthread/mutex4.c
winsup/testsuite/winsup.api/pthread/mutex5.c
winsup/testsuite/winsup.api/pthread/mutex6d.c
winsup/testsuite/winsup.api/pthread/mutex6e.c
winsup/testsuite/winsup.api/pthread/mutex6n.c
winsup/testsuite/winsup.api/pthread/mutex6r.c
winsup/testsuite/winsup.api/pthread/mutex7.c
winsup/testsuite/winsup.api/pthread/mutex7d.c
winsup/testsuite/winsup.api/pthread/mutex7e.c
winsup/testsuite/winsup.api/pthread/mutex7n.c
winsup/testsuite/winsup.api/pthread/mutex7r.c
winsup/testsuite/winsup.api/pthread/mutex8e.c
winsup/testsuite/winsup.api/pthread/mutex8n.c
winsup/testsuite/winsup.api/pthread/mutex8r.c
winsup/testsuite/winsup.api/pthread/once1.c
winsup/testsuite/winsup.api/pthread/priority1.c
winsup/testsuite/winsup.api/pthread/priority2.c
winsup/testsuite/winsup.api/pthread/rwlock1.c
winsup/testsuite/winsup.api/pthread/rwlock2.c
winsup/testsuite/winsup.api/pthread/rwlock3.c
winsup/testsuite/winsup.api/pthread/rwlock4.c
winsup/testsuite/winsup.api/pthread/rwlock5.c
winsup/testsuite/winsup.api/pthread/rwlock6.c
winsup/testsuite/winsup.api/pthread/rwlock7.c
winsup/testsuite/winsup.api/pthread/self1.c
winsup/testsuite/winsup.api/pthread/self2.c
winsup/testsuite/winsup.api/pthread/test.h
winsup/testsuite/winsup.api/pthread/threadidafterfork.c
winsup/testsuite/winsup.api/pthread/tsd1.c
winsup/testsuite/winsup.api/resethand.c
winsup/testsuite/winsup.api/samples/sample-fail.c
winsup/testsuite/winsup.api/samples/sample-miscompile.c
winsup/testsuite/winsup.api/samples/sample-pass.c
winsup/testsuite/winsup.api/semtest.c
winsup/testsuite/winsup.api/shmtest.c
winsup/testsuite/winsup.api/sigchld.c
winsup/testsuite/winsup.api/signal-into-win32-api.c
winsup/testsuite/winsup.api/systemcall.c
winsup/testsuite/winsup.api/user_malloc.c
winsup/testsuite/winsup.api/waitpid.c
winsup/testsuite/winsup.api/winsup.exp
winsup/utils/COPYING.dumper
winsup/utils/ChangeLog
winsup/utils/ChangeLog-2000
winsup/utils/ChangeLog.64bit
winsup/utils/Makefile.in
winsup/utils/aclocal.m4
winsup/utils/autogen.sh
winsup/utils/bloda.cc
winsup/utils/configure
winsup/utils/configure.ac
winsup/utils/cygcheck.cc
winsup/utils/cygpath.cc
winsup/utils/cygwin-console-helper.cc
winsup/utils/dump_setup.cc
winsup/utils/dumper.cc
winsup/utils/dumper.h
winsup/utils/getconf.c
winsup/utils/getfacl.c
winsup/utils/kill.cc
winsup/utils/ldd.cc
winsup/utils/ldh.cc
winsup/utils/loadlib.h
winsup/utils/locale.cc
winsup/utils/minidumper.cc
winsup/utils/mkgroup.c
winsup/utils/mkpasswd.c
winsup/utils/module_info.cc
winsup/utils/mount.cc
winsup/utils/parse_pe.cc
winsup/utils/passwd.c
winsup/utils/path.cc
winsup/utils/path.h
winsup/utils/pldd.c
winsup/utils/ps.cc
winsup/utils/regtool.cc
winsup/utils/setfacl.c
winsup/utils/setmetamode.c
winsup/utils/ssp.c
winsup/utils/ssp.txt
winsup/utils/strace.cc
winsup/utils/testsuite.cc
winsup/utils/testsuite.h
winsup/utils/tzset.c
winsup/utils/umount.cc
winsup/utils/utils.xml
winsup/utils/wide_path.h
Diffstat (limited to 'winsup/testsuite/winsup.api/cygload.cc')
-rw-r--r-- | winsup/testsuite/winsup.api/cygload.cc | 628 |
1 files changed, 0 insertions, 628 deletions
diff --git a/winsup/testsuite/winsup.api/cygload.cc b/winsup/testsuite/winsup.api/cygload.cc deleted file mode 100644 index bdbbcd1a3..000000000 --- a/winsup/testsuite/winsup.api/cygload.cc +++ /dev/null @@ -1,628 +0,0 @@ -/* cygload.cc - - Copyright 2005, 2006 Red Hat, Inc. - - Written by Max Kaehn <slothman@electric-cloud.com> - - This software is a copyrighted work licensed under the terms of the - Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. - - Note that dynamically linking to cygwin1.dll automatically places your code - under the GPL unless you purchase a Cygwin Contract with Red Hat, Inc. - See http://www.redhat.com/software/cygwin/ for more information. - - cygload demonstrates how to dynamically load cygwin1.dll. The default - build uses MinGW to compile it; the Makefile also shows how to build - it using the Microsoft compiler. - - By default, the program will silently test basic functionality: - * Making space on the stack for cygtls - * Loading and initializing cygwin1.dll - * Path translation - * Error handling - * Signal handling - - Options for this program: - -v Verbose output. Normal operation is entirely silent, - save for errors. - -testinterrupts Pauses the program for 30 seconds so you can demonstrate - that it handles ^C properly. - -cygwin Name of DLL to load. Defaults to "cygwin1.dll". */ - -#include "cygload.h" -#include <iostream> -#include <sstream> -#include <vector> -#include <errno.h> // for ENOENT -#include <sys/types.h> -#include <sys/stat.h> - -using std::cout; -using std::cerr; -using std::endl; -using std::string; - -cygwin::padding *cygwin::padding::_main = NULL; -DWORD cygwin::padding::_mainTID = 0; - -// A few cygwin constants. -static const int SIGHUP = 1; -static const int SIGINT = 2; -static const int SIGTERM = 15; // Cygwin won't deliver this one to us; - // expect unadorned "kill" to just kill - // your process. -static const int SIGSTOP = 17; // Cygwin insists on delivering SIGSTOP to - // the main thread. If your main thread - // is not interruptible, you'll miss the - // signal and ignore the request to suspend. -static const int SIGTSTP = 18; // ^Z on a tty. -static const int SIGCONT = 19; // Resume a stopped process. -static const int SIGUSR1 = 30; -static const int SIGUSR2 = 31; - -// Using *out instead of cout. In verbose mode, out == &cout. -static std::ostream *out = NULL; - -cygwin::padding::padding () -{ - _main = this; - _mainTID = GetCurrentThreadId (); - - _end = _padding + sizeof (_padding); - char *stackbase; -#ifdef __GNUC__ - __asm__ ( - "movl %%fs:4, %0" - :"=r"(stackbase) - ); -#else - __asm - { - mov eax, fs:[4]; - mov stackbase, eax; - } -#endif - _stackbase = stackbase; - - // We've gotten as close as we can to the top of the stack. Even - // subverting the entry point, though, still doesn't get us there-- I'm - // getting 64 bytes in use before the entry point. So we back up the data - // there and restore it when the destructor is called: - if ((_stackbase - _end) != 0) - { - size_t delta = (_stackbase - _end); - - _backup.resize (delta); - - memcpy (&(_backup[0]), _end, delta); - } -} - -cygwin::padding::~padding () -{ - _main = NULL; - - if (_backup.size ()) - { - memcpy (_end, &(_backup[0]), _backup.size ()); - } -} - -void -cygwin::padding::check () -{ - if (_main == NULL) - throw std::runtime_error ("No padding declared!"); - if (_mainTID != GetCurrentThreadId ()) - throw std::runtime_error ("You need to initialize cygwin::connector " - "in the same thread in which you declared the " - "padding."); - - if (_main->_backup.size ()) - *out << "Warning! Stack base is " - << static_cast<void *>(_main->_stackbase) - << ". padding ends at " << static_cast<void *>(_main->_end) - << ". Delta is " << (_main->_stackbase - _main->_end) - << ". Stack variables could be overwritten!" << endl; -} - -cygwin::connector::connector (const char *dll) -{ - // This will throw if padding is not in place. - padding::check (); - - *out << "Loading " << dll << "..." << endl; - - // This should call init.cc:dll_entry() with DLL_PROCESS_ATTACH, - // which calls dll_crt0_0(). - if ((_library = LoadLibrary (dll)) == NULL) - throw windows_error ("LoadLibrary", dll); - - *out << "Initializing cygwin..." << endl; - - // This calls dcrt0.cc:cygwin_dll_init(), which calls dll_crt0_1(), - // which will, among other things: - // * spawn the cygwin signal handling thread from sigproc_init() - // * initialize the thread-local storage for this thread and overwrite - // the first 4K of the stack - void (*cyginit) (); - get_symbol ("cygwin_dll_init", cyginit); - (*cyginit) (); - - *out << "Loading symbols..." << endl; - - // Pick up the function pointers for the basic infrastructure. - get_symbol ("__errno", _errno); - get_symbol ("strerror", _strerror); - get_symbol ("cygwin_conv_to_full_posix_path", _conv_to_full_posix_path); - get_symbol ("cygwin_conv_to_full_win32_path", _conv_to_full_win32_path); - - // Note that you need to be running an interruptible cygwin function if - // you want to receive signals. You can use the standard signal() - // mechanism if you're willing to have your main thread spend all its time - // in interruptible cygwin functions like sleep(). Christopher Faylor - // cautions that this solution "could be slightly racy": if a second - // signal comes in before the first one is done processing, the thread - // won't be back in sigwait() to catch it. - *out << "Spawning signal handling thread..." << endl; - - _waiting_for_signals = true; - _signal_thread_done = false; - InitializeCriticalSection (&_thread_mutex); - - DWORD tid; - - _signal_thread = CreateThread (NULL, // Default security. - 32768, // Adjust the stack size as - // appropriate for what your signal - // handler needs in order to run, and - // then add 4K for cygtls. - &signal_thread, // Function to call - this, // Context - 0, // Flags - &tid); // Thread ID - - if (_signal_thread == NULL) - throw windows_error ("CreateThread", "signal_thread"); -} - -cygwin::connector::~connector () -{ - try - { - // First, shut down signal handling. - int (*raze) (int); - int (*pthread_join) (void *, void **); - - get_symbol ("raise", raze); - get_symbol ("pthread_join", pthread_join); - - // Tell the listener to shut down... - _waiting_for_signals = false; - int err = 0; - EnterCriticalSection (&_thread_mutex); - if (!_signal_thread_done) - err = raze (SIGUSR2); - LeaveCriticalSection (&_thread_mutex); - if (err) - cerr << error (this, "raise", "SIGUSR2").what () << endl; - // ...and get the thread to join. - if (!CloseHandle (_signal_thread)) - throw windows_error ("CloseHandle", "signal_thread"); - - // This should call init.cc:dll_entry() with DLL_PROCESS_DETACH. - if (!FreeLibrary (_library)) - throw windows_error ("FreeLibrary", "cygwin1.dll"); - } - catch (std::exception &x) - { - cerr << x.what () << endl; - } -} - -DWORD WINAPI -cygwin::connector::signal_thread (void *param) -{ - connector *that = reinterpret_cast < connector * > (param); - - try - { - that->await_signal (); - } - catch (std::exception &x) - { - cerr << "signal_thread caught " << x.what () << endl; - return 0; - } - return 0; -} - -void -cygwin::connector::await_signal () -{ - // Wait for signals. - unsigned long sigset[32]; - int sig; - int (*empty) (void *); - int (*add) (void *, int); - int (*wait) (void *, int *); - - get_symbol ("sigemptyset", empty); - get_symbol ("sigaddset", add); - get_symbol ("sigwait", wait); - - empty (sigset); - add (sigset, SIGHUP); - add (sigset, SIGINT); -// add (sigset, SIGSTOP); -// add (sigset, SIGTSTP); // I can't get this to suspend properly, so - // I'll leave it up to chance that the main - // thread is interruptible. - add (sigset, SIGUSR1); - add (sigset, SIGUSR2); - - while (_waiting_for_signals) - { - int err = wait (sigset, &sig); - if (err) - cerr << error (this, "sigwait").what () << endl; - else - *out << "Received signal " << sig << "." << endl; - switch (sig) - { - case SIGUSR2: - if (!_waiting_for_signals) - { - // SIGUSR2 is how ~connector wakes this thread - goto done; - } - break; - default: - break; - } - handle_signals (sig); - } -done: - EnterCriticalSection (&_thread_mutex); - _signal_thread_done = true; - LeaveCriticalSection (&_thread_mutex); - - *out << "await_signal done." << endl; -} - -cygwin::connector::signal_handler * -cygwin::connector::set_handler (int signal, signal_handler *handler) -{ - signal_handler *retval = _signal_handlers[signal]; - - if (handler == NULL) - _signal_handlers.erase (signal); - else - _signal_handlers[signal] = handler; - - return retval; -} - -void -cygwin::connector::handle_signals (int sig) -{ - callback_list::iterator h = _signal_handlers.find (sig); - - if (h != _signal_handlers.end ()) - { - try - { - signal_handler *handler = h->second; - (*handler) (sig); - return; - } - catch (std::exception &x) - { - cerr << "cygwin::connector::handle_signals caught " - << x.what () << "!" << endl; - return; - } - } - - cerr << "No handler for signal " << sig << "!" << endl; -} - -int -cygwin::connector::err_no () const -{ - int *e = (*_errno) (); - if (e == NULL) - { - return -1; - } - return *e; -} - -string -cygwin::connector::str_error (int err_no) const -{ - string retval; - - const char *s = (*_strerror) (err_no); - if (s != NULL) - { - retval = s; - } - else - { - std::ostringstream o; - o << "Unexpected errno " << err_no; - retval = o.str (); - } - - return retval; -} - -string -cygwin::connector::unix_path (const string &windows) const -{ - char buf[MAX_PATH]; - - _conv_to_full_posix_path (windows.c_str (), buf); - - return string (buf); -} - -string -cygwin::connector::win_path (const string &unix) const -{ - char buf[MAX_PATH]; - - _conv_to_full_win32_path (unix.c_str (), buf); - - return string (buf); -} - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -string -cygwin::error::format (cygwin::connector *c, - int err_no, const char *message, const char *detail) -{ - std::ostringstream ret; - - ret << message; - if (detail) - { - ret << "(" << detail << ")"; - } - ret << ": " << c->str_error (err_no); - - return ret.str (); -} - -string -windows_error::format (DWORD error, const char *message, const char *detail) -{ - std::ostringstream ret; - char buf[512]; - DWORD bytes; - - ret << message; - if (detail) - ret << "(" << detail << ")"; - ret << ": "; - - bytes = FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, 0, error, - MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), - buf, sizeof (buf), 0); - - if (bytes == 0) - ret << "Unexpected Windows error " << error; - else - { - // Remove trailing whitespace - char *p = buf + bytes - 1; - while (isspace (*p)) - *p-- = '\0'; - ret << buf << " (" << error << ")"; - } - - return ret.str (); -} - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -extern "C" int mainCRTStartup (); - -// This just pushes 4K onto the stack, backs up the original stack, and -// jumps into the regular startup code. This avoids having to worry about -// backing up argc and argv. -extern "C" int __stdcall -cygloadCRTStartup () -{ - cygwin::padding padding; - return mainCRTStartup (); -} - -/////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////////// - -static void -hangup (int sig) -{ - cout << "Hangup (" << sig << ")." << endl; -} - -static void -interrupt (int sig) -{ - cerr << "Interrupt (" << sig << ")!" << endl; - exit (0); -} - -static int caught = false; - -static void -catch_signal (int) -{ - *out << "Signals are working." << endl; - caught = true; -} - -int -main (int argc, char *argv[]) -{ - // If you do not want to use cygloadCRTStartup() as an entry point, - // uncomment this line, but be sure to have *everything* you want - // from the stack below it backed up before you call the - // constructor for cygwin::connector. - //cygwin::padding padding; - - std::ostringstream output; - bool verbose = false, testinterrupts = false; - const char *dll = "cygwin1.dll"; - - out = &output; - - for (int i = 1; i < argc; ++i) - { - string arg = string (argv[i]); - - if (arg == "-v") - { - verbose = true; - out = &cout; - } - else if (arg == "-testinterrupts") - testinterrupts = true; - else if (arg == "-cygwin") - { - if (i+1 >= argc) - { - cerr << "Need to supply an argument with -cygwin." << endl; - return 255; - } - dll = argv[++i]; - } - } - - - try - { - *out << "Connecting to cygwin..." << endl; - cygwin::connector cygwin (dll); - *out << "Successfully connected." << endl; - - string result = cygwin.str_error (ENOENT); - - if (result != "No such file or directory") - { - cerr << "strerror(ENOENT) returned \"" - << result - << "\" instead of \"No such file or directory\"!" - << endl; - return 1; - } - else if (verbose) - { - *out << "strerror(ENOENT) = " << result << endl; - } - - // Path conversion: from cygwin to Windows... - result = cygwin.win_path ("/usr"); - struct _stat statbuf; - if (::_stat (result.c_str (), &statbuf) < 0) - { - cerr << "stat(\"" << result << "\") failed!" << endl; - return 2; - } - else if (verbose) - { - *out << "/usr == " << result << endl; - } - - // ...and back: - char buf[MAX_PATH], scratch[256]; - GetSystemDirectory (buf, sizeof(buf)); - int (*cygstat) (const char *, void *); - cygwin.get_symbol ("stat", cygstat); - - if (cygstat (buf, scratch) < 0) - { - cerr << "cygwin stat(\"" << buf << "\") failed!" << endl; - return 3; - } - else if (verbose) - { - *out << buf << " == " << cygwin.unix_path(buf) << endl; - } - - // Test error handling. This should output - // "open(/potrzebie/furshlugginer): No such file or directory" - { - int (*cygopen) (const char *, int); - cygwin.get_symbol ("open", cygopen); - - if (cygopen ("/potrzebie/furshlugginer", 0 /* O_RDONLY */ ) < 0) - { - int err = cygwin.err_no (); - if (err != ENOENT) - { - cerr << "cygwin open(\"/potrzebie/furshlugginer\", " - "O_RDONLY): expected to fail with ENOENT, got " - << err << "!" << endl; - return 4; - } - if (verbose) - *out << cygwin::error (&cygwin, "open", - "/potrzebie/furshlugginer").what () - << endl; - } - else - { - cerr << "/potrzebie/furshlugginer should not exist!" - << endl; - return 5; - } - } - - // And signal handling: - std::pointer_to_unary_function < int , void > h1 (&hangup); - std::pointer_to_unary_function < int , void > h2 (&interrupt); - std::pointer_to_unary_function < int , void > h3 (&catch_signal); - cygwin.set_handler (SIGHUP, &h1); - cygwin.set_handler (SIGINT, &h2); - cygwin.set_handler (SIGUSR1, &h3); - - // Make sure the signal handler thread has had time to start... - Sleep (100); - // Send a test signal to set "caught" to true... - int (*raze) (int); - cygwin.get_symbol ("raise", raze); - raze (SIGUSR1); - // And give the thread time to wait for the shutdown signal. - Sleep (100); - - if (testinterrupts) - { - // This is a worst case scenario for testing interrupts: the - // main thread is in a long-duration Windows API call. This - // makes the main thread uninterruptible; cygwin will retry - // 20 times, with a low_priority_sleep(0) between each try. - cout << "Sleeping for 30 seconds, waiting for a signal..." << endl; - Sleep (30000); - cout << "Done waiting." << endl; - } - } - catch (std::exception &x) - { - cerr << x.what () << endl; - return 2; - } - - if (caught) - return 0; - else - { - cerr << "Never received SIGUSR1." << endl; - return 1; - } -} |