summaryrefslogtreecommitdiffstats
path: root/libexec
Commit message (Collapse)AuthorAgeFilesLines
* Don't call err() without a format string.kris2000-07-111-1/+1
|
* Explain that the -S option only logs file downloads, not all transfers.ben2000-07-111-1/+1
| | | | | PR: 16934 Submitted by: Kurt Zeilenga <kurt@OpenLDAP.org>
* Solve the dynamic linker's problems with multithreaded programs oncejdp2000-07-0810-334/+770
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | and for all (I hope). Packages such as wine, JDK, and linuxthreads should no longer have any problems with re-entering the dynamic linker. This commit replaces the locking used in the dynamic linker with a new spinlock-based reader/writer lock implementation. Brian Fundakowski Feldman <green> argued for this from the very beginning, but it took me a long time to come around to his point of view. Spinlocks are the only kinds of locks that work with all thread packages. But on uniprocessor systems they can be inefficient, because while a contender for the lock is spinning the holder of the lock cannot make any progress toward releasing it. To alleviate this disadvantage I have borrowed a trick from Sleepycat's Berkeley DB implementation. When spinning for a lock, the requester does a nanosleep() call for 1 usec. each time around the loop. This will generally yield the CPU to other threads, allowing the lock holder to finish its business and release the lock. I chose 1 usec. as the minimum sleep which would with reasonable certainty not be rounded down to 0. The formerly machine-independent file "lockdflt.c" has been moved into the architecture-specific subdirectories by repository copy. It now contains the machine-dependent spinlocking code. For the spinlocks I used the very nifty "simple, non-scalable reader-preference lock" which I found at <http://www.cs.rochester.edu/u/scott/synchronization/pseudocode/rw.html> on all CPUs except the 80386 (the specific CPU model, not the architecture). The 80386 CPU doesn't support the necessary "cmpxchg" instruction, so on that CPU a simple exclusive test-and-set lock is used instead. 80386 CPUs are detected at initialization time by trying to execute "cmpxchg" and catching the resulting SIGILL signal. To reduce contention for the locks, I have revamped a couple of key data structures, permitting all common operations to be done under non-exclusive (reader) locking. The only operations that require exclusive locking now are the rare intrusive operations such as dlopen() and dlclose(). The dllockinit() interface is now deprecated. It still exists, but only as a do-nothing stub. I plan to remove it as soon as is reasonably possible. (From the very beginning it was clearly labeled as experimental and subject to change.) As far as I know, only the linuxthreads port uses dllockinit(). This interface turned out to have several problems. As one example, when the dynamic linker called a client-supplied locking function, that function sometimes needed lazy binding, causing re-entry into the dynamic linker and a big looping mess. And in any case, it turned out to be too burdensome to require threads packages to register themselves with the dynamic linker.
* When installing the dynamic linker, save the previous version injdp2000-07-081-0/+12
| | | | | | | | | "ld-elf.so.1.old". The dynamic linker is a critical component of the system, and it is difficult to recover if it is damaged and there isn't a working backup available. For instance, parts of the toolchain such as the assembler are dynamically linked, making it impossible to build a new dynamic linker if the installed one doesn't work.
* Plug the hole where rshd would bypass a proper .rhosts check if thebsd2000-07-051-3/+2
| | | | | | password was empty. Reviewed by: Warner Losh <imp@freebsd.org>
* Only punctuation is an allowed argument type for open-close macrossheldonh2000-06-301-1/+2
| | | | | | such as Po/Pc, as explained by phantom. Reported by: billf
* Fix a problem in the virtual host address compare code which causeddavidn2000-06-261-8/+11
| | | | | | | duplicated host entries in /etc/ftphosts not to be folded. Make sure we exit the loop on a match. PR: bin/19390
* Switch over to using the new fflagstostr and strtofflags library calls.joe2000-06-171-2/+2
|
* Spelling fix: transfered --> transferredjlemon2000-06-021-1/+1
| | | | Submitted by: dan@dan.emsphone.com
* Back out the previous change to the queue(3) interface.jake2000-05-262-5/+5
| | | | | | It was not discussed and should probably not happen. Requested by: msmith and others
* 1. Add IPv6 portrange restriction code (-U flag) to passive().nsayer2000-05-251-0/+31
| | | | | 2. Add portrange restriction code (for both v4 and v6) to the EPSV processing stuff.
* Change the way that the queue(3) structures are declared; don't assume thatjake2000-05-232-5/+5
| | | | | | | | the type argument to *_HEAD and *_ENTRY is a struct. Suggested by: phk Reviewed by: phk Approved by: mdodd
* Eliminate unaligned accesses that occurred when relocating thejdp2000-05-221-12/+27
| | | | | | DWARF2 exception tables emitted by the compiler for C++ sources. These tables are tightly packed, and they contain some relocated addresses which are not well-aligned.
* Don't uselessly set MANDEPEND (it isn't used in this Makefile, and isn'tbde2000-05-151-9/+7
| | | | | | | | | really used in bsd.man.mk). Don't uselessly set MANSRC ("." is in the path by default, and there are no ordering problems). Fixed some other style bugs.
* Man page fixupsnsayer2000-05-151-4/+7
| | | | Submitted by: sheldonh@uunet.co.za
* IPv6 support.ume2000-05-141-10/+10
| | | | Reviewed by: shin
* Add -i (insecure) flag to rexecd, which allows uid == 0 loginsnsayer2000-05-132-4/+11
| | | | | (presuming that the user in question is not in /etc/ftpusers and does not have a null password).
* Minor mdoc cleanup.mpp2000-05-051-2/+2
| | | | PR: docs/13218
* Remove dead debug code.asmodai2000-04-291-8/+0
| | | | This also removes a dependency/reference on COMPAT_43.
* Cross-reference ldd(1) in rtld(1) and vice versa.sheldonh2000-03-281-0/+1
|
* Fixed missing DPADDs.bde2000-03-271-4/+5
| | | | | Fixed some style bugs (some usual ones for LDADD, and misformatting of $FreeBSD$).
* Wrap uucpd behind the NOUUCP knob.dan2000-03-241-1/+4
| | | | Noticed by: Doug Barton
* Finally unifdef -DINTERNAL_LS.ru2000-03-131-1/+1
|
* Use libcrypto instead of libdes.markm2000-02-242-2/+2
|
* Support logging for IPv6 remote host.shin2000-02-181-4/+5
| | | | | | | Approved by: jkh PR: bin/16789 Submitted by: Ben Smithurst <ben@scientia.demon.co.uk
* Doc fix: remove references to ~ftp/bin/ls as we have FTPD_INTERNAL_LSpeter2000-02-171-8/+0
| | | | | | unconditionally active already. Noticed by: obrien
* Add more dual stack consideration.shin2000-02-101-19/+27
| | | | | | | -ftpd need to know each of AF_INET and AF_INET6 addr for hosts specified in /etc/ftphosts. Approved by: jkh
* Revert part of the last commit, remove {g|s}etflags from the libcjoe2000-02-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | interface, and statically link them to the programs using them. These functions, upon reflection and discussion, are too generically named for a library interface with such specific functionality. Also the api that they use, whilst ok for private use, isn't good enough for a libc function. Additionally there were complications with the build/install-world process. It depends heavily upon xinstall, which got broken by the change in api, and caused bootstrap problems and general mayhem. There is work in progress to address future problems that may be caused by changes in install-chain tools, and better names for {g|s}etflags can be derived when some future program requires them. For now the code has been left in src/lib/libc/gen (it started off in src/bin/ls). It's important to provide library functions for manipulating file flag strings if we ever want this interface to be adopted outside of the source tree, but now isn't necessarily the right moment with 4.0-release just around the corner. Approved: jkh
* Remove unnecessary -g for CFLAGS.shin2000-02-031-1/+1
| | | | | | | -g for CFLAGS which was set at debugging time was mistakenly committed, so removed it. Approved by: jkh
* Fix ftpd core dump when hostname is not set.shin2000-02-031-1/+2
| | | | | | | | | When hostname is not set, ftpd core dumps, because there is no NULL check for freeing name resolving information for its own hostname. So the check is added. Approved by: jkh
* sync iruserok() extension API with other BSDsshin2000-02-012-23/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of rcmd related function is need to be updated to support IPv6. Some of them are already updated as standard document. But there is also several de-facto functions and they are not listed in standard documents. They are, iruserok() (used by rlogind, rshd) ruserok() (used by kerberos, etc) KAME package updated those functions in original way. iruserok_af() ruserok_af() But recently there was discussion on IETF IPng mailing list about how to sync those API, and it is decided, -Those function is not standard and not documented. -But let BSDs sync their API as de-facto. And after some discussion, it is announced that -add update to iruserok() as iruserok_sa() -no ruserok() API change(it is only updated internaly) So I sync those API before 4.0 is released. The changes are, -prototype changes -ruserok() internal update (use iruserok_sa() inside) -removal of ruserok_af() -change iruserok_af() as static functioin, and also prefix the name with __. -add iruserok_sa() (Just call __iruserok_af() inside) -adding flag AI_ALL to getipnodebyaddr() called from __icheckhost(). This is necessary to support IPv4 communication via AF_INET6 socket could be correctly authenticated via iruserok_sa() -irusreok_af() call is replaced to iruserok_sa() call in rlogind, and rshd. Approved by: jkh
* Add a manual page for the ELF dynamic linker. I initially createdjdp2000-01-292-99/+22
| | | | | | rtld.1 by means of a repository copy from "src/libexec/rtld-aout/rtld.1". Then I edited it to make it (more) accurate for the ELF dynamic linker.
* Move the man pages for the a.out dynamic linker into the 1aoutjdp2000-01-292-227/+2
| | | | | | | section. I created rtld.1aout earlier with a repository copy. This clears the way for the ELF dynamic linker man page, which I will commit next.
* When a threads package registers locking methods with dllockinit(),jdp2000-01-295-50/+137
| | | | | | | | | | figure out which shared object(s) contain the the locking methods and fully bind those objects as if they had been loaded with LD_BIND_NOW=1. The goal is to keep the locking methods from requiring any lazy binding. Otherwise infinite recursion occurs in _rtld_bind. This fixes the infinite recursion problem in the linuxthreads port.
* Fix rshd coredump when AF_INET socket is used.shin2000-01-281-1/+1
| | | | Confirmed by: F. Heinrichmeyer <fritz.heinrichmeyer@fernuni-hagen.de>
* Changed setflags() to set_flags(). This fixes world breakage due tobde2000-01-283-5/+5
| | | | recently incremented namespace pollution in <unistd.h>.
* another tcp apps IPv6 updates.(should be make world safe)shin2000-01-277-119/+812
| | | | | | | ftp, telnet, ftpd, faithd also telnet related sync with crypto, secure, kerberosIV Obtained from: KAME project
* several tcp apps IPv6 updateshin2000-01-259-76/+192
| | | | | | | | | | | | -inetd -rshd -rlogind -telnetd -rsh -rlogin Reviewed by: freebsd-arch, cvs-committers Obtained from: KAME project
* Block almost all signals in the default locking method instead ofjdp2000-01-254-32/+40
| | | | | | | | just a few of them. This looks like it solves the recent ld-elf.so.1: assert failed: /usr/src/libexec/rtld-elf/lockdflt.c:55 failures seen by some applications such as JDK.
* Fix various man pages to stop abusing the .Bx macro to generate thempp2000-01-232-9/+10
| | | | string "FreeBSD". Use the .Fx macro instead.
* Allow files in LD_PRELOAD to be separated by white space, like Solarisjdp2000-01-221-3/+4
| | | | and Linux.
* We do not support the -B option.asmodai2000-01-121-12/+1
| | | | | PR: 15925 Submitted by: Thierry Herbelot
* Revamp the mechanism for enumerating and calling shared objects'jdp2000-01-096-139/+187
| | | | | | | | | | | | init and fini functions. Now the code is very careful to hold no locks when calling these functions. Thus the dynamic linker cannot be re-entered with a lock already held. Remove the tolerance for recursive locking that I added in revision 1.2 of dllockinit.c. Recursive locking shouldn't happen any more. Mozilla and JDK users: I'd appreciate confirmation that things still work right (or at least the same) with these changes.
* . mdoc(7)'fyphantom2000-01-072-11/+29
| | | | | | | | . add Xrs to hosts.equiv(5), auth.conf(5), services(5) to some pages . sort Xrs in SEE ALSO sections Patches based on PR: docs/15680 Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>
* Moved flags_to_string and string_to_flags into libutil. It's used injoe1999-12-301-1/+1
| | | | many places nowadays.
* Work around an assert failure in the dynamic linker's default threadjdp1999-12-284-16/+32
| | | | | | | | | | | | | | | | locking functions. If an application loads a shared object with dlopen() and the shared object has an init function which requires lazy binding, then _rtld_bind is called when the thread is already inside the dynamic linker. This leads to a recursive acquisition of the lock, which I was not expecting -- hence the assert failure. This work-around makes the default locking functions handle recursive locking. It is NOT the correct fix -- that should be implemented at the generic locking level rather than in the default locking functions. I will implement the correct fix in a future commit. Since the dllockinit() interface will likely need to change, warn about that in both the man page and the header file.
* Add a new function dllockinit() for registering thread lockingjdp1999-12-2711-45/+509
| | | | | | | | | | | | | | | | | | | functions to be used by the dynamic linker. This can be called by threads packages at start-up time. I will add the call to libc_r soon. Also add a default locking method that is used up until dllockinit() is called. The default method works by blocking SIGVTALRM, SIGPROF, and SIGALRM in critical sections. It is based on the observation that most user-space threads packages implement thread preemption with one of these signals (usually SIGVTALRM). The dynamic linker has never been reentrant, but it became less reentrant in revision 1.34 of "src/libexec/rtld-elf/rtld.c". Starting with that revision, multiple threads each doing lazy binding could interfere with each other. The usual symptom was that a symbol was falsely reported as undefined at start-up time. It was rare but not unseen. This commit fixes it.
* Revert the libcrypt/libmd stuff back to how it was. This should not havepeter1999-12-182-4/+4
| | | | | | | | happened as it was working around problems elsewhere (ie: binutils/ld not doing the right thing according to the ELF design). libcrypt has been adjusted to not need the runtime -lmd. It's still not quite right (ld is supposed to work damnit) but at least it doesn't impact all the users of libcrypt in Marcel's cross-build model.
* Add libmd (or move it after libcrypt). We don't want the linker to bemarcel1999-12-162-4/+4
| | | | | smart because it will definitely get it wrong. This popped up during cross-linking.
* Correct the ttys.5 and init.8 manpages with respect to the incorrectsheldonh1999-12-061-1/+11
| | | | | | | | | assumption that only getty processes can be managed. Describe the SysV-like ability to keep arbitrary long-running processes alive using a non-device first field in /etc/ttys. PR: 12767 Submitted by: Peter Jeremy <peter.jeremy@alcatel.com.au>
OpenPOWER on IntegriCloud