8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / test / libc-tests / cfg / symbols / README
blob41c35589e30acf314c22c9577b46d99cb44a9f48
2 # This file and its contents are supplied under the terms of the
3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 # You may only use this file in accordance with the terms of version
5 # 1.0 of the CDDL.
7 # A full copy of the text of the CDDL should have accompanied this
8 # source.  A copy of the CDDL is also available via the Internet at
9 # http://www.illumos.org/license/CDDL.
13 # Copyright 2015 Garrett D'Amore <garrett@damore.org>
14 # Copyright 2016 Joyent, Inc.
17 The configuration files in this directory are structured using the
18 syntax defined in the ../README file.  They make use of the compilation
19 environments declared in ../compilation.cfg, and are processed by the
20 symbols test.
22 We have organized the files by header file, that is the tests for symbols
23 declared in a header file (e.g. <unistd.h> appear in a file based on that
24 header file's name (e.g. unistd_h.cfg.)  This is purely for convenience.
26 Within these various declarations, we have the following field types:
28 <envs>    This is a list of compilation environments where the symbol
29           should be legal.  To indicate that the symbol must not be legal
30           an environment group can be prefixed with "-".  For example,
31           "SUS+ -SUSv4+" indicates a symbol that is legal in all SUS
32           environments up to SUSv3, and was removed in SUSv4 and subsequent
33           versions of SUS.  As you can see, we can list multiple environments
34           or environment groups, and we can add or remove to previous groups
35           with subsequent ones.
37 <name>    This is a symbol name.  It follows the rules for C symbol names.
39 <header>  This is a header file, for example, unistd.h.  Conventionally,
40           the header files used should match the file where the test is
41           declared.
43 <type>    This is a C type.  Function types can be declared without their
44           names, e.g. "void (*)(int)".  Structures (e.g. "struct stat") and
45           pointer types (e.g. "pthead_t *") are legal as well.
47 Here are the types of declarations in these files:
49 type | <name> | <header> | <envs>
51     Tests for a C type with <name>.  The test verifies that a variable with
52     this type can be declared when the <header> is included.
54 value | <name> | <type> | <header> | <envs>
56     Tests for a value named <name>, of type <type>.  The test attempts to
57     assign the given value to a scratch variable declared with the given
58     type.  The value can be a macro or other C symbol.
60 define | <name> | <value> | <header> | <envs>
62     Tests for a definition named <name>.  The test verifies that the
63     pre-processor sees the definition.  If the <value> entry is not
64     empty then the check also verifies that there is strict equality
65     between the pre-processor value and it.  Only strict equality checks
66     are supported at this time.
68 func | <name> | <type> | <type> [; <type> ]... | <header> | <envs>
70     Tests whether a function <name>, returning the first <type>, and
71     taking arguments of following <type> values, is declared.  Note that
72     the argument types are separated by semicolons.  For varargs style
73     functions, leave out the ... part.  For function declarations
74     that have no declared arguments, either void can specified, or
75     the type list can be omitted.
77 Examples:
79     type | size_t | sys/types.h | ALL
80     value | NULL | void * | stdlib.h | ALL
81     define | thread_local | | threads.h | -ALL +C11
82     define | __alignas_is_defined | 1 | threads.h | -ALL +C11
83     func | strnlen | int | const char *; int | string.h | ALL