Within Annex J, the lists of Unspecified (J.1), Undefined (J.2), Implementation-Defined (J.3) and Locale-specific (J.4) behaviours, plus Common Extensions (J.5) are in the form of unordered lists, which makes referencing an entry very difficult - especially in third-party documents... this is compounded by new entries often being added mid-list - whether by TC or at full revision - which makes any third-party numbering attempts obsolete. This paper requests that these lists be made ordered by enumerating them to allow referencing. This has the added advantage that the declaration of the behaviours can then be tagged with that reference, thus ensuring that all such behaviours are listed in Annex J.
Some may question whether Annex J serves a purpose, and may even recommend its deletion... and while it may be the case that some software may rely on these behaviours, in the high-integrity sectors (where safety and security are key considerations) the unpredictability of many of these behaviours is considered undesirable; in these cases, Annex J provides a useful basis for a coverage/compliance matrix against these behaviours, both from a user-perspective but also from a tool-vendor or compiler-vendor perspective.
Notes:
Note: Future additions to these lists should always be added to the end of the respective section.
Annex J.1 - Unspecified Behaviour
That the 58 entries in Annex J.1 are numbered as J.1(1) ... J.1(58)
Annex J.2 - Undefined Behaviour
That the 185 entries in Annex J.2 are numbered as J.2(1) ... J.2(185)
Annex J.3 - Implementation-Defined Behaviour
That the 2 entries in Annex J.3.1 are numbered as J.3.1(1) ... J.3.1(2)
That the 12 entries in Annex J.3.2 are numbered as J.3.2(1) ... J.3.2(12)
That the 3 entries in Annex J.3.3 are numbered as J.3.3(1) ... J.3.3(3)
That the 13 entries in Annex J.3.4 are numbered as J.3.4(1) ... J.3.4(13)
That the 5 entries in Annex J.3.5 are numbered as J.3.5(1) ... J.3.5(5)
That the 11 entries in Annex J.3.6 are numbered as J.3.6(1) ... J.3.6(11)
That the 2 entries in Annex J.3.7 are numbered as J.3.7(1) ... J.3.7(2)
That the 2 entries in Annex J.3.8 are numbered as J.3.8(1) ... J.3.8(2)
That the 7 entries in Annex J.3.9 are numbered as J.3.9(1) ... J.3.9(7)
That the 1 entry in Annex J.3.10 is numbered as J.3.10(1)
That the 11 entries in Annex J.3.11 are numbered as J.3.11(1) ... J.3.11(11)
That the 46 entries in Annex J.3.12 are numbered as J.3.12(1) ... J.3.12(46)
That the 6 entries in Annex J.3.13 are numbered as J.3.13(1) ... J.3.13(6)
Annex J.4 - Locale-Specific Behaviour
That the 15 entries in Annex J.4 are numbered as J.4(1) ... J.4(15)
Annex J.5 - Common Extensions
That the entry in Annex J.5.1 is numbered as J.5.1(1)
That the entry in Annex J.5.2 is numbered as J.5.2(1)
That the entry in Annex J.5.3 is numbered as J.5.3(1)
That the entry in Annex J.5.4 is numbered as J.5.4(1)
That the entry in Annex J.5.5 is numbered as J.5.5(1)
That the entry in Annex J.5.6 is numbered as J.5.6(1)
That the entries in Annex J.5.7 are numbered as J.5.7(1) and J.5.7(2)
That the entry in Annex J.5.8 is numbered as J.5.8(1)
That the entry in Annex J.5.9 is numbered as J.5.9(1)
That the entry in Annex J.5.10 is numbered as J.5.10(1)
That the entry in Annex J.5.11 is numbered as J.5.11(1)
That the entry in Annex J.5.12 is numbered as J.5.12(1)
That the entry in Annex J.5.13 is numbered as J.5.13(1)
That the entry in Annex J.5.14 is numbered as J.5.14(1)
That the entries in Annex J.5.15 are numbered as J.5.15(1) and J.5.15(2)
That the entry in Annex J.5.16 is numbered as J.5.16(1)
That the entry in Annex J.5.17 is numbered as J.5.17(1)
This allows the Unspecified, Undefined, Implementation-Defined, or Locale-specific Behaviour to be refered to as (eg) Unspecified J.1(1) both internally within the Standard, and externally (eg by ISO 17961, CERT-C or MISRA C, or by compiler/analysis-tool documentation).
That where-ever the Standard declares Unspecified, Undefined, Implementation-Defined, or Locale-specific Behaviour, the declaration is tagged (as a superscript) with the reference in Annex J.
(As an aside, this should ensure that all cases of Unspecified, Undefined, Implementation-Defined, or Locale-specific Behaviour is included in Annex J).
Clause | Line | Change Recommended |
---|---|---|
Make the following changes to add cross-references as superscript tags: | ||
Unspecified Behaviour | ||
Clause 5.1.2 | Line 5 | tag unspecified with superscript J.1(1) |
Clause 5.1.2.2.3 | Line 5 | tag unspecified with superscript J.1(2) |
Clause 5.1.2.3(5) | Line 3 | tag unspecified with superscript J.1(3) |
Clause 5.2.2(1) | Line 7 | tag unspecified with superscript J.1(4) |
Clause 5.2.2(2) | Line 3 of \b | tag unspecified with superscript J.1(5) |
Clause 5.2.2(2) | Line 3 of \t | tag unspecified with superscript J.1(6) |
Clause 5.2.2(2) | Line 3 of \v | tag unspecified with superscript J.1(7) |
etc | ||
Undefined Behaviour | ||
Clause 4 | Line 2 | tag undefined with superscript J.2(1) |
etc | ||
Implementation-defined Behaviour | ||
Clause 3.10 | Line 1 | tag implementation-defined with superscript J.3.1(1) |
Clause 5.1.1.3 | Line 4 | tag implementation-defined with superscript J.3.1(1) |
Clause 5.1.1.2 | Line 2 | tag implementation-defined with superscript J.3.1(2) |
etc | ||
Locale-specific Behaviour | ||
Clause 5.2.1 | Line 5 | tag locale-specific with superscript J.4(1) |
etc | ||