From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) by sourceware.org (Postfix) with ESMTPS id BB11139960C6 for ; Tue, 30 Aug 2022 19:43:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org BB11139960C6 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-x633.google.com with SMTP id og21so24306714ejc.2 for ; Tue, 30 Aug 2022 12:43:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc; bh=sBM6qZgREX9Oy6AJCYP0E3dyS9TkPExZU4QV8qkip4M=; b=RYY0FZUEReWfIkhP+20eJk3g3fmd9hCFttP+JbCvHwR/YGjvtAgZqfHLc4syXyYirk xqOXB9kDsqC+i4NtnBTuHqGHhMCaoVw3FFR5a9SK9g6B6CCNqsW+4+iHsZBGjvDHJbIf 3EKVCflcs7HyNIfW4N3x95mPVPe5n/RC5qhrcaSb633U7dQdpkPbzO1Ho1dhgaZ/ORi/ qUyc69qEYuj5BuaEzkwMy9OkPDMEiw2aqNvlpy0p92y6zZkvBgf1qIIIpyeZFjt9/aMZ lgQ1IkmEjQne6mqmXlsI0RRiU60fJ+UXCPapS5cAxpLTwO11DmexzIoL87ZnYFdf/vIY lXhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=sBM6qZgREX9Oy6AJCYP0E3dyS9TkPExZU4QV8qkip4M=; b=nrUNZL4n+bqbLPR4mrucOiSvcAHOeLGDZJG4aaTdxHkBe5BkjN+7uGTZwAZhU5q1D/ qNRF5031CKKQc974Ul1acqW4iJ90gE8DEOr63VPR4C9qf2E8LAZUdx8sdWuDdJ8+wl6I RnBW/6A1OBLcIxJAFE12wnFtl1c65eVgFXssN9W5qqp+sgrfYmGNqrEsFJKq336sdZ9w K4zqrX6JxcwnEfMKgkqlg873k86oxAI2HThYbuaxQ3SfL8kz5a4XJtzpcfXf8FNhdjot c6VeE93oeehrc5c4T14yDKJ5L1rBlZ+GLB0g7cAvQeDffG+GMXeyUCxwtPjXpky/ISFV VqnA== X-Gm-Message-State: ACgBeo07wOBpl06ZoWvUtnjkiQd10nufBNNAxbF0dZ/9Boh8YplwPelm oiuCtd5tv2G6pteqRNVIe/XtITL9r4BYuUi13+yBX9Uy X-Google-Smtp-Source: AA6agR4ev7rJavCGliyXTS5/aSymBLxBYsuM1JBs2rwnX8GJiq6JYl5++TfMCiE2d7aBfEgzcPyOyps1bbGoEIwMv/U= X-Received: by 2002:a17:907:6293:b0:73d:b27b:e594 with SMTP id nd19-20020a170907629300b0073db27be594mr18409349ejc.526.1661888632520; Tue, 30 Aug 2022 12:43:52 -0700 (PDT) MIME-Version: 1.0 References: <20220830120743.1072319-1-adhemerval.zanella@linaro.org> <253763f9-99ff-947c-e01e-eae8095c7163@linaro.org> In-Reply-To: <253763f9-99ff-947c-e01e-eae8095c7163@linaro.org> From: Noah Goldstein Date: Tue, 30 Aug 2022 12:43:41 -0700 Message-ID: Subject: Re: [PATCH] nptl: x86_64: Use same code for CURRENT_STACK_FRAME and stackinfo_get_sp To: Adhemerval Zanella Netto Cc: GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On Tue, Aug 30, 2022 at 12:08 PM Adhemerval Zanella Netto wrote: > > > > On 30/08/22 15:54, Noah Goldstein wrote: > > On Tue, Aug 30, 2022 at 5:08 AM Adhemerval Zanella via Libc-alpha > > wrote: > >> > >> It avoids the possible warning of uninitialized 'frame' variable when > >> building with clang: > >> > >> ../sysdeps/nptl/jmp-unwind.c:27:42: error: variable 'frame' is > >> uninitialized when used here [-Werror,-Wuninitialized] > >> __pthread_cleanup_upto (env->__jmpbuf, CURRENT_STACK_FRAME); > >> > >> The resulting code is similar to CURRENT_STACK_FRAME. > >> > >> Checked on x86_64-linux-gnu. > >> --- > >> sysdeps/x86/nptl/pthreaddef.h | 4 +++- > >> sysdeps/x86_64/stackinfo.h | 4 +++- > >> 2 files changed, 6 insertions(+), 2 deletions(-) > >> > >> diff --git a/sysdeps/x86/nptl/pthreaddef.h b/sysdeps/x86/nptl/pthreaddef.h > >> index 63fdbcb27c..7df65931a3 100644 > >> --- a/sysdeps/x86/nptl/pthreaddef.h > >> +++ b/sysdeps/x86/nptl/pthreaddef.h > >> @@ -42,7 +42,9 @@ > >> #ifdef __x86_64__ > >> /* The frame pointer is not usable. */ > >> # define CURRENT_STACK_FRAME \ > >> - ({ register char *frame __asm__("rsp"); frame; }) > >> + ({ register void * p__ __asm__(RSP_REG); \ > >> + asm volatile("" : "=r" (p__)); \ > >> + p__; }) > >> #else > >> # define CURRENT_STACK_FRAME __builtin_frame_address (0) > >> #endif > >> diff --git a/sysdeps/x86_64/stackinfo.h b/sysdeps/x86_64/stackinfo.h > >> index 34c9d0b576..7354632132 100644 > >> --- a/sysdeps/x86_64/stackinfo.h > >> +++ b/sysdeps/x86_64/stackinfo.h > >> @@ -40,7 +40,9 @@ > >> for which they need to act as barriers as well, hence the additional > >> (unnecessary) parameters. */ > >> #define stackinfo_get_sp() \ > >> - ({ void *p__; asm volatile ("mov %%" RSP_REG ", %0" : "=r" (p__)); p__; }) > >> + ({ register void * p__ __asm__(RSP_REG); \ > >> + asm volatile("" : "=r" (p__)); \ > >> + p__; }) > > > > This change addresses a different issue. Maybe two separate commits? > > I am not sure this characterizes as an 'issue', since code does work as is, > the idea is to have the same definition. Fair enough. > > > > > Otherwise LGTM. > >> #define stackinfo_sub_sp(ptr) \ > >> ({ ptrdiff_t d__; \ > >> asm volatile ("sub %%" RSP_REG " , %0" : "=r" (d__) : "0" (ptr)); \ > >> -- > >> 2.34.1 > >> LGTM.