[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