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
7b7c2eb950
commit
efc325068e
@ -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…
Reference in New Issue
Block a user