From 0e27d2cc10cdc305f4e4b745e2a8d5a8b9714962 Mon Sep 17 00:00:00 2001 From: mmitchel Date: Fri, 25 May 2001 01:14:56 +0000 Subject: [PATCH] * include/c_std/bits/std_cstring.h: #define away all global functions we will redeclare in namespace `std'. * libsupc++/eh_alloc.cc (__cxa_allocate_exception): Use std::memset, instead of memset. * testsuite/19_diagnostics/stdexceptions.cc: Use `std::strcmp', not plain `strcmp'. * testsuite/21_strings/c_strings.cc: Use `std::strcpy' instead of plain `strcpy'. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-3_0-branch@42551 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 11 ++ libstdc++-v3/include/c_std/bits/std_cstring.h | 125 ++++++++++++++++----- libstdc++-v3/libsupc++/eh_alloc.cc | 2 +- .../testsuite/19_diagnostics/stdexceptions.cc | 10 +- libstdc++-v3/testsuite/21_strings/c_strings.cc | 2 +- 5 files changed, 118 insertions(+), 32 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e4e557fd464..ae304e93a38 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +2001-05-24 Mark Mitchell + + * include/c_std/bits/std_cstring.h: #define away all global + functions we will redeclare in namespace `std'. + * libsupc++/eh_alloc.cc (__cxa_allocate_exception): Use + std::memset, instead of memset. + * testsuite/19_diagnostics/stdexceptions.cc: Use `std::strcmp', + not plain `strcmp'. + * testsuite/21_strings/c_strings.cc: Use `std::strcpy' instead of + plain `strcpy'. + 2001-05-24 Benjamin Kosnik libstdc++/2832 diff --git a/libstdc++-v3/include/c_std/bits/std_cstring.h b/libstdc++-v3/include/c_std/bits/std_cstring.h index 02b7cda8722..08c7b023ee3 100644 --- a/libstdc++-v3/include/c_std/bits/std_cstring.h +++ b/libstdc++-v3/include/c_std/bits/std_cstring.h @@ -41,11 +41,28 @@ // Need to mangle these "C" functions because C++ modifies their signature. -#define memchr __glibcpp_memchr -#define strchr __glibcpp_strchr +#define memcpy __glibcpp_memcpy +#define memmove __glibcpp_memmove +#define strcpy __glibcpp_strcpy +#define strncpy __glibcpp_strncpy +#define strcat __glibcpp_strcat +#define strncat __glibcpp_strncat +#define memcmp __glibcpp_memcmp +#define strcmp __glibcpp_strcmp +#define strcoll __glibcpp_strcoll +#define strncmp __glibcpp_strncmp +#define strxfrm __glibcpp_strxfrm +#define memchr __glibcpp_memchr +#define strchr __glibcpp_strchr +#define strcspn __glibcpp_strcspn #define strpbrk __glibcpp_strpbrk #define strrchr __glibcpp_strrchr -#define strstr __glibcpp_strstr +#define strspn __glibcpp_strspn +#define strstr __glibcpp_strstr +#define strtok __glibcpp_strtok +#define memset __glibcpp_memset +#define strerror __glibcpp_strerror +#define strlen __glibcpp_strlen #pragma GCC system_header #include @@ -76,53 +93,111 @@ namespace std { - extern "C" void* memcpy(void*, const void*, size_t); + inline void* + memcpy(void* __p1, const void* __p2, size_t __n) + { return __builtin_memcpy(__p1, __p2, __n); } + extern "C" void* memmove(void*, const void*, size_t); - extern "C" char* strcpy(char*, const char*); - extern "C" char* strncpy(char*, const char*, size_t); - extern "C" char* strcat(char*, const char*); - extern "C" char* strncat(char*, const char*, size_t); - extern "C" int memcmp(const void*, const void*, size_t); - extern "C" int strcmp(const char*, const char*); + + inline char* + strcpy(char* __s1, const char* __s2) + { return __builtin_strcpy(__s1, __s2); } + + inline char* + strncpy(char* __s1, const char* __s2, size_t __n) + { return __builtin_strncpy(__s1, __s2, __n); } + + inline char* + strcat(char* __s1, const char* __s2) + { return __builtin_strcat(__s1, __s2); } + + inline char* + strncat(char* __s1, const char* __s2, size_t __n) + { return __builtin_strncat(__s1, __s2, __n); } + + inline int + memcmp(const void* __p1, const void* __p2, size_t __n) + { return __builtin_memcmp(__p1, __p2, __n); } + + inline int + strcmp(const char* __s1, const char* __s2) + { return __builtin_strcmp(__s1, __s2); } + extern "C" int strcoll(const char*, const char*); - extern "C" int strncmp(const char*, const char*, size_t); + + inline int + strncmp(const char* __s1, const char* __s2, size_t __n) + { return __builtin_strncmp(__s1, __s2, __n); } + extern "C" size_t strxfrm(char*, const char*, size_t); extern "C" const void* memchr(const void*, int, size_t); + inline void* memchr(void* __p, int __c, size_t __n) { return const_cast(memchr(const_cast(__p), __c, __n)); } - extern "C" const char* strchr(const char*, int); + + inline const char* + strchr(const char* __s1, int __n) + { return const_cast(__builtin_strchr(__s1, __n)); } + inline char* strchr(char* __s1, int __n) { - return const_cast(strchr(const_cast(__s1), __n)); + return + const_cast(__builtin_strchr(const_cast(__s1), __n)); } - extern "C" size_t strcspn(const char*, const char*); - extern "C" const char* strpbrk(const char*, const char*); + + inline size_t + strcspn(const char* __s1, const char* __s2) + { return __builtin_strcspn(__s1, __s2); } + + inline const char* + strpbrk(const char* __s1, const char* __s2) + { return const_cast(__builtin_strpbrk(__s1, __s2)); } + inline char* strpbrk(char* __s1, const char* __s2) { - return const_cast(strpbrk(const_cast(__s1), __s2)); + return const_cast + (__builtin_strpbrk(const_cast(__s1), __s2)); } - extern "C" const char* strrchr(const char*, int); + + inline const char* + strrchr(const char* __s1, int __n) + { return const_cast(__builtin_strrchr(__s1, __n)); } + inline char* strrchr(char* __s1, int __n) - { - return const_cast(strrchr(const_cast(__s1), __n)); - } - extern "C" size_t strspn(const char*, const char*); - extern "C" const char* strstr(const char*, const char*); + { return __builtin_strrchr(const_cast(__s1), __n); } + + inline size_t + strspn(const char* __s1, const char* __s2) + { return __builtin_strspn(__s1, __s2); } + + inline const char* + strstr(const char* __s1, const char* __s2) + { return const_cast(__builtin_strstr (__s1, __s2)); } + inline char* strstr(char* __s1, const char* __s2) { - return const_cast(strstr(const_cast(__s1), __s2)); + return (const_cast + (__builtin_strstr(const_cast(__s1), __s2))); } + extern "C" char* strtok(char*, const char*); - extern "C" void* memset(void*, int, size_t); + + inline void* + memset(void* __p, int __c, size_t __n) + { return __builtin_memset(__p, __c, __n); } + extern "C" char* strerror(int); - extern "C" size_t strlen(const char*); + + inline size_t + strlen(const char* __s) + { return __builtin_strlen(__s); } } #endif diff --git a/libstdc++-v3/libsupc++/eh_alloc.cc b/libstdc++-v3/libsupc++/eh_alloc.cc index bbaa6f694a0..edfcb5e517e 100644 --- a/libstdc++-v3/libsupc++/eh_alloc.cc +++ b/libstdc++-v3/libsupc++/eh_alloc.cc @@ -133,7 +133,7 @@ __cxa_allocate_exception(std::size_t thrown_size) std::terminate (); } - memset (ret, 0, sizeof (__cxa_exception)); + std::memset (ret, 0, sizeof (__cxa_exception)); return (void *)((char *)ret + sizeof (__cxa_exception)); } diff --git a/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc b/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc index d5a20583977..de9663cb53f 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/stdexceptions.cc @@ -38,7 +38,7 @@ void test01() // 2 // std::logic_error obj((std::string)strlit); - VERIFY( strcmp(obj.what(), s.data()) == 0 ); + VERIFY( std::strcmp(obj.what(), s.data()) == 0 ); } void test02() @@ -47,7 +47,7 @@ void test02() std::string s("lack of sunlight error"); std::domain_error x(s); - VERIFY( strcmp(x.what(), s.data()) == 0 ); + VERIFY( std::strcmp(x.what(), s.data()) == 0 ); } // libstdc++/2089 @@ -64,7 +64,7 @@ void test03() try { throw fuzzy_logic(); } catch(const fuzzy_logic& obj) - { VERIFY( strcmp("whoa", obj.what()) == 0 ); } + { VERIFY( std::strcmp("whoa", obj.what()) == 0 ); } catch(...) { VERIFY( false ); } } @@ -93,7 +93,7 @@ void test04() obj1 = obj2; } allocate_on_stack(); - VERIFY( strcmp(strlit1, obj1.what()) == 0 ); + VERIFY( std::strcmp(strlit1, obj1.what()) == 0 ); // block 02 { @@ -102,7 +102,7 @@ void test04() obj1 = obj3; } allocate_on_stack(); - VERIFY( strcmp(strlit2, obj1.what()) == 0 ); + VERIFY( std::strcmp(strlit2, obj1.what()) == 0 ); } int main(void) diff --git a/libstdc++-v3/testsuite/21_strings/c_strings.cc b/libstdc++-v3/testsuite/21_strings/c_strings.cc index 7f6cd9fb5ef..82f3f8fa6c0 100644 --- a/libstdc++-v3/testsuite/21_strings/c_strings.cc +++ b/libstdc++-v3/testsuite/21_strings/c_strings.cc @@ -34,7 +34,7 @@ void test01() const char* ccarray1 = "san francisco roof garden inspectors"; const char* ccarray2 = "san francisco sunny-day park inspectors"; char carray[30]; - strcpy(carray, ccarray1); + std::strcpy(carray, ccarray1); void* v = carray; const void* cv = ccarray1; -- 2.11.4.GIT