Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
standards(5)		  Headers, Tables, and Macros		  standards(5)

NAME
       standards,  ANSI,  C,  ISO,  POSIX, POSIX.1, POSIX.2, SUS, SUSv2, SVID,
       SVID3, XNS, XNS4, XNS5, XPG, XPG3, XPG4,	XPG4v2 - standards and	speci-
       fications supported by Solaris

DESCRIPTION
       Solaris	7 supports IEEE	Std 1003.1 and IEEE Std	1003.2,	commonly known
       as POSIX.1 and POSIX.2, respectively. The following  table  lists  each
       version	of  these  standards with a brief description and the SunOS or
       Solaris release that first conformed to it.

       POSIX Standard		  Description		       Release
       POSIX.1-1988	system interfaces and headers	  SunOS	4.1
       POSIX.1-1990	POSIX.1-1988 update		  Solaris 2.0
       POSIX.1b-1993	realtime extensions		  Solaris 2.4
       POSIX.1c-1996	threads	extensions		  Solaris 2.6
       POSIX.2-1992	shell and utilities		  Solaris 2.5
       POSIX.2a-1992	interactive shell and utilities	  Solaris 2.5

       Solaris 7 also  supports	the  X/Open  Common  Applications  Environment
       (CAE)  Portability Guide	Issue 3	(XPG3) and Issue 4 (XPG4), Single UNIX
       Specification (SUS, also	known as XPG4v2), and Single  UNIX  Specifica-
       tion,  Version 2	(SUSv2). Both XPG4 and SUS include Networking Services
       Issue 4 (XNS4). SUSv2 includes Networking Services Issue	5 (XNS5).

       Solaris 7 also supports two application programming environments, ILP32
       (32-bit)	and LP64 (64-bit).

       The following table lists each X/Open specification with	 a  brief  de-
       scription and the SunOS or Solaris release that first conformed to it.

       X/Open CAE Specification		 Description		    Release
       XPG3			  superset  of	POSIX.1-1988   SunOS 4.1
				  containing utilities	from
				  SVID3
       XPG4			  superset  of POSIX.1-1990,   Solaris 2.4
				  POSIX.2-1992,		 and
				  POSIX.2a-1992	  containing
				  extensions to	POSIX  stan-
				  dards	from XPG3
       SUS (XPG4v2)		  superset  of XPG4 contain-   Solaris 2.6
				  ing historical BSD  inter-
				  faces	 widely	used by	com-
				  mon application packages
       XNS4			  sockets and XTI interfaces   Solaris 2.6
       SUSv2			  superset of  SUS  extended   Solaris 7
				  to  support POSIX.1b-1993,
				  POSIX.1c-1996, and ISO/IEC
				  9899 (C  Standard)  Amend-
				  ment 1
       XNS5			  superset   and  LP64-clean   Solaris 7
				  derivative of	XNS4.

       The XNS4	specification is safe for use only in ILP32 (32-bit)  environ-
       ments  and  should  not	be used	for LP64 (64-bit) application environ-
       ments. Use XNS5,	which has  LP64-clean  interfaces  that	 are  portable
       across ILP32 and	LP64 environments.

       Solaris 7 has been branded to conform to	The Open Group's UNIX 98 Prod-
       uct Standard.

       Solaris releases	2.0 through 7 also support the interfaces specified by
       the  System  V Interface	Definition, Third Edition, Volumes 1 through 4
       (SVID3).	 Note, however,	that since the developers of  this  specifica-
       tion  (UNIX  Systems  Laboratories) are no longer in business and since
       this specification defers to POSIX and X/Open CAE specifications, there
       is some disagreement about what is currently required  for  conformance
       to this specification.

       When  Sun  WorkShop Compilertm C	4.2 is installed, Solaris releases 2.0
       through 7 support the ANSI X3.159-1989 Programming  Language  -	C  and
       ISO/IEC 9899:1990 Programming Language -	C (C) interfaces.

       When  Sun  WorkShop  Compilertm C 5.0 is	installed, Solaris 7 also sup-
       ports ISO/IEC 9899 Amendment 1: C Integrity.

   Utilities
       If the behavior required	by POSIX.2, POSIX.2a, XPG4, SUS, or SUSv2 con-
       flicts with historical Solaris utility behavior,	the  original  Solaris
       version	of  the	 utility is unchanged; a new version that is standard-
       conforming has been provided in /usr/xpg4/bin. For applications wishing
       to take advantage of POSIX.2, POSIX.2a, XPG4, SUS, or  SUSv2  features,
       the  PATH (sh or	ksh) or	path (csh) environment variables should	be set
       with /usr/xpg4/bin preceding any	other directories in  which  utilities
       specified  by  those  specifications are	found, such as /bin, /usr/bin,
       /usr/ucb, and /usr/ccs/bin.

   Feature Test	Macros
       Feature test macros are used by	applications  to  indicate  additional
       sets of features	that are desired beyond	those specified	by the C stan-
       dard.  If an application	uses only those	interfaces and headers defined
       by a particular standard	(such as POSIX or X/Open CAE),	then  it  need
       only  define the	appropriate feature test macro specified by that stan-
       dard. If	the application	is using interfaces and	headers	not defined by
       that standard, then in addition to defining  the	 appropriate  standard
       feature	test macro, it must also define	__EXTENSIONS__.	Defining __EX-
       TENSIONS__ provides the application with	access to all  interfaces  and
       headers	not  in	 conflict with the specified standard. The application
       must define __EXTENSIONS__ either at compile time or  within the	appli-
       cation.

   ANSI/ISO C
       No feature test macros need to be defined to indicate that an  applica-
       tion is a conforming C application.

   POSIX
       Applications  that  are	intended to be conforming POSIX.1 applications
       must define the feature test macros specified by	 the  standard	before
       including  any  headers.	  For the standards listed below, applications
       must define the feature test macros listed.  Application	 writers  must
       check  the corresponding	standards for other macros that	can be queried
       to determine if desired options are supported by	the implementation.

	     POSIX Standard		 Feature Test Macros
       POSIX.1-1990		     _POSIX_SOURCE
       POSIX.1-1990 and		     _POSIX_SOURCE and
	  POSIX.2-1992 C-Language	_POSIX_C_SOURCE=2
	  Bindings Option
       POSIX.1b-1993		     _POSIX_C_SOURCE=199309L
       POSIX.1c-1996		     _POSIX_C_SOURCE=199506L

   SVID3
       The SVID3 specification does not	specify	any feature test macros	to in-
       dicate that an application is written to	meet SVID3 requirements.   The
       SVID3 specification was written before the C standard was completed.

   X/Open CAE
       To  build  or compile an	application that conforms to one of the	X/Open
       CAE specifications, use the following guidelines. Applications need not
       set the POSIX feature test macros if they require both  CAE  and	 POSIX
       functionality.

       XPG3  The application must define _XOPEN_SOURCE with a value other than
	     500 (preferably 1).

       XPG4  The application must define _XOPEN_SOURCE with a value other than
	     500 (preferably 1)	and set	_XOPEN_VERSION=4.

       SUS (XPG4v2)
	     The application must define _XOPEN_SOURCE with a value other than
	     500 (preferably 1)	and set	_XOPEN_SOURCE_EXTENDED=1.

       SUSv2 The application must define _XOPEN_SOURCE=500.

   Compilation
       A  POSIX.2-,  XPG4-,  SUS-, or SUSv2-conforming implementation must in-
       clude an	ANSI X3.159-1989 (ANSI C Language) standard-conforming	compi-
       lation  system  and the cc and c89 utilities. Solaris 7 was tested with
       the cc and c89 utilities	and the	compilation  system  provided  by  Sun
       WorkShop	 Compilertm C 5.0 in the SPARC and IA environments. When cc is
       used to link applications, /usr/ccs/lib/values-xpg4.o must be specified
       on any link/load	command	line, but the preferred	way to build  applica-
       tions is	described below.

       An  XNS4-  or  XNS5-conforming  application  must include -l XNS	on any
       link/load command line.

       If the compiler suppports the redefine_extname pragma feature (the  Sun
       WorkShop	 Compilertm  C	4.2 and	Sun WorkShop Compilertm	C 5.0 compiler
       defines the macro __PRAGMA_REDEFINE_EXTNAME to indicate	that  it  sup-
       ports  this  feature),  then  the  standard  headers  use #pragma rede-
       fine_extname directives to properly map function	names onto library en-
       try point names.	This mapping provides full support for ISO  C,	POSIX,
       and  X/Open namespace reservations.  The	Sun WorkShop  Compilertm C 5.0
       compiler	was used for all branding and certification tests for  Solaris
       7.

       If  this	 pragma	 feature is not	supported by the compiler, the headers
       use the #define directive to map	internal function names	onto appropri-
       ate library entry point names. In this  instance,  applications	should
       avoid  using  the  explicit  64-bit  file  offset symbols listed	on the
       lf64(5) manual page, since these	names are used by  the	implementation
       to name the alternative entry points.

       When  using  Sun	 WorkShop Compilertm C 5.0, applications conforming to
       the specifications listed above should be compiled using	the  utilities
       and flags indicated in the following table:

	  Specification	      Compiler/Flags	   Feature Test	Macros
       ANSI/ISO	C	      c89	       none
       SVID3		      cc -Xt	       none
       POSIX.1-1990	      c89	       _POSIX_SOURCE
       POSIX.1-1990 and	      c89	       _POSIX_SOURCE  and
	  POSIX.2-1992				  POSIX_C_SOURCE=2
	  C-Language
	  Bindings Option
       POSIX.1b-1993	      c89	       _POSIX_C_SOURCE=199309L
       POSIX.1c-1996	      c89	       _POSIX_C_SOURCE=199506L
       CAE XPG3		      cc -Xa	       _XOPEN_SOURCE
       CAE XPG4		      c89	       _XOPEN_SOURCE and
						  _XOPEN_VERSION=4
       SUS (CAE	XPG4v2)	      c89	       _XOPEN_SOURCE and
	  (includes XNS4)			  _XOPEN_SOURCE_EXTENDED=1
       SUSv2(includes XNS5)   c89	       _XOPEN_SOURCE=500

       For  platforms  supporting  the	LP64  (64-bit) programming environment
       where the SC5.0 Compilers have been  installed,	SUSv2-conforming  LP64
       applications  using  XNS5  library  calls  should be built with command
       lines of	the form:

       c89 $(getconf XBS5_LP64_OFF64_CFLAGS) -D_XOPEN_SOURCE=500 \
	   $(getconf XBS5_LP64_OFF64_LDFLAGS) foo.c -o foo \
	   $(getconf XBS5_LP64_OFF64_LIBS) -lxnet

SEE ALSO
       sysconf(3C), environ(5),	lf64(5)

SunOS 5.8			  13 Jul 1998			  standards(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=standards&manpath=SunOS+5.8>

home | help