gk4 at us.ibm.com gk4 at us.ibm.com
Mon Nov 8 13:17:10 PST 1999

While trying to inventory the APIs and libraries used by applications such
as StarOffice51 and WordPerfect8 I have stumbled across some redundant APIs
with @GLIBC_2.0 and @@GLIBC_2.1 suffixes on RedHat 6.0.   So, for example,
if I look at Netscape Communicator 4.7 I see that "fdopen" is undefined and
needs to be resolved.

[gk4 at act5 gk4]$ nm -D -g /usr/local/netscape/netscape | grep fdopen
         U fdopen

Looking at what libraries are dynamically linked, I see libc.so.6 is linked
to netscape to resolve "fdopen".

[gk4 at act5 gk4]$ ldd /usr/local/netscape/netscape
        libBrokenLocale.so.1 => /lib/libBrokenLocale.so.1 (0x40018000)
        libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x4001a000)
        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40064000)
        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4006e000)
        libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40083000)
        libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x40095000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x400a2000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x400ad000)
        libdl.so.2 => /lib/libdl.so.2 (0x4014a000)
        libstdc++-libc6.1-1.so.2 => /usr/lib/libstdc++-libc6.1-1.so.2
        libm.so.6 => /lib/libm.so.6 (0x40190000)
        libc.so.6 => /lib/libc.so.6 (0x401ac000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

However, when I look in libc.so.6 I see two "fdopen" definitions with
either a @GLIBC_2.0 or @@GLIBC_2.1 suffix!

[gk4 at act5 gk4]$ nm -g /lib/libc.so.6 | grep fdopen
00050ae0 T _IO_fdopen@@GLIBC_2.1
00053410 T _IO_fdopen at GLIBC_2.0
00050ae0 T fdopen@@GLIBC_2.1
00053410 T fdopen at GLIBC_2.0

How is "fdopen" being resolved?  What is the purpose of the @GLIBC_2.0 or
@@GLIBC_2.1 suffixes?

George Kraft IV
gk4 at us.ibm.com
512-838-2688; t/l 678-2688
Linux Technology Center
IBM, Austin Texas

More information about the lsb-discuss mailing list