Creating weak symbols doesn't work correctly when building an aout libc.
Doing the "right thing" here is difficult, so create two ENTRY points for each function (for example, __setjmp and setjmp are equivalent). This isn't pretty, but it works for both aout and ELF. libc symbol naming needs an overhaul in order to properly support function wrapping, specifically in the case of a real libpthread, and these duplicate entry points should be fixed as part of that overhaul. Pointed out by: bde
This commit is contained in:
parent
a9d61af021
commit
ec9d5fa5f8
@ -55,8 +55,7 @@
|
||||
#include "SYS.h"
|
||||
|
||||
ENTRY(__setjmp)
|
||||
.weak setjmp;
|
||||
.set setjmp, __setjmp;
|
||||
ENTRY(setjmp)
|
||||
movl 4(%esp),%ecx
|
||||
PIC_PROLOGUE
|
||||
leal 28(%ecx), %eax
|
||||
@ -83,8 +82,7 @@ ENTRY(__setjmp)
|
||||
ret
|
||||
|
||||
ENTRY(__longjmp)
|
||||
.weak longjmp;
|
||||
.set longjmp, __longjmp;
|
||||
ENTRY(longjmp)
|
||||
movl 4(%esp),%edx
|
||||
PIC_PROLOGUE
|
||||
pushl $0 /* (sigset_t*)oset */
|
||||
|
@ -60,8 +60,7 @@
|
||||
*/
|
||||
|
||||
ENTRY(__sigsetjmp)
|
||||
.weak sigsetjmp;
|
||||
.set sigsetjmp, __sigsetjmp;
|
||||
ENTRY(sigsetjmp)
|
||||
movl 8(%esp),%eax
|
||||
movl 4(%esp),%ecx
|
||||
movl %eax,44(%ecx)
|
||||
@ -92,8 +91,7 @@ ENTRY(__sigsetjmp)
|
||||
ret
|
||||
|
||||
ENTRY(__siglongjmp)
|
||||
.weak siglongjmp;
|
||||
.set siglongjmp, __siglongjmp;
|
||||
ENTRY(siglongjmp)
|
||||
movl 4(%esp),%edx
|
||||
cmpl $0,44(%edx)
|
||||
jz 2f
|
||||
|
@ -55,8 +55,7 @@
|
||||
#include "SYS.h"
|
||||
|
||||
ENTRY(__setjmp)
|
||||
.weak setjmp;
|
||||
.set setjmp, __setjmp;
|
||||
ENTRY(setjmp)
|
||||
movl 4(%esp),%ecx
|
||||
PIC_PROLOGUE
|
||||
leal 28(%ecx), %eax
|
||||
@ -83,8 +82,7 @@ ENTRY(__setjmp)
|
||||
ret
|
||||
|
||||
ENTRY(__longjmp)
|
||||
.weak longjmp;
|
||||
.set longjmp, __longjmp;
|
||||
ENTRY(longjmp)
|
||||
movl 4(%esp),%edx
|
||||
PIC_PROLOGUE
|
||||
pushl $0 /* (sigset_t*)oset */
|
||||
|
@ -60,8 +60,7 @@
|
||||
*/
|
||||
|
||||
ENTRY(__sigsetjmp)
|
||||
.weak sigsetjmp;
|
||||
.set sigsetjmp, __sigsetjmp;
|
||||
ENTRY(sigsetjmp)
|
||||
movl 8(%esp),%eax
|
||||
movl 4(%esp),%ecx
|
||||
movl %eax,44(%ecx)
|
||||
@ -92,8 +91,7 @@ ENTRY(__sigsetjmp)
|
||||
ret
|
||||
|
||||
ENTRY(__siglongjmp)
|
||||
.weak siglongjmp;
|
||||
.set siglongjmp, __siglongjmp;
|
||||
ENTRY(siglongjmp)
|
||||
movl 4(%esp),%edx
|
||||
cmpl $0,44(%edx)
|
||||
jz 2f
|
||||
|
Loading…
x
Reference in New Issue
Block a user