Commit Graph

859 Commits

Author SHA1 Message Date
matt
f11367c485 Handle CPUFLAGS being empty 2013-01-23 02:31:54 +00:00
matt
69c1ba57d9 Make sure CFLAGS is not empty. 2013-01-23 02:18:50 +00:00
matt
552187152c If you are using aapcs, you must be using INITFINI 2013-01-22 22:49:09 +00:00
dsl
c8b3cc05d4 Fix the other lwp_park() to pass 0 for the 'unpark' lwp. 2012-12-16 23:00:46 +00:00
dsl
1ba527af78 You need to pass 0 (not -1) to lwp_park() if you don't also
want to do an unpark.
Clearly this code path was never tested!
Needs pullup to netbsd-6
2012-12-16 11:15:21 +00:00
apb
6e8c6cbb85 Add support for R_386_TLS_TPOFF32. This patch was created by
Nick Hudson for PR 47061.
2012-11-07 07:24:46 +00:00
dholland
9d2c006837 Improve the diagnostic messages for invalid/non-ELF files. Proposed a
while back; I forget the context. Has been sitting in one of my trees
awaiting a test run since, apparently, August 2011.
2012-10-13 21:13:07 +00:00
riastradh
6f24a346a4 On failure in _rtld_dlcheck, call _rtld_error, not xwarnx.
Callers need not call _rtld_error themselves now.

Fixes PR lib/41760.  Should add the test case from the PR too.
2012-10-01 03:03:46 +00:00
joerg
067600c8cf Revert last, it breaks the tricks xsrc uses. 2012-08-23 21:21:14 +00:00
joerg
8e96262375 Remove SHLIBINSTALLDIR and SHLINKINSTALLLIBDIR. Add rpath entries, if
SHLIBDIR differs from /usr/lib.
2012-08-23 15:45:02 +00:00
matt
e3dfed33b6 Add .init_array/.fini_array support (conditionalized on HAVE_INITFINI_ARRAY). 2012-08-15 03:46:06 +00:00
matt
4389fd1152 Add a comment for EABI. Use "pop" instructions to save one instruction. 2012-08-13 02:53:25 +00:00
matt
e43469a595 Don't abuse DBG, use COPTS instead. 2012-08-04 15:17:16 +00:00
martin
972dd84db2 Try to make dbg() printfs realy ELFSIZE independent 2012-07-25 22:51:04 +00:00
martin
0180ae1c0a Add special handling needed for OLO10 relocations.
First part of fixing PR port-sparc64/46724.
2012-07-22 09:21:03 +00:00
martin
e97494f3ca Remove a debug assert that does not hold for PIE (e.g. phdr = 0x40, but
obj has not been mapped at 0, so obj->phdr is 0x100040).
OK: skrll
2012-07-22 09:16:35 +00:00
joerg
ba562931eb This version of __diagssert13 is dead. 2012-03-16 11:44:54 +00:00
christos
749108f9b9 Add __diagassert13() so that if libc is compiled with _DIAGNOSTIC, it does
not end up bringing in all of stdio.
XXX: This is temporary.
2012-03-15 00:16:07 +00:00
joerg
8ae54e9304 Mark _rtld_debug_state as not to be inlined. Add an explicit instruction
barrier to prevent removal of calls to it.
2012-03-13 21:00:31 +00:00
joerg
52a4c27e3e Add _dlauxinfo helper function to provide access to the ELF auxilary
vector. This can normally be found via __ps_strings, but libc is
initialised too early when linked dynamically and doesn't have access to
it yet, so provide an alternative mechanism via ld.elf_so.
Bump libc minor.
2012-02-16 23:00:38 +00:00
skrll
1b54bd1886 Implement lazy binding on hppa. rump_server needs it!?!?!
Mostly from OpenBSD.
2012-01-06 10:38:56 +00:00
joerg
e86a1635be Align in the stack before calling _rtld in the way the x86_64 ABI
specifies. This is necessary to ensure that init functions are always
called with the correct alignment, e.g. in case they use SSE
instructions.
2011-12-11 22:07:26 +00:00
joerg
934a3ac455 Mark xassert as __dead 2011-12-11 11:05:11 +00:00
skrll
df83e35987 Remove unused file. 2011-12-05 07:36:32 +00:00
skrll
248fe9e5bd Use the tlsoffset from the correct object. 2011-12-04 16:53:08 +00:00
skrll
8737e6c85f Restore backwards compatibility by removing unnecessary addition of
dlvsym to Obj_Entry.

Add some comments.
2011-12-02 09:06:49 +00:00
joerg
5b3faf1c05 Unbreak RTLD_NEXT and co on platforms that don't inline or tail call
do_dlsym.
2011-11-25 21:27:15 +00:00
joerg
7878f85385 Replace if() NADA else if() NADA else continue logic with one explicit
block. Split out the MIPS handling to make it explicit and readable.
2011-11-25 14:39:02 +00:00
joerg
6133e96c53 Add TLS support for m68k. 2011-11-22 15:25:28 +00:00
joerg
10dc456d4b Hook up TLS support on ARM. Tested by martin@, kernel support from matt@ 2011-11-18 16:10:02 +00:00
joerg
cc2f98ece2 FreeBSD bug report 161344: TLS area for the main thread is set up to
early, if e.g. pointers to functions are used as initializers.
2011-11-17 16:20:11 +00:00
chs
d7bbed6455 avoid linker warnings with the new binutils by not forcing ld.elf_so
to be soft-float.  the floating-point usage in ld.elf_so is only
because of stdarg functions like printf(), and gcc 4.5 is good
about not actually executing the FP instructions in such functions
unless FP values are passed to them, which ld.elf_so doesn't do.
2011-10-26 15:56:58 +00:00
christos
1f1b5ad097 Don't block SIGTRAP so that on architectures where the debugger needs to
be able to receive sigtrap for breakpoints to work, it can. For example
we are setting breakpoints inside dlopen(), after we've blocked the signal,
so the process keep trapping and looping over the trap instruction without
being able to send the signal. Another way would be to move the
_rtld_debug_state() calls outside the critical section...
2011-10-23 21:06:07 +00:00
mrg
4a9d1308c3 obsolete libgcc_pic and friends. all libgcc's are supposed to be pic
for platforms with shlibs already (and are.)

this obsoletes our hacks for the libgcc specs to use libgcc_pic, and
fixes a couple of other issues reported to me directly.
2011-10-07 09:15:21 +00:00
mrg
1862dafe3f match EXIT() with LEAF_ENTRY() so that sizes are actually constants.
fixes binutils 2.21 build issues reported by he and chuq.
2011-09-30 03:05:43 +00:00
mrg
b7e0bd3662 match END() with a relevant ENTRY*(). gas 2.21 complains about the
non-constant-ness of the symbol otherwise.
2011-09-26 01:52:22 +00:00
chs
b398f9d2e5 gcc 4.5 generates an extra plabel in ld.elf_so,
so expand the array of preallocated ones.
2011-09-25 13:34:54 +00:00
christos
c5e4118a6b consistent debugging info for program headers 2011-08-13 22:25:20 +00:00
christos
9813f2c42a printing the pathname of the shared object is much more useful than the
object's address.
2011-08-13 22:24:57 +00:00
christos
89c8b6528a disable debugging that makes us core dump 2011-08-13 22:24:24 +00:00
uwe
d1a523b49d sh3 also needs libgcc_pic for millicode (cf. revision 1.107) 2011-06-27 14:27:56 +00:00
nonaka
c52f9a5df2 PR/45015: ld.elf_so: support ELF symbol versioning
Applied latest patch.
2011-06-25 05:45:10 +00:00
christos
94e4c3614b Add libgcc_pic for millicode. 2011-06-05 23:08:17 +00:00
joerg
9ad3c16b3a Use -Wl,-Bsymbolic directly for clang 2011-05-30 16:30:01 +00:00
christos
b9972d39ce Don't use division since we are only dealing with powers of 2. 2011-05-25 14:41:46 +00:00
joerg
6c5e962381 Disable use of various X86 extensions since _rtld_bind_start doesn't
save the necessary registers.
2011-05-20 22:22:44 +00:00
joerg
5a156c51e2 Explicitly disable linking against libgcc and friends. 2011-05-20 22:21:32 +00:00
joerg
c5f8d1393d Fix a Freudian slip found by rmind 2011-04-23 16:40:08 +00:00
matt
f126fa1c9a Add support for TLS relocations.
From Joerg Sonnenberger
2011-04-12 16:40:04 +00:00
matt
14d704c9e9 Add a workaround for older crt0.o that overwrite r2 (tcb pointer).
(save tcb pointer using _lwp_setprivate in ld.elf_so and retrieve the tcb
via _lwp_getprivate in libc and use it to restore the value in r2).
2011-04-07 02:19:28 +00:00
joerg
278d108904 Revert pthread_atfork related change not intended for commit yet. 2011-04-02 16:49:49 +00:00
joerg
241421a0db Unbreak HPPA 2011-04-02 12:30:41 +00:00
skrll
45f37e968c Enable TLS for alpha - a 2nd class^Wtier system in pookaBSD^WNetBSD
alpha_reloc.c diff from joerg on port-alpha.
2011-03-31 15:30:31 +00:00
nakayama
dbbd50a95f Add missing comma. 2011-03-31 12:47:01 +00:00
martin
9f905ee41c Add support for TLS relocations 2011-03-30 09:22:29 +00:00
martin
3a4af49105 Add support for 64 bit TLS relocations. 2011-03-30 08:37:52 +00:00
joerg
8fa6585514 Block signals when using the exclusive lock. 2011-03-29 20:56:35 +00:00
joerg
e49f915c10 Refine locking scheme around init/fini to not hold the exclusive lock.
Use a simple generation count instead and restart looking for work if it
changed (e.g. due to an dlopen call from an init function).
Leave the possible dlclose() race for now.
2011-03-28 00:37:40 +00:00
joerg
7435c9ba49 exit, not enter 2011-03-27 22:20:51 +00:00
joerg
23a805d314 Handle _rtld_exit as full entry point since other threads may still be
running at the time.
2011-03-27 21:58:50 +00:00
joerg
2feaef06e3 Add some debug messages for explicit rtld entry points 2011-03-27 13:15:34 +00:00
joerg
0bc9be2143 Locking around dlclose() 2011-03-27 13:14:42 +00:00
joerg
d5a77cf108 Fix merge error that broke HPPA 2011-03-26 21:40:37 +00:00
joerg
cb1cd7e860 Add basic locking to ld.elf_so. 2011-03-25 18:07:04 +00:00
skrll
83c1874f74 Another TLS reloc. Thanks to joerg for a hint. 2011-03-17 22:07:52 +00:00
matt
7e7a53defe Add support for the MIPS TLS reloc types in shared libraries. 2011-03-15 07:40:52 +00:00
skrll
be1a58855d More PLABELS are required due to TLS stuff. 2011-03-14 08:49:29 +00:00
skrll
d3aab036e1 Handle some TLS relocs. 2011-03-14 08:21:54 +00:00
skrll
92c298c3a1 First cut at mdtls.c for hppa. 2011-03-14 08:20:15 +00:00
joerg
e7a5551d99 Fill in TLS related fields in dl_iterate_phdr if TLS is supported 2011-03-13 21:08:45 +00:00
joerg
854e6cd69f Add TLS support for AMD64, i386 and SH3.
This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.
2011-03-12 22:54:36 +00:00
matt
130f2d3d4c Add TLS support for PowerPC.
If the port has __lwp_gettcb_fast or __lwp_settcb use them instead of
__lwp_getprivate_fast or lwp_setprivate.
2011-03-12 07:43:53 +00:00
joerg
7197db08bd Add some clarifications 2011-03-10 17:38:30 +00:00
joerg
9c18c3d543 Add source reference for _lwp_makecontext and
__HAVE___LWP_GETPRIVATE_FAST. Fix enumeration.
2011-03-10 17:22:17 +00:00
joerg
de4cf97515 Fix prototype for __tls_get_addr. Add a generic implementation of it
using __tls_get_addr. Update TLS notes.
2011-03-10 14:27:31 +00:00
skrll
ff1072d23a Whitespace. 2011-03-10 12:53:42 +00:00
joerg
aad599979d Add TLS support infrastructure. For dynamic binaries, ld.elf_so exports
_rtld_tls_allocate and _rtld_tls_free. libpthread uses this functions to
setup the thread private area of all new threads. ld.elf_so is
responsible for setting up the private area for the initial thread.
Similar functions are called from _libc_init for static binaries, using
dl_iterate_phdr to access the ELF Program Header.

Add test cases to exercise the different TLS storage models. Test cases
are compiled and installed on all platforms, but are skipped on
platforms not marked for TLS support.

This material is based upon work partially supported by
The NetBSD Foundation under a contract with Joerg Sonnenberger.

It is inspired by the TLS support in FreeBSD by Doug Rabson and the
clean ups of the DragonFly port of the original FreeBSD modifications.
2011-03-09 23:10:05 +00:00
matt
4fee4fe7b3 Don't rely on >32bit math. 2011-03-04 00:40:48 +00:00
pooka
33ee52c7dc make DEBUG compile without RTLD_DEBUG 2011-02-24 10:58:54 +00:00
matt
483a1c95a2 Fix problem with bss-plt objects which a reloc index, not offset.
(secure-plt uses an offset (index*sizeof(rela), bss-plt uses an index)
secure-plt will now take the offset and divide by 12 for an index.
2011-02-10 02:28:20 +00:00
skrll
3770380428 Unbreak gdb by ensuring _rtld_debug_state is in the dynamic symbol table.
mmm 1 line diffs

mmm not breaking backwards compatibility for anything known/unknown or
public/private.
2011-01-25 12:25:43 +00:00
matt
709c8a2f01 Move powerpc gotptr to the end to preserve binary compatibility. 2011-01-16 15:56:37 +00:00
matt
b094d98191 Warn about DT_TEXTRELs 2011-01-16 02:36:05 +00:00
matt
d31dbd7578 Add secure-plt support for powerpc to ld.elf_so. As part of this, we have to
stop calling into the GOT/_DYNAMIC since they are no longer executable.
2011-01-16 01:22:29 +00:00
skrll
f1d73a2c94 Add support for DF_1_BIND_NOW, DF_1_NODELETE and DF_1_NOOPEN marked
objects, and the RTLD_NODELETE and RTLD_NOLOAD flags to dlopen(3).

Mark libpthread as DF_1_NOOPEN and use it to test the functionality.

Somewhat taken from FreeBSD.

Fixes PR 42029.

OK from christos and joerg.
2010-12-24 12:41:42 +00:00
skrll
1f45aab781 Sprinkle some KNF. 2010-12-19 17:26:51 +00:00
skrll
ad7786ec8b Remove unnecessary #ifdef RTLD_DEBUG 2010-12-19 17:17:50 +00:00
wiz
617acddc41 Remove superfluous Pp. 2010-12-17 08:50:26 +00:00
skrll
1ee8ff33ba Remove implementation detail.
Bump date.
2010-12-17 07:04:52 +00:00
joerg
c4120e324e Replace use of errlist with a single concatenated version and an offset
array. This requires less storage and avoids one runtime relocation per
errno value.
2010-12-16 22:52:32 +00:00
joerg
67cc8c0871 Don't use normal environment handling functions from libc, but iterate
once over the array and clean out entries as needed.
2010-12-16 22:47:27 +00:00
skrll
126c589398 s/rdbg/dbg/ in a few places. 2010-12-16 19:59:39 +00:00
skrll
76d5f138f4 Remove incorrect comment. 2010-12-16 19:35:38 +00:00
wiz
fbc697a1ed Note that $ORIGIN kernel support (in kern/kern_exec.c) is currently disabled.
Info from skrll@.
Bump date.
2010-12-16 19:25:41 +00:00
joerg
67e01e0a99 Build ld.elf_so with -fvisibility=hidden. Exploit this for i386/x86_64
to simplify the assembler code.
2010-12-05 00:56:06 +00:00
joerg
91118529e4 ANSIfy 2010-12-03 23:07:49 +00:00
joerg
239c31f883 Add comment about the unusual stack alignment in .rtld_bind_start. 2010-12-03 22:48:25 +00:00
tron
1fbd900608 Don't use internal libc function __findenv(). 2010-11-14 22:09:16 +00:00
christos
acfd35dad9 PR/44010: YAMAMOTO Takashi: sbrk: grow 0xb3ba2000 failed, error = 12"
(due to setenv changes?)
Provide a mini unsetenv that does not allocate/free memory and does not
bother about locking.
2010-10-29 15:08:17 +00:00
skrll
8b916d603d Add cast so that usr.bin/ldd/elf32 builds. 2010-10-16 17:48:12 +00:00