Module Name: src
Committed By: pooka
Date: Fri Feb 25 16:01:42 UTC 2011
Modified Files:
src/lib/librumphijack: Makefile hijackdlsym.c
Log Message:
Ok, for reasons I can't begin to understand, the binaries I tested
yesterday on powerpc broke overnight. Apparently adding one more
function before the call to dlsym() fixes things again. I hope
I don't have to add another one tomorrow ....
To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/lib/librumphijack/Makefile
cvs rdiff -u -r1.1 -r1.2 src/lib/librumphijack/hijackdlsym.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/librumphijack/Makefile
diff -u src/lib/librumphijack/Makefile:1.7 src/lib/librumphijack/Makefile:1.8
--- src/lib/librumphijack/Makefile:1.7 Wed Feb 23 15:23:15 2011
+++ src/lib/librumphijack/Makefile Fri Feb 25 16:01:41 2011
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.7 2011/02/23 15:23:15 pooka Exp $
+# $NetBSD: Makefile,v 1.8 2011/02/25 16:01:41 pooka Exp $
#
LIB= rumphijack
@@ -14,8 +14,8 @@
WARNS= 4
-#DBG=-g
-#NOGCCERROR=1
-COPTS.hijackdlsym.c+= -fno-optimize-sibling-calls
+# make sure the compiler doesn't get clever, since we need
+# a stack frame
+COPTS.hijackdlsym.c+= -O0
.include <bsd.lib.mk>
Index: src/lib/librumphijack/hijackdlsym.c
diff -u src/lib/librumphijack/hijackdlsym.c:1.1 src/lib/librumphijack/hijackdlsym.c:1.2
--- src/lib/librumphijack/hijackdlsym.c:1.1 Wed Feb 23 15:23:15 2011
+++ src/lib/librumphijack/hijackdlsym.c Fri Feb 25 16:01:41 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: hijackdlsym.c,v 1.1 2011/02/23 15:23:15 pooka Exp $ */
+/* $NetBSD: hijackdlsym.c,v 1.2 2011/02/25 16:01:41 pooka Exp $ */
/*-
* Copyright (c) 2011 Antti Kantee. All Rights Reserved.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: hijackdlsym.c,v 1.1 2011/02/23 15:23:15 pooka Exp $");
+__RCSID("$NetBSD: hijackdlsym.c,v 1.2 2011/02/25 16:01:41 pooka Exp $");
#include <dlfcn.h>
@@ -36,12 +36,22 @@
* This is called from librumpclient in case of LD_PRELOAD.
* It ensures correct RTLD_NEXT.
*
- * (note, this module is compiled with -fno-optimize-sibling-calls
- * to make sure this function is not treated as a tailcall)
+ * (note, this module is compiled with -O0 to make sure this
+ * function is not treated as a tailcall or other optimizations
+ * applied)
*/
+
+/* why is this indirection required for powerpc ???? */
+static void * __noinline
+bouncer(void *handle, const char *symbol)
+{
+
+ return dlsym(handle, symbol);
+}
+
void *
rumphijack_dlsym(void *handle, const char *symbol)
{
- return dlsym(handle, symbol);
+ return bouncer(handle, symbol);
}