diff options
Diffstat (limited to 'packages/uClibc/0.9.33.2/998-dlopen-static.patch')
-rw-r--r-- | packages/uClibc/0.9.33.2/998-dlopen-static.patch | 56 |
1 files changed, 0 insertions, 56 deletions
diff --git a/packages/uClibc/0.9.33.2/998-dlopen-static.patch b/packages/uClibc/0.9.33.2/998-dlopen-static.patch deleted file mode 100644 index 9d2fa55..0000000 --- a/packages/uClibc/0.9.33.2/998-dlopen-static.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 231e4a9b4b972662a6832f714a05525a3754892d Mon Sep 17 00:00:00 2001 -From: Filippo Arcidiacono <filippo.arcidiacono@st.com> -Date: Thu, 9 May 2013 09:04:20 +0200 -Subject: libdl: fix dlopen implementation from statically linked application - -Calling dlopen from statically linked application is actually broken, -because _dl_find_hash enters into an infinite loop when trying to -resolve symbols. In this case it doesn't need to extend the global -scope, it is readyto be used as it is, because _dl_loaded_modules already points -to the dlopened library. - -The patch also fixesi a typo in __LDSO_LD_LIBRARY_PATH__ macro, that was -preventing to get the actual value of the LD_LIBRARY_PATH. - -Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com> -Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com> ---- - ldso/libdl/libdl.c | 11 +++++++++-- - 1 file changed, 9 insertions(+), 2 deletions(-) - -diff --git a/ldso/libdl/libdl.c b/ldso/libdl/libdl.c -index 4630a59..3a78696 100644 ---- a/ldso/libdl/libdl.c -+++ b/ldso/libdl/libdl.c -@@ -374,7 +374,7 @@ static void *do_dlopen(const char *libname, int flag, ElfW(Addr) from) - if (getenv("LD_BIND_NOW")) - now_flag = RTLD_NOW; - --#if !defined SHARED && defined __LDSO_LIBRARY_PATH__ -+#if !defined SHARED && defined __LDSO_LD_LIBRARY_PATH__ - /* When statically linked, the _dl_library_path is not yet initialized */ - _dl_library_path = getenv("LD_LIBRARY_PATH"); - #endif -@@ -541,11 +541,18 @@ static void *do_dlopen(const char *libname, int flag, ElfW(Addr) from) - * to the GOT tables. We need to do this in reverse order so that COPY - * directives work correctly */ - -- /* Get the tail of the list */ -+#ifdef SHARED -+ /* -+ * Get the tail of the list. -+ * In the static case doesn't need to extend the global scope, it is -+ * ready to be used as it is, because _dl_loaded_modules already points -+ * to the dlopened library. -+ */ - for (ls = &_dl_loaded_modules->symbol_scope; ls && ls->next; ls = ls->next); - - /* Extend the global scope by adding the local scope of the dlopened DSO. */ - ls->next = &dyn_chain->dyn->symbol_scope; -+#endif - #ifdef __mips__ - /* - * Relocation of the GOT entries for MIPS have to be done --- -cgit v0.12 - |