Commit Graph

108 Commits

Author SHA1 Message Date
thorpej 5c5817ee4a When allocating the entire address space of an object, map an anonymous
region first (using the data/bss protection) covering it, then overlay
the text and data regions at the appropriate offsets within the region,
and then unmap any gap between the text and data.

The previous method of maping the entire address space with the actual
file object itself is incorrect, as it may extend past the end of the
file if the section alignment is large enough.

This bug was the source of the libposix failure on the SPARC and another
similar failure (with libc!) on the Alpha (failure was accompanied by
a "uvn_io: size check fired" message on the console).
1999-08-06 22:33:49 +00:00
kleink 1cc052ce00 Rearrange the shared library search path precedences to LD_LIBRARY_PATH >
runpath > built-in default; this is the behaviour of the SVR4 shared loader,
and gives users the opportunity to override the runpath.  (Addresses a report
on current-users by John Kohl.)
1999-08-01 19:47:07 +00:00
thorpej 4d256c199f When dlopen()'ing a shared object without an absolute pathname, search
for it in the rpath of the main program as well as the path specified
in LD_LIBRARY_PATH.
1999-07-22 00:18:19 +00:00
thorpej 206408b533 Protect certain definitions from view by crt0, by wrapping them in
#ifdef _RTLD_SOURCE.

Should fix the "variable page size" build error of crt0 on the SPARC.
1999-07-05 17:55:34 +00:00
christos 00e5621847 We need to compile with -DVARPSZ, because the sparc has a variable page
size depending on arch. Make it an error to compile without it. This
caused -lposix linked programs to fail.
1999-06-22 16:28:22 +00:00
thorpej 3787c5c3d8 MAP_COPY -> MAP_PRIVATE 1999-06-17 21:09:47 +00:00
kleink 8788923e6a Turn bool, true and false into an enumeration and enumeration constants to
avoid integer promotion warnings.
1999-06-16 15:41:24 +00:00
kleink 571aef82d9 Don't include the ident .note assembly when linting. 1999-06-15 15:54:28 +00:00
castor c195474580 This should use MACHINE_ARCH and test on "mipseb" instead of MACHINE and
"newsmips"
1999-06-07 18:04:31 +00:00
kleink 4a61873f68 Update for m68k. 1999-05-31 14:52:11 +00:00
kleink 8b74e6d78e Implement LD_PRELOAD support. 1999-05-31 14:48:16 +00:00
tsubai c47f82d209 syncicache is needed... 1999-05-21 08:00:11 +00:00
thorpej adadf5ecc7 Don't even make depend if we're not going to build ld.elf_so. this is
especially important if the assembler syntax is different.
1999-05-07 22:04:27 +00:00
kleink 4b749d888f Always use ${MACHINE_ARCH} rather than ${MACHINE}, and reorder architectures
a bit.
1999-04-29 15:31:05 +00:00
kleink 75030fa2ee Add m68k code. 1999-04-29 15:06:41 +00:00
thorpej 44672d5287 Simplify _rtld_start() a little, and shave some cycles. Spefically, there's
no need to save the stack pointer.  Just push the space for the cleanup
and obj_main pointers before calling _rtld(), and pop it after loading those
pointers into the appropriate argument registers for the program entry point.
1999-04-19 00:05:00 +00:00
thorpej 80deb5d223 Tidy this up a little. 1999-04-18 23:12:59 +00:00
ws bf9c27b80b Add code to use the kernel provided page size.
Enable this on the powerpc only for now.
1999-04-18 19:40:06 +00:00
ws 5423093850 Modify syncicache on PowerPC from an inline to a real function.
Support different cache line sizes with the same object code in userland.
While here, move the function to implementation name space.
1999-04-17 21:16:45 +00:00
simonb 8400044681 Remove the ld.so link for ld.elf_so - the compat13 package takes care
of this.
1999-04-16 15:49:20 +00:00
simonb 14fe5254b3 Don't include <machine/regdef.h>. 1999-03-28 11:56:51 +00:00
thorpej e278587d62 Move the link.h files for the different shlib formats via repository copy,
and rename them to match the executable format.  Introduce a new link.h
file which automatically picks the correct header based on the target of
the toolchain.
1999-03-19 22:06:36 +00:00
kleink 34729a4b4f Remove /usr/local/lib from RTLD_DEFAULT_LIBRARY_PATH; c.f. PR bin/7146. 1999-03-19 18:25:57 +00:00
christos 3456da383e Fix i386 problem, when we are relocating ourselves... We cannot depend
on the address of GOT or _DYNAMIC.
1999-03-13 20:00:14 +00:00
kleink 3b03384405 Update an i386-ismed comment. 1999-03-08 10:44:25 +00:00
drochner 90218b7032 make the mipse[lb]->mips translation really work,
thanks Izumi Tsutsui
1999-03-05 11:57:54 +00:00
tsubai c2d83dc354 Make this compile. 1999-03-05 04:50:28 +00:00
christos ec2edc19fd Make this compile without -DRTLD_LOADER and fix printf format problems on
the alpha.
1999-03-03 21:18:00 +00:00
jonathan 1988441027 Not all ports use 'tmp'. 1999-03-03 12:20:00 +00:00
jonathan 3eeb52dee0 Makefile ${MACHINE_ARCH} changes for mips{eb,el}, as suggested by
Izumi Tsutsui <tsutsui@ceres.dti.ne.jp>
1999-03-03 12:00:18 +00:00
christos c346a6827a fix rdbg macro args. 1999-03-01 18:59:31 +00:00
christos 26475619ed KNF 1999-03-01 16:40:07 +00:00
christos bc97a25328 Reality check. 1999-03-01 16:33:21 +00:00
christos 77aa6b2a64 - Use c style comments.
- & -> and
- align 4 in both functions for consistency.
1999-03-01 14:40:32 +00:00
kim 62b98a9670 Make mkdep succeed (use matching quotes in comment). 1999-03-01 03:39:39 +00:00
scottr 2b90737599 Replace local xva_arg() inline function with macros similar to those in
the stdio vfprintf() function.  Fixes compilation errors on powerpc due
to differences in how va_list is implemented.
1999-02-27 21:52:23 +00:00
scottr b69760be08 Fix typo introduced in rev 1.11 1999-02-27 21:38:04 +00:00
pk e81b9ed433 * Make changing the PLT slot entry (lazy function binding) thread-safe.
* Insert `iflush' instructions for the patched words in PLT entries.
1999-02-27 17:12:13 +00:00
pk 4e7849055a Add comment on the necessity of having to look at implicit memory addends
even though the sparc architecture uses `Elf_Rela' structures exclusively.
1999-02-27 11:36:02 +00:00
pk 1c13c70bab Introduce pre-preocessor symbol RTLD_INHIBIT_COPY_RELOCS.
Currently, only mips does not include COPY_RELOCs code.
1999-02-27 10:44:26 +00:00
pk a32bf0c1c2 Just initialize the stack-based temporary `rtld self' object. 1999-02-27 10:35:16 +00:00
pk 5c519e8777 Target bitmask for RELOC_RELATIVE should be a full word.
Also for RELOC_RELATIVEs, add in the memory contents in addition to r_addend.
1999-02-27 10:24:52 +00:00
christos ddadb71e4e Relative relocations should use addend. 1999-02-26 22:50:03 +00:00
pk 22001aee9c Take care of `load address relative' relocations.
Ignore JMP_SLOTs in non-plt relocations.
1999-02-26 22:13:49 +00:00
pk f6a359f27f Completely construct the first PLT entry and correctly compute the
PC relative offset in the call insn.
1999-02-26 22:07:47 +00:00
pk 801d8e5b9d Implement rtld_bind() stub.
Fix startup code.
1999-02-26 22:01:31 +00:00
tv 7255b47042 Partial fix for Alpha breakage. s/tmp_value/tmp/ in two places, and don't
try to check _rtld_objself when doing R_TYPE(RELATIVE) relocs, as the
Alpha ld.elf_so contains them!

I'm not sure the logic for the RELATIVE fix is quite right; it happens to
Work on alpha, but do we actually need to make sure we aren't relocating
ld.elf_so there?

XXX: I am working on making use of RTLD_RELOCATE_SELF on alpha, which may
make this hack of a fix moot.
1999-02-25 21:49:04 +00:00
christos 84cb65780e Cleanup global variable access so rtld can be self relocating. Also KNF
reloc.c and move md sparc parts to arch/sparc/mdreloc.c
Now we don't need to load at address 0 on the i386 and the mips should be
trivial to fix.
1999-02-24 18:31:00 +00:00
christos 62926e7ee2 Work in progress (does not work yet). 1999-02-24 18:25:40 +00:00
pk 4b4b099e87 Fix glitch in previous. 1999-02-24 12:20:30 +00:00