2 .\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
3 .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
4 .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
5 .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
6 .TH STANDARDS 5 "Jan 11, 2015"
8 standards, ANSI, C, C++, ISO, POSIX, POSIX.1, POSIX.2, SUS, SUSv2, SUSv3, SVID,
9 SVID3, XNS, XNS4, XNS5, XPG, XPG3, XPG4, XPG4v2 \- standards and specifications
13 Solaris 10 supports IEEE Std 1003.1 and IEEE Std 1003.2, commonly known as
14 POSIX.1 and POSIX.2, respectively. The following table lists each version of
15 these standards with a brief description and the SunOS or Solaris release that
16 first conformed to it.
23 POSIX Standard Description Release
25 POSIX.1-1988 system interfaces and headers SunOS 4.1
27 POSIX.1-1990 POSIX.1-1988 update Solaris 2.0
29 POSIX.1b-1993 realtime extensions Solaris 2.4
31 POSIX.1c-1996 threads extensions Solaris 2.6
33 POSIX.2-1992 shell and utilities Solaris 2.5
35 POSIX.2a-1992 interactive shell and utilities Solaris 2.5
38 POSIX.1-1990, POSIX.1b-1993, POSIX.1c-1996, POSIX.2-1992, and POSIX.2a-1992 updates
44 Solaris 10 also supports the X/Open Common Applications Environment (CAE)
45 Portability Guide Issue 3 (XPG3) and Issue 4 (XPG4); Single UNIX Specification
46 (SUS, also known as XPG4v2); Single UNIX Specification, Version 2 (SUSv2); and
47 Single UNIX Specification, Version 3 (SUSv3). Both XPG4 and SUS include
48 Networking Services Issue 4 (XNS4). SUSv2 includes Networking Services Issue 5
52 The following table lists each X/Open specification with a brief description
53 and the SunOS or Solaris release that first conformed to it.
62 Specification Description Release
65 superset of POSIX.1-1988 containing utilities from SVID3
69 superset of POSIX.1-1990, POSIX.2-1992, and POSIX.2a-1992 containing extensions to POSIX standards from XPG3
73 superset of XPG4 containing historical BSD interfaces widely used by common application packages
76 XNS4 sockets and XTI interfaces Solaris 2.6
79 superset of SUS extended to support POSIX.1b-1993, POSIX.1c-1996, and ISO/IEC 9899 (C Standard) Amendment 1
83 superset and LP64-clean derivative of XNS4.
86 SUSv3 same as POSIX.1-2001 Solaris 10
91 The XNS4 specification is safe for use only in ILP32 (32-bit) environments and
92 should not be used for LP64 (64-bit) application environments. Use XNS5 or
93 SUSv3, which have LP64-clean interfaces that are portable across ILP32 and LP64
94 environments. Solaris releases 7 through 10 support both the ILP32 and LP64
98 Solaris releases 7 through 10 have been branded to conform to The Open Group's
99 UNIX 98 Product Standard. Solaris 10 has been branded to conform to The Open
100 Group's UNIX 03 Product Standard.
103 Solaris releases 2.0 through 10 support the interfaces specified by the System
104 V Interface Definition, Third Edition, Volumes 1 through 4 (SVID3). Note,
105 however, that since the developers of this specification (UNIX Systems
106 Laboratories) are no longer in business and since this specification defers to
107 POSIX and X/Open CAE specifications, there is some disagreement about what is
108 currently required for conformance to this specification.
111 When \fBSun Studio C Compiler 5.6\fR is installed, Solaris releases 2.0 through
112 10 support the ANSI X3.159-1989 Programming Language - C and ISO/IEC 9899:1990
113 Programming Language - C (C) interfaces.
116 When \fBSun Studio C Compiler 5.6\fR is installed, Solaris releases 7 through
117 10 support ISO/IEC 9899:1990 Amendment 1:1995: C Integrity.
120 When \fBSun Studio C Compiler 5.6\fR is installed, Solaris 10 supports ISO/IEC
121 9899:1999 Programming Languages - C.
124 When \fBSun Studio C++ Compiler 5.6\fR is installed, Solaris releases 2.5.1
125 through 10 support ISO/IEC 14882:1998 Programming Languages - C++. Unsupported
126 features of that standard are described in the compiler README file.
129 If the behavior required by POSIX.2, POSIX.2a, XPG4, SUS, or SUSv2 conflicts
130 with historical Solaris utility behavior, the original Solaris version of the
131 utility is unchanged; a new version that is standard-conforming has been
132 provided in \fB/usr/xpg4/bin\fR. If the behavior required by POSIX.1-2001 or
133 SUSv3 conflicts with historical Solaris utility behavior, a new version that is
134 standard-conforming has been provided in \fB/usr/xpg4/bin\fR or in
135 \fB/usr/xpg6/bin\fR. If the behavior required by POSIX.1-2001 or SUSv3
136 conflicts with POSIX.2, POSIX.2a, SUS, or SUSv2, a new version that is SUSv3
137 standard-conforming has been provided in \fB/usr/xpg6/bin\fR.
140 An application that wants to use standard-conforming utilities must set the
141 \fBPATH\fR (\fBsh\fR(1) or \fBksh\fR(1)) or \fBpath\fR (\fBcsh\fR(1))
142 environment variable to specify the directories listed below in the order
143 specified to get the appropriate utilities:
164 directory containing binaries for your compiler
169 other directories containing binaries needed by the application
176 \fBPOSIX.2, POSIX.2a, SUS, SUSv2, XPG4\fR
198 directory containing binaries for your compiler
203 other directories containing binaries needed by the application
210 \fBPOSIX.1-2001, SUSv3\fR
237 directory containing binaries for your compiler
242 other directories containing binaries needed by the application
246 .SS "Feature Test Macros"
248 Feature test macros are used by applications to indicate additional sets of
249 features that are desired beyond those specified by the C standard. If an
250 application uses only those interfaces and headers defined by a particular
251 standard (such as POSIX or X/Open CAE), then it need only define the
252 appropriate feature test macro specified by that standard. If the application
253 is using interfaces and headers not defined by that standard, then in addition
254 to defining the appropriate standard feature test macro, it must also define
255 \fB__EXTENSIONS__\fR. Defining \fB__EXTENSIONS__\fR provides the application
256 with access to all interfaces and headers not in conflict with the specified
257 standard. The application must define \fB__EXTENSIONS__\fR either on the
258 compile command line or within the application source files.
259 .SS "1989 ANSI C, 1990 ISO C, 1999 ISO C"
261 No feature test macros need to be defined to indicate that an application is a
262 conforming C application.
265 ANSI/ISO C++ does not define any feature test macros. If the standard C++
266 announcement macro \fB__cplusplus\fR is predefined to value 199711 or greater,
267 the compiler operates in a standard-conforming mode, indicating C++ standards
268 conformance. The value 199711 indicates conformance to ISO/IEC 14882:1998, as
269 required by that standard. (As noted above, conformance to the standard is
270 incomplete.) A standard-conforming mode is not available with compilers prior
271 to Sun WorkShop C++ 5.0.
274 C++ bindings are not defined for POSIX or X/Open CAE, so specifying feature
275 test macros such as \fB_POSIX_SOURCE\fR, \fB_POSIX_C_SOURCE\fR, and
276 \fB_XOPEN_SOURCE\fR can result in compilation errors due to conflicting
277 requirements of standard C++ and those specifications.
280 Applications that are intended to be conforming POSIX.1 applications must
281 define the feature test macros specified by the standard before including any
282 headers. For the standards listed below, applications must define the feature
283 test macros listed. Application writers must check the corresponding standards
284 for other macros that can be queried to determine if desired options are
285 supported by the implementation.
292 \fBPOSIX Standard\fR \fBFeature Test Macros\fR
294 POSIX.1-1990 \fB_POSIX_SOURCE\fR
297 POSIX.1-1990 and POSIX.2-1992 C-Language Bindings Option
298 T} \fB_POSIX_SOURCE\fR and \fB_POSIX_C_SOURCE=2\fR
299 POSIX.1b-1993 \fB_POSIX_C_SOURCE=199309L\fR
301 POSIX.1c-1996 \fB_POSIX_C_SOURCE=199506L\fR
303 POSIX.1-2001 \fB_POSIX_C_SOURCE=200112L\fR
308 The SVID3 specification does not specify any feature test macros to indicate
309 that an application is written to meet SVID3 requirements. The SVID3
310 specification was written before the C standard was completed.
313 To build or compile an application that conforms to one of the X/Open CAE
314 specifications, use the following guidelines. Applications need not set the
315 POSIX feature test macros if they require both CAE and POSIX functionality.
322 The application must define \fB_XOPEN_SOURCE\fR. If \fB_XOPEN_SOURCE\fR is
323 defined with a value, the value must be less than 500.
332 The application must define \fB_XOPEN_SOURCE\fR and set \fB_XOPEN_VERSION=4\fR.
333 If \fB_XOPEN_SOURCE\fR is defined with a value, the value must be less than
343 The application must define \fB_XOPEN_SOURCE\fR and set
344 \fB_XOPEN_SOURCE_EXTENDED=1\fR. If \fB_XOPEN_SOURCE\fR is defined with a value,
345 the value must be less than 500.
354 The application must define \fB_XOPEN_SOURCE=500\fR.
363 The application must define \fB_XOPEN_SOURCE=600\fR.
368 A POSIX.1 (1988-1996)-, XPG4-, SUS-, or SUSv2-conforming implementation must
369 include an ANSI X3.159-1989 (ANSI C Language) standard-conforming compilation
370 system and the \fBcc\fR and \fBc89\fR utilities. A POSIX.1-2001- or
371 SUSv3-conforming implementation must include an ISO/IEC 99899:1999 (1999 ISO C
372 Language) standard-conforming compilation system and the \fBc99\fR utility.
373 Solaris 10 was tested with the \fBcc\fR, \fBc89\fR, and \fBc99\fR utilities and
374 the compilation environment provided by \fBSun Studio C Compiler 5.6\fR.
377 When \fBcc\fR is used to link applications, \fB/usr/lib/values-xpg4.o\fR must
378 be specified on any link/load command line, unless the application is
379 POSIX.1-2001- or SUSv3-conforming, in which case \fB/usr/lib/values-xpg6.o\fR
380 must be specified on any link/load compile line. The preferred way to build
381 applications, however, is described in the table below.
384 An XNS4- or XNS5-conforming application must include \fB-l\fR \fBXNS\fR on any
385 link/load command line in addition to defining the feature test macros
386 specified for SUS or SUSv2, respectively.
389 If the compiler suppports the \fBredefine_extname\fR pragma feature (the \fBSun
390 Studio C Compiler 5.6\fR compilers define the macro
391 \fB__PRAGMA_REDEFINE_EXTNAME\fR to indicate that it supports this feature),
392 then the standard headers use \fB#pragma\fR \fBredefine_extname\fR directives
393 to properly map function names onto library entry point names. This mapping
394 provides full support for ISO C, POSIX, and X/Open namespace reservations.
397 If this pragma feature is not supported by the compiler, the headers use the
398 \fB#define\fR directive to map internal function names onto appropriate library
399 entry point names. In this instance, applications should avoid using the
400 explicit 64-bit file offset symbols listed on the \fBlf64\fR(5) manual page,
401 since these names are used by the implementation to name the alternative entry
405 When using \fBSun Studio C Compiler 5.6\fR compilers, applications conforming
406 to the specifications listed above should be compiled using the utilities and
407 flags indicated in the following table:
411 Specification Compiler/Flags Feature Test Macros
412 _________________________________________________________________________
413 1989 ANSI C and 1990 ISO C c89 none
414 _________________________________________________________________________
416 _________________________________________________________________________
419 _________________________________________________________________________
420 SVID3 cc -Xt -xc99=none none
421 _________________________________________________________________________
422 POSIX.1-1990 c89 _POSIX_SOURCE
423 _________________________________________________________________________
424 POSIX.1-1990 and POSIX.2-1992 c89 _POSIX_SOURCE and
425 C-Language Bindings Option POSIX_C_SOURCE=2
426 _________________________________________________________________________
427 POSIX.1b-1993 c89 _POSIX_C_SOURCE=199309L
428 _________________________________________________________________________
429 POSIX.1c-1996 c89 _POSIX_C_SOURCE=199506L
430 _________________________________________________________________________
431 POSIX.1-2001 c99 _POSIX_C_SOURCE=200112L
432 _________________________________________________________________________
433 CAE XPG3 cc -Xa -xc99=none _XOPEN_SOURCE
434 _________________________________________________________________________
435 CAE XPG4 c89 _XOPEN_SOURCE and
437 _________________________________________________________________________
438 SUS (CAE XPG4v2) c89 _XOPEN_SOURCE and
439 (includes XNS4) _XOPEN_SOURCE_EXTENDED=1
440 _________________________________________________________________________
441 SUSv2 (includes XNS5) c89 _XOPEN_SOURCE=500
442 _________________________________________________________________________
443 SUSv3 c99 _XOPEN_SOURCE=600
450 For platforms supporting the LP64 (64-bit) programming environment,
451 SUSv2-conforming LP64 applications using XNS5 library calls should be built
452 with command lines of the form:
456 c89 $(getconf XBS5_LP64_OFF64_CFLAGS) -D_XOPEN_SOURCE=500 \e
457 $(getconf XBS5_LP64_OFF64_LDFLAGS) foo.c -o foo \e
458 $(getconf XBS5_LP64_OFF64_LIBS) -lxnet
464 Similar SUSv3-conforming LP64 applications should be built with command lines
469 c99 $(getconf POSIX_V6_LP64_OFF64_CFLAGS) -D_XOPEN_SOURCE=600 \e
470 $(getconf POSIX_V6_LP64_OFF64_LDFLAGS) foo.c -o foo \e
471 $(getconf POSIX_V6_LP64_OFF64_LIBS) -lxnet
481 \fB_XOPEN_SOURCE=600\fR
486 \fBcsh\fR(1), \fBksh\fR(1), \fBsh\fR(1), \fBexec\fR(2), \fBsysconf\fR(3C),
487 \fBsystem\fR(3C), \fBenviron\fR(5), \fBlf64\fR(5)