diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 1cb24266d93..0892217731e 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2004-08-26  Paul Brook  <paul@codesourcery.com>
+
+	* INTERWORK_FLAG: Return true for EABIv3 objects.
+
 2004-08-26  Alan Modra  <amodra@bigpond.net.au>
 
 	* elf32-m32r.c (m32r_elf_relocate_section): Don't compare with
diff --git a/bfd/elf32-arm.h b/bfd/elf32-arm.h
index 6fd68e6afc7..17521836b8a 100644
--- a/bfd/elf32-arm.h
+++ b/bfd/elf32-arm.h
@@ -25,8 +25,10 @@
 typedef unsigned long int insn32;
 typedef unsigned short int insn16;
 
+/* In leiu of proper flags, assume all EABIv3 objects are interworkable.  */
 #define INTERWORK_FLAG(abfd)  \
-  (elf_elfheader (abfd)->e_flags & EF_ARM_INTERWORK)
+  (EF_ARM_EABI_VERSION (elf_elfheader (abfd)->e_flags) == EF_ARM_EABI_VER3 \
+  || (elf_elfheader (abfd)->e_flags & EF_ARM_INTERWORK))
 
 /* The linker script knows the section names for placement.
    The entry_names are used to do simple name mangling on the stubs.