diff -urN binutils-2.27.orig/bfd/bfd-in.h binutils-2.27/bfd/bfd-in.h
--- binutils-2.27.orig/bfd/bfd-in.h	2016-08-03 09:36:50.000000000 +0200
+++ binutils-2.27/bfd/bfd-in.h	2016-09-21 21:13:49.177148600 +0200
@@ -137,7 +137,7 @@

 #if BFD_HOST_64BIT_LONG
 #define BFD_VMA_FMT "l"
-#elif defined (__MSVCRT__)
+#elif defined(__MSVCRT__) && !defined( __USE_MINGW_ANSI_STDIO)
 #define BFD_VMA_FMT "I64"
 #else
 #define BFD_VMA_FMT "ll"
diff -urN binutils-2.27.orig/bfd/bfd-in2.h binutils-2.27/bfd/bfd-in2.h
--- binutils-2.27.orig/bfd/bfd-in2.h	2016-08-03 09:36:50.000000000 +0200
+++ binutils-2.27/bfd/bfd-in2.h	2016-09-21 21:13:49.185161800 +0200
@@ -144,7 +144,7 @@

 #if BFD_HOST_64BIT_LONG
 #define BFD_VMA_FMT "l"
-#elif defined (__MSVCRT__)
+#elif defined (__MSVCRT__) && !defined(__USE_MINGW_ANSI_STDIO)
 #define BFD_VMA_FMT "I64"
 #else
 #define BFD_VMA_FMT "ll"
diff -urN binutils-2.27.orig/binutils/dwarf.c binutils-2.27/binutils/dwarf.c
--- binutils-2.27.orig/binutils/dwarf.c	2016-08-03 09:36:51.000000000 +0200
+++ binutils-2.27/binutils/dwarf.c	2016-09-21 21:13:49.210178100 +0200
@@ -164,7 +164,7 @@
 }

 #if defined HAVE_LONG_LONG && SIZEOF_LONG_LONG > SIZEOF_LONG
-# ifndef __MINGW32__
+#if !defined(__MSVCRT__) || defined(__USE_MINGW_ANSI_STDIO)
 #  define DWARF_VMA_FMT		"ll"
 #  define DWARF_VMA_FMT_LONG	"%16.16llx"
 # else
diff -urN binutils-2.27.orig/binutils/nm.c binutils-2.27/binutils/nm.c
--- binutils-2.27.orig/binutils/nm.c	2016-08-03 09:36:51.000000000 +0200
+++ binutils-2.27/binutils/nm.c	2016-09-21 21:13:49.221191400 +0200
@@ -1243,7 +1243,7 @@
 #if BFD_HOST_64BIT_LONG
       ;
 #elif BFD_HOST_64BIT_LONG_LONG
-#ifndef __MSVCRT__
+#if !defined(__MSVCRT__) || defined(__USE_MINGW_ANSI_STDIO)
       length = "ll";
 #else
       length = "I64";
diff -urN binutils-2.27.orig/binutils/prdbg.c binutils-2.27/binutils/prdbg.c
--- binutils-2.27.orig/binutils/prdbg.c	2016-08-03 09:36:51.000000000 +0200
+++ binutils-2.27/binutils/prdbg.c	2016-09-21 21:13:49.229194100 +0200
@@ -502,7 +502,7 @@
 #if BFD_HOST_64BIT_LONG_LONG
   else if (sizeof (vma) <= sizeof (unsigned long long))
     {
-#ifndef __MSVCRT__
+#if !defined(__MSVCRT__) || defined(__USE_MINGW_ANSI_STDIO)
       if (hexp)
 	sprintf (buf, "0x%llx", (unsigned long long) vma);
       else if (unsignedp)
diff -urN binutils-2.27.orig/binutils/strings.c binutils-2.27/binutils/strings.c
--- binutils-2.27.orig/binutils/strings.c	2016-08-03 09:36:51.000000000 +0200
+++ binutils-2.27/binutils/strings.c	2016-09-21 21:13:49.251195600 +0200
@@ -613,7 +613,7 @@
 #ifdef HAVE_LONG_LONG
 	    if (sizeof (start) > sizeof (long))
 	      {
-# ifndef __MSVCRT__
+# if !defined(__MSVCRT__) || defined(__USE_MINGW_ANSI_STDIO)
 		printf ("%7llo ", (unsigned long long) start);
 # else
 		printf ("%7I64o ", (unsigned long long) start);
@@ -632,7 +632,7 @@
 #ifdef HAVE_LONG_LONG
 	    if (sizeof (start) > sizeof (long))
 	      {
-# ifndef __MSVCRT__
+#if !defined(__MSVCRT__) || defined(__USE_MINGW_ANSI_STDIO)
 		printf ("%7llu ", (unsigned long long) start);
 # else
 		printf ("%7I64d ", (unsigned long long) start);
@@ -651,7 +651,7 @@
 #ifdef HAVE_LONG_LONG
 	    if (sizeof (start) > sizeof (long))
 	      {
-# ifndef __MSVCRT__
+# if !defined(__MSVCRT__) || defined(__USE_MINGW_ANSI_STDIO)
 		printf ("%7llx ", (unsigned long long) start);
 # else
 		printf ("%7I64x ", (unsigned long long) start);
diff -urN binutils-2.27.orig/gas/as.h binutils-2.27/gas/as.h
--- binutils-2.27.orig/gas/as.h	2016-08-03 09:36:51.000000000 +0200
+++ binutils-2.27/gas/as.h	2016-09-21 21:25:33.955958500 +0200
@@ -438,10 +438,10 @@

 #define PRINTF_LIKE(FCN) \
   void FCN (const char *format, ...) \
-    __attribute__ ((__format__ (__printf__, 1, 2)))
+    __attribute__ ((__format__ (gnu_printf, 1, 2)))
 #define PRINTF_WHERE_LIKE(FCN) \
   void FCN (const char *file, unsigned int line, const char *format, ...) \
-    __attribute__ ((__format__ (__printf__, 3, 4)))
+    __attribute__ ((__format__ (gnu_printf, 3, 4)))

 #else /* __GNUC__ < 2 || defined(VMS) */

diff -urN binutils-2.27.orig/gas/read.c binutils-2.27/gas/read.c
--- binutils-2.27.orig/gas/read.c	2016-08-03 09:36:51.000000000 +0200
+++ binutils-2.27/gas/read.c	2016-09-21 21:13:49.262196200 +0200
@@ -4415,7 +4415,7 @@
 	{
 	  /* Leading bits contain both 0s & 1s.  */
 #if defined (BFD64) && BFD_HOST_64BIT_LONG_LONG
-#ifndef __MSVCRT__
+#if !defined(__MSVCRT__) || defined(__USE_MINGW_ANSI_STDIO)
 	  as_warn (_("value 0x%llx truncated to 0x%llx"),
 		   (unsigned long long) get, (unsigned long long) use);
 #else
diff -urN binutils-2.27.orig/gold/configure binutils-2.27/gold/configure
--- binutils-2.27.orig/gold/configure	2016-08-03 09:36:53.000000000 +0200
+++ binutils-2.27/gold/configure	2016-09-21 21:13:49.306197900 +0200
@@ -7558,7 +7558,7 @@
 /* end confdefs.h.  */

 template<typename T> extern void foo(const char*, ...)
-  __attribute__ ((__format__ (__printf__, 1, 2)));
+  __attribute__ ((__format__ (gnu_printf, 1, 2)));
 template<typename T> void foo(const char* format, ...) {}
 void bar() { foo<int>("%s\n", "foo"); }

diff -urN binutils-2.27.orig/gold/configure.ac binutils-2.27/gold/configure.ac
--- binutils-2.27.orig/gold/configure.ac	2016-08-03 09:36:53.000000000 +0200
+++ binutils-2.27/gold/configure.ac	2016-09-21 21:13:49.317584300 +0200
@@ -635,7 +635,7 @@
 [gold_cv_template_attribute],
 [AC_COMPILE_IFELSE([
 template<typename T> extern void foo(const char*, ...)
-  __attribute__ ((__format__ (__printf__, 1, 2)));
+  __attribute__ ((__format__ (gnu_printf, 1, 2)));
 template<typename T> void foo(const char* format, ...) {}
 void bar() { foo<int>("%s\n", "foo"); }
 ], [gold_cv_template_attribute=yes], [gold_cv_template_attribute=no])])
diff -urN binutils-2.27.orig/include/ansidecl.h binutils-2.27/include/ansidecl.h
--- binutils-2.27.orig/include/ansidecl.h	2016-08-03 09:36:53.000000000 +0200
+++ binutils-2.27/include/ansidecl.h	2016-09-21 21:13:49.327082000 +0200
@@ -195,7 +195,7 @@
    before GCC 3.3, but as of 3.3 we need to add the `nonnull'
    attribute to retain this behavior.  */
 #ifndef ATTRIBUTE_PRINTF
-#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) ATTRIBUTE_NONNULL(m)
+#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (gnu_printf, m, n))) ATTRIBUTE_NONNULL(m)
 #define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
 #define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
 #define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
@@ -223,7 +223,7 @@
    NULL format specifier was allowed as of gcc 3.3.  */
 #ifndef ATTRIBUTE_NULL_PRINTF
 # if (GCC_VERSION >= 3003)
-#  define ATTRIBUTE_NULL_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
+#  define ATTRIBUTE_NULL_PRINTF(m, n) __attribute__ ((__format__ (gnu_printf, m, n)))
 # else
 #  define ATTRIBUTE_NULL_PRINTF(m, n)
 # endif /* GNUC >= 3.3 */
