From patchwork Thu Oct 31 19:20:40 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Adhemerval Zanella (Code Review)" X-Patchwork-Id: 1187644 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=sourceware.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=libc-alpha-return-106512-incoming=patchwork.ozlabs.org@sourceware.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=gnutoolchain-gerrit.osci.io Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="fKaM/JGe"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 473wD63WkGz9sNw for ; Fri, 1 Nov 2019 06:21:26 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:cc:message-id:subject:references :reply-to:mime-version:content-transfer-encoding:content-type; q=dns; s=default; b=fc6e3w3lQbor+w2f+rIp6Rlmj6baHkiyJPfTNSyPE5m WgFtoiiNo5a0OfYdYBIpLmebOs9etG9NVg1aeP6cE2mg2fgNt+DEZsvKRq5CfD9g ltSySqLmbmnKDc5TEugyZZDyIiRpmHmowNIm4EYKeoDSH3zsHbvOjO0Jtx5JUtuM = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:cc:message-id:subject:references :reply-to:mime-version:content-transfer-encoding:content-type; s=default; bh=7+i2p4pDEYzhFRZFeKkA6w2bJVI=; b=fKaM/JGeDnFXN62fr I3Nxo3L6Ws+M2Dt9wt4UvXwPk0fvvhtvg659SvqOeJsCZPgYwrII5r36+tE/eD29 PSgvG0ZAn7f7ecmqcpcF18D6RHJIwnL+mteOtcqXN/lwwmoynch0pz5ocPBoIpf7 xcSqW219V4auVZqySrVZNHXa0k= Received: (qmail 120196 invoked by alias); 31 Oct 2019 19:20:52 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 120103 invoked by uid 89); 31 Oct 2019 19:20:51 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1853, nonlazy, non-lazy X-HELO: mx1.osci.io X-Gerrit-PatchSet: 1 Date: Thu, 31 Oct 2019 15:20:40 -0400 From: "Florian Weimer (Code Review)" To: libc-alpha@sourceware.org Cc: Florian Weimer Message-ID: Auto-Submitted: auto-generated X-Gerrit-MessageType: newchange Subject: [review] Introduce DL_LOOKUP_FOR_RELOCATE flag for _dl_lookup_symbol_x X-Gerrit-Change-Id: Ic7b94a3f7c4719a00ca8e6018088567824da0658 X-Gerrit-Change-Number: 470 X-Gerrit-ChangeURL: X-Gerrit-Commit: cf75854e34caeae0edebf1715a6f92dced954f19 References: Reply-To: fweimer@redhat.com, fweimer@redhat.com, libc-alpha@sourceware.org MIME-Version: 1.0 Content-Disposition: inline User-Agent: Gerrit/3.0.3-75-g9005159e5d Change URL: https://gnutoolchain-gerrit.osci.io/r/c/glibc/+/470 ...................................................................... Introduce DL_LOOKUP_FOR_RELOCATE flag for _dl_lookup_symbol_x This will allow changes in dependency processing during non-lazy binding, for more precise processing of NODELETE objects: During initial relocation in dlopen, the fate of NODELETE objects is still unclear, so objects which are depended upon by NODELETE objects cannot immediately be marked as NODELETE. Change-Id: Ic7b94a3f7c4719a00ca8e6018088567824da0658 Reviewed-by: Carlos O'Donell --- M elf/dl-reloc.c M sysdeps/generic/ldsodefs.h 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c index 725a074..7f201fe 100644 --- a/elf/dl-reloc.c +++ b/elf/dl-reloc.c @@ -244,7 +244,8 @@ v = (version); \ _lr = _dl_lookup_symbol_x (strtab + (*ref)->st_name, l, (ref), \ scope, v, _tc, \ - DL_LOOKUP_ADD_DEPENDENCY, NULL); \ + DL_LOOKUP_ADD_DEPENDENCY \ + | DL_LOOKUP_FOR_RELOCATE, NULL); \ l->l_lookup_cache.ret = (*ref); \ l->l_lookup_cache.value = _lr; })) \ : l) diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index c546757..2d9c6a0 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -923,6 +923,9 @@ DL_LOOKUP_RETURN_NEWEST = 2, /* Set if dl_lookup* called with GSCOPE lock held. */ DL_LOOKUP_GSCOPE_LOCK = 4, + /* Set if dl_lookup is called for non-lazy relocation processing + from _dl_relocate_object in elf/dl-reloc.c. */ + DL_LOOKUP_FOR_RELOCATE = 8, }; /* Lookup versioned symbol. */