public inbox for gas2@sourceware.org
 help / color / mirror / Atom feed
From: Ian Lance Taylor <ian@cygnus.com>
To: drepper@cygnus.com
Cc: dm@sgi.com, gcc2@cygnus.com, gas2@cygnus.com
Subject: Re: global vars and symbol visibility for mips32/elf
Date: Fri, 09 Aug 1996 15:30:00 -0000	[thread overview]
Message-ID: <199608092230.SAA07516@sanguine.cygnus.com> (raw)
In-Reply-To: <199608092013.NAA07249@cygnus.com>

   Date: Fri, 09 Aug 1996 13:13:00 -0700
   From: Ulrich Drepper <drepper@cygnus.com>

   From: Ian Lance Taylor <ian@cygnus.com>
   Subject: Re: global vars and symbol visibility for mips32/elf
   Date: Fri, 9 Aug 1996 11:29:54 -0400

   >    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.

   Why should `glob' be made weak?  In GNU libc we make a symbol only
   weak if necessary.  It is correct that no symbol in a ISO C lib
   must have this name.  But if the object file in the shared lib which
   contains the definition of glob is transitively not used by any ISO C
   function this is ok.  At least this is what I currently know.

That turns out not to be the case.  A shared library is not like an
archive library.  A shared library is a single object.  Everything
that composes a shared library is linked together.  There is only one
set of symbols.  There is no way for the linker to form any sort of
transitive closure operation, because there is no longer any
distinction between the various object files which compose the shared
library.

   Reading your words it seems that using a shared lib introduces *all*
   symbols of the shared lib in the namespace of the application.  I.e.,
   all symbols not mentioned in ISO C must be weak.  Is this how it is
   implemented in GNU ld and how it is intend in ELF?

Yes.

That's how it's implemented in any ELF linker.

   If yes, this would mean that nearly every symbol in the shared lib
   must be weak.

Right.  Every symbol in the ANSI C namespace must be weak (in other
words, you don't have to worry about symbols which start with
underscore).  If you look at libc.so on an SVR4 system, that is what
you will see.

Ian


  reply	other threads:[~1996-08-09 15:30 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-08-09  2:46 David S. Miller
1996-08-09  5:24 ` David S. Miller
1996-08-09  9:01   ` Ian Lance Taylor
1996-08-09  8:30 ` Ian Lance Taylor
1996-08-09 13:13   ` Ulrich Drepper
1996-08-09 15:30     ` Ian Lance Taylor [this message]
1996-08-10 17:37       ` Richard Stallman
1996-08-10 19:41         ` Ian Lance Taylor
1996-08-10 23:26           ` Jim Wilson
1996-08-11  1:44           ` Richard Stallman
1996-08-13 10:58           ` Ruediger Helsch
1996-08-13 13:36             ` Jim Wilson
1996-08-13 16:06               ` Ruediger Helsch
1996-08-13 19:04                 ` Jim Wilson
1996-08-13 21:02                   ` Richard Stallman
1996-08-14  3:06                     ` Ruediger Helsch
1996-08-14 23:44                       ` Richard Stallman
1996-08-14  0:18                 ` Nick Ing-Simmons
1996-08-14  3:06                   ` Ruediger Helsch
1996-08-15 11:24                   ` H.J. Lu
1996-08-13  9:06 ` Ruediger Helsch
1996-08-13 10:58   ` Richard Stallman
1996-08-13 13:36     ` Ruediger Helsch
1996-08-13 13:36       ` Richard Stallman
1996-08-13 14:40       ` H.J. Lu
1996-08-13 16:06       ` Ulrich Drepper
1996-08-13 16:06         ` Joe Buck
1996-08-13 17:02         ` Rohan LENARD

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=199608092230.SAA07516@sanguine.cygnus.com \
    --to=ian@cygnus.com \
    --cc=dm@sgi.com \
    --cc=drepper@cygnus.com \
    --cc=gas2@cygnus.com \
    --cc=gcc2@cygnus.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).