Add .type and .size pseudo-ops to system call macros so that dynamic binaries

will link.  They must be used for weak symbols as well as strong ones.
This commit is contained in:
jake 2001-11-18 04:29:20 +00:00
parent bb775f0c69
commit d7cd5a1a91

View File

@ -51,10 +51,17 @@
#define _SYSENTRY(x) \
ENTRY(__CONCAT(__sys_,x)) ; \
.weak CNAME(x) ; \
.type CNAME(x),@function ; \
.set CNAME(x),CNAME(__CONCAT(__sys_,x)) ; \
.weak CNAME(__CONCAT(_,x)) ; \
.type CNAME(__CONCAT(_,x)), @function ; \
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x))
#define _SYSEND(x) \
.size CNAME(__CONCAT(__sys_,x)), . - CNAME(__CONCAT(__sys_,x)) ; \
.size CNAME(__CONCAT(_,x)), . - CNAME(__CONCAT(__sys_,x)) ; \
.size CNAME(__CONCAT(,x)), . - CNAME(__CONCAT(__sys_,x))
#define _SYSCALL(x) \
mov __CONCAT(SYS_,x), %g1 ; \
ta %xcc, ST_SYSCALL ; \
@ -63,20 +70,21 @@ ENTRY(__CONCAT(__sys_,x)) ; \
ERROR() ; \
1:
#define SYSCALL(x) \
_SYSENTRY(x) ; \
_SYSCALL(x)
#define RSYSCALL(x) \
SYSCALL(x) ; \
_SYSENTRY(x) ; \
_SYSCALL(x) ; \
retl ; \
nop
nop ; \
_SYSEND(x)
#define PSEUDO(x) \
ENTRY(__CONCAT(__sys_,x)) ; \
.weak CNAME(__CONCAT(_,x)) ; \
.type CNAME(__CONCAT(_,x)),@function ; \
.set CNAME(__CONCAT(_,x)),CNAME(__CONCAT(__sys_,x)) ; \
mov __CONCAT(SYS_,x), %g1 ; \
ta %xcc, ST_SYSCALL ; \
retl ; \
nop
nop ; \
.size CNAME(__CONCAT(__sys_,x)), . - CNAME(__CONCAT(__sys_,x)) ; \
.size CNAME(__CONCAT(_,x)), . - CNAME(__CONCAT(__sys_,x))