From b2871fa8d430e2c5fb39e3ebc6745ea32f1bddb4 Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov Date: Mon, 20 Mar 2023 18:45:02 +0400 Subject: LoongArch: implemented a basic machine flag check 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 * backends/loongarch_symbol.c (loongarch_init): Hook machine_flag_check. * backends/loongarch_symbol.c (loongarch_machine_flag_check): New function. https://sourceware.org/bugzilla/show_bug.cgi?id=30251 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); +} -- cgit v1.2.1