Commit Graph

81 Commits

Author SHA1 Message Date
christos 97184638db make sure we remove all the global references refering to a shared object
when we remove it. Similar to the fix I applied a while ago to ld.elf_so
2001-06-21 21:19:25 +00:00
itohy 71a78d90a9 Common symbol is not a member of particular shlib have particular shlib,
so avoid adding the base address of a shlib to the common symbol.
Fix PR #10940, hopefully.
2001-03-19 03:54:22 +00:00
pk 872b464997 Deal with an empty hints file. 2000-12-17 21:41:15 +00:00
mycroft e496c5f86f Add another debugging message. 2000-11-28 06:01:46 +00:00
mycroft 9ee3432bb9 In dlopen(), use the main program's library search path, to match semantics of
other systems (and our ELF).
2000-10-29 13:11:38 +00:00
thorpej f8b76eb0fd Const poison dladdr(). 2000-02-11 00:07:36 +00:00
thorpej 3787c5c3d8 MAP_COPY -> MAP_PRIVATE 1999-06-17 21:09:47 +00:00
tv eb66267d81 Allow rpaths in setuid binaries, noticed by tron. This is already done
for ELF systems; make it uniform for a.out.
1999-04-23 19:29:30 +00:00
tv ff6c8ce557 Add ld.so hacks for arm32, and reenable ld.aout_so on arm32. As is well
known, XXX this needs a real fix.
1999-02-27 03:34:05 +00:00
fvdl 0810c73a0e Move the ldentry initialization up so that dl*() from init sections
works.
1999-01-28 23:58:49 +00:00
pk d2db1ca59a * Add header file containing definitions shared among all a.out
linker related utilities.
* Adjust makefile to new location in `src/libexec'
* Have rtld.c use the new shlib.h and ld.h headers.
1998-12-17 11:34:10 +00:00
pk b53366509b Deal with compiler warnings: format strings, prototypes, variable initialization. 1998-12-15 21:35:17 +00:00
matt 42ba16dee7 Make the BINDER debug messages a bit more useful (print index and jmpslot
address too).
1998-10-23 00:44:44 +00:00
matt 4f1a79cfbd Back out change to md_make_gotreloc which added 4 arguement of got_t *.
Add argument to md_fix_jmpslot indicating whether this the first (i.e
tranfer) jmpslot or not.  Add better support for VAX (the VAX can support
pure text code; let ld that advantage of it).  Checking in verified and
working versions of rtld VAX support routines.
1998-10-19 03:09:31 +00:00
pk e6b129450c Exit early from alloc_link_map() if we have no object; only relevant
when tracing. (PR#6140)
1998-09-12 15:03:19 +00:00
pk 0a97faa040 Assign my copyrights to TNF. 1998-09-05 13:08:38 +00:00
mycroft 93f8d753f8 Small changes to make debugging a little easier. 1998-08-13 07:34:05 +00:00
mycroft 41a070136b When DEBUG, log init and fini calls. 1998-08-06 00:03:28 +00:00
tv 77a275d732 Change ld.so default behavior to RTLD_LOCAL, and make RTLD_LOCAL into a
new flag bit.  Keep RTLD_GLOBAL as an actual flag bit so it won't be
re-used, or may be used for something later.  Mask the dlopen() mode bits
in ld.elf_so so a comparison against RTLD_NOW works.  (RTLD_{LOCAL,GLOBAL}
needs to be implemented for ld.elf_so.)
1998-07-14 22:18:36 +00:00
kleink 76bc8071eb Clear the error indicator after retrieval (xref. dlerror(3)). 1998-05-30 18:28:31 +00:00
pk 294ed94908 Optimize symbol/string table access slightly by precomputing their
locations at load time. These values don't change once the object is loaded.
1998-05-19 12:15:38 +00:00
pk d123bc84d4 Implement `dladdr()': find nearest symbol given an address. 1998-05-12 21:22:28 +00:00
mycroft ab8a4c5234 Allow a non-RTLD_GLOBAL object to refer to symbols in itself. 1998-03-26 23:33:12 +00:00
pk d47d43b956 Use file size from fstat(2) to map the hints file, instead of fiddling
with incremental mmap()'s.  Squashes a bug which caused only the first
page of the hints file to unmapped.
1998-03-18 23:21:46 +00:00
pk 5ea8bb6d05 Implement RTLD_GLOBAL dlopen(3) flag.
Rename internal flags to avoid <dlfcn.h> name space collisions.
1998-03-15 23:10:21 +00:00
pk b5f4c3ad5e Check for short hints file (noticed by Chuck Silvers). 1998-03-15 21:24:27 +00:00
mycroft 28ad88290d Remove spurious extra newline. 1998-03-03 00:36:24 +00:00
mycroft 4462053ab3 Fill in missing (default) mmap(2) flags. 1998-02-20 09:27:18 +00:00
pk 9084f293a7 Print a warning message if we detect that a "copy symbol" has changed
size in a shared library.  Also, always use our expected size to copy
the item in, on the assumption that doing so generally minimizes the
damage (maybe it's better to just bail out?).
1998-02-17 23:07:33 +00:00
cgd 10cc9f3b70 RCS Id police 1998-01-05 22:00:34 +00:00
pk 72023de51f Do not free dlopen'ed map structures twice.
Plug memory leak when opening the same object mor than once.
1997-06-30 22:10:06 +00:00
pk 7a27a9dd43 Fix typo in free_link_map(); noticed by Mike Grupenhoff. 1997-06-30 20:49:40 +00:00
pk c682966345 Patch from Chris Demetriou to unmap an object on last dlclose(), which
had not be implemented. It would cause an "adress space leak" and, if
the same object would opened multiple time, unwanted relocations.
Re: Comment from Chris:

"The a.out ld.so has some problems with dlclose.  It doesn't properly
unmap objects which are dlclosed.  That's a known problem (though a
serious one for programs which dlopen then dlclose lots of objects,
because it causes address space exhaustion), but it has a
previously-unknown side-effect.

If a single object is dlopened, then dlclosed, then dlopened _again_,
the relocations will be processed again.  That causes obvious
problems."
1997-06-26 20:52:06 +00:00
pk ff90cf758b Keep track of `dlsym()' symbol lookup scope differently. There's (currently)
only one special case: a NULL argument to dlopen(); return a special
token for that case.
1997-05-03 08:00:02 +00:00
scottr 372fe2ff92 Catch up with const changes to dlopen() and dlsym() prototypes in
<dlfcn.h>.  Tested on i386 and hp300 for crt0.o and ld.so, verified
other references by inspection.
1997-01-03 22:37:58 +00:00
pk 49dc4d2fe7 Deal with weak symbols when looking up in shared libraries. 1996-12-21 21:53:16 +00:00
pk c51687391d Actually set the RTLD_DL flag in dlopen'ed shared objects, per PR#2791. 1996-10-06 19:03:32 +00:00
thorpej 7d468e4a0c Iff __m68k__, use a `slight hack' to determine the magic of the executable
we're doing a dynamic link for, and change the page size used for offset
and size calculations if necessary.  Allows the same ld.so to be used with
mixed m68k4k and m68k8k executables and libraries.

Thanks a million to Gordon Ross for the help in making this work!
1996-09-10 22:17:51 +00:00
pk 55d51fbb95 Relax checking of minor version number in `findhint()'. Also use the
directories from the hints (v.2) file for directory traversing.
This should take care of PR#1146.
1996-01-14 00:35:17 +00:00
pk ccc1c895ef Deal with v.2 hint files (hint srch dirs not yet used). 1996-01-09 00:02:28 +00:00
pk 2bb60e32ec Make dlopen() search for libraries if given a name of the form
`lib<name>.so[.xx[.yy]]' (per Erik M. Theisen; PR#1763; patch from PR
used in simplified form).
1995-12-28 17:57:32 +00:00
pk d04fcadcc2 Fix typo. 1995-10-09 09:24:59 +00:00
pk 9d43c41208 New style RCS IDs. 1995-10-09 00:09:39 +00:00
pk b74b1d6456 Allow customized trace output, so ldd(1) can be more conveniently used
as a filter.

Rearrange cascading stuff: remove two-level limit.
1995-10-08 23:43:28 +00:00
pk d4fe561742 Interface version 4:
implement dlexit() (per Doug Rabson)
	get actual rtld path from crt0
	pass ld_entry back to crt0 in a better place
1995-09-23 22:46:24 +00:00
pk 1a9159c7ba Check for zero sized BSS to avoid a big no-op syscall (per Mike Hibler). 1995-08-31 22:07:25 +00:00
pk 45359beaf4 Initialise after malloc (fixes PR#1149).
Also, correct comparison when looking in `prefered' paths.
1995-06-20 23:07:03 +00:00
pk d680ed6b95 #include <dlfcn.h> 1995-06-05 00:08:38 +00:00
pk fdd7092874 Cache two more environment variable values. 1995-06-04 23:21:35 +00:00
pk ad760ce3d6 Implement compiled-in library search paths: any `-L' argument encountered
while `dynamic link-mode' is on, is recorded in the executable. The
run-time linker will search these paths after $LD_LIBRARY_PATH but
before the default set and those currently in the hints file.
The feature is disabled whenever for set[ug]id programs.
1995-06-04 21:56:22 +00:00