Commit Graph

242 Commits

Author SHA1 Message Date
pk 4f32152ede Export the common shared library search functions in its own header file. 1998-12-15 23:16:14 +00:00
pk b53366509b Deal with compiler warnings: format strings, prototypes, variable initialization. 1998-12-15 21:35:17 +00:00
pk c03c29c0e4 Prototypes. 1998-12-15 21:33:00 +00:00
pk f6f34d9c9f Pull in <a.out.h>. 1998-12-15 21:28:28 +00:00
pk 631ebffde3 Layout & compiler warnings. 1998-12-15 21:23:57 +00:00
pk ad3e459220 NetBSD -> __NetBSD__ 1998-12-15 21:22:52 +00:00
mycroft dedf21f286 Put back code to use pc-relative branches in the PLT, and avoid doing cache
flushes.
1998-12-03 15:56:51 +00:00
mycroft 26fce3548b Use the `first' argument to md_fix_jmpslot(). 1998-12-03 15:46:28 +00:00
matt ce394ac326 Add hook to convert some DISP32 relocs to BASREL through a GOT entry.
[XXX not perfect since gotslot are allocated on a per-symbol basis but
not a per-symbol & addend tuple.  This makes impossible to have separate
GOT entries to ___sF (stdin), ___sF+88 (stdout), and ___sF+176 (stderr)]
1998-10-31 09:04:29 +00:00
matt 931b784473 Remove reference to unused include file. 1998-10-31 08:59:58 +00:00
matt 8f7b610683 More fixes and optimizations for VAX shared library support. Including
one that makes vfork work.
1998-10-23 00:51:36 +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
matt f94bc8f4df Add AUX_LABEL (need for VAX JSB/JMP "jmp" slots). 1998-10-19 00:30:57 +00:00
itohy 9d79a50f6a Correct return value of md_midcompat(). 1998-10-17 17:08:21 +00:00
matt bb27fa210f Get shared libraries a lot closer to working. 1998-10-12 01:33:35 +00:00
matthias 78f9c9bd25 remove some vm_offset_t fallout. 1998-10-03 20:04:01 +00:00
pk 4d98b5ce9c Prevent spurious matches matches against unwanted major versions.
Patch based on PR#6139.
1998-09-15 12:38:55 +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
matt 60f624ddb7 Fix some obvious bugs. 1998-08-26 15:32:02 +00:00
matt 4da3f7cfd8 Add external symbol for __PROCEDURE_LINKAGE_TABLE_. Modify arguments
to md_make_gotreloc for VAX'es sake.
1998-08-26 14:37:40 +00:00
matt fb6da63fa6 More changes for shareable libraries and PIC code 1998-08-21 01:03:48 +00:00
matt 0111660e53 Get md.c to compile again. Get mdprologue.S to assemble. [Now at least
ld and rtld compile and link.]
1998-08-20 15:12:02 +00:00
matt 74018d8df6 Untested(!!) beginning of VAX a.out shared library support. This is a work
in progress.
1998-08-18 18:46:16 +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
mycroft 9ae60c44af More cruft. 1998-08-05 04:25:03 +00:00
mycroft 7625579cb3 GC some cruft. 1998-08-05 04:21:51 +00:00
mycroft 5d231ae38e Don't reset the reloc_index when we patch a jmpslot. We don't need to, and
this kluges around some cache issues.
1998-07-27 07:48:21 +00:00
mycroft cfaad53a4e Remove bogus change to use -O0. 1998-07-25 12:37:27 +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
tv b05a04267a In case NOPICINSTALL is set, get -lc_pic from src/lib/libc/(objdirname). 1998-05-21 00:31:05 +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
thorpej dd26162d11 Need <dlfcn.h> for Dl_info. 1998-05-14 01:55:28 +00:00
pk d123bc84d4 Implement `dladdr()': find nearest symbol given an address. 1998-05-12 21:22:28 +00:00
pk 79bd77e1cc Add `dladdr()' rtld entry point. 1998-05-12 21:21:21 +00:00
fvdl 98712f00f0 If a good matching shared library is found, don't look in the next
directories. This is compatible with the SunOS behaviour. Also,
it fixes a problem where it was not possible for some 3rd party
package to have a library with the same name as a library already
in the system, and a lower version number. The highest version
would always be picked. This particular problem shows up with Mozilla,
which has a libutil.so.1.0
1998-04-04 01:00:29 +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 f58457ccca Expand on shared object's `.init' functions a bit, and mention
`/usr/lib/c++rt.o'.
1997-11-13 22:25:23 +00:00
lukem da49bfcda7 use CPPFLAGS instead of CFLAGS 1997-10-25 10:10:19 +00:00
mark 919c9148f3 Add support for PIC code.
Add support for ld.so
1997-10-17 21:25:42 +00:00
christos 776130f509 Handle relocation of misaligned symbols. Handle all three cases by the same
macro for clarity.
1997-10-14 17:17:52 +00:00
christos df79fb912d Add the necessary -I flag to pick up the libc/include/extern.h 1997-07-14 02:56:54 +00:00
matthias a57d8745e7 * Truncate the cinv table. It was twice as long as necessary as a result
of an earlier version of th code.
* Really align the cinv table modulo 0x200. Thank's to Ian for telling me
  where I goofed up.
1997-07-11 23:39:56 +00:00
matthias df05f3a8b1 * Flush the icache from user mode. The original code and the idea came from
Ian Dall. I just did some slight optimizations.
1997-07-09 19:32:51 +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
mrg 586ed80911 install all man pages. 1997-06-23 13:25:41 +00:00
pk 4dd59ab4df Fix typos (PR#3761). 1997-06-20 20:38:08 +00:00
mikel 0bf17c4d39 fix typo; from Saitoh Masanobu in PR misc/3696.
also comma-separate and reorder xrefs.
1997-06-03 04:24:25 +00:00
cjs 7a66732d34 Back out BUILDDIR and NOINSTALL changes. 1997-05-31 21:21:13 +00:00
cjs 097e643f79 Remove an ifdef. Add comment about -nostdlib vs. ELF ld. 1997-05-30 14:06:34 +00:00
veego d0b955050b Use the extra LDFLAGS if OBJDIR is defined. 1997-05-30 11:39:01 +00:00
cjs c21a83a6fb PR 3670 from SAITOH Masanobu <msaitoh@spa.is.uec.ac.jp>
Fix typos.
1997-05-26 00:40:39 +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
christos d3d1227320 Ld directory reorganization:
- separate out the common files used by rtld ldd ld
	- move machine dependent files into arch
	- move ld in its own directory
	- factor out .PATH and CFLAGS common to all Makefiles
1997-04-16 16:49:28 +00:00
christos 0aad9d4378 Makefile cleanups 1997-03-24 22:02:40 +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 db6c2ee527 <link.h> has moved in with the run-time linker source. 1996-12-23 22:13:03 +00:00
pk 49dc4d2fe7 Deal with weak symbols when looking up in shared libraries. 1996-12-21 21:53:16 +00:00
ws 79b6fe9805 Add machine dependent code for NetBSD/powerpc 1996-11-03 18:02:42 +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
mark 48d30b1294 Fixed NetBSD tag. 1996-08-21 18:43:29 +00:00
phil cc13fe98cb Fix for dynamically linked functions returning structs. PR#2586/Pfaller 1996-07-31 06:22:41 +00:00
thorpej 648aed921f RCS id police. 1996-07-03 03:28:09 +00:00
pk 721a11bff8 Use DESTDIR to point at libraries like bsd.prog.mk does (PR#2524). 1996-06-08 22:22:26 +00:00
mark 060e1bc8f1 Initial commit of arm32 machine dependant code for ld.
Currently only supports static linking.
1996-05-17 21:51:07 +00:00
pk 05105a9150 Define RELOC_INIT_SEGMENT_RELOC for the ns32k (Matthias Pfaller; PR#2103). 1996-02-22 00:19:57 +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 d98240030c Define LD_HINTS_VERSION_2:
- no longer hash on minor version number in hints file.
	- add list of ldconfig(8) search directories.
1996-01-09 00:00:11 +00:00
thorpej 2e1dc487c5 Add -fno-function-cse to PICFLAGS. Without it, Very Bad Things happen
when ld.so is compiled with gcc 2.7.2 on the m68k.  From
Niklas Hallqvist <niklas@appli.se> in PR #1557.  (Thanks, Nik, for reminding
me about this PR...)
1996-01-02 08:54:28 +00:00
pk 4162cf6459 Simplify update of r_addend field in relocation record if `-r' is on.
The old quirky code did strange things.
1995-12-28 18:04:59 +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 35c8aad7b3 Flush after diddling text, so we get predictable results on machines
with separate I & D caches.
1995-11-28 19:29:45 +00:00
ragge 6ac54c7a78 Vax support for ld, so we (at least) can link static binaries. 1995-10-19 13:10:17 +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 b19a7d87e2 Pass on return value. 1995-09-23 22:48:18 +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 fa6e06725c Define `dlexit()' in crt<=>rtld interface (active in v4). 1995-09-23 22:26:15 +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 f6797ed4f1 Install the manual page. 1995-08-25 10:08:45 +00:00
pk 72acb4fe30 Handle object code with the "large" model PIC (eg. gcc's `-fPIC' option). 1995-08-04 21:32:15 +00:00
pk f42537952b man page for the run-time linker 1995-06-30 12:23:10 +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 878392000d Put dlopen() et.al. declarations in separate header file for compatibility. 1995-06-05 00:08:07 +00:00