1*5bcead81Skettenis /* $OpenBSD: DEFS.h,v 1.5 2023/12/11 22:24:15 kettenis Exp $ */ 2443998a4Ssmurph 3443998a4Ssmurph #include <machine/asm.h> 4ed4704d9Sguenther 5ed4704d9Sguenther /* 6ed4704d9Sguenther * We define a hidden alias with the prefix "_libc_" for each global symbol 7ed4704d9Sguenther * that may be used internally. By referencing _libc_x instead of x, other 8ed4704d9Sguenther * parts of libc prevent overriding by the application and avoid unnecessary 9ed4704d9Sguenther * relocations. 10ed4704d9Sguenther */ 11ed4704d9Sguenther #define _HIDDEN(x) _libc_##x 12ed4704d9Sguenther #define _HIDDEN_ALIAS(x,y) \ 13ed4704d9Sguenther STRONG_ALIAS(_HIDDEN(x),y); \ 14ed4704d9Sguenther .hidden _HIDDEN(x) 15ed4704d9Sguenther #define _HIDDEN_FALIAS(x,y) \ 16ed4704d9Sguenther _HIDDEN_ALIAS(x,y); \ 17ed4704d9Sguenther .type _HIDDEN(x),@function 18ed4704d9Sguenther 19ed4704d9Sguenther /* 20ed4704d9Sguenther * For functions implemented in ASM that aren't syscalls. 21ed4704d9Sguenther * END_STRONG(x) Like DEF_STRONG() in C; for standard/reserved C names 22ed4704d9Sguenther * END_WEAK(x) Like DEF_WEAK() in C; for non-ISO C names 23ed4704d9Sguenther */ 24ed4704d9Sguenther #define END_STRONG(x) END(x); _HIDDEN_FALIAS(x,x); END(_HIDDEN(x)) 25ed4704d9Sguenther #define END_WEAK(x) END_STRONG(x); .weak x 2683762a71Sderaadt 2783762a71Sderaadt #define PINSYSCALL(sysno, label) \ 2883762a71Sderaadt .pushsection .openbsd.syscalls,"",@progbits; \ 29*5bcead81Skettenis .p2align 2; \ 3083762a71Sderaadt .long label; \ 3183762a71Sderaadt .long sysno; \ 3283762a71Sderaadt .popsection; 33