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

@@ -24,10 +24,13 @@
 
 /*
  * 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,26 +41,34 @@
 
 #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
 
-#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, ...);
+#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,33 +80,11 @@
 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 */