Commit Graph

915 Commits

Author SHA1 Message Date
Nate Williams
1e37fc9d59 Changed the terminology for what used to be called the "memorizing"
vector.  Now it is called the "symbol caching" vector.  This was made
possible and unconfusing by other changes that allowed me to localize
everything having to do with the caching vector in the function
reloc_map().

Switched to alloca() for allocating the caching vector, and eliminated
the special mmap-based allocation routines.  Although this was motivated
by performance reasons, it led to significant simplification of the
code, and made it possible to confine the symbol caching code to the
single function reloc_map().

Got rid of the unnecessary and inefficient division loop at the
beginning of rtld().

Reduced the number of calls to getenv("LD_LIBRARY_PATH") to just 1, on
suggestion from <davidg@root.com>.

Added breaks out of the relocation loops when the relocation address is
found to be 0.  A relocation address of 0 is caused by an unused
relocation entry.  Unused relocation entries are caused by linking a
shared object with the "-Bsymbolic" switch.  The runtime linker itself
is linked that way, and the last 40% of its relocation entries are
unused.  Thus, breaking out of the loop on the first such entry is a
performance win when ld.so relocates itself.  As a side benefit, it
permits removing a test from md_relocate_simple() in
../i386/md-static-funcs.c.

Unused relocation entries in other shared objects (linked with
"-Bsymbolic") caused even bigger problems in previous versions of the
runtime linker. The runtime linker interpreted the unused entries as if
they were valid. That caused it to perform repeated relocations of the
first byte of the shared object.  In order to do that, it had to remap
the text segment writable.  Breaking out of the loop on the first unused
relocation entry solves that.

Submitted by:	John Polstra <jdp@polstra.com>
1995-11-02 18:48:15 +00:00
Andrey A. Chernov
46e838403c Add setlocale LC_CTYPE 1995-10-31 08:44:21 +00:00
Peter Wemm
9a4fe3afc6 Remove the $ Log: ... $ lines from the comments in the files that had
them.  Good greif! This was causing an unimaginable amount of brain-damage!
The mere fact that I griped about $ Log $ in a previous commit (misspelled
deliberately here) meant that the blasted thing was being expanded from the
middle of the log entry as well as the beginning, and using " * All these"
as the comment leader..  AARGH!!!!  We *really* need to prevent these from
being expanded! (or remove the magic identifier from the source).
1995-10-29 22:06:48 +00:00
Peter Wemm
9968a350e9 Recover the -K option to co, for handling selective keyword expansion. 1995-10-29 19:31:11 +00:00
Peter Wemm
aac6d18515 Restore phk's changes from 1.3 - 1.5.. Adds a -v switch to rlog to get it
to print the current version of the RCS files.
1995-10-29 18:07:04 +00:00
Peter Wemm
718c96d308 Restore nate's change from rev 1.2; improve readability of the rlog output
(adds a short row of dashes in a place that CVS and RCS dont mind)
1995-10-29 17:56:28 +00:00
Peter Wemm
39db722b77 Build and install diff.info..
As Bruce said, this is a little bogus, it'd be nice if bsd.prog.mk knew
about .texi in the same way as it does man pages..

Submitted by: bde
1995-10-29 09:08:35 +00:00
Peter Wemm
d0a68277c8 This commit was generated by cvs2svn to compensate for changes in r11905,
which included commits to RCS files with non-trunk default branches.
1995-10-29 08:52:27 +00:00
Peter Wemm
d4722af88f Import diff-2.7's diff.texi which I left out last time.
Suggested by: bde
1995-10-29 08:52:27 +00:00
Peter Wemm
066972d847 AARGH!!!!
Fix the hard-coded pathname to /usr/local/bin/co and /usr/local/bin/merge
that I missed...
1995-10-29 08:35:51 +00:00
Peter Wemm
d2be861745 First part of import conflict merge from rcs-5.7 import.
All those $Log$ entries, combined with the whitespace changes are a real
pain.

I'm committing this now, before it's completely finished to get it compiling
and working again ASAP.  Some of the FreeBSD specific features are not working
in this commit yet (mainly rlog stuff and $FreeBSD$ support)
1995-10-28 21:50:58 +00:00
Peter Wemm
5b4f007e0b Import rcs-5.7, required for full support of cvs-1.6.
This is going to be pretty messy....  Although the vendor import was correct,
both the vendor and release tags are the same "gnu"... :-/
Getting cvs to choose the correct one might be rather interesting...
1995-10-28 21:07:39 +00:00
Peter Wemm
7603e8a868 This commit was generated by cvs2svn to compensate for changes in r11891,
which included commits to RCS files with non-trunk default branches.
1995-10-28 21:07:39 +00:00
Andrey A. Chernov
febbdcfd7b Add setlocale LC_CTYPE 1995-10-28 19:44:29 +00:00
Andrey A. Chernov
021d0b0c13 Add setlocale LC_CTYPE
Fix ctype functions for 8bit charsets
1995-10-28 19:29:58 +00:00
Andrey A. Chernov
9203a11a55 Add setlocale LC_CTYPE
Fix icase searches for 8bit charsets
1995-10-28 19:16:14 +00:00
Peter Wemm
efce212686 Merge in/out comflicts caused by Diffutils-2.7 import...
In future, it should be as easy as "update -j ....", but this time I had to
go over it by hand.  Not nice..
1995-10-28 19:11:01 +00:00
Peter Wemm
ec9763539f Import GNU diffutils 2.7
Note, this is going to be messy.. 2.3 was vendor-branch imported, while
2.6 was done as a delta. Sigh.  I'm importing this on a vendor branch so
that it will be easier to deal with next time..

(cvs-1.6 wants rcs-5.7, and rcs-5.7 suggests diffutils-2.7)
1995-10-28 18:51:33 +00:00
Peter Wemm
ffb120cc30 This commit was generated by cvs2svn to compensate for changes in r11884,
which included commits to RCS files with non-trunk default branches.
1995-10-28 18:51:33 +00:00
Andrey A. Chernov
404392d45c Add setlocale LC_CTYPE 1995-10-28 14:30:50 +00:00
Andrey A. Chernov
5e45342eb4 Simplify FILES section in the same manner like groff manpage
does, add more koi8-r references
1995-10-28 12:56:05 +00:00
Andrey A. Chernov
102a0c6fe0 Add reference to koi8-r device, fix formatting a little 1995-10-28 12:49:38 +00:00
Andrey A. Chernov
dd724f1d0c Add reference to koi8-r device 1995-10-28 12:41:56 +00:00
Bill Paul
059a9bc2bb Add preliminary support for netgroup.byuser and netgroup.byhosts maps.
(I have to make another pass through here soon; awk doesn't handle
lines broken up with '\', which can sometimes appear in netgroup maps.)
1995-10-26 18:00:35 +00:00
Andrey A. Chernov
e931854069 Add setlocale LC_ALL 1995-10-26 11:12:39 +00:00
Andrey A. Chernov
ddfbe6be8d Add setlocale LC_ALL 1995-10-26 10:59:43 +00:00
Nate Williams
468f82b316 Run-time linker speedups - Round One
Implemented symbol memorizing to reduce the number of calls to lookup(),
making relocation go faster.  While relocating a given shared object,
the dynamic linker maintains a memorizing vector that is directly
indexed by the symbol number in the relocation entry.  The first time a
given symbol is looked up, the memorizing vector is filled in with a
pointer to the symbol table entry, and a pointer to the so_map of the
shared object in which the symbol was defined.  On subsequent uses of
the same symbol, that information is retrieved directly from the
memorizing vector, without calling lookup() again.

A symbol that is referenced in a relocation entry is typically
referenced in many relocation entries, so this memorizing reduces the
number of calls to lookup() dramatically.  The overall improvement in
the speed of dynamic linking is also dramatic -- as much as a factor of
three for programs that use many shared libaries.

Submitted by:	jdp@polstra.com "John Polstra"
1995-10-25 16:16:35 +00:00
Torsten Blum
59f0c0d522 fix bad dependencies (LIBMATH -> LIBM) 1995-10-25 15:08:21 +00:00
Torsten Blum
cef6c97a61 Fix a typo ("-It Fl" to ".It Fl")
document the "-P" switch

Obtained from: the NetBSD bugs mailinglist
1995-10-25 02:17:44 +00:00
Andrey A. Chernov
a4057ed8d3 Remove LD_NOSTD_PATH implementation, it isn't works and
can cause some problems.
Suggested-by: davidg
1995-10-24 06:48:16 +00:00
Bill Paul
da7408fc6d Add support for publickey.byname map (turned off by default since
we haven't imported the Secure RPC stuff yet).
1995-10-23 16:13:53 +00:00
Bill Paul
99bf54399a Eek! When we encounter a '+' or '-', the resulting action should be
'continue' rather than 'break'.
1995-10-23 16:03:41 +00:00
Bruce Evans
178d6c8706 Remove includes of the wrong ../Makefile.inc (one was commented out, the
other was in the wrong order).
1995-10-22 18:28:10 +00:00
Joerg Wunsch
215568d2a2 Merge version 1.04 into HEAD. 1995-10-22 14:04:37 +00:00
Joerg Wunsch
56c256e933 This commit was generated by cvs2svn to compensate for changes in r11646,
which included commits to RCS files with non-trunk default branches.
1995-10-22 10:11:03 +00:00
Joerg Wunsch
3f2e9a763f Import version 1.04 of mkisofs.
This is a vendor-branch import by now, the merge with our regular
tree will happen later.

Obtained from: Eric Youngdale of Yggdrasil Computing Inc.
1995-10-22 10:11:03 +00:00
Bruce Evans
02b537bd23 Remove private maninstall target. It will conflict with the one in
bsd.man.mk when I change the latter to use `::' instead of `:'
dependencies.  (bsd.man.mk is included because NOMAN isn't defined.
The maninstall target is supposed to be private to bsd.man.mk so
bsd.man.mk doesn't bother testing if it is already defined.  The
test for redefinition in Makefile.dev was too early to do anything.)

Change install target to a beforeinstall target (perhaps there should
be an `extrainstall' target so that Makefiles don't have to abuse
one of beforeinstall, install, realinstall or afterinstall).  Don't
bother testing for the install target already being defined.  Rewrite
the shell loop as a make loop (this reduces the time for installing
groff from 78s to 65s here).
1995-10-21 16:26:38 +00:00
Andrey A. Chernov
b2105a0990 if uid != euid or gid != egid unsetenv("LD_NOSTD_PATH") too 1995-10-21 14:52:48 +00:00
Bruce Evans
03e5b81db4 Rewrite and merge some bogus makefiles to create Makefile.shprog. Just
include this in the old makefiles.

I intended to fix only the private maninstall rule but found a lot of
other bogons and bugs:
- strong resistance to installing the program anywhere other than
  ${DESTDIR}/usr/bin (first, ../../Makefile.inc was not included.
  ../Makefile/inc was redundantly included instead.  Second, /usr/bin
  was hard coded).
- the owner, group and permissions were hard coded.
- the man page was installed twice.
- MANDEPEND wasn't necessary.
- calculations to determine the obj directory weren't necessary.
- there were unnecessary private rules for depend, rcsfreeze and tags.
  We don't support the rcsfreeze target.
- there was an extra, bogus, rule for `all'.

The final version uses suffix rules to eliminate the remaining verboseness
involving directories (${.CURDIR}) and to potentially allow multiple
shell programs in one directory.
1995-10-21 14:27:19 +00:00
David Greenman
694ae82790 When building -static, link with special scrt0.o instead of crt0.o. This
reduces the text size by about 1.5Kbytes.
1995-10-18 04:28:31 +00:00
Bill Paul
36b2e7c238 A one-liner:
We already check for (and reject entries with) '+' or '-' as the first
character of the key side of the key/data pair; we should check the data
side too. (Letting spurious +/- entries into the NIS maps is bad karma.)
1995-10-11 14:30:51 +00:00
Gary Clark II
171a357ba5 Change UNIX to FreeBSD.
I got tired of see ``UNIX System Managers Manual''

NOTE: There still a couple of UNIXs left in here.  There deal with the
documents.  We may want to change there also, even though VERY little of there
even pertain to FreeBSD.
1995-10-10 11:34:10 +00:00
Nate Williams
c68c38c86b This is a FreeBSD manpage, not a NetBSD manpage. :) 1995-10-05 05:16:52 +00:00
Garrett Wollman
401a157932 Make cc1plus smaller and faster as was done for cc1 by linking static. 1995-10-02 16:37:16 +00:00
David Greenman
1661971e0f Build cc1 nonshared. This actually results in it consuming 40K *less* disk
space and improves compile times by a few percent.
1995-10-01 20:16:27 +00:00
Bruce Evans
7da87484df Fix checks for open() failing. open() may successfully return 0.
ld.c:
Fix a an error message that said that open() failed after fopen() failed.
1995-09-28 19:43:22 +00:00
Bruce Evans
252eedb90d Intitialize $(tmac_s_ and $(tmac_m). Use the initialized variable $(device)
instead of the uninitialized one $(DEVICE).

I hoped these changes would fix some of the large runtime macro processing
bugs, but they seem to only fix some small build-time macro substitution
bugs.  E.g., `man ms' now tells you to invoke groff with the flags `-ms'
instead of the bogus flags `-m'; `man groff now tells you that the default
device is `ps' instead of the bogus device `'.
1995-09-28 19:31:07 +00:00
Nate Williams
6f5457454c Make the error message more readable when 'ld.so' cannot locate a needed
shared library.  Formerly, the message looked like this:

    ld.so: run: libjdp1.so.1.0: Undefined error: 0

The new message looks like this:

    ld.so: run: Can't find shared library "libjdp1.so.1.0"

(Where "run" is the name of the program being executed.)

Submitted by:	jdp@polstra.com (John Polstra)
1995-09-27 23:17:33 +00:00
Nate Williams
e1ec3d8b3c Fixup the "ld.so failed" message for the case when ld.so finds undefined
symbols.

An easy example to see this is to develop an X program which links
against Xt, but doesn't add -lX11 to the link line.  It will link fine,
but cause run-time errors by ld.so because of missing symbols used by Xt
defined in X11.  This patch makes the errors more readable.

Submitted by:   jdp@polstra.com (John Polstra)
1995-09-27 23:14:08 +00:00
Bill Paul
336844dba4 phkmalloc strikes!
#ifdef out a number of calls to free() left over from the original
GNU ypserv implementation. As near as I can tell, the Berkeley DB
package does its own garbage collection, hence the caller doesn't
have to worry about free()ing the memory returned in the DBT
structures during lookups (I'm still not 1005 sure about this:
the DB code is very hard to follow. I must use dynamically
allocated memory since you can retreive arbitrarily large records
from a database, but I'm not sure where it ends up letting go
of it). This was not true with GDBM; you had
to do your own garbage collection.

The general rule is that if you allocate memory inside an RPC
service routine, you have to free() it the next time the routine is
called since the underlying XDR routines won't do it for you.
But if the DB package does this itself, then we don't need to do
it in the main program.

Note that with the original malloc(), there were never any errors
flagged. phkmalloc complained quite loudly.
1995-09-24 17:21:52 +00:00