diff --git a/newlib/libc/include/wchar.h b/newlib/libc/include/wchar.h
index 251aa62..d5fc26f 100644
--- a/newlib/libc/include/wchar.h
+++ b/newlib/libc/include/wchar.h
@@ -71,8 +71,10 @@ size_t	_EXFUN(mbrtowc, (wchar_t *__restrict, const char *__restrict, size_t,
 size_t	_EXFUN(_mbrtowc_r, (struct _reent *, wchar_t * , const char * , 
 			size_t, mbstate_t *));
 int	_EXFUN(mbsinit, (const mbstate_t *));
+#if __POSIX_VISIBLE >= 200809
 size_t	_EXFUN(mbsnrtowcs, (wchar_t *__restrict, const char **__restrict,
 				size_t, size_t, mbstate_t *__restrict));
+#endif
 size_t	_EXFUN(_mbsnrtowcs_r, (struct _reent *, wchar_t * , const char ** ,
 			size_t, size_t, mbstate_t *));
 size_t	_EXFUN(mbsrtowcs, (wchar_t *__restrict, const char **__restrict, size_t,
@@ -80,23 +82,29 @@ size_t	_EXFUN(mbsrtowcs, (wchar_t *__restrict, const char **__restrict, size_t,
 size_t	_EXFUN(_mbsrtowcs_r, (struct _reent *, wchar_t * , const char ** , size_t, mbstate_t *));
 size_t	_EXFUN(wcrtomb, (char *__restrict, wchar_t, mbstate_t *__restrict));
 size_t	_EXFUN(_wcrtomb_r, (struct _reent *, char * , wchar_t, mbstate_t *));
+#if __POSIX_VISIBLE >= 200809
 size_t	_EXFUN(wcsnrtombs, (char *__restrict, const wchar_t **__restrict,
 				size_t, size_t, mbstate_t *__restrict));
+#endif
 size_t	_EXFUN(_wcsnrtombs_r, (struct _reent *, char * , const wchar_t ** , 
 			size_t, size_t, mbstate_t *));
 size_t	_EXFUN(wcsrtombs, (char *__restrict, const wchar_t **__restrict,
 				size_t, mbstate_t *__restrict));
 size_t	_EXFUN(_wcsrtombs_r, (struct _reent *, char * , const wchar_t ** , 
 			size_t, mbstate_t *));
+#if __POSIX_VISIBLE >= 200809
 int	_EXFUN(wcscasecmp, (const wchar_t *, const wchar_t *));
+#endif
 wchar_t	*_EXFUN(wcscat, (wchar_t *__restrict, const wchar_t *__restrict));
 wchar_t	*_EXFUN(wcschr, (const wchar_t *, wchar_t));
 int	_EXFUN(wcscmp, (const wchar_t *, const wchar_t *));
 int	_EXFUN(wcscoll, (const wchar_t *, const wchar_t *));
 wchar_t	*_EXFUN(wcscpy, (wchar_t *__restrict, const wchar_t *__restrict));
+#if __POSIX_VISIBLE >= 200809
 wchar_t	*_EXFUN(wcpcpy, (wchar_t *__restrict,
 				 const wchar_t *__restrict));
 wchar_t	*_EXFUN(wcsdup, (const wchar_t *));
+#endif
 wchar_t	*_EXFUN(_wcsdup_r, (struct _reent *, const wchar_t * ));
 size_t	_EXFUN(wcscspn, (const wchar_t *, const wchar_t *));
 size_t  _EXFUN(wcsftime, (wchar_t *__restrict, size_t,
@@ -104,15 +112,19 @@ size_t  _EXFUN(wcsftime, (wchar_t *__restrict, size_t,
 size_t	_EXFUN(wcslcat, (wchar_t *, const wchar_t *, size_t));
 size_t	_EXFUN(wcslcpy, (wchar_t *, const wchar_t *, size_t));
 size_t	_EXFUN(wcslen, (const wchar_t *));
+#if __POSIX_VISIBLE >= 200809
 int	_EXFUN(wcsncasecmp, (const wchar_t *, const wchar_t *, size_t));
+#endif
 wchar_t	*_EXFUN(wcsncat, (wchar_t *__restrict,
 				 const wchar_t *__restrict, size_t));
 int	_EXFUN(wcsncmp, (const wchar_t *, const wchar_t *, size_t));
 wchar_t	*_EXFUN(wcsncpy, (wchar_t *__restrict,
 				 const wchar_t *__restrict, size_t));
+#if __POSIX_VISIBLE >= 200809
 wchar_t	*_EXFUN(wcpncpy, (wchar_t *__restrict,
 				 const wchar_t *__restrict, size_t));
 size_t	_EXFUN(wcsnlen, (const wchar_t *, size_t));
+#endif
 wchar_t	*_EXFUN(wcspbrk, (const wchar_t *, const wchar_t *));
 wchar_t	*_EXFUN(wcsrchr, (const wchar_t *, wchar_t));
 size_t	_EXFUN(wcsspn, (const wchar_t *, const wchar_t *));
@@ -122,12 +134,18 @@ wchar_t	*_EXFUN(wcstok, (wchar_t *__restrict, const wchar_t *__restrict,
 				 wchar_t **__restrict));
 double _EXFUN(wcstod, (const wchar_t *__restrict, wchar_t **__restrict));
 double _EXFUN(_wcstod_r, (struct _reent *, const wchar_t *, wchar_t **));
+#if __ISO_C_VISIBLE >= 1999
 float _EXFUN(wcstof, (const wchar_t *__restrict, wchar_t **__restrict));
+#endif
 float _EXFUN(_wcstof_r, (struct _reent *, const wchar_t *, wchar_t **));
+#if __XSI_VISIBLE
 int	_EXFUN(wcswidth, (const wchar_t *, size_t));
+#endif
 size_t	_EXFUN(wcsxfrm, (wchar_t *__restrict, const wchar_t *__restrict,
 				size_t));
+#if __XSI_VISIBLE
 int	_EXFUN(wcwidth, (const wchar_t));
+#endif
 wchar_t	*_EXFUN(wmemchr, (const wchar_t *, wchar_t, size_t));
 int	_EXFUN(wmemcmp, (const wchar_t *, const wchar_t *, size_t));
 wchar_t	*_EXFUN(wmemcpy, (wchar_t *__restrict, const wchar_t *__restrict,
@@ -136,23 +154,31 @@ wchar_t	*_EXFUN(wmemmove, (wchar_t *, const wchar_t *, size_t));
 wchar_t	*_EXFUN(wmemset, (wchar_t *, wchar_t, size_t));
 
 long    _EXFUN(wcstol, (const wchar_t *__restrict, wchar_t **__restrict, int));
+#if __ISO_C_VISIBLE >= 1999
 long long _EXFUN(wcstoll, (const wchar_t *__restrict, wchar_t **__restrict,
 				  int));
+#endif
 unsigned long _EXFUN(wcstoul, (const wchar_t *__restrict, wchar_t **__restrict,
 					  int));
+#if __ISO_C_VISIBLE >= 1999
 unsigned long long _EXFUN(wcstoull, (const wchar_t *__restrict,
 						   wchar_t **__restrict, int));
+#endif
 long    _EXFUN(_wcstol_r, (struct _reent *, const wchar_t *, wchar_t **, int));
 long long _EXFUN(_wcstoll_r, (struct _reent *, const wchar_t *, wchar_t **, int));
 unsigned long _EXFUN(_wcstoul_r, (struct _reent *, const wchar_t *, wchar_t **, int));
 unsigned long long _EXFUN(_wcstoull_r, (struct _reent *, const wchar_t *, wchar_t **, int));
+#if __ISO_C_VISIBLE >= 1999
 long double _EXFUN(wcstold, (const wchar_t *, wchar_t **));
+#endif
 
 wint_t _EXFUN(fgetwc, (__FILE *));
 wchar_t *_EXFUN(fgetws, (wchar_t *__restrict, int, __FILE *__restrict));
 wint_t _EXFUN(fputwc, (wchar_t, __FILE *));
 int _EXFUN(fputws, (const wchar_t *__restrict, __FILE *__restrict));
+#if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500
 int _EXFUN (fwide, (__FILE *, int));
+#endif
 wint_t _EXFUN (getwc, (__FILE *));
 wint_t _EXFUN (getwchar, (void));
 wint_t _EXFUN(putwc, (wchar_t, __FILE *));
@@ -202,6 +228,7 @@ __FILE *_EXFUN (_open_wmemstream_r, (struct _reent *, wchar_t **, size_t *));
 #endif
 #endif
 
+#if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500
 int	_EXFUN(fwprintf, (__FILE *__restrict, const wchar_t *__restrict, ...));
 int	_EXFUN(swprintf, (wchar_t *__restrict, size_t,
 			const wchar_t *__restrict, ...));
@@ -211,6 +238,7 @@ int	_EXFUN(vswprintf, (wchar_t *__restrict, size_t,
 			const wchar_t *__restrict, __VALIST));
 int	_EXFUN(vwprintf, (const wchar_t *__restrict, __VALIST));
 int	_EXFUN(wprintf, (const wchar_t *__restrict, ...));
+#endif
 
 int	_EXFUN(_fwprintf_r, (struct _reent *, __FILE *, const wchar_t *, ...));
 int	_EXFUN(_swprintf_r, (struct _reent *, wchar_t *, size_t, const wchar_t *, ...));
@@ -219,6 +247,7 @@ int	_EXFUN(_vswprintf_r, (struct _reent *, wchar_t *, size_t, const wchar_t *, _
 int	_EXFUN(_vwprintf_r, (struct _reent *, const wchar_t *, __VALIST));
 int	_EXFUN(_wprintf_r, (struct _reent *, const wchar_t *, ...));
 
+#if __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE >= 500
 int	_EXFUN(fwscanf, (__FILE *__restrict, const wchar_t *__restrict, ...));
 int	_EXFUN(swscanf, (const wchar_t *__restrict,
 			const wchar_t *__restrict, ...));
@@ -228,6 +257,7 @@ int	_EXFUN(vswscanf, (const wchar_t *__restrict, const wchar_t *__restrict,
 			__VALIST));
 int	_EXFUN(vwscanf, (const wchar_t *__restrict, __VALIST));
 int	_EXFUN(wscanf, (const wchar_t *__restrict, ...));
+#endif
 
 int	_EXFUN(_fwscanf_r, (struct _reent *, __FILE *, const wchar_t *, ...));
 int	_EXFUN(_swscanf_r, (struct _reent *, const wchar_t *, const wchar_t *, ...));
