aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoren J. Rittle <ljrittle@acm.org>2004-03-09 01:21:36 +0000
committerLoren J. Rittle <ljrittle@acm.org>2004-03-09 01:21:36 +0000
commit73f6f3229f24b825d3242741b6d1285fbdbfa055 (patch)
tree36acb142be9e6a6e0bdca1354d40fa7688fd48be
parenta2fb3004247936042bbe3e4f6dcf096d4b2c0766 (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/ChangeLog9
-rw-r--r--libmudflap/mf-hooks2.c16
-rw-r--r--libmudflap/testsuite/libmudflap.c/pass-stratcliff.c6
-rw-r--r--libmudflap/testsuite/libmudflap.c/pass21-frag.c2
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;