diff -ur uClibc-0.9.29/libc/inet/rpc/rcmd.c uClibc-0.9.29-patched/libc/inet/rpc/rcmd.c
--- uClibc-0.9.29/libc/inet/rpc/rcmd.c	2007-01-10 11:46:19.000000000 -0600
+++ uClibc-0.9.29-patched/libc/inet/rpc/rcmd.c	2007-05-09 18:05:21.638421151 -0500
@@ -126,7 +126,7 @@
 libc_hidden_proto(listen)
 libc_hidden_proto(sigsetmask)
 libc_hidden_proto(getc_unlocked)
-libc_hidden_proto(__fgetc_unlocked)
+//libc_hidden_proto(fgetc_unlocked)
 libc_hidden_proto(fopen)
 libc_hidden_proto(fclose)
 libc_hidden_proto(fprintf)
diff -ur uClibc-0.9.29/libc/inet/rpc/ruserpass.c uClibc-0.9.29-patched/libc/inet/rpc/ruserpass.c
--- uClibc-0.9.29/libc/inet/rpc/ruserpass.c	2006-03-23 05:14:16.000000000 -0600
+++ uClibc-0.9.29-patched/libc/inet/rpc/ruserpass.c	2007-05-09 18:05:21.638421151 -0500
@@ -63,7 +63,7 @@
 libc_hidden_proto(fopen)
 libc_hidden_proto(fclose)
 libc_hidden_proto(getc_unlocked)
-libc_hidden_proto(__fgetc_unlocked)
+//libc_hidden_proto(__fgetc_unlocked)
 
 #define _(X)  (X)
 /* #include "ftp_var.h" */
diff -ur uClibc-0.9.29/libc/misc/error/error.c uClibc-0.9.29-patched/libc/misc/error/error.c
--- uClibc-0.9.29/libc/misc/error/error.c	2006-05-04 09:44:13.000000000 -0500
+++ uClibc-0.9.29-patched/libc/misc/error/error.c	2007-05-09 18:05:21.646421810 -0500
@@ -30,11 +30,14 @@
 libc_hidden_proto(strerror)
 libc_hidden_proto(fprintf)
 libc_hidden_proto(exit)
+//#undef putc
 libc_hidden_proto(putc)
+libc_hidden_proto(fputc)
 libc_hidden_proto(vfprintf)
 libc_hidden_proto(fflush)
-libc_hidden_proto(fputc)
-libc_hidden_proto(__fputc_unlocked)
+//#ifdef __UCLIBC_HAS_STDIO_PUTC_MACRO__
+libc_hidden_proto(fputc_unlocked)
+//#endif
 
 /* This variable is incremented each time `error' is called.  */
 unsigned int error_message_count = 0;
diff -ur uClibc-0.9.29/libc/misc/ttyent/getttyent.c uClibc-0.9.29-patched/libc/misc/ttyent/getttyent.c
--- uClibc-0.9.29/libc/misc/ttyent/getttyent.c	2006-12-07 17:24:02.000000000 -0600
+++ uClibc-0.9.29-patched/libc/misc/ttyent/getttyent.c	2007-05-09 18:05:21.646421810 -0500
@@ -44,8 +44,10 @@
 libc_hidden_proto(__fsetlocking)
 libc_hidden_proto(rewind)
 libc_hidden_proto(fgets_unlocked)
+//#undef getc_unlocked
 libc_hidden_proto(getc_unlocked)
-libc_hidden_proto(__fgetc_unlocked)
+//#undef fgetc_unlocked
+libc_hidden_proto(fgetc_unlocked)
 libc_hidden_proto(fopen)
 libc_hidden_proto(fclose)
 libc_hidden_proto(abort)
diff -ur uClibc-0.9.29/libc/pwd_grp/pwd_grp.c uClibc-0.9.29-patched/libc/pwd_grp/pwd_grp.c
--- uClibc-0.9.29/libc/pwd_grp/pwd_grp.c	2007-04-13 03:32:18.000000000 -0500
+++ uClibc-0.9.29-patched/libc/pwd_grp/pwd_grp.c	2007-05-09 18:05:21.638421151 -0500
@@ -43,11 +43,12 @@
 libc_hidden_proto(strtoul)
 libc_hidden_proto(rewind)
 libc_hidden_proto(fgets_unlocked)
-libc_hidden_proto(__fputc_unlocked)
 libc_hidden_proto(sprintf)
 libc_hidden_proto(fopen)
 libc_hidden_proto(fclose)
 libc_hidden_proto(fprintf)
+//#undef fputc_unlocked
+libc_hidden_proto(fputc_unlocked)
 #ifdef __UCLIBC_HAS_XLOCALE__
 libc_hidden_proto(__ctype_b_loc)
 #elif __UCLIBC_HAS_CTYPE_TABLES__
@@ -801,7 +802,7 @@
 
 			do {
 				if (!*m) {
-					if (__fputc_unlocked('\n', f) >= 0) {
+					if (fputc_unlocked('\n', f) >= 0) {
 						rv = 0;
 					}
 					break;
@@ -867,7 +868,7 @@
 		goto DO_UNLOCK;
 	}
 
-	if (__fputc_unlocked('\n', stream) > 0) {
+	if (fputc_unlocked('\n', stream) > 0) {
 		rv = 0;
 	}
 
diff -ur uClibc-0.9.29/libc/stdio/_scanf.c uClibc-0.9.29-patched/libc/stdio/_scanf.c
--- uClibc-0.9.29/libc/stdio/_scanf.c	2007-01-20 12:32:10.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/_scanf.c	2007-05-09 18:05:21.642421481 -0500
@@ -86,7 +86,8 @@
 libc_hidden_proto(vsscanf)
 libc_hidden_proto(fclose)
 libc_hidden_proto(getc_unlocked)
-libc_hidden_proto(__fgetc_unlocked)
+//#undef fgetc_unlocked
+libc_hidden_proto(fgetc_unlocked)
 #ifdef __UCLIBC_HAS_WCHAR__
 libc_hidden_proto(wcslen)
 libc_hidden_proto(vfwscanf)
diff -ur uClibc-0.9.29/libc/stdio/fgetc.c uClibc-0.9.29-patched/libc/stdio/fgetc.c
--- uClibc-0.9.29/libc/stdio/fgetc.c	2006-01-15 16:41:03.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/fgetc.c	2007-05-09 18:05:21.642421481 -0500
@@ -13,13 +13,13 @@
 #undef getc
 #undef getc_unlocked
 
-libc_hidden_proto(__fgetc_unlocked)
+libc_hidden_proto(fgetc_unlocked)
 
 #ifdef __DO_UNLOCKED
 
 libc_hidden_proto(fflush_unlocked)
 
-int __fgetc_unlocked(FILE *stream)
+int fgetc_unlocked(FILE *stream)
 {
 	__STDIO_STREAM_VALIDATE(stream);
 
@@ -73,26 +73,22 @@
 
 	return EOF;
 }
-libc_hidden_def(__fgetc_unlocked)
-
-libc_hidden_proto(fgetc_unlocked)
-strong_alias(__fgetc_unlocked,fgetc_unlocked)
 libc_hidden_def(fgetc_unlocked)
 
 //libc_hidden_proto(__getc_unlocked)
-//strong_alias(__fgetc_unlocked,__getc_unlocked)
+//strong_alias(fgetc_unlocked,__getc_unlocked)
 //libc_hidden_def(__getc_unlocked)
 
 libc_hidden_proto(getc_unlocked)
-strong_alias(__fgetc_unlocked,getc_unlocked)
+strong_alias(fgetc_unlocked,getc_unlocked)
 libc_hidden_def(getc_unlocked)
 
 #ifndef __UCLIBC_HAS_THREADS__
 libc_hidden_proto(fgetc)
-strong_alias(__fgetc_unlocked,fgetc)
+strong_alias(fgetc_unlocked,fgetc)
 libc_hidden_def(fgetc)
 
-strong_alias(__fgetc_unlocked,getc)
+strong_alias(fgetc_unlocked,getc)
 #endif
 
 #elif defined __UCLIBC_HAS_THREADS__
diff -ur uClibc-0.9.29/libc/stdio/fgets.c uClibc-0.9.29-patched/libc/stdio/fgets.c
--- uClibc-0.9.29/libc/stdio/fgets.c	2006-01-15 16:41:03.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/fgets.c	2007-05-09 18:05:21.638421151 -0500
@@ -10,8 +10,7 @@
 libc_hidden_proto(fgets_unlocked)
 
 #ifdef __DO_UNLOCKED
-
-libc_hidden_proto(__fgetc_unlocked)
+libc_hidden_proto(fgetc_unlocked)
 
 char *fgets_unlocked(char *__restrict s, int n,
 					   register FILE * __restrict stream)
@@ -38,7 +37,7 @@
 				break;
 			}
 		} else {
-			if ((c = __fgetc_unlocked(stream)) == EOF) {
+			if ((c = fgetc_unlocked(stream)) == EOF) {
 				if (__FERROR_UNLOCKED(stream)) {
 					goto ERROR;
 				}
diff -ur uClibc-0.9.29/libc/stdio/fputc.c uClibc-0.9.29-patched/libc/stdio/fputc.c
--- uClibc-0.9.29/libc/stdio/fputc.c	2007-04-14 12:03:18.000000000 -0500
+++ uClibc-0.9.29-patched/libc/stdio/fputc.c	2007-05-09 20:50:51.350629927 -0500
@@ -16,7 +16,7 @@
 
 #ifdef __DO_UNLOCKED
 
-int __fputc_unlocked(int c, register FILE *stream)
+int fputc_unlocked(int c, register FILE *stream)
 {
 	__STDIO_STREAM_VALIDATE(stream);
 
@@ -70,22 +70,22 @@
  BAD:
 	return EOF;
 }
-libc_hidden_def(__fputc_unlocked)
+libc_hidden_def(fputc_unlocked)
 
 /* exposing these would be fundamentally *wrong*! fix you, instead! */
 /* libc_hidden_proto(fputc_unlocked) */
-strong_alias(__fputc_unlocked,fputc_unlocked)
+/* strong_alias(__fputc_unlocked,fputc_unlocked) */
 /* exposing these would be fundamentally *wrong*! fix you, instead! */
 /* libc_hidden_def(fputc_unlocked) */
 
 libc_hidden_proto(putc_unlocked)
-strong_alias(__fputc_unlocked,putc_unlocked)
+strong_alias(fputc_unlocked,putc_unlocked)
 libc_hidden_def(putc_unlocked)
 #ifndef __UCLIBC_HAS_THREADS__
-strong_alias(__fputc_unlocked,fputc)
+strong_alias(fputc_unlocked,fputc)
 
 libc_hidden_proto(putc)
-strong_alias(__fputc_unlocked,putc)
+strong_alias(fputc_unlocked,putc)
 libc_hidden_def(putc)
 #endif
 
diff -ur uClibc-0.9.29/libc/stdio/getchar.c uClibc-0.9.29-patched/libc/stdio/getchar.c
--- uClibc-0.9.29/libc/stdio/getchar.c	2006-12-19 22:30:25.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/getchar.c	2007-05-09 18:05:21.642421481 -0500
@@ -7,7 +7,8 @@
 
 #include "_stdio.h"
 
-libc_hidden_proto(__fgetc_unlocked)
+//#undef fgetc_unlocked
+libc_hidden_proto(fgetc_unlocked)
 
 #undef getchar
 #ifdef __DO_UNLOCKED
diff -ur uClibc-0.9.29/libc/stdio/getdelim.c uClibc-0.9.29-patched/libc/stdio/getdelim.c
--- uClibc-0.9.29/libc/stdio/getdelim.c	2006-02-13 02:52:46.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/getdelim.c	2007-05-09 18:05:21.642421481 -0500
@@ -11,8 +11,8 @@
 #include "_stdio.h"
 
 libc_hidden_proto(getdelim)
-
-libc_hidden_proto(__fgetc_unlocked)
+//#undef fgetc_unlocked
+libc_hidden_proto(fgetc_unlocked)
 
 /* Note: There is a defect in this function.  (size_t vs ssize_t). */
 
diff -ur uClibc-0.9.29/libc/stdio/old_vfprintf.c uClibc-0.9.29-patched/libc/stdio/old_vfprintf.c
--- uClibc-0.9.29/libc/stdio/old_vfprintf.c	2006-01-22 13:35:08.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/old_vfprintf.c	2007-05-09 18:05:21.642421481 -0500
@@ -149,7 +149,8 @@
 libc_hidden_proto(strnlen)
 libc_hidden_proto(memcpy)
 libc_hidden_proto(putc_unlocked)
-libc_hidden_proto(__fputc_unlocked)
+//#undef fputc_unlocked
+libc_hidden_proto(fputc_unlocked)
 libc_hidden_proto(__glibc_strerror_r)
 
 /*  #undef __UCLIBC_HAS_FLOATS__ */
diff -ur uClibc-0.9.29/libc/stdio/putchar.c uClibc-0.9.29-patched/libc/stdio/putchar.c
--- uClibc-0.9.29/libc/stdio/putchar.c	2006-01-13 18:58:03.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/putchar.c	2007-05-09 18:05:21.642421481 -0500
@@ -7,7 +7,8 @@
 
 #include "_stdio.h"
 
-libc_hidden_proto(__fputc_unlocked)
+//#undef fputc_unlocked
+libc_hidden_proto(fputc_unlocked)
 
 #undef putchar
 #ifdef __DO_UNLOCKED
diff -ur uClibc-0.9.29/libc/stdio/puts.c uClibc-0.9.29-patched/libc/stdio/puts.c
--- uClibc-0.9.29/libc/stdio/puts.c	2006-01-13 18:58:03.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/puts.c	2007-05-09 18:05:21.642421481 -0500
@@ -7,7 +7,8 @@
 
 #include "_stdio.h"
 
-libc_hidden_proto(__fputc_unlocked)
+//#undef fputc_unlocked
+libc_hidden_proto(fputc_unlocked)
 libc_hidden_proto(fputs_unlocked)
 
 int puts(register const char * __restrict s)
@@ -25,7 +26,7 @@
 	/* Note: Nonportable as fputs need only return nonnegative on success. */
 	if ((n = fputs_unlocked(s, stream)) != EOF) {
 		++n;
-		if (__fputc_unlocked('\n', stream) == EOF) {
+		if (fputc_unlocked('\n', stream) == EOF) {
 			n = EOF;
 		}
 	}
diff -ur uClibc-0.9.29/libc/stdio/putwchar.c uClibc-0.9.29-patched/libc/stdio/putwchar.c
--- uClibc-0.9.29/libc/stdio/putwchar.c	2006-01-14 14:16:19.000000000 -0600
+++ uClibc-0.9.29-patched/libc/stdio/putwchar.c	2007-05-09 18:05:21.642421481 -0500
@@ -22,7 +22,8 @@
 
 #elif defined __UCLIBC_HAS_THREADS__
 
-libc_hidden_proto(__fputc_unlocked)
+//#undef fputc_unlocked
+libc_hidden_proto(fputc_unlocked)
 /* psm: should this be fputwc? */
 libc_hidden_proto(fputc)
 
diff -ur uClibc-0.9.29/libc/sysdeps/linux/common/bits/uClibc_stdio.h uClibc-0.9.29-patched/libc/sysdeps/linux/common/bits/uClibc_stdio.h
--- uClibc-0.9.29/libc/sysdeps/linux/common/bits/uClibc_stdio.h	2007-01-28 07:16:58.000000000 -0600
+++ uClibc-0.9.29-patched/libc/sysdeps/linux/common/bits/uClibc_stdio.h	2007-05-09 20:56:02.408110608 -0500
@@ -381,33 +381,29 @@
 # define __FEOF(__stream)		__FEOF_UNLOCKED(__stream)
 #endif
 
-extern int __fgetc_unlocked(FILE *__stream);
-extern int __fputc_unlocked(int __c, FILE *__stream);
-
 /* First define the default definitions.
    They are overridden below as necessary. */
-#define __FGETC_UNLOCKED(__stream)		(__fgetc_unlocked)((__stream))
+#define __FGETC_UNLOCKED(__stream)		(fgetc_unlocked)((__stream))
 #define __FGETC(__stream)			(fgetc)((__stream))
-#define __GETC_UNLOCKED_MACRO(__stream)		(__fgetc_unlocked)((__stream))
-#define __GETC_UNLOCKED(__stream)		(__fgetc_unlocked)((__stream))
+#define __GETC_UNLOCKED_MACRO(__stream)		(fgetc_unlocked)((__stream))
+#define __GETC_UNLOCKED(__stream)		(fgetc_unlocked)((__stream))
 #define __GETC(__stream)			(fgetc)((__stream))
 
-#define __FPUTC_UNLOCKED(__c, __stream)		(__fputc_unlocked)((__c),(__stream))
+#define __FPUTC_UNLOCKED(__c, __stream)		(fputc_unlocked)((__c),(__stream))
 #define __FPUTC(__c, __stream)			(fputc)((__c),(__stream))
-#define __PUTC_UNLOCKED_MACRO(__c, __stream)	(__fputc_unlocked)((__c),(__stream))
-#define __PUTC_UNLOCKED(__c, __stream)		(__fputc_unlocked)((__c),(__stream))
+#define __PUTC_UNLOCKED_MACRO(__c, __stream)	(fputc_unlocked)((__c),(__stream))
+#define __PUTC_UNLOCKED(__c, __stream)		(fputc_unlocked)((__c),(__stream))
 #define __PUTC(__c, __stream)			(fputc)((__c),(__stream))
 
 
 #ifdef __STDIO_GETC_MACRO
-
 extern FILE *__stdin;			/* For getchar() macro. */
 
 # undef  __GETC_UNLOCKED_MACRO
 # define __GETC_UNLOCKED_MACRO(__stream)				\
 		( ((__stream)->__bufpos < (__stream)->__bufgetc_u)	\
 		  ? (*(__stream)->__bufpos++)				\
-		  : __fgetc_unlocked(__stream) )
+		  : fgetc_unlocked(__stream) )
 
 # if 0
 	/* Classic macro approach.  getc{_unlocked} can have side effects. */
@@ -453,20 +449,17 @@
 #  endif
 # endif
 
-#else
-
 #endif /* __STDIO_GETC_MACRO */
 
 
 #ifdef __STDIO_PUTC_MACRO
-
 extern FILE *__stdout;			/* For putchar() macro. */
 
 # undef  __PUTC_UNLOCKED_MACRO
 # define __PUTC_UNLOCKED_MACRO(__c, __stream)				\
 		( ((__stream)->__bufpos < (__stream)->__bufputc_u)	\
 		  ? (*(__stream)->__bufpos++) = (__c)			\
-		  : __fputc_unlocked((__c),(__stream)) )
+		  : (fputc_unlocked((__c),(__stream)) )
 
 # if 0
 	/* Classic macro approach.  putc{_unlocked} can have side effects.*/
@@ -489,7 +482,8 @@
 		}) )
 
 #  undef  __PUTC_UNLOCKED
-#  define __PUTC_UNLOCKED(__c, __stream)	__FPUTC_UNLOCKED((__c), (__stream))
+#  define __PUTC_UNLOCKED(__c, __stream)				\
+					__FPUTC_UNLOCKED((__c), (__stream))
 
 #  ifdef __UCLIBC_HAS_THREADS__
 #   undef  __FPUTC
diff -ur uClibc-0.9.29/libc/unistd/getpass.c uClibc-0.9.29-patched/libc/unistd/getpass.c
--- uClibc-0.9.29/libc/unistd/getpass.c	2006-07-05 05:58:38.000000000 -0500
+++ uClibc-0.9.29-patched/libc/unistd/getpass.c	2007-05-09 18:05:21.642421481 -0500
@@ -36,7 +36,8 @@
 libc_hidden_proto(fputs)
 libc_hidden_proto(fputc)
 libc_hidden_proto(putc)
-libc_hidden_proto(__fputc_unlocked)
+//#undef fputc_unlocked
+libc_hidden_proto(fputc_unlocked)
 
 /* It is desirable to use this bit on systems that have it.
    The only bit of terminal state we want to twiddle is echoing, which is
