Edward Pilatowicz wrote:
> hey guys,
> 
> so whenever i do full nightly builds, i always use the -r option which
> runs check_rtime.  whenever i do this on kodiak (a sparc enterprise
> M5000 build machine) i get LOTS of errors from:
> 
>       ==== Check ELF runtime attributes ====
> 
> that all look like this:
> 
>       ./XXX: unused object=/lib/libm/libm_hwcap1.so.2   <remove lib or 
> -zignore?>
> 
> this seems to be a runtime linker issue and not a problem associated
> with the actual binaries built on disk.
> 
> i say this because if i run ldd on any binaries on kodiak, even binaries
> built by the gate machine, i see that libm_hwcap1.so.2 is being pulled
> in.  where as if i run ldd on the same binaries but i run it on the
> sparc gate machine over nfs, then i don't get libm_hwcap1.so.2 pulled
> in.
> 
> so it seems to me that these error messages are bogus and should either
> be filtered out by nightly.sh or check_rtime.pl.

Looks like the sparc version of libm.so.2 has a filtee associated with it:

oxpoly 406. elfdump -d  /lib/libm.so.2

Dynamic Section:  .dynamic
      index  tag                value
        [0]  NEEDED            0xd79               libc.so.1
        [1]  SUNW_AUXILIARY    0xda2               $ORIGIN/libm/$HWCAP
        [2]  SONAME            0x4                 libm.so.2

And the filtee kicks in on a machine that provides:

/lib/libm/libm_hwcap1.so.2:

Hardware/Software Capabilities Section:  .SUNW_cap
      index  tag               value
        [0]  CA_SUNW_HW_1     0x100  [ FMAF ]

The only symbols this filtee offers are:

/lib/libm/libm_hwcap1.so.2 -    SUNW_1.1: fma;
/lib/libm/libm_hwcap1.so.2 -    SUNW_1.1: fmaf;
/lib/libm/libm_hwcap1.so.2 -    SUNW_1.1: __fma;
/lib/libm/libm_hwcap1.so.2 -    SUNW_1.1: __fmaf;

so unless the application references these symbols, the filtee will look
unused (neither libm.so.2 or libc.so.1 reference these symbols).  Note,
at runtime this filtee is only loaded if an attempt to bind to one of the
fma symbols in libm.so.2 occurs.  Check_rtime however forces all dependencies
to be loaded (through ldd).

So yes, it looks a check_rtime exception would be useful.

-- 

Rod.

Reply via email to