177 Commits

Author SHA1 Message Date
dfr
f28fdede6f Add ELF support. 1998-05-01 08:40:11 +00:00
jdp
d5b09c81ec Implement dladdr. 1998-02-06 16:46:46 +00:00
alex
47c4182543 Removed /etc/ld.so.conf reference from FILES section (people get
confused when they can't find it), but leave the reference to it
as being a standard filename (which doesn't imply that it exists).

Discussed with:	jkh
1998-01-01 02:31:47 +00:00
hoek
100ffb8b0a Use consistent spelling,
writeable -> writable (recall prior debate over this? :-)
	initialise -> initialize
	recognise -> recognize

Merry Christmas! :)
1997-12-25 09:36:42 +00:00
jdp
6301239883 Make emacs work again. This is a workaround for the fact that the
emacs a.out file, self-generated by emacs's "unexec" function in
"unexsunos4.c", is invalid.  In particular, its "_end" symbol has
the wrong value.  The dynamic linker was using the value of that
symbol to initialize its sbrk break level.

The workaround is to peek at the executable's a.out header in
memory, and calculate what "_end" should be based on the segment
sizes.

I will work out a fix for emacs and send it to the FSF.  This
dynamic linker workaround is still worthwhile, if only to avoid
forcing all emacs users to build a new version.

Note: xemacs gives a bogus warning at startup, for related reasons.
The warning is harmless and can safely be ignored.  I will send a
patch to the xemacs maintainers to get rid of it, and meanwhile
add a patch file to our port.
1997-12-05 02:06:37 +00:00
jdp
e61aa81fab Get rid of the dynamic linker's internal malloc package, and arrange
things so that it uses the same malloc as is used by the program
being executed.  This has several advantages, the big one being
that you can now debug core dumps from dynamically linked programs
and get useful information out of them.  Until now, that didn't
work.  The internal malloc package placed the tables describing
the loaded shared libraries in a mapped region of high memory that
was not written to core files.  Thus the debugger had no way of
determining what was loaded where in memory.  Now that the dynamic
linker uses the application's malloc package (normally, but not
necessarily, the system malloc), its tables end up in the regular
heap area where they will be included in core dumps.  The debugger
now works very well indeed, thank you very much.

Also ...

Bring the program a little closer to conformance with style(9).
There is still a long way to go.

Add minimal const correctness changes to get rid of compiler warnings
caused by the recent const changes in <dlfcn.h> and <link.h>.

Improve performance by eliminating redundant calculations of symbols'
hash values.
1997-11-29 03:32:48 +00:00
jdp
81c1440f4f In the "ldd -v" output, display the N_AUX information for each
symbol.  It indicates whether the symbol refers to a function or a
data object.
1997-11-28 19:34:27 +00:00
phk
d8ac409160 Many places in the code NULL is used in integer context, where
plain 0 should be used.  This happens to work because we #define
NULL to 0, but is stylistically wrong and can cause problems
for people trying to port bits of code to other environments.

PR:		2752
Submitted by:	Arne Henrik Juul <arnej@imf.unit.no>
1997-09-18 14:08:40 +00:00
wosch
fde8a8ec46 spelling corrections.
PR: docs/4450
Submitted by: josh@quick.net
1997-09-13 16:01:53 +00:00
jdp
24ac227fe1 Touch up the code that implements "ldd -v".
Bring the style of sods.c into better conformance.  Add code to
print the contents of each datum being relocated.  Correct the logic
that distinguishes between programs, shared libraries, and object
files.  Make the entire program "-Wall" clean.
1997-09-02 21:54:39 +00:00
jmg
416e9a71f9 fix a few spelling changes
Submitted by: Josh Gilliam

Closes PR's: 4429, 4431-4438

PS: He has agreed to submit all contrib fixes back to the original author.
1997-08-30 12:22:49 +00:00
steve
4c965279b1 .Ar -l -> .Fl l
PR:		docs/3682
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1997-08-23 21:59:41 +00:00
peter
0c770f97ec Add -R (rescan or refresh) option to rescan and rebuild the hints
file based on the previous list of directories stored there which
should overcome a weakness of the '-m' switch which can only add
libs.  This is an ideal way of updating the hints list after adding
or removing a shlib since it will remove entries that are gone and
doesn't need to have all the directories spelled out each time.
(eg: rm -f /usr/lib/libtcl75*; ldconfig -R)  This only works for
version 2 hints files (which we've been generating for a year or
so) which store the path.
1997-08-22 04:42:12 +00:00
nate
33a318e832 - In dlsym(), if the lookup fails using the original symbol, prepend an
underscore and try looking it up again.  This is a non-issue if we
  switch to ELF.

Reviewed by:	sef, jdp
1997-08-19 23:33:45 +00:00
jdp
2ed649b29b Implement dlsym(RTLD_NEXT, symbol). 1997-08-02 04:56:44 +00:00
jkh
9ede654e00 Allow ldconfig to accept files (containing directory paths) as well as
directory paths.
Reviewed by:	jkh & jdp
Submitted by:	Hans Zuidam <hans@brandinnovators.com>
1997-07-11 14:45:41 +00:00
bde
cac50f2497 Configure static linkage in the normal way (default to -static using
NOSHARED?= yes).
1997-06-29 21:40:54 +00:00
bde
e610502b1e Configure static linkage in the normal way (default to -static using
NOSHARED?= yes).

Split long lines.
1997-06-29 21:36:33 +00:00
phk
711f7235a1 BYOC - Bring Your Own Calloc(3)
Someday I'm going to face the music and dispose of this private malloc copy.
1997-06-22 17:48:35 +00:00
jdp
c908673478 Fix some old typos and misspellings. 1997-05-31 04:28:53 +00:00
dfr
fb90c2a222 Document new -Bforcedynamic flag and -assert pure-text.
Reviewed by:	jdp
1997-05-29 15:34:34 +00:00
max
233b3efa62 Typo fix.
PR:		3693
Submitted by:	Kazuo Horikawa <k-horik@yk.rim.or.jp>
1997-05-27 13:46:40 +00:00
dfr
b0fdd73677 Changes to support the kernel linker:
Add a -Bforcedynamic option which generates a dynamic object even
	if no shared libraries were given in the link.

	Make RRS in text section warnings conditional on "-assert pure-text"
	so that I can link non-PIC kernel modules without tons of link
	errors.  Changes to bsd.lib.mk to follow.

	Fix a couple of bugs exposed by the fact that the kernel is not
	linked at zero.

Reviewed by:	jdp
1997-05-13 10:23:47 +00:00
jdp
08224caae1 Fix a bug that caused the relocs for linker set members in shared
libraries to come out as 1-byte relocations instead of 4-byte
relocations.

Submitted by:	Doug Rabson <dfr@nlsystems.com>
1997-04-30 05:18:08 +00:00
bde
624b69d11f Don't complain about no input files for `ld -f'. This fixes spurious
(ignored :-() errors for `make depend' in /sys/i386/boot/*.  It's
natural for there to be no libraries there and inconvenient to check
for this in bsd.prog.mk.
1997-04-25 19:43:19 +00:00
jdp
71dc5f6276 Fill the padding at the end of the runtime strings with zeros,
instead of leaving random data there.  This makes the linker's
output files more deterministic -- an important property for
regression tests.
1997-04-25 15:26:12 +00:00
bde
ea4c076a10 Fixed `make depend' and related bogons. LDFLAGS was used for
ld-specific flags.  LDFLAGS is really for ld-related flags for cc,
not for ld, and some flags, e.g., -Bshareable, mean completely
different things to cc and ld.  Having the wrong things in LDFLAGS
also broke the standard ${PROG} target.  This was kludged around
by using a special rule that depended on LDFLAGS being bogus.
Fixing `make depend' broke the special rule but fixed the standard
rule (except in the DESTDIR case, which was handled more strictly
here than elsewhere).
1997-04-16 11:31:32 +00:00
bde
f160e6fb7e Don't print nonexistent library names for `ld -f [-Lfoo] -lbar'. A
dependency on `bar' is very unlikely to be correct.

This is a quick fix for broken dependencies in gdb and many other
places.  The dependencies on internal libraries are now missing
instead of wrong when `make depend' is run before the libraries
are created.
1997-04-11 17:08:56 +00:00
jdp
d25562909d Add a new "-f" option to the linker, to print the resolved paths
of all the files and libraries in the command line.

Submitted by:	bde (Bruce Evans)
1997-03-22 02:59:40 +00:00
peter
245ba20d12 Revert $FreeBSD$ to $Id$ 1997-02-22 15:48:31 +00:00
jdp
4aa42acf80 Fix a bug involving alias (N_INDR) symbols. When building a shared
library with a shared object dependency that contained alias symbols,
the linker incorrectly counted the number of symbols that would be
written, resulting in a fatal internal error.  Since our libc now
contains some alias symbols (in "net/res_stubs.c"), this was
sufficient to tickle the bug:  "ld -Bshareable foo.so -lc".  To
fix it, I moved the accounting of alias symbols to a later point
in the processing, where it is possible to count only those symbols
that will actually be written to the output file.

This fix is well-confined to affect alias symbols only.  I have
tested it with a full "make world".  I am going to merge it into
-2.2 after a few more days of living with it in -current.
1997-02-01 20:28:38 +00:00
jdp
d7912405bd Use xmalloc instead of malloc in two places, so that out-of-memory
conditions will be detected.

Submitted by:	Philippe Charnier <charnier@xp11.frmug.org>
1997-01-24 00:07:03 +00:00
jdp
282d267078 Pay attention to the environment variable "LD_IGNORE_MISSING_OBJECTS".
If it is set to a nonempty string, then simply skip any missing
shared libraries.  This came up in a discussion long ago as a
potentially useful feature at sysinstall time.  For example, an
X11 utility could be used without the X libraries being present,
provided the utility had a mode in which no X functions were actually
called.
1997-01-17 20:22:18 +00:00
jdp
dcd41564c5 If a library is found in the hints file, but the library doesn't exist,
ignore the hint.

This is a straightforward fix, and it should go into 2.2 after a burn-in
period of a few days.

Noticed by:	bde
1997-01-14 17:53:55 +00:00
jkh
808a36ef65 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
wosch
71f5160702 Sort cross references. 1997-01-13 00:25:51 +00:00
jdp
75efa0b561 Use the RTLD_NOW symbol, now that it is defined in <dlfcn.h>. 1997-01-12 19:59:26 +00:00
jdp
222e4ec967 Correct typos and spelling errors. 1997-01-12 00:19:14 +00:00
jdp
04703241ef 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".

The "LD_*" environment variables which alter dynamic linker behavior are
now treated as unset if they are set to the empty string.  This agrees
with the standard SVR4 conventions for the dynamic linker.

Add a work-around for programs compiled with certain buggy versions of
crt0.o.  The buggy versions failed to set the "crt_ldso" member of the
interface structure.  This caused certain error messages from the
dynamic linker to begin with "(null)" instead of the pathname of the
dynamic linker.
1997-01-12 00:16:36 +00:00
jdp
cda6305fe1 Set LD_TRACE_LOADED_OBJECTS to "1" instead of to "". The dynamic linker
now treats empty "LD_*" environment variables as if they were unset, per
the standard SVR4 conventions.
1997-01-12 00:10:57 +00:00
jdp
2c25ac3d92 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
jmacd
34f7e2327f Changes to make ld demangle C++ symbol names before printing
error messages containing them.

Reviewed by:	Peter Wemm
1997-01-11 05:51:03 +00:00
jdp
511c6ad118 For "ldd -v", print shared object dependencies that were specified as
pathnames (rather than as "-lfoo") correctly.
Closes PR bin/2404.
1997-01-10 02:51:00 +00:00
swallace
741fb75767 Fix spelling error in manpage. 1996-12-26 21:51:09 +00:00
bde
8c92e07907 Made the synopsis in the man page conform to the style guide.
Made the usage message conform to the style guide.

Don't use the implementation variable `__progname'.
1996-11-30 16:12:46 +00:00
peter
ab076d3a60 make the Usage string match reality
Submitted by:  faried nawaz <fn@uidaho.edu>, PR#2075
1996-11-22 13:58:03 +00:00
jdp
0118326e5f Document that "ldconfig -m" rescans all directories previously
entered into the hints file, in addition to the directories named
on the command line.

2.2 Candidate.
1996-11-09 20:26:19 +00:00
jdp
81bba450d5 Fixed a bug in the handling of the directories in the search path
that is stored in the hints file.  If that search path contained
a non-existent directory (one, say, that had been removed), and
"ldconfig -m /a/perfectly/good/directory" was run, ldconfig returned
an error status without printing an error message.  This caused
some confusing bombs when installing ports, in particular.

I changed it so that non-existent directories from the stored search
path are silently ignored.  Only non-existent directories named
explicitly on the command line are treated as errors.  Also, a
diagnostic is printed if and only if an error status is returned.

In an unrelated fix, ldconfig now silently ignores any directories
named on the command line when the "-r" option is given.  Formerly,
these directories incorrectly made their way into the "search
directories" line of the listing.  It really should be an error to
specify directories together with "-r", but I don't have time to
fix the manual page in that way right now.

2.2 Candidate.
1996-11-08 02:12:40 +00:00
peter
8a114aa2ad oops, uninitialised variable.. -v mode depended on stack contents.
Submitted by: Masafumi NAKANE <max@wide.ad.jp>, PR#1920
1996-10-29 18:45:20 +00:00
jdp
2c2080f5a0 If errors occur during the loading of the shared libraries required by
the main program, report them directly from the dynamic linker and die
there, rather than returning an error message to crt0.o.  This enables
the printing of error messages even for old executables, whose version
of crt0.o is not able to print them.

This fix closes PR bin/1869.

The code in crt0.o for printing error messages from the dynamic linker
is no longer used, because of this change.  But it must remain, for
backward compatibility with older dynamic linkers.
1996-10-24 16:24:19 +00:00