diff options
Diffstat (limited to 'toolchain/uClibc/patches-0.9.31/130-ldso-fix-__dl_parse_dynamic_info-segfault.patch')
-rw-r--r-- | toolchain/uClibc/patches-0.9.31/130-ldso-fix-__dl_parse_dynamic_info-segfault.patch | 43 |
1 files changed, 0 insertions, 43 deletions
diff --git a/toolchain/uClibc/patches-0.9.31/130-ldso-fix-__dl_parse_dynamic_info-segfault.patch b/toolchain/uClibc/patches-0.9.31/130-ldso-fix-__dl_parse_dynamic_info-segfault.patch deleted file mode 100644 index f853d2ed80..0000000000 --- a/toolchain/uClibc/patches-0.9.31/130-ldso-fix-__dl_parse_dynamic_info-segfault.patch +++ /dev/null @@ -1,43 +0,0 @@ -[PATCH] ld.so: ldd crashes when __LDSO_SEARCH_INTERP_PATH__ is not #defined -Since b65c7b2c79debcb9017e31913e01eeaa280106fb, the implicit search path -can be disabled by not #defining __LDSO_SEARCH_INTERP_PATH__. This -causes _dl_ldsopath to never be set, so it remains NULL. _dl_ldsopath is -still used when __LDSO_LDD_SUPPORT__ is #defined, to strip the path off -of the beginning of the absolute path to the ld.so interpreter in use -for printing. The _dl_strlen will crash with a NULL argument. - -Rather than relying on _dl_ldsopath, this change causes ldd to compute -the interpreter's basename directly. - -glibc ld.so seems to print the full path to the interpreter without -any computed basename or =>. I personally prefer glibc's behavior, but -to preserve backwards compatibility with uClibc ld.so, the existing -format with the computed basename, =>, and full path is used here. This -enables simpler (and unchanged) text processing in a pipeline. - -Signed-off-by: Mark Mentovai <mark at moxienet.com> ---- -ldso/ldso/ldso.c | 12 +++++++++--- -1 files changed, 9 insertions(+), 3 deletions(-) - ---- a/ldso/ldso/ldso.c -+++ b/ldso/ldso/ldso.c -@@ -923,9 +923,15 @@ void _dl_get_ready_to_run(struct elf_res - #ifdef __LDSO_LDD_SUPPORT__ - /* End of the line for ldd.... */ - if (trace_loaded_objects) { -- _dl_dprintf(1, "\t%s => %s (%x)\n", -- rpnt->dyn->libname + _dl_strlen(_dl_ldsopath) + 1, -- rpnt->dyn->libname, DL_LOADADDR_BASE(rpnt->dyn->loadaddr)); -+ /* glibc ld.so/ldd would just do -+ * _dl_dprintf(1, "\t%s (%x)\n", rpnt->dyn->libname, -+ * DL_LOADADDR_BASE(rpnt->dyn->loadaddr)); -+ * but uClibc has always used the => format. */ -+ char *ptmp = _dl_strrchr(rpnt->dyn->libname, '/'); -+ if (ptmp != rpnt->dyn->libname) -+ ++ptmp; -+ _dl_dprintf(1, "\t%s => %s (%x)\n", ptmp, rpnt->dyn->libname, -+ DL_LOADADDR_BASE(rpnt->dyn->loadaddr)); - _dl_exit(0); - } - #endif |