This is the mail archive of the gas2@sourceware.cygnus.com mailing list for the gas2 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: global vars and symbol visibility for mips32/elf


   Date: Fri, 9 Aug 1996 02:46:18 -0700
   From: "David S. Miller" <dm@neteng.engr.sgi.com>

   The problem is caused by the symbol 'glob'.  GNU libc also has a
   symbol glob.

This is the bug.  An ANSI C compliant shared library may not have a
global symbol which infringes on the ANSI C namespace.  The symbol
must, instead, be weak.

It works to have a global symbol in a normal archive library, because
then it will only be included if there is no other definition.
However, all symbols in a shared library are included if any are, so
there must be no extraneous global symbols.

   The IRIX6.2 linker however places this symbol in the MIPS_ACOMMON
   section of the resulting executable and does not override using the
   libc symbol of the same name (the shared IRIX libc does in fact have a
   symbol named 'glob' just like my MIPS/Linux GNU libc does).

If you use elfdump -Dt on the Irix 6.2 libc, you will see that glob is
a weak symbol.

The use of the MIPS_ACOMMON section is an Irix linker optimization,
not supported by gld, which has no particular bearing on this issue.

Ian