use @@@ instead of @@ in __sym_default
Using .symver foo,foo@@VER causes foo and foo@@VER to be output to the .o file. This requires foo to be weak since the linker handles foo@@VER as foo. Using .symver foo,foo@@@VER causes just foo@@ver to be output and avoid the need for making foo weak. It also reduces the constraint on how exactly a linker has to handle foo and foo@@VER being present. Submitted by: Rafael Espíndola Reviewed by: dim, kib Differential Revision: https://reviews.freebsd.org/D11653
This commit is contained in:
parent
ca94a1c6ca
commit
19164ee6cd
@ -43,7 +43,6 @@ __sym_compat(openat, __impl_openat, FBSD_1.1);
|
|||||||
__weak_reference(openat, __impl_openat);
|
__weak_reference(openat, __impl_openat);
|
||||||
__sym_default(openat, openat, FBSD_1.2);
|
__sym_default(openat, openat, FBSD_1.2);
|
||||||
|
|
||||||
#pragma weak openat
|
|
||||||
int
|
int
|
||||||
openat(int fd, const char *path, int flags, ...)
|
openat(int fd, const char *path, int flags, ...)
|
||||||
{
|
{
|
||||||
|
@ -42,7 +42,6 @@ __sym_compat(setcontext, __impl_setcontext, FBSD_1.0);
|
|||||||
__weak_reference(setcontext, __impl_setcontext);
|
__weak_reference(setcontext, __impl_setcontext);
|
||||||
__sym_default(setcontext, setcontext, FBSD_1.2);
|
__sym_default(setcontext, setcontext, FBSD_1.2);
|
||||||
|
|
||||||
#pragma weak setcontext
|
|
||||||
int
|
int
|
||||||
setcontext(const ucontext_t *uc)
|
setcontext(const ucontext_t *uc)
|
||||||
{
|
{
|
||||||
|
@ -43,7 +43,6 @@ __sym_compat(swapcontext, __impl_swapcontext, FBSD_1.0);
|
|||||||
__weak_reference(swapcontext, __impl_swapcontext);
|
__weak_reference(swapcontext, __impl_swapcontext);
|
||||||
__sym_default(swapcontext, swapcontext, FBSD_1.2);
|
__sym_default(swapcontext, swapcontext, FBSD_1.2);
|
||||||
|
|
||||||
#pragma weak swapcontext
|
|
||||||
int
|
int
|
||||||
swapcontext(ucontext_t *oucp, const ucontext_t *ucp)
|
swapcontext(ucontext_t *oucp, const ucontext_t *ucp)
|
||||||
{
|
{
|
||||||
|
@ -551,7 +551,7 @@
|
|||||||
#define __sym_compat(sym,impl,verid) \
|
#define __sym_compat(sym,impl,verid) \
|
||||||
__asm__(".symver " #impl ", " #sym "@" #verid)
|
__asm__(".symver " #impl ", " #sym "@" #verid)
|
||||||
#define __sym_default(sym,impl,verid) \
|
#define __sym_default(sym,impl,verid) \
|
||||||
__asm__(".symver " #impl ", " #sym "@@" #verid)
|
__asm__(".symver " #impl ", " #sym "@@@" #verid)
|
||||||
#else
|
#else
|
||||||
#define __weak_reference(sym,alias) \
|
#define __weak_reference(sym,alias) \
|
||||||
__asm__(".weak alias"); \
|
__asm__(".weak alias"); \
|
||||||
@ -563,7 +563,7 @@
|
|||||||
#define __sym_compat(sym,impl,verid) \
|
#define __sym_compat(sym,impl,verid) \
|
||||||
__asm__(".symver impl, sym@verid")
|
__asm__(".symver impl, sym@verid")
|
||||||
#define __sym_default(impl,sym,verid) \
|
#define __sym_default(impl,sym,verid) \
|
||||||
__asm__(".symver impl, sym@@verid")
|
__asm__(".symver impl, sym@@@verid")
|
||||||
#endif /* __STDC__ */
|
#endif /* __STDC__ */
|
||||||
#endif /* __GNUC__ || __INTEL_COMPILER */
|
#endif /* __GNUC__ || __INTEL_COMPILER */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user