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.
This commit is contained in:
Ove Kaaven 2000-05-09 22:32:25 +00:00 committed by Alexandre Julliard
parent 4a07ed8ef0
commit d2937316a5
1 changed files with 8 additions and 3 deletions

View File

@ -38,13 +38,18 @@
/* adapt as necessary (a construct like this is used in glibc sources) */ /* adapt as necessary (a construct like this is used in glibc sources) */
#define strong_alias(orig, alias) \ #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?), /* strong_alias does not work on external symbols (.o format limitation?),
* so for those, we need to use the pogo stick */ * so for those, we need to use the pogo stick */
#ifdef __i386__ #if defined(__i386__) && !defined(__PIC__)
/* FIXME: PIC */
#define jump_alias(orig, alias) \ #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 #endif
/* get necessary libc symbols */ /* get necessary libc symbols */