GNU bug report logs - #7142
coreutils on Solaris 10(x86) 09/10

Previous Next

Package: coreutils;

Reported by: Clemens Brogi <c.brogi <at> mid.de>

Date: Fri, 1 Oct 2010 07:41:02 UTC

Severity: normal

Done: Jim Meyering <jim <at> meyering.net>

Bug is archived. No further changes may be made.

Full log


Message #23 received at 7142 <at> debbugs.gnu.org (full text, mbox):

From: Eric Blake <eblake <at> redhat.com>
To: Clemens Brogi <c.brogi <at> mid.de>
Cc: 7142 <at> debbugs.gnu.org, Jim Meyering <jim <at> meyering.net>
Subject: Re: bug#7142: coreutils on Solaris 10(x86) 09/10
Date: Mon, 04 Oct 2010 11:48:33 -0600
On 10/04/2010 02:45 AM, Clemens Brogi wrote:
>>> I was able to build 8.5 after defining LDFLAGS -lgen
>>
>> Which .o file needed -lgen before compilation worked? We'd like to fix
>> that before coreutils 8.6.
>>
>
> Hi
>
> as far as I can figure it out, the error only occoures if I use suncc as CC
>
> I have attached the the config and make output

Thanks - the culprit is (at least) chroot.c:

>   CCLD     chroot
> Undefiniertes			erstmals referenziert
>  Symbol  			    in Datei
> eaccess                             ../lib/libcoreutils.a(euidaccess.o)
> ld: Schwerer Fehler: Symbolreferenzierungsfehler. Keine Ausgabe in chroot geschrieben

And the fix is probably pretty easy (in our makefile, $(LIB_EACCESS) is 
already -lgen on Solaris):

diff --git i/src/Makefile.am w/src/Makefile.am
index 00c7ff7..aaff18d 100644
--- i/src/Makefile.am
+++ w/src/Makefile.am
@@ -307,8 +307,9 @@ rm_LDADD += $(remove_LDADD)
 # for eaccess, euidaccess
 copy_LDADD += $(LIB_EACCESS)
 remove_LDADD += $(LIB_EACCESS)
 test_LDADD += $(LIB_EACCESS)
+chroot_LDADD += $(LIB_EACCESS)

 # for selinux use
 chcon_LDADD += $(LIB_SELINUX)
 copy_LDADD += $(LIB_SELINUX)


The problem is, I don't know the root cause for why the fix is needed, 
so I'm hesitant to apply the patch without figuring why, so that we can 
document any other function that should be looked for when maintaining 
the list of $(LIB_EACCESS) clients.  That is, what is the actual 
dependency chain of symbols that ultimately ends up dragging in eaccess 
to resolve something present in chroot.o?

'cd gnulib; git grep eaccess lib' shows that findprog.c (irrelevant to 
coreutils) and euidaccess.c are the only clients that need eaccess.  In 
turn, euidaccess is only used by faccessat.c, and I don't see any other 
uses of faccessat() in gnulib or in chroot.c (I do, however, see 
euidaccess used in remove.c, copy.c, and test.c, explaining the existing 
three link setups in the above patch).

Meanwhile, running 'make -k' to see if any other programs are also 
impacted might be a useful test, as would playing with nm to figure out 
the dependency chain that is trying to pull in eaccess to resolve a 
symbol in chroot.o.

-- 
Eric Blake   eblake <at> redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




This bug report was last modified 13 years and 255 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.