Fix for clang -fsyntax-only happens to see the same header as host gcc

Also make mount.h and later included fs.h consistent, define MAP_ANON
to literal, and undef MIN/MAX befor re-definition, etc, etc

Change-Id: I19b92b8f998a0f79983d7cbecec6a49ef3e92b1c
diff --git a/lib/gcc/x86_64-linux/4.6.x-google/include/emmintrin.h b/lib/gcc/x86_64-linux/4.6.x-google/include/emmintrin.h
index fe4cd6a..96949b2 100644
--- a/lib/gcc/x86_64-linux/4.6.x-google/include/emmintrin.h
+++ b/lib/gcc/x86_64-linux/4.6.x-google/include/emmintrin.h
@@ -47,6 +47,99 @@
 typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
 typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
 
+#if defined(__clang__) && defined(WITH_SYNTAX_CHECK)
+/* Workaround for "clang -fsyntax-only" happens to use this header, but may
+ * choke on something not supported in clang
+ */
+__m128d __builtin_ia32_addpd (__v2df, __v2df);
+__m128d __builtin_ia32_addsd (__v2df, __v2df);
+__m128d __builtin_ia32_andnpd (__v2df, __v2df);
+__m128d __builtin_ia32_andpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpeqpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpeqsd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpgepd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpgtpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmplepd (__v2df, __v2df);
+__m128d __builtin_ia32_cmplesd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpltpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpltsd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpneqpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpneqsd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpngepd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpngtpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpnlepd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpnlesd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpnltpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpnltsd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpordpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpordsd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpunordpd (__v2df, __v2df);
+__m128d __builtin_ia32_cmpunordsd (__v2df, __v2df);
+__m128d __builtin_ia32_cvtsi2sd (__v2df, int);
+__m128d __builtin_ia32_cvtss2sd (__v2df, __v4sf);
+__m128d __builtin_ia32_divpd (__v2df, __v2df);
+__m128d __builtin_ia32_divsd (__v2df, __v2df);
+__m128d __builtin_ia32_loadhpd (__v2df, double const *);
+__m128d __builtin_ia32_loadlpd (__v2df, double const *);
+__m128d __builtin_ia32_movsd (__v2df, __v2df);
+__m128d __builtin_ia32_mulpd (__v2df, __v2df);
+__m128d __builtin_ia32_mulsd (__v2df, __v2df);
+__m128d __builtin_ia32_orpd (__v2df, __v2df);
+__m128d __builtin_ia32_shufpd (__v2df, __v2df, const int);
+__m128d __builtin_ia32_subpd (__v2df, __v2df);
+__m128d __builtin_ia32_subsd (__v2df, __v2df);
+__m128d __builtin_ia32_unpckhpd (__v2df, __v2df);
+__m128d __builtin_ia32_unpcklpd (__v2df, __v2df);
+__m128d __builtin_ia32_xorpd (__v2df, __v2df);
+__m128i  __builtin_ia32_loaddqu (char const *);
+__m128i __builtin_ia32_movq128 (__v2di);
+__m128i __builtin_ia32_paddb128 (__v16qi, __v16qi);
+__m128i __builtin_ia32_paddd128 (__v4si, __v4si);
+__m128i __builtin_ia32_paddq128 (__v2di, __v2di);
+__m128i __builtin_ia32_paddw128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_pand128 (__v2di, __v2di);
+__m128i __builtin_ia32_pandn128 (__v2di, __v2di);
+__m128i __builtin_ia32_pcmpeqb128 (__v16qi, __v16qi);
+__m128i __builtin_ia32_pcmpeqd128 (__v4si, __v4si);
+__m128i __builtin_ia32_pcmpeqw128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_pcmpgtb128 (__v16qi, __v16qi);
+__m128i __builtin_ia32_pcmpgtb128 (__v16qi, __v16qi);
+__m128i __builtin_ia32_pcmpgtd128 (__v4si, __v4si);
+__m128i __builtin_ia32_pcmpgtd128 (__v4si, __v4si);
+__m128i __builtin_ia32_pcmpgtw128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_pcmpgtw128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_pmullw128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_por128 (__v2di, __v2di);
+__m128i __builtin_ia32_pshufd (__v4si, const int);
+__m128i __builtin_ia32_pshufhw (__v8hi, const int);
+__m128i __builtin_ia32_pshuflw (__v8hi, const int);
+__m128i __builtin_ia32_pslldqi128 (__m128i, const int);
+__m128i __builtin_ia32_psrldqi128 (__m128i, const int);
+__m128i __builtin_ia32_psubb128 (__v16qi, __v16qi);
+__m128i __builtin_ia32_psubd128 (__v4si, __v4si);
+__m128i __builtin_ia32_psubq128 (__v2di, __v2di);
+__m128i __builtin_ia32_psubw128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_punpckhbw128 (__v16qi, __v16qi);
+__m128i __builtin_ia32_punpckhdq128 (__v4si, __v4si);
+__m128i __builtin_ia32_punpckhqdq128 (__v2di, __v2di);
+__m128i __builtin_ia32_punpckhwd128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_punpcklbw128 (__v16qi, __v16qi);
+__m128i __builtin_ia32_punpckldq128 (__v4si, __v4si);
+__m128i __builtin_ia32_punpcklqdq128 (__v2di, __v2di);
+__m128i __builtin_ia32_punpcklwd128 (__v8hi, __v8hi);
+__m128i __builtin_ia32_pxor128 (__v2di, __v2di);
+__m128i __builtin_ia32_vec_set_v8hi (__v8hi, const int, const int);
+__m128d __builtin_ia32_loadupd (double const *);
+int __builtin_ia32_cvttsd2si (__v2df);
+double __builtin_ia32_vec_ext_v2df (__m128d, const int);
+int __builtin_ia32_vec_ext_v4si (__v4si, const int);
+__m128 __builtin_ia32_cvtsd2ss (__v4sf, __v2df);
+long long __builtin_ia32_vec_ext_v2di (__v2di, const int);
+unsigned short __builtin_ia32_vec_ext_v8hi (__v8hi, const int);
+long long __builtin_ia32_cvttsd2si64 (__v2df);
+__m128d __builtin_ia32_cvtsi642sd (__v2df, long long);
+#endif
+
 /* Create a selector for use with the SHUFPD instruction.  */
 #define _MM_SHUFFLE2(fp1,fp0) \
  (((fp1) << 1) | (fp0))
@@ -1142,7 +1235,7 @@
   return (__m128i)__builtin_ia32_psradi128 ((__v4si)__A, __B);
 }
 
-#ifdef __OPTIMIZE__
+#if defined(__OPTIMIZE__) && !defined(__clang__)
 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_srli_si128 (__m128i __A, const int __N)
 {
diff --git a/lib/gcc/x86_64-linux/4.6.x-google/include/mmintrin.h b/lib/gcc/x86_64-linux/4.6.x-google/include/mmintrin.h
index 497e22e..e54072b 100644
--- a/lib/gcc/x86_64-linux/4.6.x-google/include/mmintrin.h
+++ b/lib/gcc/x86_64-linux/4.6.x-google/include/mmintrin.h
@@ -31,6 +31,13 @@
 #ifndef __MMX__
 # error "MMX instruction set not enabled"
 #else
+#if defined(__clang__) && defined(WITH_SYNTAX_CHECK)
+/* Workaround for "clang -fsyntax-only" happens to use this header, but may
+ * choke on something not supported
+ */
+#define __artificial__   pure
+#endif
+
 /* The Intel API is flexible enough that we must allow aliasing with other
    vector types, and their scalar components.  */
 typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));
diff --git a/lib/gcc/x86_64-linux/4.6.x-google/include/xmmintrin.h b/lib/gcc/x86_64-linux/4.6.x-google/include/xmmintrin.h
index 5aefa9d..3ad8266 100644
--- a/lib/gcc/x86_64-linux/4.6.x-google/include/xmmintrin.h
+++ b/lib/gcc/x86_64-linux/4.6.x-google/include/xmmintrin.h
@@ -45,6 +45,67 @@
 /* Internal data types for implementing the intrinsics.  */
 typedef float __v4sf __attribute__ ((__vector_size__ (16)));
 
+#if defined(__clang__) && defined(WITH_SYNTAX_CHECK)
+/* Workaround for "clang -fsyntax-only" happens to use this header, but may
+ * choke on something not supported in clang
+ */
+int __builtin_ia32_cvtss2si (__v4sf);
+int __builtin_ia32_cvttss2si (__v4sf);
+__m128 __builtin_ia32_addps (__v4sf, __v4sf);
+__m128 __builtin_ia32_addss (__v4sf, __v4sf);
+__m128 __builtin_ia32_addss (__v4sf, __v4sf);
+__m128 __builtin_ia32_addss (__v4sf, __v4sf);
+__m128 __builtin_ia32_andnps (__m128, __m128);
+__m128 __builtin_ia32_andps (__m128, __m128);
+__m128 __builtin_ia32_cmpeqps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpeqss (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpgeps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpgtps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpleps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpless (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpltps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpltss (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpneqps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpneqss (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpngeps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpngtps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpnleps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpnless (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpnltps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpnltss (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpordps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpordss (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpunordps (__v4sf, __v4sf);
+__m128 __builtin_ia32_cmpunordss (__v4sf, __v4sf);
+__m128 __builtin_ia32_cvtsi2ss (__v4sf, int);
+__m128 __builtin_ia32_divps (__v4sf, __v4sf);
+__m128 __builtin_ia32_divss (__v4sf, __v4sf);
+__m128 __builtin_ia32_movss (__v4sf, __v4sf);
+__m128 __builtin_ia32_mulps (__v4sf, __v4sf);
+__m128 __builtin_ia32_mulps (__v4sf, __v4sf);
+__m128 __builtin_ia32_mulss (__v4sf, __v4sf);
+__m128 __builtin_ia32_mulss (__v4sf, __v4sf);
+__m128 __builtin_ia32_orps (__m128, __m128);
+__m128 __builtin_ia32_subps (__v4sf, __v4sf);
+__m128 __builtin_ia32_subss (__v4sf, __v4sf);
+__m128 __builtin_ia32_subss (__v4sf, __v4sf);
+__m128 __builtin_ia32_xorps (__m128, __m128);
+__m128 __builtin_ia32_loadhps (__v4sf, const __v2sf *);
+__m128 __builtin_ia32_loadlps (__v4sf, const __v2sf *);
+__m128 __builtin_ia32_movhlps (__v4sf, __v4sf);
+__m128 __builtin_ia32_movlhps (__v4sf, __v4sf);
+__m128 __builtin_ia32_shufps (__v4sf, __v4sf, int const);
+__m128 __builtin_ia32_unpckhps (__v4sf, __v4sf);
+__m128 __builtin_ia32_unpcklps (__v4sf, __v4sf);
+__m128 __builtin_ia32_loadups (float const *);
+__m64 __builtin_ia32_vec_set_v4hi (__v4hi, int const, int const);
+float __builtin_ia32_vec_ext_v4sf (__v4sf, const int);
+int __builtin_ia32_vec_ext_v4hi (__v4hi, const int);
+long long __builtin_ia32_cvtss2si64 (__v4sf);
+long long __builtin_ia32_cvttss2si64 (__v4sf);
+__m128 __builtin_ia32_cvtsi642ss (__v4sf, long long);
+#endif
+
 /* Create a selector for use with the SHUFPS instruction.  */
 #define _MM_SHUFFLE(fp3,fp2,fp1,fp0) \
  (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | (fp0))
@@ -749,7 +810,11 @@
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_storeh_pi (__m64 *__P, __m128 __A)
 {
+#if defined(__clang__)
+  __builtin_ia32_storehps ((__v2si *)__P, __A);
+#else
   __builtin_ia32_storehps ((__v2sf *)__P, (__v4sf)__A);
+#endif
 }
 
 /* Moves the upper two values of B into the lower two values of A.  */
@@ -778,7 +843,11 @@
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_storel_pi (__m64 *__P, __m128 __A)
 {
+#if defined(__clang__)
+  __builtin_ia32_storelps ((__v2si *)__P, __A);
+#else
   __builtin_ia32_storelps ((__v2sf *)__P, (__v4sf)__A);
+#endif
 }
 
 /* Creates a 4-bit mask from the most significant bits of the SPFP values.  */
@@ -1109,7 +1178,7 @@
 
 /* Return a combination of the four 16-bit values in A.  The selector
    must be an immediate.  */
-#ifdef __OPTIMIZE__
+#if defined(__OPTIMIZE__) && !defined(__clang__)
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_shuffle_pi16 (__m64 __A, int const __N)
 {
@@ -1186,7 +1255,7 @@
 
 /* Loads one cache line from address P to a location "closer" to the
    processor.  The selector I specifies the type of prefetch operation.  */
-#ifdef __OPTIMIZE__
+#if defined(__OPTIMIZE__) && !defined(__clang__)
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_prefetch (const void *__P, enum _mm_hint __I)
 {
@@ -1201,7 +1270,13 @@
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_stream_pi (__m64 *__P, __m64 __A)
 {
+#if defined(__clang__)
+  /* Note that __m64 in gcc is defined as "int" instead of "long long", and fail clang. */
+  typedef long long __m64_clang __attribute__((__vector_size__(8)));
+  __builtin_ia32_movntq ((__m64_clang *)__P, __A);
+#else
   __builtin_ia32_movntq ((unsigned long long *)__P, (unsigned long long)__A);
+#endif
 }
 
 /* Likewise.  The address must be 16-byte aligned.  */
diff --git a/sysroot/usr/include/assert.h b/sysroot/usr/include/assert.h
index 8989713..900db32 100644
--- a/sysroot/usr/include/assert.h
+++ b/sysroot/usr/include/assert.h
@@ -49,6 +49,7 @@
 
 #ifdef	NDEBUG
 
+#undef assert
 # define assert(expr)		(__ASSERT_VOID_CAST (0))
 
 /* void assert_perror (int errnum);
diff --git a/sysroot/usr/include/bits/mman.h b/sysroot/usr/include/bits/mman.h
index 535c9ed..e71a52c 100644
--- a/sysroot/usr/include/bits/mman.h
+++ b/sysroot/usr/include/bits/mman.h
@@ -51,7 +51,7 @@
 #ifdef __USE_MISC
 # define MAP_FILE	0
 # define MAP_ANONYMOUS	0x20		/* Don't use a file.  */
-# define MAP_ANON	MAP_ANONYMOUS
+# define MAP_ANON	0x20
 # define MAP_32BIT	0x40		/* Only give out 32-bit addresses.  */
 #endif
 
diff --git a/sysroot/usr/include/linux/fs.h b/sysroot/usr/include/linux/fs.h
index c0d5afe..ac00eb3 100644
--- a/sysroot/usr/include/linux/fs.h
+++ b/sysroot/usr/include/linux/fs.h
@@ -130,12 +130,13 @@
 /*
  * Superblock flags that can be altered by MS_REMOUNT
  */
+#undef MS_RMT_MASK
 #define MS_RMT_MASK	(MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK)
 
 /*
  * Old magic mount flag and mask
  */
-#define MS_MGC_VAL 0xC0ED0000
+#define MS_MGC_VAL 0xc0ed0000
 #define MS_MGC_MSK 0xffff0000
 
 /* Inode flags - they have nothing to superblock flags now */
diff --git a/sysroot/usr/include/sys/mount.h b/sysroot/usr/include/sys/mount.h
index b305549..b839bd7 100644
--- a/sysroot/usr/include/sys/mount.h
+++ b/sysroot/usr/include/sys/mount.h
@@ -25,8 +25,9 @@
 #include <features.h>
 #include <sys/ioctl.h>
 
-#define BLOCK_SIZE	1024
+
 #define BLOCK_SIZE_BITS	10
+#define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
 
 
 /* These are the fs-independent mount-flags: up to 16 flags are
@@ -34,31 +35,18 @@
 enum
 {
   MS_RDONLY = 1,		/* Mount read-only.  */
-#define MS_RDONLY	MS_RDONLY
   MS_NOSUID = 2,		/* Ignore suid and sgid bits.  */
-#define MS_NOSUID	MS_NOSUID
   MS_NODEV = 4,			/* Disallow access to device special files.  */
-#define MS_NODEV	MS_NODEV
   MS_NOEXEC = 8,		/* Disallow program execution.  */
-#define MS_NOEXEC	MS_NOEXEC
   MS_SYNCHRONOUS = 16,		/* Writes are synced at once.  */
-#define MS_SYNCHRONOUS	MS_SYNCHRONOUS
   MS_REMOUNT = 32,		/* Alter flags of a mounted FS.  */
-#define MS_REMOUNT	MS_REMOUNT
   MS_MANDLOCK = 64,		/* Allow mandatory locks on an FS.  */
-#define MS_MANDLOCK	MS_MANDLOCK
   S_WRITE = 128,		/* Write on file/directory/symlink.  */
-#define S_WRITE		S_WRITE
   S_APPEND = 256,		/* Append-only file.  */
-#define S_APPEND	S_APPEND
   S_IMMUTABLE = 512,		/* Immutable file.  */
-#define S_IMMUTABLE	S_IMMUTABLE
   MS_NOATIME = 1024,		/* Do not update access times.  */
-#define MS_NOATIME	MS_NOATIME
   MS_NODIRATIME = 2048,		/* Do not update directory access times.  */
-#define MS_NODIRATIME	MS_NODIRATIME
   MS_BIND = 4096,		/* Bind directory at different place.  */
-#define MS_BIND		MS_BIND
 };
 
 /* Flags that can be altered by MS_REMOUNT  */
@@ -76,21 +64,21 @@
    is probably as bad and I don't want to create yet another include
    file.  */
 
-#define BLKROSET   _IO(0x12, 93) /* Set device read-only (0 = read-write).  */
-#define BLKROGET   _IO(0x12, 94) /* Get read-only status (0 = read_write).  */
-#define BLKRRPART  _IO(0x12, 95) /* Re-read partition table.  */
-#define BLKGETSIZE _IO(0x12, 96) /* Return device size.  */
-#define BLKFLSBUF  _IO(0x12, 97) /* Flush buffer cache.  */
-#define BLKRASET   _IO(0x12, 98) /* Set read ahead for block device.  */
-#define BLKRAGET   _IO(0x12, 99) /* Get current read ahead setting.  */
-#define BLKFRASET  _IO(0x12,100) /* Set filesystem read-ahead.  */
-#define BLKFRAGET  _IO(0x12,101) /* Get filesystem read-ahead.  */
-#define BLKSECTSET _IO(0x12,102) /* Set max sectors per request.  */
-#define BLKSECTGET _IO(0x12,103) /* Get max sectors per request.  */
-#define BLKSSZGET  _IO(0x12,104) /* Get block device sector size.  */
+#define BLKROSET   _IO(0x12,93)	/* set device read-only (0 = read-write) */
+#define BLKROGET   _IO(0x12,94)	/* get read-only status (0 = read_write) */
+#define BLKRRPART  _IO(0x12,95)	/* re-read partition table */
+#define BLKGETSIZE _IO(0x12,96)	/* return device size /512 (long *arg) */
+#define BLKFLSBUF  _IO(0x12,97)	/* flush buffer cache */
+#define BLKRASET   _IO(0x12,98)	/* set read ahead for block device */
+#define BLKRAGET   _IO(0x12,99)	/* get current read ahead setting */
+#define BLKFRASET  _IO(0x12,100)/* set filesystem (mm/filemap.c) read-ahead */
+#define BLKFRAGET  _IO(0x12,101)/* get filesystem (mm/filemap.c) read-ahead */
+#define BLKSECTSET _IO(0x12,102)/* set max sectors per request (ll_rw_blk.c) */
+#define BLKSECTGET _IO(0x12,103)/* get max sectors per request (ll_rw_blk.c) */
+#define BLKSSZGET  _IO(0x12,104)/* get block device sector size */
 #define BLKBSZGET  _IOR(0x12,112,size_t)
 #define BLKBSZSET  _IOW(0x12,113,size_t)
-#define BLKGETSIZE64 _IOR(0x12,114,size_t) /* return device size.  */
+#define BLKGETSIZE64 _IOR(0x12,114,size_t)	/* return device size in bytes (u64 *arg) */
 
 
 /* Possible value for FLAGS parameter of `umount2'.  */
diff --git a/sysroot/usr/include/sys/param.h b/sysroot/usr/include/sys/param.h
index 0b0424e..3b4fcdd 100644
--- a/sysroot/usr/include/sys/param.h
+++ b/sysroot/usr/include/sys/param.h
@@ -61,7 +61,9 @@
 #define powerof2(x)	((((x) - 1) & (x)) == 0)
 
 /* Macros for min/max.  */
+#undef MIN
 #define	MIN(a,b) (((a)<(b))?(a):(b))
+#undef MAX
 #define	MAX(a,b) (((a)>(b))?(a):(b))
 
 
diff --git a/sysroot/usr/include/unistd.h b/sysroot/usr/include/unistd.h
index 476c1f3..3035582 100644
--- a/sysroot/usr/include/unistd.h
+++ b/sysroot/usr/include/unistd.h
@@ -1051,6 +1051,7 @@
 /* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno'
    set to EINTR.  */
 
+#undef TEMP_FAILURE_RETRY
 # define TEMP_FAILURE_RETRY(expression) \
   (__extension__							      \
     ({ long int __result;						      \