Commit Graph

202 Commits

Author SHA1 Message Date
Paul Traina
0f6b2cb3f8 Bring in some of Paul K's fixes for ldconfig from NetBSD-current.
This solves the problem of being unable to use shared libraries with dots
in their names before the ".so.<version>" code.

This should be brought into -stable.

There are more changes from Paul that look like they should be included,
but they change the format of the hints file, so I'm not going to bring them
in now (but we should in the future).

Obtained from: pk@netbsd.org
1996-02-26 02:22:33 +00:00
John Polstra
5a81ed9667 This release is a moderate restructuring of the dynamic linker.
It addresses a number of problems that were present in earlier
versions.

The calls to the "init" and "fini" functions of shared libraries
have been reordered, so that they are called in a strictly nested
fashion, as is required for C++ constructors and destructors.  In
addition, the "init" functions are called in better order relative
to each other.  That makes the system more tolerant of C++ programs
which depend on a library's being initialized before its clients.

The dynamic linker is now more tolerant of shared libraries in
which dependencies on other shared libraries are incompletely
recorded.

Cleanup in the event of errors has been improved throughout the
dynamic linker.  A number of memory leaks were eliminated.

The warning message for a shared library whose minor version number
is too old has been clarified.

The code dealing with the "ld.so.hints" file has been cleaned up.
A bug that caused the hints file to be unmapped incompletely has
been fixed.  A different bug that could potentially cause the hints
file to be mapped on top of a loaded object has been fixed.

The code that searches for shared libraries has been cleaned up.
The searching is now more compatible with that done by SunOS and
SVR4.  Also, some unnecessary and useless searches of both the
hints file and library directories have been eliminated.

Reviewed by:	nate@freebsd.org
1996-01-13 00:15:25 +00:00
John Polstra
eb4a4eeb45 Split up the code so that a single directory can be searched, to
support some changes in the dynamic linker.  (This code is shared
by the dynamic linker.)

Reviewed by:	nate@freebsd.org
1996-01-13 00:14:53 +00:00
Poul-Henning Kamp
bbb1dc53a4 Another '-' needed for make release. 1996-01-11 17:49:55 +00:00
Poul-Henning Kamp
5a39b83123 Make the new realinstall target a little less draconian so that make release
doesn't fall over.
1996-01-11 17:27:16 +00:00
John Polstra
b25d7c2bbc Install ld.so in a way that is safe even on a running system. 1996-01-11 03:45:55 +00:00
Peter Wemm
a5b996a7ec recording cvs-1.6 file death 1995-12-30 19:02:48 +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
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
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
Andrey A. Chernov
b2105a0990 if uid != euid or gid != egid unsetenv("LD_NOSTD_PATH") too 1995-10-21 14:52:48 +00:00
Nate Williams
c68c38c86b This is a FreeBSD manpage, not a NetBSD manpage. :) 1995-10-05 05:16:52 +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
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
Poul-Henning Kamp
0ad2ff70ee Stop using gnumalloc. 1995-09-22 14:14:32 +00:00
Joerg Wunsch
19d57e6d9d Import Paul Kranenburg's man page for ld.so (aka. rtld).
Obtained from:	NetBSD
1995-08-26 13:17:39 +00:00
Joerg Wunsch
1c7895ac54 Reset the umask before creating the output file; otherwise running
ldconfig as root with a restrictive umask yielded ld.so.hints
unreadable by the world (and thus useless).
1995-08-16 06:31:50 +00:00
Rodney W. Grimes
c7e5c6a843 Make ld's error messages consistent with gcc when no input files
are given on the command line.

Submitted by:	Thomas Graichen <graichen@omega.physik.fu-berlin.de>
1995-07-13 08:30:07 +00:00
Doug Rabson
82aaeb09ad Change ld.so to correctly load dependant libraries for dlopen and unload them
on dlclose.  Also correctly call constructors and destructors for libraries
linked with /usr/lib/c++rt0.o.
Change interpretation of dlopen manpage to call _init() rather than init()
for dlopened objects.
Change c++rt0.o to avoid using atexit to call destructors, allowing dlclose to
call destructors when an object is unloaded.
Change interface between crt0 and ld.so to allow crt0 to call a function on
exit to call destructors for shared libraries explicitly.

These changes are backwards compatible.  Old binaries will work with the new
ld.so and new binaries will work with the old ld.so.  A version number has
been introduced in the crt0-ld.so interface to allow for future changes.

Reviewed by:	GAWollman, Craig Struble <cstruble@singularity.bevc.blacksburg.va.us>
1995-06-27 09:53:27 +00:00
Satoshi Asami
f606c848fa Add an "-m" flag to merge instead of replace the entries. We can
now safely add a line like

ldconfig -m ${PREFIX}/lib

in ports' Makefiles and packing lists without throwing away some
directories the user may have added.

Submitted by:   Mostly by Paul Kranenburg <pk@cs.few.eur.nl>
1995-06-24 10:08:44 +00:00
Joerg Wunsch
5fbea18fbe Make `ld' properly honoring the umask setting when chmod'ing the
output file for the `x' bits.

This is a Posix requirement.
1995-06-14 06:25:09 +00:00
Rodney W. Grimes
4399be3cbd Remove trailing whitespace. 1995-05-30 05:05:38 +00:00
Nate Williams
110aea11f2 Sync. up bits with Paul K. Cascade support plus some cosmetic changes.
Obtained from: NetBSD
1995-04-21 04:57:50 +00:00
Nate Williams
7e613ac7bd Back out my change to enforce command line linker order due to
underlying bugs which are caused by mixing static/shared libraries with
this change in place.

The shlib code is not capable of supporting this feature in it's present
state and will need significant modifications in order to do so.
1995-04-07 05:08:28 +00:00
Nate Williams
4979433a3c Modify the default behavior of the linker to no longer prefer static
members over shared library members.  This modification causes the linker
to use the first definition it sees for a symbol instead of having
priorities based on the library type.  This modification should allow
gdb to compile again.

Obtained from:
  Email conversation with Paul Kranenbury, but implemented completely by
  me.  If it doesn't work, it's my fault not his.
1995-03-22 19:38:07 +00:00
Nate Williams
8af57ca9dd Removed /usr/local/lib from the standard library search path to be
consistant.  Programs shouldn't rely on non-standard paths for bringing
in default libraries.

Suggested by:	Andreas Schulz <ats@freebsd.first.gmd.de>
1995-03-19 21:20:09 +00:00
David Greenman
28b6ade77a Back out Poul's hack that forces static libgcc. This has been fixed via
gcc instead.
1995-03-10 19:41:50 +00:00
Poul-Henning Kamp
316f7f7725 Never again shall we link libgcc dynamic. It was a big mistake in the
first place and we were too long in finding out.  Now we know, and the
damage is hard to fix.  This is part one:  ld will not link gcc dynamic,
if specified as "-lgcc".

Suggested by:	dyson & davidg
1995-03-06 08:00:23 +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
Jordan K. Hubbard
19c408ae08 Support for more Sun compatible dlopen() and friends. Also added proper error
handling.
Reviewed by:	gj
Submitted by:	Mark Diekhans <markd@grizzly.com>
1995-02-07 13:33:42 +00:00
Joerg Wunsch
d5453ba5c4 Make ldconfig and ld.so not hashing the shared lib minor number. This
misfeature caused troubles when a program attempted to access a shlib
where one with a higher minor number has been hashed.  Ldconfig does
only include the highest-numbered shlib anyway, so this is in no way a
limitation of generality.

Caution: after installing the new programs, your /var/run/ld.so.hints
needs to be rebuiult; run ldconfig again as it's done from /etc/rc.
1995-01-12 19:12:29 +00:00
Steven Wallace
e86257e166 Change to
#define STANDARD_SEARCH_DIRS    "/usr/lib", "/usr/X11R6/lib", "/usr/local/lib"
Like in 2.0R, except without /usr/X386.
1995-01-05 02:36:29 +00:00
Nate Williams
7edb8c9b99 New file from pk to aid new in developing the shlib code for new
architectures.

Obtained from: NetBSD
1994-12-23 22:56:08 +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
Andreas Schulz
3b92fb1ec6 Changed one occurrence of LD 8 to LD 1 and the OS FreeBSD 1.1 to FreeBSD 2.0. 1994-12-11 21:39:31 +00:00
Steven Wallace
504e8b978b Add LDDESTDIR to ld command.
Add -I${DESTDIR}/usr/include to cpp command.
1994-09-18 19:41:38 +00:00
Bruce Evans
dd8e0158cf Unmap hints file when finished with it, so that it can go away
completely when ldconfig unlinks it.  If init is shared, then the
referenced unlinked copy of the hints file created by running
ldconfig in /etc/rc caused the file system to be unclean after
every reboot.
1994-09-15 20:48:55 +00:00
Bruce Evans
2577a8acef Add dependencies on libraries to DPADD. Someday this should be done
automagically.  -lfoo has to be right to work, but ${LIBFO0} is too
easy to forget or misspell; nothing checks it and it should be
different for shared libraries.
1994-08-28 18:49:06 +00:00
Garrett Wollman
e410457b74 Install ld.so immutable. 1994-08-26 19:11:14 +00:00
David Greenman
e4e244ac16 Don't explicitly define __FreeBSD__ - this is no longer necessary. 1994-08-19 12:24:45 +00:00
Jordan K. Hubbard
a37e71f354 Remove reference to the ld.so man page - ain't no such animal.
Reported by John Lind.
1994-06-17 17:22:16 +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
Geoff Rehmet
86a13e77dd Bug reported by Jon-Dean Mountjoy <csjm@cs.ru.ac.za>
Paul Kranenburg's description:
ld is in error here, assuming that symbols with N_EXT set always have an
entry in the (global) symbol table: this is not the case for C++ generated
constructor/destructor symbols. I can reproduce your failure by fudging
a "multiply defined" constructor symbol by hand. Checking for `g == NULL'
seems to be a ok as a fence for now.

So:
for now, in do_file_warnings() we check if g == NULL, before trying to generate
any warning messages.  This prevents a NULL pointer dereference.
1994-06-14 12:45:41 +00:00
Andreas Schulz
91b1841dd2 Add the -r and -s flags to the Usage string. 1994-06-05 19:04:11 +00:00
Andreas Schulz
e7ae632e5a Change the private declarations from dlopen,dlclose,dlsym,dlctl
to public. These functions are also used in /usr/include/link.h,
so it looks, like they shouldn't be private.
I will ask Paul about that, if this is correct.
1994-04-13 20:52:40 +00:00
Andreas Schulz
8b395a3055 Better link ldconfig static instead dynamic. 1994-04-13 20:49:42 +00:00
Andreas Schulz
1cc30df665 Add that /usr/X386/lib is also in the default path for ldconfig. Bug found
by Satoshi Asami ( asami@cs.berkeley.edu ). Fixed also a minor typo
problem.
1994-04-05 08:24:19 +00:00
Andreas Schulz
3507018b5b Due to the deletion of the gcc support from libc we need again the
-lgcc_pic library. rtld uses the udivd3 routine from it.
Repeat the bug by simply compiling ld on current.
1994-03-10 23:19:54 +00:00
David Greenman
5bebac3224 Document existance of -Z 1994-03-09 14:28:02 +00:00
David Greenman
fe8ab1a5fe Handling of the netzmagic flag was completely missing after the last
update. This completely broke support for all ZMAGIC a.out formats.
1994-02-17 03:57:00 +00:00
Rodney W. Grimes
44ff78b7aa I yelled, I warned and now I am SCREAMING. Add -D__FreeBSD__ to CFLAGS+=
so that you can bootstrap a 1.0.2 system.  Please oh please no one but
no one add any more #ifdef __FreeBSD__ stuff UNTIL 1.1 has SHIPPED!!!
1994-02-14 10:02:13 +00:00
Jordan K. Hubbard
7883064ac0 A fast private malloc for ld.so 1994-02-13 20:44:09 +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
Nate Williams
9859e2cc85 Changed NetBSD -> FreeBSD 1994-02-11 12:12:51 +00:00
Rodney W. Grimes
825079654d Remove /usr/X386/lib and /usr/local/lib from the default locations,
these are handled by /etc/rc and this was causing errors on a new
install as these places do NOT exsist by default!
1994-02-09 02:29:31 +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
Jordan K. Hubbard
9d4389fddc More proper fix for for shared lib debugging support. 1994-01-14 11:47:00 +00:00
Jordan K. Hubbard
5b3dd4f53e 1. Fix bug where duplicate symbol warnings were suppressed. This often
caued ld to `exit silently', to general confusion.

2. Add Gary Jennejohn's fix to support debugging of shared libraries.
1994-01-12 23:16:19 +00:00
Jordan K. Hubbard
cbb24ea9e1 Updated man page to document new behaviour of -Z, -z and -Q flags. 1994-01-03 23:52:35 +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
f7122c559f C++ support changes (+misc fixes) from Paul K. 1993-12-22 23:28:35 +00:00
Nate Williams
0bb118a5b1 Fixed Makefile per bug report from Julian Stacey. There was an extra DESTDIR
in front of BINDIR definition.
1993-12-16 21:51:27 +00:00
Jordan K. Hubbard
6277403422 Added sbrk() as new file. 1993-12-11 21:06:36 +00:00
Jordan K. Hubbard
8b6ddcb0a3 Broke sbrk() out of rtld as part of general cleanup. 1993-12-11 21:06:00 +00:00
Jordan K. Hubbard
c9cb3c7ea5 Omitted 4th argument to findshlib() [thanks Rich!]. Our ld is a bit
different from NetBSD's here and it squeaked through the update.
1993-12-11 20:08:39 +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
31a947eb76 Added the TODO file. Also wanted to announce the previous change to rtld.c
which eliminates the stack walking code (from David G.).  My previous commit
message was eaten by mistake!
1993-12-09 17:53:08 +00:00
Jordan K. Hubbard
a0b8281d40 David Greenman's latest changes to eliminate much stack-walking jazz
(no more sbrk_init()!).
1993-12-09 17:45:43 +00:00
Jordan K. Hubbard
230d2c5ff9 More changes to bring FreeBSD in sync with Paul K's latest. 1993-12-04 00:53:16 +00:00
Jordan K. Hubbard
2e21ebe5ce More changes to bring FreBSD in sync with Paul K's latest. 1993-12-04 00:53:02 +00:00
Andrey A. Chernov
64990426e4 Sorry, Jordan, but I restore previous version again.
You write that
LDFLAGS+= -Xlinker -Bstatic
no more needed, but you have
CFLAGS += -static -I$(.CURDIR) -I$(.CURDIR)/$(MACHINE)
This -static doesn't make any sense in your version,
because it not passed to linker's state (LDFLAGS),
so we have SHARED /usr/bin/ld in this case.
(Older Makefile produce non-shared ld).
I suppose, that -static in CFLAGS was introduced to
make non-shared ld, so I restore previous LDFLAGS
to have non-shared ld. If we want to have shared ld
we need to remove -static from CFLAGS too, not only LDFLAGS,
but this need special issue and corresponding
commit log. Your current version hang into intermediate
state (beetween two sides), so I move it to one side.

Second, I restore NOPIC dependance again from older Makefile:
.if !defined(NOPIC)
SUBDIR+= rtld
.endif
We don't need ld.so, if NOPIC

P.S. I don't see any purpose to commit new makefile, old version
is better.
1993-12-02 09:56:30 +00:00
Andrey A. Chernov
1f30bc0f0d #ifdef DEBUG unwanted message, third time after Jordan... 1993-12-02 09:32:26 +00:00
Nate Williams
02974dc4fb Moved DEBUG conditional where it belonged to remove DEBUG code out of
default compilation.
1993-12-02 05:09:52 +00:00
Jordan K. Hubbard
1e503f71fb Second attempt to integrate Paul K's changes. 1993-12-02 01:03:47 +00:00
Jordan K. Hubbard
88ac367bd7 Second attempt to integrate Paul K's changes. 1993-12-02 00:56:40 +00:00
Andrey A. Chernov
db4d1e7156 All -static and -Xlinker -Bstatic flags missed in
newly commited Makefile.
NOPIC dependance missed too!
Oh it is really pain to check all that broken stuff,
Please, check it *before* commit!
1993-12-01 15:58:22 +00:00
Andrey A. Chernov
b242393f9b #ifdef DEBUG missed by several lines!
!!! Please, COMPILE *BEFORE* COMMIT!
1993-12-01 15:34:01 +00:00
Andrey A. Chernov
50b517092a Add DEBUG #ifdef, (second time!)
!!! Please, anybody who update ld to NetBSD current,
!!! look at old cvs logs!
1993-12-01 15:13:42 +00:00
Andrey A. Chernov
730a80c44c Remove hanging #else part (with second sbrk()) without #if & #endif
Add missing argument to findshlib, I am not shure,
but it seems that it is 1.
!!! Does anybody compile it before commit?
1993-12-01 15:05:31 +00:00
Andrey A. Chernov
ff78e5dfcf Remove -g option (second time!)
!!! Please anybody who port Makefiles from NetBSD,
!!! remove -g option!
1993-12-01 14:45:35 +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
0f81714b34 Added -lgcc_pic back again. 1993-11-25 01:06:42 +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
Jordan K. Hubbard
437c34ef5b Recent Paul K. changes for compiling X shared (tested on my box). 1993-11-18 20:52:34 +00:00
Andrey A. Chernov
308a64fe24 Diagnostic "RRS text relocation at %#x (symbol %s)"
commented out in #ifdef DEBUG
As Paul told me, it is only informational, nothing more.
I don't want several screens of this information
on each linking (netstat f.e.)
1993-11-17 01:33:24 +00:00
Paul Richards
e523391c57 Default magic is back to netbsd ZMAGIC,
new a_midmag format needed for dynamic binaries.
-z produces normal ZMAGIC. (this gets our kernel built)
-Z produces netbsd ZMAGIC. (currently default)
1993-11-16 07:20:35 +00:00
Paul Richards
8d29dc5c6f Swapped meaning of -Z and -z options.
On any other system -z means "standard" ZMAGIC format and is the
default. Therefore I've made -z be standard ZMAGIC and -Z be ZMAGIC
stored in the new a_midmag format.

The "standard" ZMAGIC format is now the default as well.
1993-11-16 00:42:57 +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
ff691de6a9 Added
.if !defined(NOPIC)
SUBDIR+= rtld
.endif

so linker can be built without building ld.so
1993-11-09 21:23:07 +00:00
Paul Richards
f1a0d2dfc6 Cahnged ldconfig.0 to ldconfig.8 for our man system. 1993-11-09 20:39:46 +00:00
Paul Richards
129619c245 Remoed -g flag and added -static. 1993-11-09 20:39:26 +00:00
Paul Richards
bcd9d0cf11 Added -lgcc_pic to Makefile -- Why do we need this and NetBSD don't ??
Incorporated patch by Guido (inspired by Davidg) that fixes stack
problem. May not be final fix but it works more than the current method.
1993-11-09 04:44:30 +00:00
Paul Richards
3923b0019c Updated to newest ld from pk.
lib.c:
Pull in archives containing definitions needed by shared objects.
warnings.c:
Less spurious "undefined symbol" msgs for shared library defined
symbols.
ld.c:
Do a better job of recognising data in text segments, eg. `const char []'.
shlib.c,ld/rtld/{Makefile rtld.c}
Use strsep() in stead of strtok() and restore colons in eg. env. vars.
1993-11-09 04:19:36 +00:00
Paul Richards
727c7fbdc9 Added -lgcc_pic to LDFLAGS in rtld/Makefile 1993-11-07 03:25:25 +00:00
Paul Richards
d58b98d018 Changed ldconfig.0 to ldconfig.8 for our man setup. 1993-11-06 23:15:53 +00:00
Andrey A. Chernov
75b40a6f55 -g removed from CFLAGS (with permissions from Paul) 1993-11-05 01:35:24 +00:00
Paul Richards
b9ae52e32a Imported NetBSD's ld for shared libs. 1993-11-03 23:41:59 +00:00
David Greenman
03b15f1934 Added support for QMAGIC format executable output. This causes the loader
to output the same QMAGIC format as BSDI does. This is triggered by
a new '-q' flag ('-Xlinker -q'  in gcc). The default can be changed from
ZMAGIC to QMAGIC by defining DEFAULT_MAGIC=QMAGIC when building ld.
1993-10-26 06:24:20 +00:00
Rodney W. Grimes
3c7e1b8cc2 From: rich@id.slip.bcm.tmc.edu.cdrom.com (Rich Murphey)
ld won't generate output if there are two .o files with the same
name.  It thinks they are multiply defined external references.  This
patch explictly allows multiple /file names/ with the same value.
This can happen if you do a two stage link or if you link in file
names that are identical to files in libc.

Otherwise ld.c exits with a status=1 and non error message.  Rich
1993-09-05 14:24:38 +00:00
Nate Williams
6db721f938 ld is moved to src/gnu 1993-06-29 09:58:20 +00:00