From patchwork Wed Aug 3 13:52:38 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gleb Natapov X-Patchwork-Id: 14277 Received: (qmail 80965 invoked by alias); 3 Aug 2016 13:53:09 -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 80831 invoked by uid 89); 3 Aug 2016 13:53:08 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mail-wm0-f47.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=CtlWbDmF/jKFtafnqufNM1JQJ10ygdrEzyveHZWdSGc=; b=VjjRQS5Ua5qAR0437ZZKrjXgDDxTDqZpxqkjy+2NzZyWEzf0+vTiXygH617vCCijt3 eIq5fCvw6d/rNepQH3zADYlUqupCuDSte76EqTTwf5U4XS51hBX4VRKPhdccjkIUo2Nl yvIAQnkyv+zSkKgZQyFiXigNh6rluYiuabUMp3Fj0gtr+7MHFCU39bp4IdsP3gMUVDtg w3/7ctSXDqKVxwVa+7ppvPP97LziAIxf/cnhPKhtMAXaLoCIlsu12j1uezi/PDugqg9/ xMghEtaij4Gb2jXebG7nsa+thMtyc9VJKcyKeDbuAqRGJSOWj7VEQ85K6ppB52JnSXKA kFUQ== X-Gm-Message-State: AEkoouuBmuHv3nlcXUsKqSmgr3kMrXbOGK13WrV0vAveRraJBtkkLfY6zbG/LmOyXXwTmg== X-Received: by 10.194.79.161 with SMTP id k1mr8975490wjx.119.1470232374321; Wed, 03 Aug 2016 06:52:54 -0700 (PDT) From: Gleb Natapov To: libc-alpha@sourceware.org Subject: [PATCH v2 1/2] count number of loaded objects in each namespace only once Date: Wed, 3 Aug 2016 16:52:38 +0300 Message-Id: <1470232359-18696-2-git-send-email-gleb@scylladb.com> In-Reply-To: <1470232359-18696-1-git-send-email-gleb@scylladb.com> References: <1470232359-18696-1-git-send-email-gleb@scylladb.com> _ns_nloaded already has count of all objects in a namespace, no need to add it while iterating over all objects. --- elf/dl-iteratephdr.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/elf/dl-iteratephdr.c b/elf/dl-iteratephdr.c index 1cb6e26..2be4d2d 100644 --- a/elf/dl-iteratephdr.c +++ b/elf/dl-iteratephdr.c @@ -48,17 +48,18 @@ __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, #ifdef SHARED const void *caller = RETURN_ADDRESS (0); for (Lmid_t cnt = GL(dl_nns) - 1; cnt > 0; --cnt) + { + /* We have to count the total number of loaded objects. */ + nloaded += GL(dl_ns)[cnt]._ns_nloaded; for (struct link_map *l = GL(dl_ns)[cnt]._ns_loaded; l; l = l->l_next) { - /* We have to count the total number of loaded objects. */ - nloaded += GL(dl_ns)[cnt]._ns_nloaded; - if (caller >= (const void *) l->l_map_start && caller < (const void *) l->l_map_end && (l->l_contiguous || _dl_addr_inside_object (l, (ElfW(Addr)) caller))) ns = cnt; } + } #endif for (l = GL(dl_ns)[ns]._ns_loaded; l != NULL; l = l->l_next)