From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by sourceware.org (Postfix) with ESMTPS id 0A10F3857BB8 for ; Mon, 29 Aug 2022 19:24:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0A10F3857BB8 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-ed1-x52c.google.com with SMTP id b44so11404476edf.9 for ; Mon, 29 Aug 2022 12:24:51 -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=SSWWBG/O/9ITR2jxv+zDXzBnyxkatjX8qMwne1RBLtY=; b=IWIUeoWLtOlbUlBaA/VFfDIhNgM9eigbY/a+iCHZo8D64pmMy81WU3zmruNE+j2Q8/ v1xlWjjzhrnJOAsPfgz0BZ0db/WLSV5uppmqvFDdtYedSY1RM+nWN5XqE9LrQ4UMhSQB CsnFVLUBXEvHENBPzbVc25/7/BTGUl4cZR2CALaEY1vo2KX2r4kUbLOaQoJqYpQRRAHg j0IWWEaVgsxBx0SLM7O9+RWP8TH4QqfPbLx12+6qxEFdNX0DmWk18W65D8H1DqDGZ+GT Kls2/G2XhIfrCVAs0PMlj4PZAgI75gKaXNE1PocykGYJm9WH4Ohhxu9G7uMTTsqGn2yJ 95QA== 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=SSWWBG/O/9ITR2jxv+zDXzBnyxkatjX8qMwne1RBLtY=; b=nyQnUIsCP6u3X/BHmM2TKC7wm+WB4Wc4INaTYgFH3C3i57bWO0MCyDbf76Ugpus90b TRi4moi8YBjeiyK2ZODuj6yWbCW0buT18P4+OmAvbRIHMx/+mKH20FdvnoZLl98qO3eo 6+y+vw5cnmkkP7IUz5WOtksMTMY8YPx/ufby5M0LZFHBZYiq6F3ZdX5FIaGSUJGf4rGC yFBY8jLWVvNdmacOqkQOiBwrKiEwNiNViyhSI9xvK/d4qfXawtCm7Cf00AqRfSZTMuFh ZI25c4ZAhTKetPH6hpE6H2cZKRVFztQsMSNJ8KjiuzH3CPVjPuBA4/cV2xASlvvIYu7S A8nA== X-Gm-Message-State: ACgBeo1E0g/DyxdWps1qnNZhjP1IH6lkOi3WJQS3KCdQ1HTxzSHQOOFD 8K0opGi/tW4QAysDgYJtkorOIxcVZxnl7Fo2qq3Yw32sL/Q= X-Google-Smtp-Source: AA6agR6f7MU/MSPP9dfbTOfjjHCXQIBBzHR/UPHPkqfc4tHjaMuGEpscm1EJOBnH7+IOR5F0Tl8+Aa0sGNoiBxrZtkg= X-Received: by 2002:a05:6402:510e:b0:448:9d4b:c760 with SMTP id m14-20020a056402510e00b004489d4bc760mr2828729edd.156.1661801089903; Mon, 29 Aug 2022 12:24:49 -0700 (PDT) MIME-Version: 1.0 References: <20220829190012.946402-1-adhemerval.zanella@linaro.org> In-Reply-To: <20220829190012.946402-1-adhemerval.zanella@linaro.org> From: Noah Goldstein Date: Mon, 29 Aug 2022 12:24:38 -0700 Message-ID: Subject: Re: [PATCH] nptl: x86_64: Use stackinfo.h definition for CURRENT_STACK_FRAME To: Adhemerval Zanella 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 Mon, Aug 29, 2022 at 12:00 PM 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); > > It increases the generated code by one instruction: > > --- master > +++ patch > @@ -25068,11 +25068,11 @@ Disassembly of section .text: > 3db1b: 00 00 > 3db1d: 48 89 44 24 08 mov %rax,0x8(%rsp) > 3db22: 31 c0 xor %eax,%eax > - 3db24: 48 8b 44 24 08 mov 0x8(%rsp),%rax > - 3db29: 64 48 2b 04 25 28 00 sub %fs:0x28,%rax > - 3db30: 00 00 > - 3db32: 75 0c jne 3db40 > <_longjmp_unwind+0x30> > - 3db34: 48 89 e6 mov %rsp,%rsi > + 3db24: 48 89 e6 mov %rsp,%rsi > + 3db27: 48 8b 44 24 08 mov 0x8(%rsp),%rax > + 3db2c: 64 48 2b 04 25 28 00 sub %fs:0x28,%rax > + 3db33: 00 00 > + 3db35: 75 09 jne 3db40 > <_longjmp_unwind+0x30> > 3db37: 48 83 c4 18 add $0x18,%rsp > 3db3b: e9 60 31 05 00 jmp 90ca0 > <__GI___pthread_cleanup_upto> > 3db40: e8 4b ec 0e 00 call 12c790 <__stack_chk_fail> > > Checked on x86_64-linux-gnu. > --- > sysdeps/x86/nptl/pthreaddef.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/sysdeps/x86/nptl/pthreaddef.h b/sysdeps/x86/nptl/pthreaddef.h > index 63fdbcb27c..3ff95efee6 100644 > --- a/sysdeps/x86/nptl/pthreaddef.h > +++ b/sysdeps/x86/nptl/pthreaddef.h > @@ -42,7 +42,7 @@ > #ifdef __x86_64__ > /* The frame pointer is not usable. */ > # define CURRENT_STACK_FRAME \ > - ({ register char *frame __asm__("rsp"); frame; }) > + ({ void *p__; asm volatile ("mov %%" RSP_REG ", %0" : "=r" (p__)); p__; }) Is the mov instruction needed at all? Would: ``` ({ register void * p__ __asm__("rsp"); asm volatile("" : "=r"(p__)); p__; }); ``` work? > #else > # define CURRENT_STACK_FRAME __builtin_frame_address (0) > #endif > -- > 2.34.1 >