Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp419304ybz; Fri, 24 Apr 2020 02:45:50 -0700 (PDT) X-Google-Smtp-Source: APiQypKl4cI1TUFKwNCmJDstbkP3VIbKwYlC0xq8o+xzisLKkPHcsWZNGvkJlzIFHyOQJYEBIlL5 X-Received: by 2002:a17:907:9484:: with SMTP id dm4mr6535813ejc.240.1587721550795; Fri, 24 Apr 2020 02:45:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587721550; cv=none; d=google.com; s=arc-20160816; b=KzQz6lClAe51qSJN6EtsjU4N0WRDDIQBSvRJe+uhhKh+rLmRD8dR6rWfmtp4l/YRaG cQbu1IUIKQha13nXwdF4ZWqbbZCIDaEI3T89RV2TCz6JiQoru2WiSA8RcLgfazVD9Inz kdUvdLiXR29U5nns5UsOtlXqJC96IBJL7au6gSvtkhipAmf15HhZ9E9u4yTKl+h0y/Df MIfw4x/eY0z3s24efiusaGVqn8yCtpMTyr3zOa6xfA4vC4KXYBqsgsPA/WYuJiRH4gVI 0Z2bSQK3LJ90JDCDCjIihuVE0PXapNvvhZJ9SR2zyE4MwUZg0QU5wOVdBpLaJrAbsTCE 1b1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :message-id:in-reply-to:subject:cc:to:from:date; bh=jTA2EMdbIzQspufyy9NSgbWJwvbcsNeeWwiYnBYYnz8=; b=dfHMn4QA060QqeOjyjdgZwLl+eVTb11+B7c+177tiRvsT/ETlvcJCNucRIr8FeRomw bCZw59H/XjBe7V+D3uULCqI6Gv4bLbChNUqKH6/RZI6pCvPRs6/WYDsPXbx4eRe+ZRDB KAECB6StHJ0/IMb/oSL8AqQF/8t36/9wbtj0SS1BiZG34bfmLJq8oWyXauaEOueE5TIj d9WpvXWnNFjOtcsq5RS6RWt+6fM+mDpTxBstz8wOTugjuk6g16KFuFF7F5VG68HpG4HE JTk6WTw651z4hzCuDIaIdh1j9S73Ov1smBuwfDGfnirkGNdB95GkbfyYjL5j3viWriBO 6P5A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d12si2987406edo.4.2020.04.24.02.45.06; Fri, 24 Apr 2020 02:45:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726798AbgDXJnP (ORCPT + 99 others); Fri, 24 Apr 2020 05:43:15 -0400 Received: from mx2.suse.de ([195.135.220.15]:55672 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726494AbgDXJnP (ORCPT ); Fri, 24 Apr 2020 05:43:15 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 9AE34AC4D; Fri, 24 Apr 2020 09:43:13 +0000 (UTC) Date: Fri, 24 Apr 2020 11:43:13 +0200 (CEST) From: Miroslav Benes To: Peter Zijlstra cc: Alexandre Chartre , jpoimboe@redhat.com, linux-kernel@vger.kernel.org, jthierry@redhat.com, tglx@linutronix.de, x86@kernel.org Subject: Re: [PATCH 3/8] objtool: Rework allocating stack_ops on decode In-Reply-To: <20200423161656.GX20730@hirez.programming.kicks-ass.net> Message-ID: References: <20200423125013.452964352@infradead.org> <20200423125042.713052240@infradead.org> <7df9ec97-dc14-c4b6-fb26-f163e9afb1cd@oracle.com> <20200423161656.GX20730@hirez.programming.kicks-ass.net> User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 23 Apr 2020, Peter Zijlstra wrote: > On Thu, Apr 23, 2020 at 05:40:38PM +0200, Alexandre Chartre wrote: > > > > On 4/23/20 2:47 PM, Peter Zijlstra wrote: > > > Wrap each stack_op in a macro that allocates and adds it to the list. > > > This simplifies trying to figure out what to do with the pre-allocated > > > stack_op at the end. > > > > > > Signed-off-by: Peter Zijlstra (Intel) > > > --- > > > tools/objtool/arch/x86/decode.c | 257 +++++++++++++++++++++++----------------- > > > 1 file changed, 153 insertions(+), 104 deletions(-) > > > > > > --- a/tools/objtool/arch/x86/decode.c > > > +++ b/tools/objtool/arch/x86/decode.c > > > @@ -77,6 +77,17 @@ unsigned long arch_jump_destination(stru > > > return insn->offset + insn->len + insn->immediate; > > > } > > > +#define PUSH_OP(op) \ > > > +({ \ > > > + list_add_tail(&op->list, ops_list); \ > > > + NULL; \ > > > +}) > > > + > > > +#define ADD_OP(op) \ > > > + if (!(op = calloc(1, sizeof(*op)))) \ > > > + return -1; \ > > > + else for (; op; op = PUSH_OP(op)) > > > + > > > > I would better have a function to alloc+add op instead of weird macros, > > for example: > > I know it'll not make you feel (much) better, but we can write it > shorter: > > +#define ADD_OP(op) \ > + if (!(op = calloc(1, sizeof(*op)))) \ > + return -1; \ > + else for (list_add_tail(&op->list, ops_list); op; op = NULL) FWIW, I like this version the best. Miroslav