Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 24 May 1995 18:20:01 -0700
From:      Daniel Ortmann <ortmann@localhost.nodak.edu>
To:        freebsd-bugs
Subject:   gnu/442: when invoked from "make' cc not including name lists in some library objects
Message-ID:  <199505250120.SAA01699@freefall.cdrom.com>
In-Reply-To: Your message of Wed, 24 May 1995 20:17:19 -0500 <199505250117.UAA09582@localhost.nodak.edu>

next in thread | previous in thread | raw e-mail | index | archive | help

>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:





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199505250120.SAA01699>