diff options
author | Loren J. Rittle <ljrittle@acm.org> | 2004-03-09 01:21:36 +0000 |
---|---|---|
committer | Loren J. Rittle <ljrittle@acm.org> | 2004-03-09 01:21:36 +0000 |
commit | 73f6f3229f24b825d3242741b6d1285fbdbfa055 (patch) | |
tree | 36acb142be9e6a6e0bdca1354d40fa7688fd48be | |
parent | a2fb3004247936042bbe3e4f6dcf096d4b2c0766 (diff) |
* mf-hooks2.c: Support FreeBSD.
(WRAP_gets): Avoid gets().
* testsuite/libmudflap.c/pass-stratcliff.c: Do not
test unimplemented mem/str calls on FreeBSD.
* testsuite/libmudflap.c/pass21-frag.c: Do not include
<alloca.h> on FreeBSD.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/tree-ssa-20020619-branch@79146 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libmudflap/ChangeLog | 9 | ||||
-rw-r--r-- | libmudflap/mf-hooks2.c | 16 | ||||
-rw-r--r-- | libmudflap/testsuite/libmudflap.c/pass-stratcliff.c | 6 | ||||
-rw-r--r-- | libmudflap/testsuite/libmudflap.c/pass21-frag.c | 2 |
4 files changed, 32 insertions, 1 deletions
diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog index dca1541050c..cd473d5de66 100644 --- a/libmudflap/ChangeLog +++ b/libmudflap/ChangeLog @@ -1,3 +1,12 @@ +2004-03-08 Loren J. Rittle <ljrittle@acm.org> + + * mf-hooks2.c: Support FreeBSD. + (WRAP_gets): Avoid gets(). + * testsuite/libmudflap.c/pass-stratcliff.c: Do not + test unimplemented mem/str calls on FreeBSD. + * testsuite/libmudflap.c/pass21-frag.c: Do not include + <alloca.h> on FreeBSD. + 2004-01-30 Frank Ch. Eigler <fche@redhat.com> * testsuite/libmudflap.c/pass36-frag.c: Add missing free() call. diff --git a/libmudflap/mf-hooks2.c b/libmudflap/mf-hooks2.c index 2e641a101bd..f4ded3a14ee 100644 --- a/libmudflap/mf-hooks2.c +++ b/libmudflap/mf-hooks2.c @@ -49,6 +49,19 @@ XXX: libgcc license? /* A bunch of independent stdlib/unistd hook functions, all intercepted by mf-runtime.h macros. */ +#ifdef __FreeBSD__ +#undef WRAP_memrchr +#undef WRAP_memmem +#include <dlfcn.h> +static inline size_t (strnlen) (const char* str, size_t n) +{ + const char *s; + + for (s = str; n && *s; ++s, --n) + ; + return (s - str); +} +#endif /* str*,mem*,b* */ @@ -669,7 +682,8 @@ WRAPPER2(char *, gets, char *s) { TRACE ("%s\n", __PRETTY_FUNCTION__); MF_VALIDATE_EXTENT (s, 1, __MF_CHECK_WRITE, "gets buffer"); - s = gets (s); + /* Avoid link-time warning... */ + s = fgets (s, INT_MAX, stdin); if (NULL != s) { /* better late than never */ size_t n = strlen (s); MF_VALIDATE_EXTENT (s, CLAMPADD(n, 1), __MF_CHECK_WRITE, "gets buffer"); diff --git a/libmudflap/testsuite/libmudflap.c/pass-stratcliff.c b/libmudflap/testsuite/libmudflap.c/pass-stratcliff.c index 5a1df7bd33d..894f10ffa96 100644 --- a/libmudflap/testsuite/libmudflap.c/pass-stratcliff.c +++ b/libmudflap/testsuite/libmudflap.c/pass-stratcliff.c @@ -153,6 +153,7 @@ main (int argc, char *argv[]) } } +#ifndef __FreeBSD__ /* rawmemchr test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) { @@ -173,6 +174,7 @@ main (int argc, char *argv[]) adr[middle] = 'T'; } } +#endif /* strcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) @@ -248,6 +250,7 @@ main (int argc, char *argv[]) } } +#ifndef __FreeBSD__ /* stpcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) { @@ -287,6 +290,7 @@ main (int argc, char *argv[]) adr[middle] = 'T'; } } +#endif /* memcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) @@ -298,6 +302,7 @@ main (int argc, char *argv[]) result = 1; } +#ifndef __FreeBSD__ /* mempcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) for (inner = 0; inner < size - outer; ++inner) @@ -307,6 +312,7 @@ main (int argc, char *argv[]) outer, inner); result = 1; } +#endif } return result; diff --git a/libmudflap/testsuite/libmudflap.c/pass21-frag.c b/libmudflap/testsuite/libmudflap.c/pass21-frag.c index 03991b54e2e..231055a236f 100644 --- a/libmudflap/testsuite/libmudflap.c/pass21-frag.c +++ b/libmudflap/testsuite/libmudflap.c/pass21-frag.c @@ -1,7 +1,9 @@ #include <stdio.h> #include <stdlib.h> #include <string.h> +#ifndef __FreeBSD__ #include <alloca.h> +#endif int main () { char *boo, *foo; |