From owner-freebsd-bugs Wed May 24 18:20:02 1995 Return-Path: bugs-owner Received: (from majordom@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id SAA01706 for bugs-outgoing; Wed, 24 May 1995 18:20:02 -0700 Received: (from gnats@localhost) by freefall.cdrom.com (8.6.10/8.6.6) id SAA01699 ; Wed, 24 May 1995 18:20:01 -0700 Date: Wed, 24 May 1995 18:20:01 -0700 Message-Id: <199505250120.SAA01699@freefall.cdrom.com> From: Daniel Ortmann Reply-To: Daniel Ortmann To: freebsd-bugs Subject: gnu/442: when invoked from "make' cc not including name lists in some library objects In-Reply-To: Your message of Wed, 24 May 1995 20:17:19 -0500 <199505250117.UAA09582@localhost.nodak.edu> Sender: bugs-owner@FreeBSD.org Precedence: bulk >Number: 442 >Category: gnu >Synopsis: when invoked from "make' cc not including name lists in some library objects >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs (FreeBSD bugs mailing list) >State: open >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed May 24 18:20:00 1995 >Originator: Daniel Ortmann >Organization: North Dakota State University >Release: FreeBSD 2.0.950418-SNAP i386 >Environment: I am running "current", but this problem has been around for quite awhile. >Description: When "make"ing some library object files "cc" apparently goofs up and forgets to include names in the object files. This causes any routine that tries to use that library object to not link because a name is not found. This happens *only* inside of "make", and never when manually compiling that object. >How-To-Repeat: The following libraries/object files have this problem. To locate the problem object files on your system use the following bash code fragment. Following the fragment is a slightly edited summary of the results when run on my system. To repeat the problem, delete the mentioned object file under the appropriate library subdirectory and type "make" in that library subdirectory. You will see an error message when linking, but you can run "nm" explicitly on the resulting library to see if the names are missing. Now delete the offending object file and run cc directly in the obj subdirectory. Go up a level and "make" again. This time the names are in the object file and the library is made correctly. Executables that are linked against that library now find the referenced functions. for i in `find /usr/lib/lib* -type f` do echo $i >&2 nm $i >&- sleep 1 # maybe not needed, but timing you know... done 2>&1 | more /usr/lib/libc.a nm: bt_debug.o: no name list. (Note that this comes from src/lib/libc/db/btree/bt_debug.c) /usr/lib/libc_pic.a nm: bt_debug.so: no name list. /usr/lib/libcurses.a nm: ctrace.o: no name list. /usr/lib/libf2c.a nm: Version.o: no name list. /usr/lib/libforms.a nm: debug.o: no name list. /usr/lib/libg++.a nm: math.o: no name list. /usr/lib/librpcsvc.a nm: yppasswd_xdr.o: no name list. nm: spray_xdr.o: no name list. nm: sm_inter_xdr.o: no name list. nm: rwall_xdr.o: no name list. nm: rstat_xdr.o: no name list. nm: rquota_xdr.o: no name list. nm: rnusers_xdr.o: no name list. nm: rex_xdr.o: no name list. nm: nlm_prot_xdr.o: no name list. nm: nfs_prot_xdr.o: no name list. nm: mount_xdr.o: no name list. nm: klm_prot_xdr.o: no name list. >Fix: Re-compile and re-link the offending object file manually as mentioned above. >Audit-Trail: >Unformatted: