summaryrefslogtreecommitdiffstats
path: root/winsup/utils/ldd.cc
diff options
context:
space:
mode:
authorcvs2svn <>2014-02-18 19:58:41 +0000
committercvs2svn <>2014-02-18 19:58:41 +0000
commitb5279ecc51ff751ccd052fbb7c20efd529575f7e (patch)
tree64141e96a5d64ae59fb7f410270e4daa41878a03 /winsup/utils/ldd.cc
parenta2a48cb593a9b3cc3f5c63c39f52c32db31cec50 (diff)
downloadcygnal-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.cc672
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;
-}