[uClibc-cvs] uClibc/ldso/ldso ldso.c,1.65,1.66
Erik Andersen
andersen at codepoet.org
Tue Mar 4 10:13:05 UTC 2003
Update of /var/cvs/uClibc/ldso/ldso
In directory winder:/tmp/cvs-serv22199
Modified Files:
ldso.c
Log Message:
Teach ldd to be a bit more helpful by telling you specifically
what the problem library is that is linked vs glibc.
-Erik
Index: ldso.c
===================================================================
RCS file: /var/cvs/uClibc/ldso/ldso/ldso.c,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -d -r1.65 -r1.66
--- ldso.c 1 Mar 2003 11:02:44 -0000 1.65
+++ ldso.c 4 Mar 2003 10:13:01 -0000 1.66
@@ -1046,16 +1046,35 @@
lpntstr = tcurr->loadaddr + tcurr->dynamic_info[DT_STRTAB] +
dpnt->d_un.d_val;
if (_dl_strcmp(lpntstr, "libc.so.6") == 0) {
- _dl_dprintf(2, "%s: linked against GNU libc!\n", _dl_progname);
+ char *name, *msg;
+ name = tcurr->libname;
+ while(*name == '/')
+ name++;
+ if (_dl_trace_loaded_objects) {
+ msg = "WARNING";
+ } else {
+ msg = "ERROR";
+ }
+ _dl_dprintf(2, "\t%s: %s is linked with GNU libc!\n", msg, --name);
+ /* If all we are doing is ldd, then we don't need to freak out... */
+ if (_dl_trace_loaded_objects) {
+ continue;
+ }
+ /* Time to freak out. Make sure glibc linked libraries are not loaded */
_dl_exit(150);
}
- if (tpnt && _dl_strcmp(lpntstr, _dl_get_last_path_component(tpnt->libname)) == 0) {
+ if (tpnt && _dl_strcmp(lpntstr, _dl_get_last_path_component(tpnt->libname)) == 0)
+ {
struct elf_resolve *ttmp;
#ifdef __LDSO_LDD_SUPPORT__
if (_dl_trace_loaded_objects && tpnt->usage_count==1) {
+ char *name;
+ name = tpnt->libname;
+ while(*name == '/')
+ name++;
_dl_dprintf(1, "\t%s => %s (0x%x)\n",
- lpntstr, tpnt->libname, (unsigned) tpnt->loadaddr);
+ lpntstr, --name, (unsigned) tpnt->loadaddr);
}
#endif
ttmp = _dl_loaded_modules;
@@ -1091,9 +1110,14 @@
_dl_dprintf(_dl_debug_file, "Loading:\t(%x) %s\n", tpnt1->loadaddr, tpnt1->libname);
#endif
#ifdef __LDSO_LDD_SUPPORT__
- if (_dl_trace_loaded_objects && tpnt1->usage_count==1)
- _dl_dprintf(1, "\t%s => %s (0x%x)\n", lpntstr, tpnt1->libname,
+ if (_dl_trace_loaded_objects && tpnt1->usage_count==1) {
+ char *name;
+ name = tpnt1->libname;
+ while(*name == '/')
+ name++;
+ _dl_dprintf(1, "\t%s => %s (0x%x)\n", lpntstr, --name,
(unsigned) tpnt1->loadaddr);
+ }
#endif
}
}
More information about the uClibc-cvs
mailing list