+
+/* Return non-zero if architecture A can run code written for
+ architecture B. */
+static int
+can_run_code_for (const struct bfd_arch_info *a, const struct bfd_arch_info *b)
+{
+ /* BFD's 'A->compatible (A, B)' functions return zero if A and B are
+ incompatible. But if they are compatible, it returns the 'more
+ featureful' of the two arches. That is, if A can run code
+ written for B, but B can't run code written for A, then it'll
+ return A.
+
+ struct bfd_arch_info objects are atoms: that is, there's supposed
+ to be exactly one instance for a given machine. So you can tell
+ whether two are equivalent by comparing pointers. */
+ return (a == b || a->compatible (a, b) == a);
+}
+
+