From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=ham autolearn_force=no version=3.4.2 Received: from minnie.tuhs.org (minnie.tuhs.org [45.79.103.53]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 3a8ea130 for ; Mon, 13 Jan 2020 19:58:54 +0000 (UTC) Received: by minnie.tuhs.org (Postfix, from userid 112) id 34C5D9BD74; Tue, 14 Jan 2020 05:58:53 +1000 (AEST) Received: from minnie.tuhs.org (localhost [127.0.0.1]) by minnie.tuhs.org (Postfix) with ESMTP id 359D99BD0F; Tue, 14 Jan 2020 05:58:18 +1000 (AEST) Authentication-Results: minnie.tuhs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="t6ewHRpn"; dkim-atps=neutral Received: by minnie.tuhs.org (Postfix, from userid 112) id 6D17F9B843; Tue, 14 Jan 2020 05:58:15 +1000 (AEST) Received: from mail-vk1-f171.google.com (mail-vk1-f171.google.com [209.85.221.171]) by minnie.tuhs.org (Postfix) with ESMTPS id 0D12E9B841 for ; Tue, 14 Jan 2020 05:58:15 +1000 (AEST) Received: by mail-vk1-f171.google.com with SMTP id u6so2914213vkn.13 for ; Mon, 13 Jan 2020 11:58:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=YdMnmL47Pw1ljhaajSuncIikz85ul1/JkCR/NGKRryw=; b=t6ewHRpnDigCpukc4yna6g3v212B5kQO15Qx+96Uy+lSm2Iy6o8qVKZOLoBIwb53Gn xKRqkUQAEoa0trTImTehdjRBs0QeGI1U8WUCMgbzec+rcxqSb50ibK8BSXqB1FmdCsMK BKM2Ji78kyynbqMTzOj6Ur/w6iN3HvpvZRYNbhPnKlRgr73swVdjZMX1o2Z3DJ74XLiN tvsIMC2zufqBf40AN2iVCeYuPaTElp0HXdTYwG+g5117zY6gz6JjuE2ea2GOQtTLJsqc +CnBqY8mX7GyMWuGUNsq00Hz2VcEip4lOGacix8yyrG2T3OK3iDxKOOe6DB5OO+x6NYx lYBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=YdMnmL47Pw1ljhaajSuncIikz85ul1/JkCR/NGKRryw=; b=Di+MWLZb3YsYDruXmHR62K6+aIyf3yayE8DPBcWFDYB5Tt4d9LRK8PS/WulXf/fgRq G0ts80iYcfnO3/nFb9Ke+4EaYKZM4+241uIAcV1ymSyYXsTb5wArGEnTqeXuU0+H33Y7 CCUo1TZVMVR54OlAuJ3JsNraE2PEufT54JzNc9+XsKg3wV12aoenr9UCBfpX0t+vQl+f RHQgs5Bdj3NFnwkS/LX8z0yDYWHQNEUmMgzuRNI49m/wtgOWn6K95k1XEvi4DZTQIku6 XsIhNetzrML8rZ+EV1hATTRzygMKDEriT2s26pkfyC+uzSFmJla43DD1idTp9YNNnMZ3 DxgA== X-Gm-Message-State: APjAAAXEX/mbSKR8D5oQY1hUzv+b6A8jrp/sm7q9utjo1zNMIFXy3MNr bbNGUrrHBSMnncV7iq5Oe2V/lZ4qN5Ek7mZFykI/2w== X-Google-Smtp-Source: APXvYqxg2ScB7nrOZsCruPBgEett3uJwI5sqSu0jCDTDax4pXriu0Mk9QPK4dFxNwaoppEk3PuRFMmmfxX4gDkSCgRI= X-Received: by 2002:a1f:fe4e:: with SMTP id l75mr11464565vki.18.1578945493430; Mon, 13 Jan 2020 11:58:13 -0800 (PST) MIME-Version: 1.0 Received: by 2002:ab0:3745:0:0:0:0:0 with HTTP; Mon, 13 Jan 2020 11:58:12 -0800 (PST) From: Paul Winalski Date: Mon, 13 Jan 2020 14:58:12 -0500 Message-ID: To: The Eunuchs Hysterical Society Content-Type: text/plain; charset="UTF-8" Subject: [TUHS] History of symbol preemption X-BeenThere: tuhs@minnie.tuhs.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: The Unix Heritage Society mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: tuhs-bounces@minnie.tuhs.org Sender: "TUHS" 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.