The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: Paul Winalski <paul.winalski@gmail.com>
To: The Eunuchs Hysterical Society <tuhs@tuhs.org>
Subject: [TUHS] History of symbol preemption
Date: Mon, 13 Jan 2020 14:58:12 -0500	[thread overview]
Message-ID: <CABH=_VTOhJ57t-iWkcV9KYoSmDjy-6-6-sUTVYz-nJDTrprHjw@mail.gmail.com> (raw)

The Executable and Linkable Format (ELF) is the modern standard for
object files in Unix and Unix-like OSes (e.g., Linux), and even for
OpenVMS.  LInux, AIX and probably other implementations of ELF have a
feature in the runtime loader called symbol preemption.  When loading
a shared library, the runtime loader examines the library's symbol
table.  If there is a global symbol with default visibility, and a
value for that symbol has already been loaded, all references to the
symbol in the library being loaded are rebound to the existing
definition.  The existing value thus preempts the definition in the
library.

I'm curious about the history of symbol preemption.  It does not exist
in other implementations of shared libraries, such as IBM OS/370 and
its descendants, OpenVMS, and Microsoft Windows NT.  ELF apparently
was designed in the mid-1990s.  I have found a copy of the System V
Application Binary Interface from April 2001 that describes symbol
preemption in the section on the ELF symbol table.

When was symbol preemption when loading shared objects first
implemented in Unix?  Are there versions of Unix that don't do symbol
preemption?

-Paul W.

             reply	other threads:[~2020-01-13 19:58 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-13 19:58 Paul Winalski [this message]
2020-01-13 20:46 ` Rico Pajarola
2020-01-13 21:04   ` Clem Cole
2020-01-13 21:40     ` Rico Pajarola
2020-01-13 21:44       ` Paul Winalski
2020-01-13 21:45         ` Rico Pajarola
2020-01-13 22:20           ` Larry McVoy
2020-01-13 21:42     ` Paul Winalski
2020-01-13 22:53       ` Henry Bent
2020-01-14  0:31         ` Clem Cole
2020-01-14  2:53 ` Rob Gingell
2020-01-14 19:21 ` [TUHS] two AIX items [was " Charles H Sauer
2020-01-14 20:31   ` Clem Cole
2020-01-14 23:22   ` Kevin Bowling
2020-01-15 16:41   ` Paul Winalski

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='CABH=_VTOhJ57t-iWkcV9KYoSmDjy-6-6-sUTVYz-nJDTrprHjw@mail.gmail.com' \
    --to=paul.winalski@gmail.com \
    --cc=tuhs@tuhs.org \
    /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 NNTP newsgroup(s).