summaryrefslogtreecommitdiff
path: root/ldso/libdl/libdl.c
AgeCommit message (Collapse)Author
2011-06-14libdl: search for ELF_RTYPE_CLASS_DLSYM in dlsym()Bernhard Reutner-Fischer
On FDPIC platforms, functions are passed by function descriptor, not by pointers. If you don't specify ELF_RTYPE_CLASS_DLSYM when calling _dl_find_hash() the return value from dlsym() will be a pointer not a function descriptor, crashing the program. The bug was introduced when TLS support was added in 534661b91c98492995274c364c8177c45efc63db Closes bug#3433 Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-05-10ldso: commentary typo fixBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-05-10libdl: fix local symbol's address handling in dladdrFilippo Arcidiacono
Fix dladdr to correctly handle local function's address so backtrace_symbols print only the function address for these function, instead of showing the name of nearest one. Indeed the dladdr walk through the hash table to find the nearest symbol, that doesn't contain local symbols. Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2011-02-14ldso: remove now unused variableBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-02-11Fix memory leak in dlopen()/dlclose().Philip Craig
The linked list of library dependencies created by dlopen() was not being freed by dlclose(). Signed-off-by: Philip Craig <philipjcraig@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2011-01-20Add protected symbols support for all architecturesSalvatore Cro
Protected symbols are global symbols for which interposition is not allowed. We manage them in generic _dl_lookup_hash function. To handle protected symbols we need to get a reference to the module that defines the symbol itself. So we pass a new parameter 'struct symbol_ref' to the __dl_lookup_hash that is defined as below: struct symbol_ref { const ElfW(Sym) *sym; struct elf_resolve *tpnt; }; The tpnt field is used as an ouput parameter and refers to the module which defines the protected symbol. Further it can be used as output parameter for TLS relocations and FDPIC case. The sym field is instead used as an input parameter to detect the visibility of the symbol we are looking-up. In this way we get rid of different signatures for _dl_lookup_hash, allowing to remove the _dl_find_hash wrapper. This new structure is also suitable for prelink integration. Signed-off-by: Salvatore Cro <salvatore.cro@st.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2010-11-24Revert "ldso: silence warning about unused tls var if !tls"Bernhard Reutner-Fischer
This reverts commit 23fa805150d573a913cad69d34c06f3b2ce54270. Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-11-24ldso: silence warning about unused tls var if !tlsBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-07-27silence warning about incompatible types with _dl_init_static_tlsBernhard Reutner-Fischer
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2010-04-22ldso: support RTLD_NODELETE and DF_1_NODELETETimo Teräs
Honor the nodelete flags so we don't delete shared library if it's sticky. This is useful for libpthread if it gets pulled in by a dlopen'ed library. Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
2009-12-17check if USE_TLS is defined before useHans-Christian Egtvedt
This patch will convert all the #ifdef USE_TLS and #if USE_TLS to #if defined(USE_TLS) && USE_TLS. By checking if the USE_TLS is defined before checking its value will result in correct behavior for architectures not defining this config symbol. Signed-off-by: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com> Acked-by: Carmelo AMOROSO <carmelo.amoroso@st.com>
2009-10-15ldso: clean up breakage in tls mergeMike Frysinger
The TLS merge 534661b91c9849 introduced multiple style problems as well as random breakage: - missing _dl_free - incomplete parametrization of _dl_lookup_hash - restore FDPIC handling in _dl_lookup_hash Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2009-10-06fix coding styleBernhard Reutner-Fischer
TODO: use likely/unlikely Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
2009-09-26ldso/: tls support for dynamic linkerAustin Foxley
Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
2009-01-10simple optimizations and style fixes in dynamic loadingDenis Vlasenko
text data bss dec hex filename - 16709 240 92 17041 4291 lib/ld-uClibc.so + 16634 236 92 16962 4242 lib/ld-uClibc.so - 4602 344 4 4950 1356 lib/libdl-0.9.30-svn.so + 4571 328 4 4903 1327 lib/libdl-0.9.30-svn.so - 4602 344 4 4950 1356 lib/libdl.so + 4571 328 4 4903 1327 lib/libdl.so
2008-10-29- fix use after free (Kevin Day)Bernhard Reutner-Fischer
dl_cleanup will call do_dlclose with the handle. Inside of do_dlclose, the handle will ultimately get free'd.
2008-09-29libdl: use stderr consistently.Carmelo Amoroso
Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2008-08-27- remove a couple of duplicate includesBernhard Reutner-Fischer
2008-05-23- fix compilation errorBernhard Reutner-Fischer
2008-05-20Introduce and use small[u]int type. Changes in size:Denis Vlasenko
- 79 0 28 107 6b libc/inet/rpc/create_xid.o + 76 0 25 101 65 libc/inet/rpc/create_xid.o - 126 0 4 130 82 libc/misc/assert/__assert.o + 123 0 1 124 7c libc/misc/assert/__assert.o - 648 4 24 676 2a4 libc/misc/internals/__uClibc_main.o + 645 4 21 670 29e libc/misc/internals/__uClibc_main.o - 230 0 4 234 ea libc/stdlib/abort.o + 216 0 1 217 d9 libc/stdlib/abort.o - 129 0 4 133 85 libc/termios/tcgetsid.o + 126 0 1 127 7f libc/termios/tcgetsid.o
2008-03-25Add missing cast in pointer assignmentCarmelo Amoroso
2008-02-12Use DL_RELOC_ADDR when dealing with DL_LOADADDR_TYPE types. Fixes gnu-hashBernd Schmidt
compilation on Blackfin.
2008-02-08Fix the recent dladdr changes so that they compile on FD-PIC targets.Bernd Schmidt
2008-01-18This patch solves a problem in dladdr caused by the wrong valueCarmelo Amoroso
of elf_resolve's loadaddr field for the main application. Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com> Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2008-01-09fix broken whitespace in many places; no functional changesMike Frysinger
2008-01-08change NO_UNDERSCORES to just UNDERSCORES so as to be less confusing when ↵Mike Frysinger
doing double negatives
2007-12-04Blackfin FD-PIC patch 6/6.Bernd Schmidt
These are mostly the changes necessary to deal with loading the libraries into memory. A couple new target macros are defined for this purpose, and the code in dl-elf.c is modified to deal with nommu systems.
2007-12-03Fix a few warnings introduced by my previous commits.Bernd Schmidt
2007-12-03Blackfin FD-PIC patch 3/6.Bernd Schmidt
Change _dl_find_hash to _dl_lookup_hash, as on the NPTL branch. _dl_find_hash is now a wrapper function around it; unlike on the NPTL branch, it retains the old interface so that not all callers need to be changed. _dl_lookup_hash can optionally give its caller a pointer to the module where the symbol was found. Introduce ELF_RTYPE_CLASS_DLSYM for lookups from libdl. Spelling fixes in the Blackfin port, since Alex Oliva's original version of these patches used _dl_find_hash_mod as the name of the function rather than _dl_lookup_hash.
2007-12-03Blackfin FD-PIC patch 2/6.Bernd Schmidt
Add the necessary changes in ld.so and libdl to deal with targets that prepend an underscore to symbol names.
2007-12-03Blackfin FD-PIC patch 1/6.Bernd Schmidt
Add a new function _dl_free. In _dl_malloc, ensure we always get back a full page from mmap. Reset _dl_malloc_function and _dl_free_function when libdl is initialized.
2007-03-31Bernd Schmidt writes:Joakim Tjernlund
Currently a static libdl.a doesn't run all the constructors or destructors of the libraries it loads. I can't see a good reason for that, and it does cause aborts in the destructors it does run for things like libgcc.so on the Blackfin. Fixed with the patch below - untested in mainline, but the equivalent has been in our Blackfin tree for a while now.
2007-03-13Carmelo Amoroso writes:Joakim Tjernlund
Hi All, the attached patch completes my previous patch on statically linked application calling dlopen enabling the support for LD_DEBUG. Further it fixes the missing initialization of the _dl_library_path variable. This patch has been fully tested with the uClibc-nptl branch (sh4).
2007-01-26Fix libdl bug reported by Cedric Hombourger inJoakim Tjernlund
http://uclibc.org/lists/uclibc/2007-January/017165.html
2006-09-19merge some more FDPIC related fixes from Bernd SchmidtMike Frysinger
2006-07-05patch from Bernd Schmidt to abstract away initializing of relocation addressesMike Frysinger
2006-07-05convert #if 0 code to _dl_if_debug_print()Mike Frysinger
2006-07-05patch from Bernd Schmidt to abstract away load address checksMike Frysinger
2006-07-05revert fdpic patch so we can merge it in bit by bitMike Frysinger
2006-06-30Bernd Schmidt writes: abstract away addresses so we can support FDPIC ELFsMike Frysinger
2006-03-24typo stderrrPeter S. Mazinger
2006-02-14after much deliberation, may i present Joseph S. Myers patch to add support ↵Mike Frysinger
for .init and .fini array processing for the gory details, see the mailing list: http://www.uclibc.org/lists/uclibc/2006-January/014079.html http://www.uclibc.org/lists/uclibc/2006-February/014285.html
2006-01-29use diff variable names so we dont shadow each otherMike Frysinger
2006-01-29Bernhard Fischer writes: remove unused variable nameMike Frysinger
2006-01-26Get rid of missing prototype warningsPeter S. Mazinger
2006-01-22Enable _GNU_SOURCE build wide, trying to get consistent interfaces, else IMA ↵Peter S. Mazinger
is a useless attempt
2005-12-27revert debug "fix" since it isnt correct and previous version worksMike Frysinger
2005-12-14fix signed/unsigned warnings and unused warningsMike Frysinger
2005-12-11Fix debugging."Steven J. Hill"
2005-11-21Do not create any files (dl-progname.h) in ldso anymorePeter S. Mazinger