diff --git a/lib/libc/minimal/include/bits/restrict.h b/lib/libc/minimal/include/bits/restrict.h
index 892a600..989ec46 100644
--- a/lib/libc/minimal/include/bits/restrict.h
+++ b/lib/libc/minimal/include/bits/restrict.h
@@ -6,20 +6,20 @@
 
 /**
  * @file
- * @brief _Restrict definition
+ * @brief _MLIBC_RESTRICT definition
  *
- * The macro "_Restrict" is intended to be private to the minimal libc library.
- * It evaluates to the "restrict" keyword when a C99 compiler is used, and
- * to "__restrict__" when a C++ compiler is used.
+ * The macro "_MLIBC_RESTRICT" is intended to be private to the minimal libc
+ * library.  It evaluates to the "restrict" keyword when a C99 compiler is
+ * used, and to "__restrict__" when a C++ compiler is used.
  */
 
-#if !defined(_Restrict_defined)
-#define _Restrict_defined
+#if !defined(_MLIBC_RESTRICT_defined)
+#define _MLIBC_RESTRICT_defined
 
 #ifdef __cplusplus
-	#define _Restrict __restrict__
+	#define _MLIBC_RESTRICT __restrict__
 #else
-	#define _Restrict restrict
+	#define _MLIBC_RESTRICT restrict
 #endif
 
 #endif
diff --git a/lib/libc/minimal/include/stdio.h b/lib/libc/minimal/include/stdio.h
index 3b47d18..425dedd 100644
--- a/lib/libc/minimal/include/stdio.h
+++ b/lib/libc/minimal/include/stdio.h
@@ -35,22 +35,28 @@
  * declared below.
  */
 
-int printf(const char *_Restrict fmt, ...);
-int snprintf(char *_Restrict s, size_t len, const char *_Restrict fmt, ...);
-int sprintf(char *_Restrict s, const char *_Restrict fmt, ...);
-int fprintf(FILE *_Restrict stream, const char *_Restrict format, ...);
+int printf(const char *_MLIBC_RESTRICT fmt, ...);
+int snprintf(char *_MLIBC_RESTRICT s, size_t len,
+	     const char *_MLIBC_RESTRICT fmt, ...);
+int sprintf(char *_MLIBC_RESTRICT s, const char *_MLIBC_RESTRICT fmt, ...);
+int fprintf(FILE *_MLIBC_RESTRICT stream,
+	    const char *_MLIBC_RESTRICT format, ...);
 
 
-int vprintf(const char *_Restrict fmt, va_list list);
-int vsnprintf(char *_Restrict s, size_t len, const char *_Restrict fmt, va_list list);
-int vsprintf(char *_Restrict s, const char *_Restrict fmt, va_list list);
-int vfprintf(FILE *_Restrict stream, const char *_Restrict format, va_list ap);
+int vprintf(const char *_MLIBC_RESTRICT fmt, va_list list);
+int vsnprintf(char *_MLIBC_RESTRICT s, size_t len,
+	      const char *_MLIBC_RESTRICT fmt, va_list list);
+int vsprintf(char *_MLIBC_RESTRICT s,
+	     const char *_MLIBC_RESTRICT fmt, va_list list);
+int vfprintf(FILE *_MLIBC_RESTRICT stream, const char *_MLIBC_RESTRICT format,
+	     va_list ap);
 
 int puts(const char *s);
 
 int fputc(int c, FILE *stream);
-int fputs(const char *_Restrict s, FILE *_Restrict stream);
-size_t fwrite(const void *_Restrict ptr, size_t size, size_t nitems, FILE *_Restrict stream);
+int fputs(const char *_MLIBC_RESTRICT s, FILE *_MLIBC_RESTRICT stream);
+size_t fwrite(const void *_MLIBC_RESTRICT ptr, size_t size, size_t nitems,
+	      FILE *_MLIBC_RESTRICT stream);
 
 #ifdef __cplusplus
 }
diff --git a/lib/libc/minimal/include/string.h b/lib/libc/minimal/include/string.h
index df2451b..f17b051 100644
--- a/lib/libc/minimal/include/string.h
+++ b/lib/libc/minimal/include/string.h
@@ -16,20 +16,24 @@
 extern "C" {
 #endif
 
-extern char  *strcpy(char *_Restrict d, const char *_Restrict s);
-extern char  *strncpy(char *_Restrict d, const char *_Restrict s, size_t n);
+extern char  *strcpy(char *_MLIBC_RESTRICT d, const char *_MLIBC_RESTRICT s);
+extern char  *strncpy(char *_MLIBC_RESTRICT d, const char *_MLIBC_RESTRICT s,
+		      size_t n);
 extern char  *strchr(const char *s, int c);
 extern char  *strrchr(const char *s, int c);
 extern size_t strlen(const char *s);
 extern int    strcmp(const char *s1, const char *s2);
 extern int    strncmp(const char *s1, const char *s2, size_t n);
-extern char *strcat(char *_Restrict dest, const char *_Restrict src);
-extern char  *strncat(char *_Restrict d, const char *_Restrict s, size_t n);
+extern char *strcat(char *_MLIBC_RESTRICT dest,
+		    const char *_MLIBC_RESTRICT src);
+extern char  *strncat(char *_MLIBC_RESTRICT d, const char *_MLIBC_RESTRICT s,
+		      size_t n);
 extern char *strstr(const char *s, const char *find);
 
 extern int    memcmp(const void *m1, const void *m2, size_t n);
 extern void  *memmove(void *d, const void *s, size_t n);
-extern void  *memcpy(void *_Restrict d, const void *_Restrict s, size_t n);
+extern void  *memcpy(void *_MLIBC_RESTRICT d, const void *_MLIBC_RESTRICT s,
+		     size_t n);
 extern void  *memset(void *buf, int c, size_t n);
 extern void  *memchr(const void *s, unsigned char c, size_t n);
 
diff --git a/lib/libc/minimal/source/stdout/fprintf.c b/lib/libc/minimal/source/stdout/fprintf.c
index 9147351..a75f70b 100644
--- a/lib/libc/minimal/source/stdout/fprintf.c
+++ b/lib/libc/minimal/source/stdout/fprintf.c
@@ -14,7 +14,7 @@
 extern int _prf(int (*func)(), void *dest,
 				const char *format, va_list vargs);
 
-int fprintf(FILE *_Restrict F, const char *_Restrict format, ...)
+int fprintf(FILE *_MLIBC_RESTRICT F, const char *_MLIBC_RESTRICT format, ...)
 {
 	va_list vargs;
 	int     r;
@@ -26,7 +26,8 @@
 	return r;
 }
 
-int vfprintf(FILE *_Restrict F, const char *_Restrict format, va_list vargs)
+int vfprintf(FILE *_MLIBC_RESTRICT F, const char *_MLIBC_RESTRICT format,
+	     va_list vargs)
 {
 	int r;
 
@@ -35,7 +36,7 @@
 	return r;
 }
 
-int printf(const char *_Restrict format, ...)
+int printf(const char *_MLIBC_RESTRICT format, ...)
 {
 	va_list vargs;
 	int     r;
@@ -47,7 +48,7 @@
 	return r;
 }
 
-int vprintf(const char *_Restrict format, va_list vargs)
+int vprintf(const char *_MLIBC_RESTRICT format, va_list vargs)
 {
 	int r;
 
diff --git a/lib/libc/minimal/source/stdout/sprintf.c b/lib/libc/minimal/source/stdout/sprintf.c
index 5cd8a30..caac895 100644
--- a/lib/libc/minimal/source/stdout/sprintf.c
+++ b/lib/libc/minimal/source/stdout/sprintf.c
@@ -27,7 +27,8 @@
 	return 0; /* indicate keep going so we get the total count */
 }
 
-int snprintf(char *_Restrict s, size_t len, const char *_Restrict format, ...)
+int snprintf(char *_MLIBC_RESTRICT s, size_t len,
+	     const char *_MLIBC_RESTRICT format, ...)
 {
 	va_list vargs;
 
@@ -50,7 +51,7 @@
 	return r;
 }
 
-int sprintf(char *_Restrict s, const char *_Restrict format, ...)
+int sprintf(char *_MLIBC_RESTRICT s, const char *_MLIBC_RESTRICT format, ...)
 {
 	va_list vargs;
 
@@ -68,7 +69,8 @@
 	return r;
 }
 
-int vsnprintf(char *_Restrict s, size_t len, const char *_Restrict format, va_list vargs)
+int vsnprintf(char *_MLIBC_RESTRICT s, size_t len,
+	      const char *_MLIBC_RESTRICT format, va_list vargs)
 {
 	struct emitter p;
 	int     r;
@@ -87,7 +89,8 @@
 	return r;
 }
 
-int vsprintf(char *_Restrict s, const char *_Restrict format, va_list vargs)
+int vsprintf(char *_MLIBC_RESTRICT s, const char *_MLIBC_RESTRICT format,
+	     va_list vargs)
 {
 	struct emitter p;
 	int     r;
diff --git a/lib/libc/minimal/source/stdout/stdout_console.c b/lib/libc/minimal/source/stdout/stdout_console.c
index aabee1a..b99ba93 100644
--- a/lib/libc/minimal/source/stdout/stdout_console.c
+++ b/lib/libc/minimal/source/stdout/stdout_console.c
@@ -27,7 +27,7 @@
 	return (stdout == stream) ? _stdout_hook(c) : EOF;
 }
 
-int fputs(const char *_Restrict string, FILE *_Restrict stream)
+int fputs(const char *_MLIBC_RESTRICT string, FILE *_MLIBC_RESTRICT stream)
 {
 	if (stream != stdout) {
 		return EOF;
@@ -43,8 +43,8 @@
 	return 0;
 }
 
-size_t fwrite(const void *_Restrict ptr, size_t size, size_t nitems,
-			  FILE *_Restrict stream)
+size_t fwrite(const void *_MLIBC_RESTRICT ptr, size_t size, size_t nitems,
+			  FILE *_MLIBC_RESTRICT stream)
 {
 	size_t i;
 	size_t j;
diff --git a/lib/libc/minimal/source/string/string.c b/lib/libc/minimal/source/string/string.c
index d318839..aa7ec04 100644
--- a/lib/libc/minimal/source/string/string.c
+++ b/lib/libc/minimal/source/string/string.c
@@ -15,7 +15,7 @@
  * @return pointer to destination buffer <d>
  */
 
-char *strcpy(char *_Restrict d, const char *_Restrict s)
+char *strcpy(char *_MLIBC_RESTRICT d, const char *_MLIBC_RESTRICT s)
 {
 	char *dest = d;
 
@@ -37,7 +37,7 @@
  * @return pointer to destination buffer <d>
  */
 
-char *strncpy(char *_Restrict d, const char *_Restrict s, size_t n)
+char *strncpy(char *_MLIBC_RESTRICT d, const char *_MLIBC_RESTRICT s, size_t n)
 {
 	char *dest = d;
 
@@ -148,13 +148,14 @@
 	return (n == 0) ? 0 : (*s1 - *s2);
 }
 
-char *strcat(char *_Restrict dest, const char *_Restrict src)
+char *strcat(char *_MLIBC_RESTRICT dest, const char *_MLIBC_RESTRICT src)
 {
 	strcpy(dest + strlen(dest), src);
 	return dest;
 }
 
-char *strncat(char *_Restrict dest, const char *_Restrict src, size_t n)
+char *strncat(char *_MLIBC_RESTRICT dest, const char *_MLIBC_RESTRICT src,
+	      size_t n)
 {
 	char *orig_dest = dest;
 	size_t len = strlen(dest);
@@ -232,7 +233,7 @@
  * @return pointer to start of destination buffer
  */
 
-void *memcpy(void *_Restrict d, const void *_Restrict s, size_t n)
+void *memcpy(void *_MLIBC_RESTRICT d, const void *_MLIBC_RESTRICT s, size_t n)
 {
 	/* attempt word-sized copying only if buffers have identical alignment */
 
