From patchwork Thu Feb 3 15:17:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 50720 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 4F2A43858410 for ; Thu, 3 Feb 2022 15:18:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4F2A43858410 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1643901491; bh=Np9pcJb6ZpOh0yRmuNDZ+DGusAzyurvhd9LkasVsM3g=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=TJDEKd565kyWPn17bALrpUt2S39LZ5UhLTDM7S2Q03uGQbvC76GphvDMEPSA7tQBp Uk1vS8HVc1p021bap8fj0QhH4LhAa2WlL4r3E5y4RoA0QxbyfC7XW4QdsJ0aI6Uex2 s7q8Ya3aAdsAA0zX8zlpIx6LwJwohgv5PLq1YU9Q= 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 AE2233858D20 for ; Thu, 3 Feb 2022 15:17:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AE2233858D20 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-618-BS126G-hNViBTfzSqzLZMQ-1; Thu, 03 Feb 2022 10:17:48 -0500 X-MC-Unique: BS126G-hNViBTfzSqzLZMQ-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A016F10B7469 for ; Thu, 3 Feb 2022 15:17:46 +0000 (UTC) Received: from oldenburg.str.redhat.com (unknown [10.39.193.205]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CC29B7E2C6 for ; Thu, 3 Feb 2022 15:17:45 +0000 (UTC) To: libc-alpha@sourceware.org Subject: [PATCH v2 0/3] Predictable ELF destructor ordering X-From-Line: 1584a2f86db6fe8b46460c53f499d65ba65b55bb Mon Sep 17 00:00:00 2001 Message-Id: Date: Thu, 03 Feb 2022 16:17:44 +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.12 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-6.2 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE 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. Built with build-many-glibcs.py. Thanks, Florian Florian Weimer (3): elf: Do not rely on relocation dependencies for destructor sorting elf: Do not run constructors for proxy objects elf: Always call destructors in reverse constructor order elf/dl-close.c | 130 ++++++++++++++---------- elf/dl-deps.c | 3 +- elf/dl-fini.c | 196 +++++++++++++------------------------ elf/dl-init.c | 20 ++++ elf/dl-sort-maps.c | 105 ++------------------ elf/dso-sort-tests-1.def | 6 +- elf/tst-audit23.c | 44 +++++---- include/link.h | 4 + sysdeps/generic/ldsodefs.h | 6 +- 9 files changed, 212 insertions(+), 302 deletions(-) base-commit: 97ba273b505763325efd802dc3a9562dbba79579