diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e7b94d1d6f389d013bc0b2b20228d21150798333..9d6b1eeb0ae784cd5d4731f6e1ca0c497d4a178c 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2000-05-10  Benjamin Kosnik  <bkoz@redhat.com>
+
+	Finish up FreeBSD4.0 support.
+	* config/bsd/ctype.cc: Scope out toupper, tolower calls.
+	* config/generic/ctype.cc: And here.
+	* testsuite/21_strings/char_traits.cc (test02): Guard with
+	_GLIBCPP_USE_WCHAR_T.
+
 2000-05-09  Benjamin Kosnik  <bkoz@gnu.org>
 
 	* acinclude.m4 (GLIBCPP_CHECK_CPU): Change powerpc bits to
diff --git a/libstdc++-v3/config/bsd/ctype.cc b/libstdc++-v3/config/bsd/ctype.cc
index 5695dcd300f635aa7cdd7498496848f8c6d16205..01a73157d266f5718a60fe460f7b6827524ba272 100644
--- a/libstdc++-v3/config/bsd/ctype.cc
+++ b/libstdc++-v3/config/bsd/ctype.cc
@@ -42,14 +42,14 @@
 
   char
   ctype<char>::do_toupper(char __c) const
-  { return toupper((int) __c); }
+  { return ::toupper((int) __c); }
 
   const char*
   ctype<char>::do_toupper(char* __low, const char* __high) const
   {
     while (__low < __high)
       {
-	*__low = toupper((int) *__low);
+	*__low = ::toupper((int) *__low);
 	++__low;
       }
     return __high;
@@ -57,14 +57,14 @@
 
   char
   ctype<char>::do_tolower(char __c) const
-  { return tolower((int) __c); }
+  { return ::tolower((int) __c); }
 
   const char* 
   ctype<char>::do_tolower(char* __low, const char* __high) const
   {
     while (__low < __high)
       {
-	*__low = tolower((int) *__low);
+	*__low = ::tolower((int) *__low);
 	++__low;
       }
     return __high;
diff --git a/libstdc++-v3/config/generic/ctype.cc b/libstdc++-v3/config/generic/ctype.cc
index dd7fc1a7704365a029f83d8e435ec64667278f96..0bf6b6be0400bf028b6f0a3a496e06f70ae2b8b6 100644
--- a/libstdc++-v3/config/generic/ctype.cc
+++ b/libstdc++-v3/config/generic/ctype.cc
@@ -42,14 +42,14 @@
 
   char
   ctype<char>::do_toupper(char __c) const
-  { return toupper((int) __c); }
+  { return ::toupper((int) __c); }
 
   const char*
   ctype<char>::do_toupper(char* __low, const char* __high) const
   {
     while (__low < __high)
       {
-	*__low = toupper((int) *__low);
+	*__low = ::toupper((int) *__low);
 	++__low;
       }
     return __high;
@@ -57,14 +57,14 @@
 
   char
   ctype<char>::do_tolower(char __c) const
-  { return tolower((int) __c); }
+  { return ::tolower((int) __c); }
 
   const char* 
   ctype<char>::do_tolower(char* __low, const char* __high) const
   {
     while (__low < __high)
       {
-	*__low = tolower((int) *__low);
+	*__low = ::tolower((int) *__low);
 	++__low;
       }
     return __high;
diff --git a/libstdc++-v3/testsuite/21_strings/char_traits.cc b/libstdc++-v3/testsuite/21_strings/char_traits.cc
index 493e4a70099b7a4de57f11b59ed3dcc4754bf22e..0ad8425c7bbd4b9d702697f12710242dcf952d66 100644
--- a/libstdc++-v3/testsuite/21_strings/char_traits.cc
+++ b/libstdc++-v3/testsuite/21_strings/char_traits.cc
@@ -109,6 +109,7 @@ int test01(void)
   return test;
 }
 
+#if _GLIBCPP_USE_WCHAR_T
 int test02(void)
 {
   bool test = true;
@@ -193,12 +194,14 @@ int test02(void)
 
   return test;
 }
-  
+#endif  //_GLIBCPP_USE_WCHAR_T
 
 int main()
 { 
   test01();
+#if _GLIBCPP_USE_WCHAR_T
   test02();
+#endif
 }