From patchwork Mon Mar 20 14:45:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexey Sheplyakov X-Patchwork-Id: 66640 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E4F503858413 for ; Mon, 20 Mar 2023 14:44:47 +0000 (GMT) X-Original-To: elfutils-devel@sourceware.org Delivered-To: elfutils-devel@sourceware.org Received: from air.basealt.ru (air.basealt.ru [194.107.17.39]) by sourceware.org (Postfix) with ESMTPS id 847113858413 for ; Mon, 20 Mar 2023 14:44:41 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 847113858413 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=basealt.ru Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=basealt.ru Received: by air.basealt.ru (Postfix, from userid 490) id 93CDF2F2022A; Mon, 20 Mar 2023 14:44:40 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-Spam-Level: X-Spam-Status: No, score=-11.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 Received: from asheplyakov-rocket.. (unknown [193.43.9.250]) by air.basealt.ru (Postfix) with ESMTPSA id 214942F20238; Mon, 20 Mar 2023 14:44:30 +0000 (UTC) From: Alexey Sheplyakov To: elfutils-devel@sourceware.org Cc: Alexey Sheplyakov Subject: [PATCH] LoongArch: implemented a basic machine flag check Date: Mon, 20 Mar 2023 18:45:02 +0400 Message-Id: <20230320144502.3807720-1-asheplyakov@basealt.ru> X-Mailer: git-send-email 2.33.5 MIME-Version: 1.0 X-BeenThere: elfutils-devel@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Elfutils-devel mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , Errors-To: elfutils-devel-bounces+patchwork=sourceware.org@sourceware.org Sender: "Elfutils-devel" With this patch I can use eu-elflint to verify LoongArch ELF binaries. Previously eu-elflint was complaining about invalid machine flags: $ ./src/elflint --gnu-ld ./src/elflint invalid machine flags: 0x43 $ echo $? 1 Signed-off-by: Alexey Sheplyakov --- backends/loongarch_init.c | 1 + backends/loongarch_symbol.c | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/backends/loongarch_init.c b/backends/loongarch_init.c index a8ed9e81..59d8cc3d 100644 --- a/backends/loongarch_init.c +++ b/backends/loongarch_init.c @@ -45,6 +45,7 @@ loongarch_init (Elf *elf __attribute__ ((unused)), { loongarch_init_reloc (eh); HOOK (eh, reloc_simple_type); + HOOK (eh, machine_flag_check); return eh; } diff --git a/backends/loongarch_symbol.c b/backends/loongarch_symbol.c index 8ba66a09..43306ab8 100644 --- a/backends/loongarch_symbol.c +++ b/backends/loongarch_symbol.c @@ -72,3 +72,10 @@ loongarch_reloc_simple_type (Ebl *ebl __attribute__ ((unused)), int type, return ELF_T_NUM; } } + +bool +loongarch_machine_flag_check (GElf_Word flags) +{ + return ((flags &~ (EF_LARCH_ABI_MODIFIER_MASK + | EF_LARCH_OBJABI_V1)) == 0); +}