With this small patch, ldd does shut up (somewhat) when faced with
dynamic libraries.

The reason is that, when you build a dynamic library through gcc standard
interface, collect2 will try to invoke ldd on dynamic libraries
(which ldd should handle, but doesn't right now), and will abort if ldd
returns 1.

So we warn, but let ldd return 0 in such a case.

Index: ldd.c
===================================================================
RCS file: /cvs/src/gnu/usr.bin/ld/ldd/ldd.c,v
retrieving revision 1.4
diff -u -r1.4 ldd.c
--- ldd.c	1998/03/26 19:46:55	1.4
+++ ldd.c	1999/05/18 15:28:16
@@ -105,8 +105,20 @@
 			argv++;
 			continue;
 		}
-		if (read(fd, &hdr, sizeof hdr) != sizeof hdr
-		    || (N_GETFLAG(hdr) & EX_DPMASK) != EX_DYNAMIC
+		if (read(fd, &hdr, sizeof hdr) != sizeof hdr) {
+			warnx("%s: not a dynamic executable", *argv);
+			(void)close(fd);
+			rval |= 1;
+			argv++;
+			continue;
+		}
+		if ((N_GETFLAG(hdr) & EX_DPMASK) == (EX_DYNAMIC | EX_PIC)) {
+			warnx("%s: no support for dynamic libraries", *argv);
+			(void)close(fd);
+			argv++;
+			continue;
+		}
+		if ((N_GETFLAG(hdr) & EX_DPMASK) != EX_DYNAMIC
 #if 1 /* Compatibility */
 		    || hdr.a_entry < N_PAGSIZ(hdr)
 #endif
