Whats this lofs mount onto /lib/libc.so.1 in Solaris 10 ?

Solaris 10 introduces new linker/loader hardware capabilities support. We have 3 different versions of libc for Solaris x86, the old one we had before plus two new ones.

  • /usr/lib/libc/libc_hwcap1.so.1: [SSE MMX CMOV SEP FPU]
  • /usr/lib/libc/libc_hwcap2.so.1: [SSE2 SSE MMX CMOV AMD_SYSC FPU]

    The ELF objects have been tagged with the hardware capabilties required to use that version. As you can see there are different versions for SEE, SSE2 and that the hwcap2 version also has AMD specific optimisations.

    You can use isainfo -v to determine the capabilities of the hardware you are running on, for example:

    My Toshiba Tecra M2 laptop:

    $ psrinfo -pv
    The physical processor has 1 virtual processor (0)
      x86 (GenuineIntel family 6 model 9 step 5 clock 1700 MHz)
            GenuineIntel 6.9.5
    
    $ isainfo -v
    32-bit i386 applications
            sse2 sse fxsr mmx cmov sep cx8 tsc fpu
    

    A v40z running with the AMD64 bit kernel:

    $ psrinfo -pv
    The physical processor has 1 virtual processor (0)
      x86 (AuthenticAMD family 15 model 5 step 10 clock 2391 MHz)
            AMD Opteron(tm) Processor 850
    The physical processor has 1 virtual processor (1)
      x86 (AuthenticAMD family 15 model 5 step 10 clock 2391 MHz)
            AMD Opteron(tm) Processor 850
    The physical processor has 1 virtual processor (2)
      x86 (AuthenticAMD family 15 model 5 step 10 clock 2391 MHz)
            AMD Opteron(tm) Processor 850
    The physical processor has 1 virtual processor (3)
      x86 (AuthenticAMD family 15 model 5 step 10 clock 2391 MHz)
            AMD Opteron(tm) Processor 850
    
    $ isainfo -v
    64-bit amd64 applications
            sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc
            fpu
    32-bit i386 applications
            sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc
            fpu
    

    The loader (ld.so.1) works out at load time which of the versions of a library are best to use based on the capabilities. Since this is a non trivial thing to do it is optimized for libc which is used by most programs on Solaris. The moe(1) program works out the most optimial executable, the filesystem mount SMF service does an lofs mount of the best libc onto /lib/libc.so.1. /usr/lib/libc.so.1 is just a symlink to /lib/libc.so.1.

    For more information on the linker/loader hardware capabilities support see this document in docs.sun.com.

  • Comments:

    thanks darren for this entry! I was asking myself what the hell it is. Probably hiding the mount entry from the standard output would had a positiv effect on the number of support call.

    Posted by bbr on November 17, 2004 at 01:00 AM GMT #

    Post a Comment:
    • HTML Syntax: NOT allowed
    About

    DarrenMoffat

    Search

    Categories
    Archives
    « April 2014
    MonTueWedThuFriSatSun
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
        
           
    Today