Fixed jump_alias for non-PIC, and disabled it for PIC, since it
doesn't work for PIC right now. This fixes current crashing sigaction
calls.
diff --git a/scheduler/pthread.c b/scheduler/pthread.c
index 7c086c7..d654525 100644
--- a/scheduler/pthread.c
+++ b/scheduler/pthread.c
@@ -38,13 +38,18 @@
/* adapt as necessary (a construct like this is used in glibc sources) */
#define strong_alias(orig, alias) \
- asm(".globl " PSTR(alias) "\n\t.set " PSTR(alias) "," PSTR(orig))
+ asm(".globl " PSTR(alias) "\n" \
+ "\t.set " PSTR(alias) "," PSTR(orig))
/* strong_alias does not work on external symbols (.o format limitation?),
* so for those, we need to use the pogo stick */
-#ifdef __i386__
+#if defined(__i386__) && !defined(__PIC__)
+/* FIXME: PIC */
#define jump_alias(orig, alias) \
- asm(".globl " PSTR(alias) "\n\t" PSTR(alias) ":\n\tjmp " PSTR(orig))
+ asm(".globl " PSTR(alias) "\n" \
+ "\t.type " PSTR(alias) ",@function\n" \
+ PSTR(alias) ":\n" \
+ "\tjmp " PSTR(orig))
#endif
/* get necessary libc symbols */