]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
LoongArch: implemented a basic machine flag check
authorAlexey Sheplyakov <asheplyakov@basealt.ru>
Mon, 20 Mar 2023 14:45:02 +0000 (18:45 +0400)
committerMark Wielaard <mark@klomp.org>
Mon, 20 Mar 2023 22:33:40 +0000 (23:33 +0100)
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 <asheplyakov@basealt.ru>
backends/loongarch_init.c
backends/loongarch_symbol.c

index a8ed9e81dd3850a6cfd246a3bcaef9b7dfe829d9..59d8cc3dab3236a2153ef89eb1cde3100af3f4b4 100644 (file)
@@ -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;
 }
index 8ba66a09dc9307848521d229624aa2250a23e653..43306ab8b2d6c59d7521c0f7ee8f71ddb7acec79 100644 (file)
@@ -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);
+}