From patchwork Sun Jul 24 12:24:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gleb Natapov X-Patchwork-Id: 13957 Received: (qmail 101852 invoked by alias); 24 Jul 2016 12:24:37 -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 101838 invoked by uid 89); 24 Jul 2016 12:24:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_LOW, SPF_PASS autolearn=ham version=3.3.2 spammy=iterating X-HELO: mail-wm0-f51.google.com X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-disposition; bh=U1oLunsc/d7ymHq+4yfjsXxtS1ouMQPp9lDQafGOxwo=; b=XRGiX+0tw1eDPrwFAfDq023zB2IJCIX3KVI5jTefP7vRJRW2O/jDUGBA8oV7+YjrCE VZu8XvUSjl0c0eJPjmbv55CxNYdaT13Qguk3o/XH9Nf9RCPzUpLBqxfpF13gEQK3BFE8 z3IMZOPVKYbEkvX+UnxhYgOn6pkTNu2VxkdSU1W4UIY207SMaBkUZI5LMSr3rARqzDKX FKi3xdvF7L+4ruhV1NXwXg0Gn8/PHAR2/56gUgU3rDvPF/2f1EF9yFM5m9ZbqZC4JE2H InYbvPYMWqhDcW8NLxVc+C5KRU1mhLQPuNVI8I0MAyyUn4V4SwH8H79Ltp4+rVekn1H2 p2Vg== X-Gm-Message-State: ALyK8tK/XOjfk5foQgfGpiV5QPGZL+1LIDSdHT4mfegvpQV+i+np2BbgcVv1cSRTEM1OgA== X-Received: by 10.28.92.71 with SMTP id q68mr18029416wmb.85.1469363062957; Sun, 24 Jul 2016 05:24:22 -0700 (PDT) Date: Sun, 24 Jul 2016 15:24:20 +0300 From: Gleb Natapov To: libc-alpha@sourceware.org Subject: [PATCH] count number of loaded objects in each namespace only once Message-ID: <20160724122420.GJ1018@scylladb.com> MIME-Version: 1.0 Content-Disposition: inline _ns_nloaded already has count of all objects in a namespace, no need to add it while iterating over all objects. --- Gleb. diff --git a/elf/dl-iteratephdr.c b/elf/dl-iteratephdr.c index 1cb6e26..4db6938 100644 --- a/elf/dl-iteratephdr.c +++ b/elf/dl-iteratephdr.c @@ -47,18 +47,18 @@ __dl_iterate_phdr (int (*callback) (struct dl_phdr_info *info, Lmid_t ns = 0; #ifdef SHARED const void *caller = RETURN_ADDRESS (0); - for (Lmid_t cnt = GL(dl_nns) - 1; cnt > 0; --cnt) + 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)