This fixes the "invalid machine flag" error from eu-elflint when passing
hexagon binaries.
* backends/hexagon_init.c (hexagon_init): Hook
machine_flag_check
* backends/hexagon_symbol.c (hexagon_machine_flag_check):
new function
* libelf/elf-knowledge.h: add EF_HEXAGON_TINY constant
Signed-off-by: Matheus Tavares Bernardino <quic_mathbern@quicinc.com>
{
hexagon_init_reloc (eh);
HOOK (eh, reloc_simple_type);
+ HOOK (eh, machine_flag_check);
return eh;
}
return ELF_T_NUM;
}
}
+
+bool
+hexagon_machine_flag_check (GElf_Word flags)
+{
+ GElf_Word reserved_flags = ~(EF_HEXAGON_TINY | EF_HEXAGON_MACH);
+ return (flags & reserved_flags) == 0;
+}
#define EF_HEXAGON_MACH_V71T 0x00008071 /* Hexagon V71T */
#define EF_HEXAGON_MACH_V73 0x00000073 /* Hexagon V73 */
#define EF_HEXAGON_MACH 0x000003ff /* Hexagon V.. */
+#define EF_HEXAGON_TINY 0x00008000 /* Hexagon V..T */
/* Special section indices. */
#define SHN_HEXAGON_SCOMMON 0xff00 /* Other access sizes */