+const bfd_arch_info_type bfd_arc_arch =
+ ARC (bfd_mach_arc_arc600, "ARC600", TRUE, &arch_info_struct[0]);
+
+/* ARC-specific "compatible" function. The general rule is that if A and B are
+ compatible, then this function should return architecture that is more
+ "feature-rich", that is, can run both A and B. ARCv2, EM and HS all has
+ same mach number, so bfd_default_compatible assumes they are the same, and
+ returns an A. That causes issues with GDB, because GDB assumes that if
+ machines are compatible, then "compatible ()" always returns same machine
+ regardless of argument order. As a result GDB gets confused because, for
+ example, compatible (ARCv2, EM) returns ARCv2, but compatible (EM, ARCv2)
+ returns EM, hence GDB is not sure if they are compatible and prints a
+ warning. */
+
+static const bfd_arch_info_type *
+arc_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)