Print this page
6282 ONBLD man pages not pbchk clean
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Josef Sipek <jeffpc@josefsipek.net>
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/tools/scripts/interface_cmp.1onbld.man.txt
+++ new/usr/src/tools/scripts/interface_cmp.1onbld.man.txt
1 -interface_cmp(1ONBLD) illumos Build Tools interface_cmp(1ONBLD)
1 +INTERFACE_CMP(1ONBLD) illumos Build Tools INTERFACE_CMP(1ONBLD)
2 2
3 3
4 4
5 5 NAME
6 6 interface_cmp - compare shared object interface descriptions
7 7
8 8 SYNOPSIS
9 9 interface_cmp [-dot] [-e exfile] old new
10 10
11 11 DESCRIPTION
12 12 The interface_cmp command compares the interface definition files for
13 13 two workspaces and reports versioning inconsistencies. Interface
14 14 definition files are created by interface_check.
15 15
16 16 interface_cmp is typically called from nightly(1ONBLD) when the -A
17 17 option is in effect following the creation of a new database by
18 18 interface_check. To insure symbolic interface consistency between
19 19 successive software releases, existing version definitions and their
20 20 symbol association should remain intact. Any discrepancies between the
21 21 two interface definitions are flagged as errors.
22 22
23 23 Note that version definition inheritance has the effect of causing a
24 24 symbol to be viewed as existing in multiple definitions. This insures
25 25 that both version definitions and their inheritance relationship are
26 26 processed as part of the comparison.
27 27
28 28 OPTIONS
29 29 The following options are supported:
30 30
31 31 -c vertype_module
32 32 By default, interface_cmp is customized for the versioning
33 33 conventions used by the Solaris OSnet code base. This specialized
34 34 information, which includes the recognition of the SUNW_ prefix and
35 35 other special names, is contained in a perl module named
36 36 onbld_elfmod_vertype.pm, which is delivered with the SUNWonbld
37 37 tools. This module is loaded by interface_cmp at runtime. The -c
38 38 option can be used to supply an alternative module, customized for
39 39 a different code base, allowing interface_cmp to operate on code
40 40 from other projects. The alternative module must supply the same
41 41 module and calling interfaces as the standard module.
42 42
43 43 -d Asserts that the new interface is a direct descendant of old. If
44 44 so, the following additional checks are enabled:
45 45
46 46 o The top version of an inheritance chain must not increase by
47 47 more than one.
48 48
49 49 o The new interface must not add new empty versions. Pre-existing
50 50 empty versions represent public interfaces that cannot be
51 51 changed, but new ones should be removed before the product
52 52 ships.
53 53
54 54
55 55 -e exfile
56 56 An exception file is used to exclude objects from the usual rules.
57 57 See EXCEPTION FILE FORMAT.
58 58
59 59 -o Produce one-liner output, with each line of diagnostic output
60 60 prefixed with the object pathname.
61 61
62 62 -t If the -t option is present, only one argument is allowed. The
63 63 interface description file is parsed, and then regenerated on
64 64 stdout in the same format used by the interface_check -I option.
65 65 The -I output from interface_check and the output from
66 66 interface_cmp -t should be identical, excluding header comments.
↓ open down ↓ |
55 lines elided |
↑ open up ↑ |
67 67 This is a debugging feature, and not intended for general use.
68 68
69 69 EXCEPTION FILE FORMAT
70 70 Exceptions to the rules enforced by interface_cmp are specified using
71 71 an exception file. The -e option is used to specify an explicit
72 72 exception file. Otherwise, if used in an activated workspace, the
73 73 default exception file is $CODEMGR_WS/exception_list/interface_cmp if
74 74 that file exists. If not used in an activated workspace, or if
75 75 $CODEMGR_WS/exception_list/interface_cmp does not exist, interface_cmp
76 76 will use /opt/onbld/etc/exception_list/interface_cmp as a fallback
77 - default exception file. To run interface_cmp without applying
78 - exceptions, specify -e with a value of /dev/null.
77 + default exception file.
79 78
79 + To run interface_cmp without applying exceptions, specify -e with a
80 + value of /dev/null.
81 +
80 82 A '#' character at the beginning of a line, or at any point in a line
81 83 when preceded by whitespace, introduces a comment. Empty lines, and
82 84 lines containing only comments, are ignored by interface_cmp.
83 85 Exceptions are specified as space separated keyword, and perl(1)
84 86 regular expressions. The number of regular expressions depends on the
85 87 particular exception in questions:
86 88
87 89 keyword perl-regex...
88 90
89 91 Since whitespace is used as a separator, the regular expression cannot
90 92 itself contain whitespace. Use of the \s character class to represent
91 93 whitespace within the regular expression is recommended. Before the
92 94 perl regular expression is used, constructs of the form MACH(dir) are
93 95 expanded into a regular expression that matches the directory given, as
94 96 well as any 64-bit architecture subdirectory that might be present
95 97 (i.e. amd64, sparcv9). For instance, MACH(lib) will match any of the
96 98 following:
97 99
98 100 lib
99 101 lib/amd64
100 102 lib/sparcv9
101 103
102 104 The exceptions understood by interface_cmp are:
103 105
104 106 ADDSYM sym_re version_re object_re
105 107
106 108 The interfaces in a given version are not supposed to
107 109 change. interface_cmp will normally issue an error if
108 110 a new interface is added to a previously released
109 111 version. ADDSYM is used to override this requirement.
110 112 If the added symbol, version, and object match the
111 113 regular expressions specified by ADDSYM, the added
112 114 symbol is ignored.
113 115
114 116
115 117 DELDYM sym_re version_re object_re
116 118
117 119 Once released to the public, interfaces are required
118 120 to remain available in subsequent releases. DELSYM is
119 121 used to override this requirement, as can occur when
120 122 interfaces are EOL'd. Such an action generally
121 123 requires a PSARC case. If the deleted symbol, version,
122 124 and object match the regular expressions specified by
123 125 DELSYM, the deleted symbol is ignored.
124 126
125 127
126 128 EMPTY_TOPVERSION version_re object_re
127 129
128 130 interface_cmp normally issues an error if the old
129 131 object has an empty top version that is non-empty in
130 132 the new object. Such a situation is normally an error,
131 133 but may legitimately occur as part of a fix to another
132 134 versioning error. If the version, and object match
133 135 the regular expressions specified by EMPTY_TOPVERSION,
134 136 the error is suppressed.
135 137
136 138
137 139 EXAMPLES
138 140 The following example uses interface_cmp to compare this releases
139 141 interface definition with a previous builds results:
140 142
141 143 % interface_cmp -d -o $SRC/ELF-data.$MACH.ref/interfaces \
142 144 $SRC/ELF-data.$MACH/interfaces
143 145 lib/libadm.so.1: SUNW_1.1: added interface: circf(4)
144 146 lib/libaio.so.1: SUNW_1.1: deleted interface: _aiocancel
145 147
146 148
↓ open down ↓ |
57 lines elided |
↑ open up ↑ |
147 149 Note: the above comparison files were doctored in order to provide the
148 150 example, they do not indicate any real changes that have occurred in
149 151 the associated system libraries.
150 152
151 153 SEE ALSO
152 154 find_elf(1ONBLD), interface_check(1ONBLD), ld(1), ldd(1), elfdump(1),
153 155 pvs(1).
154 156
155 157
156 158
157 - 25 March 2010 interface_cmp(1ONBLD)
159 + March 25, 2010 INTERFACE_CMP(1ONBLD)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX