Module Name: src
Committed By: christos
Date: Wed Apr 18 02:55:06 UTC 2012
Modified Files:
src/external/gpl3/gcc/dist/libmudflap: mf-hooks1.c mf-hooks2.c
mf-impl.h mf-runtime.c mf-runtime.h
Log Message:
NetBSD fixes:
1. thread_self() returns a pointer, not an unsigned integer
2. Add NetBSD to Apple and FreeBSD defines
3. Add _NETBSD_SOURCE where needed
4. Add an extra define BEGIN_PROTECTV for void functions to avoid return
free(); where free is void.
5. Avoid weak symbol hacks to determine if we are threaded or not. We
have a threaded copy of the library, why bother?
6. change __attribute -> __attribute__ since the former is not covered by
our cdefs.h
To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r1.2 \
src/external/gpl3/gcc/dist/libmudflap/mf-hooks1.c \
src/external/gpl3/gcc/dist/libmudflap/mf-hooks2.c \
src/external/gpl3/gcc/dist/libmudflap/mf-impl.h \
src/external/gpl3/gcc/dist/libmudflap/mf-runtime.c \
src/external/gpl3/gcc/dist/libmudflap/mf-runtime.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/external/gpl3/gcc/dist/libmudflap/mf-hooks1.c
diff -u src/external/gpl3/gcc/dist/libmudflap/mf-hooks1.c:1.1.1.1 src/external/gpl3/gcc/dist/libmudflap/mf-hooks1.c:1.2
--- src/external/gpl3/gcc/dist/libmudflap/mf-hooks1.c:1.1.1.1 Mon Jun 20 21:23:33 2011
+++ src/external/gpl3/gcc/dist/libmudflap/mf-hooks1.c Tue Apr 17 22:55:05 2012
@@ -33,7 +33,7 @@ see the files COPYING3 and COPYING.RUNTI
/* These attempt to coax various unix flavours to declare all our
needed tidbits in the system headers. */
-#if !defined(__FreeBSD__) && !defined(__APPLE__)
+#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__)
#define _POSIX_SOURCE
#endif /* Some BSDs break <sys/socket.h> if this is defined. */
#define _GNU_SOURCE
@@ -238,7 +238,7 @@ WRAPPER(void, free, void *buf)
static int freeq_initialized = 0;
DECLARE(void, free, void *);
- BEGIN_PROTECT (free, buf);
+ BEGIN_PROTECTV (free, buf);
if (UNLIKELY(buf == NULL))
return;
Index: src/external/gpl3/gcc/dist/libmudflap/mf-hooks2.c
diff -u src/external/gpl3/gcc/dist/libmudflap/mf-hooks2.c:1.1.1.1 src/external/gpl3/gcc/dist/libmudflap/mf-hooks2.c:1.2
--- src/external/gpl3/gcc/dist/libmudflap/mf-hooks2.c:1.1.1.1 Mon Jun 20 21:23:31 2011
+++ src/external/gpl3/gcc/dist/libmudflap/mf-hooks2.c Tue Apr 17 22:55:05 2012
@@ -32,9 +32,10 @@ see the files COPYING3 and COPYING.RUNTI
/* These attempt to coax various unix flavours to declare all our
needed tidbits in the system headers. */
-#if !defined(__FreeBSD__) && !defined(__APPLE__)
+#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__)
#define _POSIX_SOURCE
#endif /* Some BSDs break <sys/socket.h> if this is defined. */
+#define _NETBSD_SOURCE
#define _GNU_SOURCE
#define _XOPEN_SOURCE
#define _BSD_TYPES
Index: src/external/gpl3/gcc/dist/libmudflap/mf-impl.h
diff -u src/external/gpl3/gcc/dist/libmudflap/mf-impl.h:1.1.1.1 src/external/gpl3/gcc/dist/libmudflap/mf-impl.h:1.2
--- src/external/gpl3/gcc/dist/libmudflap/mf-impl.h:1.1.1.1 Mon Jun 20 21:23:33 2011
+++ src/external/gpl3/gcc/dist/libmudflap/mf-impl.h Tue Apr 17 22:55:05 2012
@@ -273,12 +273,12 @@ extern struct __mf_options __mf_opts;
#ifdef LIBMUDFLAPTH
#define VERBOSE_TRACE(...) \
do { if (UNLIKELY (__mf_opts.verbose_trace)) { \
- fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \
+ fprintf (stderr, "mf(%ju): ", (intmax_t)(intptr_t) pthread_self ()); \
fprintf (stderr, __VA_ARGS__); \
} } while (0)
#define TRACE(...) \
do { if (UNLIKELY (__mf_opts.trace_mf_calls)) { \
- fprintf (stderr, "mf(%u): ", (unsigned) pthread_self ()); \
+ fprintf (stderr, "mf(%ju): ", (intmax_t)(intptr_t) pthread_self ()); \
fprintf (stderr, __VA_ARGS__); \
} } while (0)
#else
@@ -396,6 +396,29 @@ ret __mfwrap_ ## fname (__VA_ARGS__)
TRACE ("%s\n", __PRETTY_FUNCTION__); \
}
+#define BEGIN_PROTECTV(fname, ...) \
+ if (UNLIKELY (__mf_starting_p)) \
+ { \
+ CALL_BACKUP(fname, __VA_ARGS__); \
+ return; \
+ } \
+ else if (UNLIKELY (__mf_get_state () == reentrant)) \
+ { \
+ extern unsigned long __mf_reentrancy; \
+ __mf_reentrancy ++; \
+ CALL_REAL(fname, __VA_ARGS__); \
+ return; \
+ } \
+ else if (UNLIKELY (__mf_get_state () == in_malloc)) \
+ { \
+ CALL_REAL(fname, __VA_ARGS__); \
+ return; \
+ } \
+ else \
+ { \
+ TRACE ("%s\n", __PRETTY_FUNCTION__); \
+ }
+
/* There is an assumption here that these will only be called in routines
that call BEGIN_PROTECT at the start, and hence the state must always
be active when BEGIN_MALLOC_PROTECT is called. */
Index: src/external/gpl3/gcc/dist/libmudflap/mf-runtime.c
diff -u src/external/gpl3/gcc/dist/libmudflap/mf-runtime.c:1.1.1.1 src/external/gpl3/gcc/dist/libmudflap/mf-runtime.c:1.2
--- src/external/gpl3/gcc/dist/libmudflap/mf-runtime.c:1.1.1.1 Mon Jun 20 21:23:33 2011
+++ src/external/gpl3/gcc/dist/libmudflap/mf-runtime.c Tue Apr 17 22:55:05 2012
@@ -31,9 +31,10 @@ see the files COPYING3 and COPYING.RUNTI
/* These attempt to coax various unix flavours to declare all our
needed tidbits in the system headers. */
-#if !defined(__FreeBSD__) && !defined(__APPLE__)
+#if !defined(__FreeBSD__) && !defined(__APPLE__) && !defined(__NetBSD__)
#define _POSIX_SOURCE
#endif /* Some BSDs break <sys/socket.h> if this is defined. */
+#define _NETBSD_SOURCE
#define _GNU_SOURCE
#define _XOPEN_SOURCE
#define _BSD_TYPES
@@ -192,12 +193,18 @@ pthread_mutex_t __mf_biglock =
/* Use HAVE_PTHREAD_H here instead of LIBMUDFLAPTH, so that even
the libmudflap.la (no threading support) can diagnose whether
the application is linked with -lpthread. See __mf_usage() below. */
-#if HAVE_PTHREAD_H
-#ifdef _POSIX_THREADS
-#pragma weak pthread_join
+#ifdef LIBMUDFLAPTH
+# if HAVE_PTHREAD_H
+# ifdef _POSIX_THREADS
+# include <pthread.h>
+# else
+# define pthread_join NULL
+# endif
+# else
+# define pthread_join NULL
+# endif
#else
-#define pthread_join NULL
-#endif
+# define pthread_join NULL
#endif
@@ -1762,7 +1769,7 @@ __mf_describe_object (__mf_object_t *obj
"bounds=[%p,%p] size=%lu area=%s check=%ur/%uw liveness=%u%s\n"
"alloc time=%lu.%06lu pc=%p"
#ifdef LIBMUDFLAPTH
- " thread=%u"
+ " thread=%ju"
#endif
"\n",
(obj->deallocated_p ? "dead " : ""),
@@ -1781,7 +1788,7 @@ __mf_describe_object (__mf_object_t *obj
obj->alloc_time.tv_sec, obj->alloc_time.tv_usec,
(void *) obj->alloc_pc
#ifdef LIBMUDFLAPTH
- , (unsigned) obj->alloc_thread
+ , (intmax_t)(intptr_t)obj->alloc_thread
#endif
);
@@ -1798,13 +1805,13 @@ __mf_describe_object (__mf_object_t *obj
{
fprintf (stderr, "dealloc time=%lu.%06lu pc=%p"
#ifdef LIBMUDFLAPTH
- " thread=%u"
+ " thread=%ju"
#endif
"\n",
obj->dealloc_time.tv_sec, obj->dealloc_time.tv_usec,
(void *) obj->dealloc_pc
#ifdef LIBMUDFLAPTH
- , (unsigned) obj->dealloc_thread
+ , (intmax_t)(intptr_t)obj->dealloc_thread
#endif
);
@@ -2318,7 +2325,7 @@ __mf_sigusr1_respond ()
#ifndef NDEBUG
static void
-write_itoa (int fd, unsigned n)
+write_itoa (int fd, intmax_t n)
{
enum x { bufsize = sizeof(n)*4 };
char buf [bufsize];
@@ -2347,7 +2354,7 @@ __assert_fail (const char *msg, const ch
write2("mf");
#ifdef LIBMUDFLAPTH
write2("(");
- write_itoa (2, (unsigned) pthread_self ());
+ write_itoa (2, (intmax_t)(intptr_t)pthread_self ());
write2(")");
#endif
write2(": assertion failure: `");
Index: src/external/gpl3/gcc/dist/libmudflap/mf-runtime.h
diff -u src/external/gpl3/gcc/dist/libmudflap/mf-runtime.h:1.1.1.1 src/external/gpl3/gcc/dist/libmudflap/mf-runtime.h:1.2
--- src/external/gpl3/gcc/dist/libmudflap/mf-runtime.h:1.1.1.1 Mon Jun 20 21:23:33 2011
+++ src/external/gpl3/gcc/dist/libmudflap/mf-runtime.h Tue Apr 17 22:55:05 2012
@@ -81,11 +81,11 @@ extern "C" {
#endif
extern void __mf_check (void *ptr, __mf_size_t sz, int type, const char *location)
- __attribute((nothrow));
+ __attribute__((nothrow));
extern void __mf_register (void *ptr, __mf_size_t sz, int type, const char *name)
- __attribute((nothrow));
+ __attribute__((nothrow));
extern void __mf_unregister (void *ptr, __mf_size_t sz, int type)
- __attribute((nothrow));
+ __attribute__((nothrow));
extern unsigned __mf_watch (void *ptr, __mf_size_t sz);
extern unsigned __mf_unwatch (void *ptr, __mf_size_t sz);
extern void __mf_report ();