summaryrefslogtreecommitdiffstats
path: root/mutrace.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-09-21 00:03:29 +0200
committerLennart Poettering <lennart@poettering.net>2009-09-21 00:03:29 +0200
commitb8bf385f0849ef02b6e95d562f3abf056f32d45a (patch)
tree22a154154574ae1402106c0fff037eaa80c03de1 /mutrace.c
parent2c534d50ae0d9d7ba0619ff8af90d4d269175ea3 (diff)
warn if applications have been built without -rdynamic
Diffstat (limited to 'mutrace.c')
-rw-r--r--mutrace.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/mutrace.c b/mutrace.c
index 288867c..70a8ff9 100644
--- a/mutrace.c
+++ b/mutrace.c
@@ -42,13 +42,6 @@
#error "This stuff only works on Linux!"
#endif
-/* FIXMES:
- *
- * - we probably should cover rwlocks, too
- * - verify rdynamic
- *
- */
-
#ifndef SCHED_RESET_ON_FORK
/* "Your libc lacks the definition of SCHED_RESET_ON_FORK. We'll now
* define it ourselves, however make sure your kernel is new
@@ -267,6 +260,12 @@ static void setup(void) {
if (LIKELY(initialized))
return;
+ if (!dlsym(NULL, "main"))
+ fprintf(stderr,
+ "mutrace: Application appears to be compiled without -rdynamic. It might be a\n"
+ "mutrace: good idea to recompile with -rdynamic enabled since this produces more\n"
+ "mutrace: useful stack traces.\n\n");
+
if (__malloc_hook) {
fprintf(stderr,
"mutrace: Detected non-glibc memory allocator. Your program uses some\n"