Commit Graph

16 Commits

Author SHA1 Message Date
Jordan K. Hubbard
1130b656e5 Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore.  This update would have been
insane otherwise.
1997-01-14 07:20:47 +00:00
John Polstra
d3c677c7e0 Add support for the LD_BIND_NOW environment variable. If it is set to a
nonempty string, then function calls are relocated at program start-up
rather than lazily.  This variable is standard on Sun and SVR4 systems.

The dlopen() function now supports both lazy and immediate binding, as
determined by its "mode" argument, which can be either 1 (RTLD_LAZY) or
2 (RTLD_NOW).  I will add defines of these symbols to <dlfcn.h> as soon
as I've done a little more checking to make sure they won't cause
collisions or bootstrapping problems that would break "make world".
1997-01-12 00:09:11 +00:00
Peter Wemm
b186571cf6 Update the backends to go with the top-level ld changes. The non-i386
changes are for completeness, I don't think they work.  There are changes
to deal with the new include files.

Obtained from: NetBSD (mostly)
1996-10-01 01:28:10 +00:00
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
Nate Williams
c79eac4c4c Weak symbol support from NetBSD. This should bring us in sync with the
NetBSD ld code except for local changes for dlopen() and friends and
the hashing on the minor value of the shlibs.  We should be binary
compatible now with all their libraries.

Obtained from: NetBSD
1995-03-04 17:49:20 +00:00
Nate Williams
61f9ce8d32 Updated to recent version of Paul K.'s shlib code. This code has better
warning handling and allows for link-time warnings with a modified
version of gas.

Note: Not all of the newer bits were updated such as some of the non-x86
machine-dependant code is relevant to FreeBSD right now.

Obtained from: NetBSD
1994-12-23 22:31:35 +00:00
Rich Murphey
699e1b82fb Changes from Paul Kranenburg which bring us into sync with his sources:
handling of errors through the standard err() and warn()
 more fixes for Geoff Rehmet's NULL pointer bug.
 fixes NULL pointer bugs when linking mono and nested X servers.
 supports a `-nostdlib' option.
 accept object files without a symbol table
 don't attempt dynamic linking when `-A' is given

a few variable names have chaged (desc -> fd), and the formatting has
changed which should make it much easier to track his sources.

I tested 'make world' for /usr/src and X twice with these changes.
1994-06-15 22:41:19 +00:00
Jordan K. Hubbard
09e3d49d92 This is Paul K's latest set of ld changes. A commit was necessary at this
late stage due to the fact that link.h was copyright Sun Microsystems.

This version of ld sync's us up with NetBSD's ld and supports compatablily
with NetBSD's -[zZ] flags (which we had reversed).  Compiling with this
new ld will give you RRS warnings for libraries which do not contain .type
infomation - these wsarnings are harmless and will go away as soon as you
recompile your libraries (cd /usr/src; make libraries).
1994-02-13 20:43:13 +00:00
David Greenman
84462ab47a Removed dependance on EX_DYNAMIC in making decisions on the magic number. 1994-01-19 15:00:37 +00:00
David Greenman
1799d2585e Implemented 'QMAGIC' a.out format correctly, and changed the default
output to be QMAGIC.
1994-01-03 18:35:54 +00:00
Jordan K. Hubbard
b640de6119 Sync up with Paul K's latest ld from cesium. 1993-12-11 12:02:10 +00:00
Jordan K. Hubbard
127447df73 makedepend fails for ld. I think it because the .S files are
preprocessed the same as when they are compiled.  I just remove the
single-quotes from the offending comments.  Rich
1993-12-10 10:16:00 +00:00
Jordan K. Hubbard
52c4ca7af3 Many recent fixes from Paul K, add support for chaining of shared lib deps. 1993-11-30 20:47:54 +00:00
Jordan K. Hubbard
d3ab4e4900 Some of the latest changes from Paul K (taken from NetBSD-current). 1993-11-22 19:05:31 +00:00
Paul Richards
760e925fe9 Incorporated fixes from Paul to make -Z option work. Emits old-style
ZMAGIC magic numbers in a long.
1993-11-15 20:58:20 +00:00
Paul Richards
b9ae52e32a Imported NetBSD's ld for shared libs. 1993-11-03 23:41:59 +00:00