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/utils/ldd.cc | |
parent | a2a48cb593a9b3cc3f5c63c39f52c32db31cec50 (diff) | |
download | cygnal-b5279ecc51ff751ccd052fbb7c20efd529575f7e.tar.gz cygnal-b5279ecc51ff751ccd052fbb7c20efd529575f7e.tar.bz2 cygnal-b5279ecc51ff751ccd052fbb7c20efd529575f7e.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/utils/ldd.cc')
-rw-r--r-- | winsup/utils/ldd.cc | 672 |
1 files changed, 0 insertions, 672 deletions
diff --git a/winsup/utils/ldd.cc b/winsup/utils/ldd.cc deleted file mode 100644 index de98658bc..000000000 --- a/winsup/utils/ldd.cc +++ /dev/null @@ -1,672 +0,0 @@ -/* Copyright (c) 2009, 2010, 2011, 2013 Chris Faylor - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Neither the name of the owner nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS - IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include <errno.h> -#include <getopt.h> -#include <stdarg.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <wchar.h> -#include <locale.h> -#include <sys/cygwin.h> -#include <cygwin/version.h> -#include <unistd.h> -#include <libgen.h> - -#define _WIN32_WINNT 0x0501 -#include <windows.h> -#include <imagehlp.h> -#include <psapi.h> - -#ifndef STATUS_DLL_NOT_FOUND -#define STATUS_DLL_NOT_FOUND (0xC0000135L) -#endif - -struct option longopts[] = -{ - {"help", no_argument, NULL, 'h'}, - {"verbose", no_argument, NULL, 'v'}, - {"version", no_argument, NULL, 'V'}, - {"data-relocs", no_argument, NULL, 'd'}, - {"function-relocs", no_argument, NULL, 'r'}, - {"unused", no_argument, NULL, 'u'}, - {0, no_argument, NULL, 0} -}; -const char *opts = "dhruvV"; - -static int process_file (const wchar_t *); - -static int -error (const char *fmt, ...) -{ - va_list ap; - va_start (ap, fmt); - fprintf (stderr, "ldd: "); - vfprintf (stderr, fmt, ap); - fprintf (stderr, "\nTry `ldd --help' for more information.\n"); - exit (1); -} - -static void -usage () -{ - printf ("Usage: %s [OPTION]... FILE...\n\ -\n\ -Print shared library dependencies\n\ -\n\ - -h, --help print this help and exit\n\ - -V, --version print version information and exit\n\ - -r, --function-relocs process data and function relocations\n\ - (currently unimplemented)\n\ - -u, --unused print unused direct dependencies\n\ - (currently unimplemented)\n\ - -v, --verbose print all information\n\ - (currently unimplemented)\n", - program_invocation_short_name); -} - -static void -print_version () -{ - printf ("ldd (cygwin) %d.%d.%d\n" - "Print shared library dependencies\n" - "Copyright (C) 2009 - %s Chris Faylor\n" - "This is free software; see the source for copying conditions. There is NO\n" - "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", - CYGWIN_VERSION_DLL_MAJOR / 1000, - CYGWIN_VERSION_DLL_MAJOR % 1000, - CYGWIN_VERSION_DLL_MINOR, - strrchr (__DATE__, ' ') + 1); -} - -#define print_errno_error_and_return(__fn) \ - do {\ - fprintf (stderr, "ldd: %s: %s\n", (__fn), strerror (errno));\ - return 1;\ - } while (0) - -#define set_errno_and_return(x) \ - do {\ - cygwin_internal (CW_SETERRNO, __FILE__, __LINE__ - 2);\ - return (x);\ - } while (0) - - -static HANDLE hProcess; - -static struct filelist -{ - struct filelist *next; - char *name; -} *head; - -static bool -saw_file (char *name) -{ - filelist *p; - - for (p = head; p; p = p->next) - if (strcasecmp (name, p->name) == 0) - return true; - - p = (filelist *) malloc(sizeof (struct filelist)); - p->next = head; - p->name = strdup (name); - head = p; - return false; -} - -static wchar_t * -get_module_filename (HANDLE hp, HMODULE hm) -{ - size_t len; - wchar_t *buf = NULL; - DWORD res; - for (len = 1024; (res = GetModuleFileNameExW (hp, hm, (buf = (wchar_t *) realloc (buf, len * sizeof (wchar_t))), len)) == len; len += 1024) - continue; - if (!res) - { - free (buf); - buf = NULL; - } - return buf; -} - -static wchar_t * -load_dll (const wchar_t *fn) -{ - wchar_t *buf = get_module_filename (GetCurrentProcess (), NULL); - if (!buf) - { - printf ("ldd: GetModuleFileName returned an error %u\n", - (unsigned int) GetLastError ()); - exit (1); /* FIXME */ - } - - wchar_t *newbuf = (wchar_t *) malloc ((sizeof (L"\"\" -- ") + wcslen (buf) + wcslen (fn)) * sizeof (wchar_t)); - newbuf[0] = L'"'; - wcscpy (newbuf + 1, buf); - wchar_t *p = wcsstr (newbuf, L"\\ldd"); - if (!p) - { - printf ("ldd: can't parse my own filename \"%ls\"\n", buf); - exit (1); - } - p[3] = L'h'; - wcscat (newbuf, L"\" -- "); - wcscat (newbuf, fn); - free (buf); - return newbuf; -} - -static int -start_process (const wchar_t *fn, bool& isdll) -{ - STARTUPINFOW si = {}; - PROCESS_INFORMATION pi; - si.cb = sizeof (si); - wchar_t *cmd; - /* OCaml natdynlink plugins (.cmxs) cannot be handled by ldd because they - can only be loaded by flexdll_dlopen() */ - if (wcslen (fn) < 4 || (wcscasecmp (wcschr (fn, L'\0') - 4, L".dll") != 0 - && wcscasecmp (wcschr (fn, L'\0') - 4, L".oct") != 0 - && wcscasecmp (wcschr (fn, L'\0') - 3, L".so") != 0)) - { - cmd = wcsdup (fn); - isdll = false; - } - else - { - cmd = load_dll (fn); - isdll = true; - } - if (CreateProcessW (NULL, cmd, NULL, NULL, FALSE, DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &si, &pi)) - { - free (cmd); - hProcess = pi.hProcess; - DebugSetProcessKillOnExit (true); - return 0; - } - - free (cmd); - set_errno_and_return (1); -} - -static int -set_entry_point_break () -{ - HMODULE hm; - DWORD cbe; - SIZE_T cbw; - if (!EnumProcessModules (hProcess, &hm, sizeof (hm), &cbe) || !cbe) - set_errno_and_return (1); - - MODULEINFO mi = {}; - if (!GetModuleInformation (hProcess, hm, &mi, sizeof (mi)) || !mi.EntryPoint) - set_errno_and_return (1); - - static const unsigned char int3 = 0xcc; - if (!WriteProcessMemory (hProcess, mi.EntryPoint, &int3, 1, &cbw) || cbw != 1) - set_errno_and_return (1); - return 0; -} - -struct dlls - { - LPVOID lpBaseOfDll; - struct dlls *next; - }; - -#define SLOP strlen (" (?)") -char * -tocyg (wchar_t *win_fn) -{ - ssize_t cwlen = cygwin_conv_path (CCP_WIN_W_TO_POSIX, win_fn, NULL, 0); - char *fn; - if (cwlen <= 0) - { - int len = wcstombs (NULL, win_fn, 0) + 1; - if ((fn = (char *) malloc (len))) - wcstombs (fn, win_fn, len); - } - else - { - char *fn_cyg = (char *) malloc (cwlen + SLOP + 1); - if (cygwin_conv_path (CCP_WIN_W_TO_POSIX, win_fn, fn_cyg, cwlen) == 0) - fn = fn_cyg; - else - { - free (fn_cyg); - int len = wcstombs (NULL, win_fn, 0); - fn = (char *) malloc (len + SLOP + 1); - wcstombs (fn, win_fn, len + SLOP + 1); - } - } - return fn; -} - -#define CYGWIN_DLL_LEN (wcslen (L"\\cygwin1.dll")) -static int -print_dlls (dlls *dll, const wchar_t *dllfn, const wchar_t *process_fn) -{ - head = NULL; /* FIXME: memory leak */ - while ((dll = dll->next)) - { - char *fn; - wchar_t *fullpath = get_module_filename (hProcess, (HMODULE) dll->lpBaseOfDll); - if (!fullpath) - fn = strdup ("???"); - else if (dllfn && wcscmp (fullpath, dllfn) == 0) - { - free (fullpath); - continue; - } - else - { - fn = tocyg (fullpath); - saw_file (basename (fn)); - free (fullpath); - } - printf ("\t%s => %s (%p)\n", basename (fn), fn, dll->lpBaseOfDll); - free (fn); - } - if (process_fn) - return process_file (process_fn); - return 0; -} - -static int -report (const char *in_fn, bool multiple) -{ - if (multiple) - printf ("%s:\n", in_fn); - char *fn = realpath (in_fn, NULL); - if (!fn) - print_errno_error_and_return (in_fn); - - ssize_t len = cygwin_conv_path (CCP_POSIX_TO_WIN_W, fn, NULL, 0); - if (len <= 0) - print_errno_error_and_return (fn); - - bool isdll; - wchar_t fn_win[len + 1]; - if (cygwin_conv_path (CCP_POSIX_TO_WIN_W, fn, fn_win, len)) - print_errno_error_and_return (fn); - - if (!fn || start_process (fn_win, isdll)) - print_errno_error_and_return (in_fn); - - DEBUG_EVENT ev; - - unsigned dll_count = 0; - - dlls dll_list = {}; - dlls *dll_last = &dll_list; - const wchar_t *process_fn = NULL; - while (1) - { - bool exitnow = false; - DWORD cont = DBG_CONTINUE; - if (!WaitForDebugEvent (&ev, INFINITE)) - break; - switch (ev.dwDebugEventCode) - { - case LOAD_DLL_DEBUG_EVENT: - if (!isdll && ++dll_count == 2) - set_entry_point_break (); - dll_last->next = (dlls *) malloc (sizeof (dlls)); - dll_last->next->lpBaseOfDll = ev.u.LoadDll.lpBaseOfDll; - dll_last->next->next = NULL; - dll_last = dll_last->next; - break; - case EXCEPTION_DEBUG_EVENT: - switch (ev.u.Exception.ExceptionRecord.ExceptionCode) - { - case STATUS_DLL_NOT_FOUND: - process_fn = fn_win; - break; - case STATUS_BREAKPOINT: - if (!isdll) - cont = DBG_EXCEPTION_NOT_HANDLED; - break; - } - break; - case CREATE_THREAD_DEBUG_EVENT: - TerminateProcess (hProcess, 0); - break; - case EXIT_PROCESS_DEBUG_EVENT: - print_dlls (&dll_list, isdll ? fn_win : NULL, process_fn); - exitnow = true; - break; - default: - break; - } - if (!ContinueDebugEvent (ev.dwProcessId, ev.dwThreadId, cont)) - { - cygwin_internal (CW_SETERRNO, __FILE__, __LINE__ - 2); - print_errno_error_and_return (in_fn); - } - if (exitnow) - break; - } - - return 0; -} - -int -main (int argc, char **argv) -{ - int optch; - - /* Use locale from environment. If not set or set to "C", use UTF-8. */ - setlocale (LC_CTYPE, ""); - if (!strcmp (setlocale (LC_CTYPE, NULL), "C")) - setlocale (LC_CTYPE, "en_US.UTF-8"); - while ((optch = getopt_long (argc, argv, opts, longopts, NULL)) != -1) - switch (optch) - { - case 'd': - case 'r': - case 'u': - error ("option not implemented `-%c'", optch); - exit (1); - case 'h': - usage (); - exit (0); - case 'V': - print_version (); - return 0; - default: - fprintf (stderr, "Try `%s --help' for more information.\n", - program_invocation_short_name); - return 1; - } - argv += optind; - if (!*argv) - error ("missing file arguments"); - - int ret = 0; - bool multiple = !!argv[1]; - char *fn; - while ((fn = *argv++)) - if (report (fn, multiple)) - ret = 1; - exit (ret); -} - -static bool printing = false; - - -/* dump of import directory - section begins at pointer 'section base' - section RVA is 'section_rva' - import directory begins at pointer 'imp' */ -static int -dump_import_directory (const void *const section_base, - const DWORD section_rva, - const IMAGE_IMPORT_DESCRIPTOR *imp) -{ - /* get memory address given the RVA */ - #define adr(rva) ((const void*) ((char*) section_base+((DWORD) (rva))-section_rva)) - - /* continue until address inaccessible or there's no DLL name */ - for (; !IsBadReadPtr (imp, sizeof (*imp)) && imp->Name; imp++) - { - wchar_t full_path[PATH_MAX]; - wchar_t *dummy; - char *fn = (char *) adr (imp->Name); - - if (saw_file (fn)) - continue; - - int len = mbstowcs (NULL, fn, 0); - if (len <= 0) - continue; - wchar_t fnw[len + 1]; - mbstowcs (fnw, fn, len + 1); - /* output DLL's name */ - char *print_fn; - if (!SearchPathW (NULL, fnw, NULL, PATH_MAX, full_path, &dummy)) - { - print_fn = strdup ("not found"); - printing = true; - } - else if (!printing) - continue; - else - { - print_fn = tocyg (full_path); - strcat (print_fn, " (?)"); - } - - printf ("\t%s => %s\n", (char *) fn, print_fn); - free (print_fn); - } - #undef adr - - return 0; -} - -/* load a file in RAM (memory-mapped) - return pointer to loaded file - 0 if no success */ -static void * -map_file (const wchar_t *filename) -{ - HANDLE hFile, hMapping; - void *basepointer; - if ((hFile = CreateFileW (filename, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, - 0, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, 0)) == INVALID_HANDLE_VALUE) - { - fprintf (stderr, "couldn't open %ls\n", filename); - return 0; - } - if (!(hMapping = CreateFileMapping (hFile, 0, PAGE_READONLY | SEC_COMMIT, 0, 0, 0))) - { - fprintf (stderr, "CreateFileMapping failed with windows error %u\n", - (unsigned int) GetLastError ()); - CloseHandle (hFile); - return 0; - } - if (!(basepointer = MapViewOfFile (hMapping, FILE_MAP_READ, 0, 0, 0))) - { - fprintf (stderr, "MapViewOfFile failed with windows error %u\n", - (unsigned int) GetLastError ()); - CloseHandle (hMapping); - CloseHandle (hFile); - return 0; - } - - CloseHandle (hMapping); - CloseHandle (hFile); - - return basepointer; -} - - -/* this will return a pointer immediatly behind the DOS-header - 0 if error */ -static void * -skip_dos_stub (const IMAGE_DOS_HEADER *dos_ptr) -{ - /* look there's enough space for a DOS-header */ - if (IsBadReadPtr (dos_ptr, sizeof (*dos_ptr))) - { - fprintf (stderr, "not enough space for DOS-header\n"); - return 0; - } - - /* validate MZ */ - if (dos_ptr->e_magic != IMAGE_DOS_SIGNATURE) - { - fprintf (stderr, "not a DOS-stub\n"); - return 0; - } - - /* ok, then, go get it */ - return (char*) dos_ptr + dos_ptr->e_lfanew; -} - - -/* find the directory's section index given the RVA - Returns -1 if impossible */ -static int -get_directory_index (const unsigned dir_rva, - const unsigned dir_length, - const int number_of_sections, - const IMAGE_SECTION_HEADER *sections) -{ - int sect; - for (sect = 0; sect < number_of_sections; sect++) - { - /* compare directory RVA to section RVA */ - if (sections[sect].VirtualAddress <= dir_rva - && dir_rva < sections[sect].VirtualAddress+sections[sect].SizeOfRawData) - return sect; - } - - return -1; -} - -/* dump imports of a single file - Returns 0 if successful, !=0 else */ -static int -process_file (const wchar_t *filename) -{ - void *basepointer; /* Points to loaded PE file - * This is memory mapped stuff - */ - int number_of_sections; - DWORD import_rva; /* RVA of import directory */ - DWORD import_length; /* length of import directory */ - int import_index; /* index of section with import directory */ - - /* ensure byte-alignment for struct tag_header */ - #include <pshpack1.h> - - const struct tag_header - { - DWORD signature; - IMAGE_FILE_HEADER file_head; - IMAGE_OPTIONAL_HEADER opt_head; - IMAGE_SECTION_HEADER section_header[1]; /* an array of unknown length */ - } *header; - - /* revert to regular alignment */ - #include <poppack.h> - - printing = false; - - /* first, load file */ - basepointer = map_file (filename); - if (!basepointer) - { - puts ("cannot load file"); - return 1; - } - - /* get header pointer; validate a little bit */ - header = (tag_header *) skip_dos_stub ((IMAGE_DOS_HEADER *) basepointer); - if (!header) - { - puts ("cannot skip DOS stub"); - UnmapViewOfFile (basepointer); - return 2; - } - - /* look there's enough space for PE headers */ - if (IsBadReadPtr (header, sizeof (*header))) - { - puts ("not enough space for PE headers"); - UnmapViewOfFile (basepointer); - return 3; - } - - /* validate PE signature */ - if (header->signature != IMAGE_NT_SIGNATURE) - { - puts ("not a PE file"); - UnmapViewOfFile (basepointer); - return 4; - } - - /* get number of sections */ - number_of_sections = header->file_head.NumberOfSections; - - /* check there are sections... */ - if (number_of_sections < 1) - { - UnmapViewOfFile (basepointer); - return 5; - } - - /* validate there's enough space for section headers */ - if (IsBadReadPtr (header->section_header, number_of_sections*sizeof (IMAGE_SECTION_HEADER))) - { - puts ("not enough space for section headers"); - UnmapViewOfFile (basepointer); - return 6; - } - - /* get RVA and length of import directory */ - import_rva = header->opt_head.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; - import_length = header->opt_head.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].Size; - - /* check there's stuff to care about */ - if (!import_rva || !import_length) - { - UnmapViewOfFile (basepointer); - return 0; /* success! */ - } - - /* get import directory pointer */ - import_index = get_directory_index (import_rva,import_length,number_of_sections,header->section_header); - - /* check directory was found */ - if (import_index < 0) - { - puts ("couldn't find import directory in sections"); - UnmapViewOfFile (basepointer); - return 7; - } - - /* The pointer to the start of the import directory's section */ - const void *section_address = (char*) basepointer + header->section_header[import_index].PointerToRawData; - if (dump_import_directory (section_address, - header->section_header[import_index].VirtualAddress, - /* the last parameter is the pointer to the import directory: - section address + (import RVA - section RVA) - The difference is the offset of the import directory in the section */ - (const IMAGE_IMPORT_DESCRIPTOR *) ((char *) section_address+import_rva-header->section_header[import_index].VirtualAddress))) - { - UnmapViewOfFile (basepointer); - return 8; - } - - UnmapViewOfFile (basepointer); - return 0; -} |