+/* Fill the buffer with zero or short nop instruction if CODE is TRUE. */
+
+void *
+bfd_arch_i386_short_nop_fill (bfd_size_type count,
+ bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
+ bfd_boolean code)
+{
+ return bfd_arch_i386_fill (count, code, FALSE);
+}
+
+/* Fill the buffer with zero or long nop instruction if CODE is TRUE. */
+
+static void *
+bfd_arch_i386_long_nop_fill (bfd_size_type count,
+ bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
+ bfd_boolean code)
+{
+ return bfd_arch_i386_fill (count, code, TRUE);
+}
+
+/* Fill the buffer with zero, or one-byte nop instructions if CODE is TRUE. */
+
+static void *
+bfd_arch_i386_onebyte_nop_fill (bfd_size_type count,
+ bfd_boolean is_bigendian ATTRIBUTE_UNUSED,
+ bfd_boolean code)
+{
+ void *fill = bfd_malloc (count);
+ if (fill != NULL)
+ memset (fill, code ? 0x90 : 0, count);
+ return fill;
+}
+
+
+static const bfd_arch_info_type bfd_x64_32_nacl_arch =
+{
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_i386,
+ bfd_mach_x64_32_nacl,
+ "i386",
+ "i386:x64-32:nacl",
+ 3,
+ FALSE,
+ bfd_i386_compatible,
+ bfd_default_scan,
+ bfd_arch_i386_onebyte_nop_fill,
+ NULL
+};
+
+static const bfd_arch_info_type bfd_x86_64_nacl_arch =
+{
+ 64, /* 64 bits in a word */
+ 64, /* 64 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_i386,
+ bfd_mach_x86_64_nacl,
+ "i386",
+ "i386:x86-64:nacl",
+ 3,
+ FALSE,
+ bfd_i386_compatible,
+ bfd_default_scan,
+ bfd_arch_i386_onebyte_nop_fill,
+ &bfd_x64_32_nacl_arch
+};
+
+const bfd_arch_info_type bfd_i386_nacl_arch =
+{
+ 32, /* 32 bits in a word */
+ 32, /* 32 bits in an address */
+ 8, /* 8 bits in a byte */
+ bfd_arch_i386,
+ bfd_mach_i386_i386_nacl,
+ "i386",
+ "i386:nacl",
+ 3,
+ TRUE,
+ bfd_i386_compatible,
+ bfd_default_scan,
+ bfd_arch_i386_onebyte_nop_fill,
+ &bfd_x86_64_nacl_arch
+};
+