From patchwork Tue Dec 14 21:01:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 48917 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A856F385841C for ; Tue, 14 Dec 2021 21:02:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A856F385841C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1639515745; bh=1/AJwMMulVCe4QTD0nuuGrrFeydDruleFcOLf9puR2s=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=eg27eB4PmJUvAsvipOu9ltHUtGi8hDnaEpbjaxjzq3S+INBTfzWNRECzpiZi6/19f APd/MZ19qJvuNND5fRs3tKiw43PvNaX6Uz7Mqwp+GTHNllRagefpx3O1JihYjnO+W8 4jJMo9vU0Gu6mCL14oh9bAxoHDQzNok50y1bhmdQ= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 7DBBE3858D28 for ; Tue, 14 Dec 2021 21:02:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7DBBE3858D28 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-474-GGv4emjPNra3rrHC9zrjjg-1; Tue, 14 Dec 2021 16:02:01 -0500 X-MC-Unique: GGv4emjPNra3rrHC9zrjjg-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 140AF5120 for ; Tue, 14 Dec 2021 21:02:01 +0000 (UTC) Received: from oldenburg.str.redhat.com (unknown [10.2.17.223]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 6D992A0F87 for ; Tue, 14 Dec 2021 21:02:00 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH 0/2] Predictable ELF destructor ordering X-From-Line: dc8b3c5769667256401da0a949f91194b1e0653f Mon Sep 17 00:00:00 2001 Message-Id: Date: Tue, 14 Dec 2021 22:01:57 +0100 User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Florian Weimer via Libc-alpha From: Florian Weimer Reply-To: Florian Weimer Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" These patches remove the dependency sorting from dlclose and process shutdown, so that destructor order is the reverse of constructor order in more cases (always if the process does not call dlclose). Tested on i686-linux-gnu and x86_64-linux-gnu. I would like to include this in glibc 2.35 if possible, among the other dependency sorting changes. I believe this fixes bugs 15311 and 15903. Florian Weimer (2): elf: Do not rely on relocation dependencies for destructor sorting elf: Always call destructors in reverse constructor order elf/dl-close.c | 130 +++++++++++++--------- elf/dl-deps.c | 3 +- elf/dl-fini.c | 216 ++++++++++++++----------------------- elf/dl-init.c | 14 +++ elf/dl-sort-maps.c | 105 ++---------------- elf/dso-sort-tests-1.def | 6 +- include/link.h | 4 + sysdeps/generic/ldsodefs.h | 6 +- 8 files changed, 194 insertions(+), 290 deletions(-) base-commit: 0884724a95b60452ad483dbe086d237d02ba624d