Replace the WEAK_ALIAS() alias with the WEAK_REFERENCE() alias. Use it and
get rid of the __CONCAT and CNAME macros. Reviewed by: bde, kib
This commit is contained in:
parent
3e5a0a6b70
commit
646c5b4840
@ -36,22 +36,19 @@
|
||||
#include <sys/syscall.h>
|
||||
#include <machine/asm.h>
|
||||
|
||||
#define SYSCALL(x) ENTRY(__CONCAT(__sys_,x)); \
|
||||
.weak CNAME(x); \
|
||||
.set CNAME(x),CNAME(__CONCAT(__sys_,x)); \
|
||||
.weak CNAME(__CONCAT(_,x)); \
|
||||
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
|
||||
mov __CONCAT($SYS_,x),%eax; KERNCALL; \
|
||||
jb HIDENAME(cerror)
|
||||
#define SYSCALL(name) ENTRY(__sys_##name); \
|
||||
WEAK_REFERENCE(__sys_##name, name); \
|
||||
WEAK_REFERENCE(__sys_##name, _##name); \
|
||||
mov $SYS_##name,%eax; KERNCALL; \
|
||||
jb HIDENAME(cerror)
|
||||
|
||||
#define RSYSCALL(x) SYSCALL(x); ret; END(__CONCAT(__sys_,x))
|
||||
#define RSYSCALL(name) SYSCALL(name); ret; END(__sys_##name)
|
||||
|
||||
#define PSEUDO(x) ENTRY(__CONCAT(__sys_,x)); \
|
||||
.weak CNAME(__CONCAT(_,x)); \
|
||||
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)); \
|
||||
mov __CONCAT($SYS_,x),%eax; KERNCALL; \
|
||||
jb HIDENAME(cerror); ret; \
|
||||
END(__CONCAT(__sys_,x))
|
||||
#define PSEUDO(name) ENTRY(__sys_##name); \
|
||||
WEAK_REFERENCE(__sys_##name, _##name); \
|
||||
mov $SYS_##name,%eax; KERNCALL; \
|
||||
jb HIDENAME(cerror); ret; \
|
||||
END(__sys_##name)
|
||||
|
||||
/* gas messes up offset -- although we don't currently need it, do for BCS */
|
||||
#define LCALL(x,y) .byte 0x9a ; .long y; .word x
|
||||
|
@ -60,8 +60,7 @@ ENTRY(_setjmp)
|
||||
ret
|
||||
END(_setjmp)
|
||||
|
||||
.weak CNAME(_longjmp)
|
||||
.set CNAME(_longjmp),CNAME(___longjmp)
|
||||
WEAK_REFERENCE(___longjmp, _longjmp)
|
||||
ENTRY(___longjmp)
|
||||
movl 4(%esp),%edx
|
||||
movl 8(%esp),%eax
|
||||
|
@ -78,8 +78,7 @@ ENTRY(setjmp)
|
||||
ret
|
||||
END(setjmp)
|
||||
|
||||
.weak CNAME(longjmp)
|
||||
.set CNAME(longjmp),CNAME(__longjmp)
|
||||
WEAK_REFERENCE(__longjmp, longjmp)
|
||||
ENTRY(__longjmp)
|
||||
movl 4(%esp),%edx
|
||||
PIC_PROLOGUE
|
||||
|
@ -87,8 +87,7 @@ ENTRY(sigsetjmp)
|
||||
ret
|
||||
END(sigsetjmp)
|
||||
|
||||
.weak CNAME(siglongjmp);
|
||||
.set CNAME(siglongjmp),CNAME(__siglongjmp)
|
||||
WEAK_REFERENCE(__siglongjmp, siglongjmp)
|
||||
ENTRY(__siglongjmp)
|
||||
movl 4(%esp),%edx
|
||||
cmpl $0,44(%edx)
|
||||
|
@ -63,6 +63,6 @@ L2:
|
||||
ret
|
||||
END(strchr)
|
||||
|
||||
WEAK_ALIAS(index, strchr)
|
||||
WEAK_REFERENCE(strchr, index)
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
|
@ -64,6 +64,6 @@ L2:
|
||||
ret
|
||||
END(strrchr)
|
||||
|
||||
WEAK_ALIAS(rindex, strrchr)
|
||||
WEAK_REFERENCE(strrchr, rindex)
|
||||
|
||||
.section .note.GNU-stack,"",%progbits
|
||||
|
@ -38,10 +38,8 @@ __FBSDID("$FreeBSD$");
|
||||
|
||||
#include "SYS.h"
|
||||
|
||||
.weak _vfork
|
||||
.set _vfork,__sys_vfork
|
||||
.weak vfork
|
||||
.set vfork,__sys_vfork
|
||||
WEAK_REFERENCE(__sys_vfork, _vfork)
|
||||
WEAK_REFERENCE(__sys_vfork, vfork)
|
||||
ENTRY(__sys_vfork)
|
||||
popl %ecx /* my rta into ecx */
|
||||
mov $SYS_vfork,%eax
|
||||
|
@ -34,10 +34,8 @@ __FBSDID("$FreeBSD$");
|
||||
* Otherwise, the setcontext() syscall will return here and we'll
|
||||
* pop off the return address and go to the *setcontext* call.
|
||||
*/
|
||||
.weak _getcontext
|
||||
.set _getcontext,__sys_getcontext
|
||||
.weak getcontext
|
||||
.set getcontext,__sys_getcontext
|
||||
WEAK_REFERENCE(__sys_getcontext, _getcontext)
|
||||
WEAK_REFERENCE(__sys_getcontext, getcontext)
|
||||
ENTRY(__sys_getcontext)
|
||||
movl (%esp),%ecx /* save getcontext return address */
|
||||
mov $SYS_getcontext,%eax
|
||||
|
@ -50,8 +50,7 @@ __FBSDID("$FreeBSD$");
|
||||
*
|
||||
* Returns 0 if there are no errors; -1 otherwise
|
||||
*/
|
||||
.weak CNAME(_thr_setcontext)
|
||||
.set CNAME(_thr_setcontext),CNAME(__thr_setcontext)
|
||||
WEAK_REFERENCE(__thr_setcontext, _thr_setcontext)
|
||||
ENTRY(__thr_setcontext)
|
||||
movl 4(%esp), %edx /* get address of mcontext */
|
||||
cmpl $0, %edx /* check for null pointer */
|
||||
@ -116,8 +115,7 @@ ENTRY(__thr_setcontext)
|
||||
* Returns -1 if there is an error, 0 no errors; 1 upon return
|
||||
* from a setcontext().
|
||||
*/
|
||||
.weak CNAME(_thr_getcontext)
|
||||
.set CNAME(_thr_getcontext),CNAME(__thr_getcontext)
|
||||
WEAK_REFERENCE(__thr_getcontext, _thr_getcontext)
|
||||
ENTRY(__thr_getcontext)
|
||||
pushl %edx /* save edx */
|
||||
movl 8(%esp), %edx /* get address of mcontext */
|
||||
|
@ -91,11 +91,15 @@
|
||||
#endif
|
||||
|
||||
/*
|
||||
* WEAK_ALIAS: create a weak alias.
|
||||
* WEAK_REFERENCE(): create a weak reference alias from sym.
|
||||
* The macro is not a general asm macro that takes arbitrary names,
|
||||
* but one that takes only C names. It does the non-null name
|
||||
* translation inside the macro.
|
||||
*/
|
||||
#define WEAK_ALIAS(alias,sym) \
|
||||
.weak alias; \
|
||||
alias = sym
|
||||
|
||||
#define WEAK_REFERENCE(sym, alias) \
|
||||
.weak CNAME(alias); \
|
||||
.equ CNAME(alias),CNAME(sym)
|
||||
|
||||
/*
|
||||
* STRONG_ALIAS: create a strong alias.
|
||||
|
Loading…
Reference in New Issue
Block a user