Print this page
code review feeback, close open comment
first round of POSIX 2008 stuff

*** 24,33 **** --- 24,36 ---- /* * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ + /* + * Copyright 2014 Garrett D'Amore <garrett@damore.org> + */ #ifndef _UCONTEXT_H #define _UCONTEXT_H #include <sys/ucontext.h>
*** 38,63 **** #ifdef __cplusplus extern "C" { #endif #ifdef __sparc #ifdef __PRAGMA_REDEFINE_EXTNAME #pragma redefine_extname makecontext __makecontext_v2 #else #define makecontext __makecontext_v2 #endif #endif - #if defined(__STDC__) - extern int getcontext(ucontext_t *) __RETURNS_TWICE; #pragma unknown_control_flow(getcontext) extern int setcontext(const ucontext_t *) __NORETURN; extern int swapcontext(ucontext_t *_RESTRICT_KYWD, const ucontext_t *_RESTRICT_KYWD); extern void makecontext(ucontext_t *, void(*)(), int, ...); #if !defined(_XPG4_2) || defined(__EXTENSIONS__) extern int walkcontext(const ucontext_t *, int (*)(uintptr_t, int, void *), void *); extern int printstack(int); extern int addrtosymstr(void *, char *, int); --- 41,74 ---- #ifdef __cplusplus extern "C" { #endif + /* + * Arguably, under _XPG7, applications should not even include this + * header, since it isn't part of Issue 7. We apply some paranoia for + * the functions that were explicity removed, although we could likely + * just ignore the darn thing altogether. + */ + #if (!defined(_STRICT_SYMBOLS)) || (defined(_XPG4_2) && !defined(_XPG7)) + #ifdef __sparc #ifdef __PRAGMA_REDEFINE_EXTNAME #pragma redefine_extname makecontext __makecontext_v2 #else #define makecontext __makecontext_v2 #endif #endif extern int getcontext(ucontext_t *) __RETURNS_TWICE; #pragma unknown_control_flow(getcontext) extern int setcontext(const ucontext_t *) __NORETURN; extern int swapcontext(ucontext_t *_RESTRICT_KYWD, const ucontext_t *_RESTRICT_KYWD); extern void makecontext(ucontext_t *, void(*)(), int, ...); + #endif /* !_STRICT_SYMBOLS || _XGP4_2 && ! _XPG7 */ + #if !defined(_XPG4_2) || defined(__EXTENSIONS__) extern int walkcontext(const ucontext_t *, int (*)(uintptr_t, int, void *), void *); extern int printstack(int); extern int addrtosymstr(void *, char *, int);
*** 69,101 **** extern int stack_inbounds(void *); extern int stack_violation(int, const siginfo_t *, const ucontext_t *); extern void *_stack_grow(void *); #endif - #else - extern int getcontext() __RETURNS_TWICE; - #pragma unknown_control_flow(getcontext) - extern int setcontext(); - extern int swapcontext(); - extern void makecontext(); - #if !defined(_XPG4_2) || defined(__EXTENSIONS__) - extern int walkcontext(); - extern int printstack(); - extern int addrtosymstr(); - extern int getustack(); - extern int setustack(); - - extern int stack_getbounds(); - extern int stack_setbounds(); - extern int stack_inbounds(); - extern int stack_violation(); - - extern void *_stack_grow(); - #endif - #endif - #ifdef __cplusplus } #endif #endif /* _UCONTEXT_H */ --- 80,90 ----