Received: by 2002:ad5:4acb:0:0:0:0:0 with SMTP id n11csp754803imw; Fri, 8 Jul 2022 11:05:42 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uP+FcUtCtoCQvl03mIiMzoYi4dZZviSrw/lff/J7AUapdyWFFmm2Z1WvxqTNMHFGiTJYeP X-Received: by 2002:a05:6402:2404:b0:437:d11f:b9c7 with SMTP id t4-20020a056402240400b00437d11fb9c7mr6489211eda.176.1657303542586; Fri, 08 Jul 2022 11:05:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1657303542; cv=none; d=google.com; s=arc-20160816; b=kfAEblGf2JNAllbebaluP42UlrWm97lAnId8u7E3CfQeasBRMvRnGh6MdvhAbSVBIb kfsx99rd+2oaj+aheGTuK+RPyZthIM5RUsWfPoNQY5Sxs0adusiEqy6pJu7m9yup2/MZ bFWIUyKJSGyz/jiJcbVf/Hy9OL3+hIt2mddtTOw0+BrRmqgchp5potHkKtr2CHF16Xdx G/1tyKO8rWP7PgHVV7YCiRqAB/o4AFnkyDdZnBh6jL9gxiHc3JP+HDe/bgDZrj1gLQYB AYFecnlrXKZG7io3FQHoCibnTxPY3nNqEgd1dKynoVyKkWticgd4pTEZwZY6KVsB+cVU mwdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=WuWGhlTqvcrRftEQoI6Bwe0mAVzAYVjttEx003mpaSw=; b=ptRMLFegRCMhAaf2cgra2e403QczC4kMo1hjYmnkGFJ/iZGtkVipnXUGa/BMOjYLdH T/1ayWITE8OMfpEt6UmC6oWBH3LsbjAOWeHFekmvlmO1JOnhGCpYGI2wYB2JvKmjOG50 z/Zrs1KSoVoTW060UaI9g5PJlH6+6ZUnXXbvF8CL7Y5lo0Z0QbiI8i/9eZSlqCWDaAwo ysaEx7jDpDKuLGcCCeFuyjuAUPH/A4A4j7nWN+dhk9hcYvN3hslFFB/ydcyjxlKOdNEH 3qUw8yjH7TTcdbpN/rJ0FFOXAk09AJhtSdq3pxNhzZuEH13uR3L6CJ2Kl08skafq1drA gx9w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s9-20020a056402520900b0042a61d7bb9csi1529418edd.134.2022.07.08.11.05.09; Fri, 08 Jul 2022 11:05:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239022AbiGHRcs (ORCPT + 99 others); Fri, 8 Jul 2022 13:32:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36660 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238878AbiGHRcb (ORCPT ); Fri, 8 Jul 2022 13:32:31 -0400 Received: from pegase2.c-s.fr (pegase2.c-s.fr [93.17.235.10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2DD6713F3F for ; Fri, 8 Jul 2022 10:32:30 -0700 (PDT) Received: from localhost (mailhub3.si.c-s.fr [172.26.127.67]) by localhost (Postfix) with ESMTP id 4LfgML0sJ5z9tMJ; Fri, 8 Jul 2022 19:32:14 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from pegase2.c-s.fr ([172.26.127.65]) by localhost (pegase2.c-s.fr [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BQUelTkaowVs; Fri, 8 Jul 2022 19:32:14 +0200 (CEST) Received: from messagerie.si.c-s.fr (messagerie.si.c-s.fr [192.168.25.192]) by pegase2.c-s.fr (Postfix) with ESMTP id 4LfgMF3MNVz9tK2; Fri, 8 Jul 2022 19:32:09 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by messagerie.si.c-s.fr (Postfix) with ESMTP id 5A5668B7AB; Fri, 8 Jul 2022 19:32:09 +0200 (CEST) X-Virus-Scanned: amavisd-new at c-s.fr Received: from messagerie.si.c-s.fr ([127.0.0.1]) by localhost (messagerie.si.c-s.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id JnOCFygWxo9G; Fri, 8 Jul 2022 19:32:09 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (unknown [192.168.233.202]) by messagerie.si.c-s.fr (Postfix) with ESMTP id CFE3B8B7A7; Fri, 8 Jul 2022 19:32:08 +0200 (CEST) Received: from PO20335.IDSI0.si.c-s.fr (localhost [127.0.0.1]) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.16.1) with ESMTPS id 268HW4UZ1000740 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Fri, 8 Jul 2022 19:32:04 +0200 Received: (from chleroy@localhost) by PO20335.IDSI0.si.c-s.fr (8.17.1/8.17.1/Submit) id 268HW44Z1000739; Fri, 8 Jul 2022 19:32:04 +0200 X-Authentication-Warning: PO20335.IDSI0.si.c-s.fr: chleroy set sender to christophe.leroy@csgroup.eu using -f From: Christophe Leroy To: Michael Ellerman , Nicholas Piggin , sv@linux.ibm.com, agust@denx.de, jpoimboe@kernel.org, peterz@infradead.org, jbaron@akamai.com, rostedt@goodmis.org, ardb@kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com Cc: Christophe Leroy , linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, x86@kernel.org, chenzhongjin@huawei.com Subject: [PATCH v2 4/7] objtool/powerpc: Add necessary support for inline static calls Date: Fri, 8 Jul 2022 19:31:23 +0200 Message-Id: X-Mailer: git-send-email 2.36.1 In-Reply-To: References: MIME-Version: 1.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1657301483; l=1844; s=20211009; h=from:subject:message-id; bh=h/w5Vcb6J381cRqeAUanzND0Sl2M7NVgZjy5I1PaDkI=; b=aukkAQFCky7vDF/j+13U0Bq6dHU1lA5UHlqhTNh5pzv+mcnsoKZeet3BdCWegMC02m2hPLLQx49K oe78MV5ECbwIbsr9c7ta/y6VES1aA0XRQo70KXygCoXfRMM7dDBj X-Developer-Key: i=christophe.leroy@csgroup.eu; a=ed25519; pk=HIzTzUj91asvincQGOFx6+ZF5AoUuP9GdOtQChs7Mm0= Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_HELO_NONE, SPF_PASS,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 lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In order to support inline static calls for powerpc, objtool needs the following additions: - R_REL32 macro - Support for JUMP instruction used for tail calls Add the support of decoding branch instruction 'b' which is the jump instruction used for tail calls. This is because a static call can be a tail call. Signed-off-by: Christophe Leroy --- tools/objtool/arch/powerpc/decode.c | 16 ++++++++++------ tools/objtool/arch/powerpc/include/arch/elf.h | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/objtool/arch/powerpc/decode.c b/tools/objtool/arch/powerpc/decode.c index 06fc0206bf8e..ba84869cd134 100644 --- a/tools/objtool/arch/powerpc/decode.c +++ b/tools/objtool/arch/powerpc/decode.c @@ -59,13 +59,17 @@ int arch_decode_instruction(struct objtool_file *file, const struct section *sec opcode = insn >> 26; switch (opcode) { - case 18: /* bl */ - if ((insn & 3) == 1) { + case 18: /* bl/b */ + if ((insn & 3) == 1) *type = INSN_CALL; - *immediate = insn & 0x3fffffc; - if (*immediate & 0x2000000) - *immediate -= 0x4000000; - } + else if ((insn & 3) == 0) + *type = INSN_JUMP_UNCONDITIONAL; + else + break; + + *immediate = insn & 0x3fffffc; + if (*immediate & 0x2000000) + *immediate -= 0x4000000; break; } diff --git a/tools/objtool/arch/powerpc/include/arch/elf.h b/tools/objtool/arch/powerpc/include/arch/elf.h index 73f9ae172fe5..befc2e30d38b 100644 --- a/tools/objtool/arch/powerpc/include/arch/elf.h +++ b/tools/objtool/arch/powerpc/include/arch/elf.h @@ -6,5 +6,6 @@ #define R_NONE R_PPC_NONE #define R_ABS64 R_PPC64_ADDR64 #define R_ABS32 R_PPC_ADDR32 +#define R_REL32 R_PPC_REL32 /* R_PPC64_REL32 is identical */ #endif /* _OBJTOOL_ARCH_ELF */ -- 2.36.1