First published .

Revision History

kate

Merged in Integral Type Specification and Dialect Features from C/C++ Checker Reference Manual, and moved out sections relevant to checking to C/C++ Checker Reference Manual.

Moved out documentation for the supplied portability tables from the C/C++ Producer Configuration Guide. Moved out portability table syntax to create a tdfc2portability manpage. Moved out compilation scheme for C++ spec file linking to C/C++ Checker Reference Manual.

kate

Restructured C/C++ Producer Configuration Guide.

kate

Some normalisation for makefile variables, now I'm done moving things around; this marks the start of clearing up the post-restructuring aftermath.

The various *_DIR variables have been replaced with PREFIX_* instead, and used more consistently. Since the layout under $PREFIX is now per-project, the machines directory is gone, and so this change removes variables associated with that.

Hopefully this should be a bit simpler for package maintainers to configure, by overriding whatever they wish.

kate

Move out the C++ LPI token implementations and the C++ (minimal) standard library to the producer project.

kate

Moved out the DRA producers as a standalone tool.

kate

Moved out the “invocation” chapter and related content to the tcpplus manpage.

Moved out the tdfc2dump symbol table dump syntax into a seperate manpage, tdfc2dump. Moved out a description of the symbol table semantics into a seperate document, The C/C++ Symbol Table Dump.

Moved out the The Pragma Token Syntax into a seperate document.

kate

Moved out the C/C++ Producer Implementation into a seperate document.

truedfx

Suppose three files are being used.

a.c:

#include "a.h"
int main(void) {}

a.h:

#include "b.h"

b.h:

extern int unused;

tendra outputs line directives based on the tokens that are present after preprocessing. Since no such tokens are found in a.h, there is no mention of a.h in the preprocessed output. This causes some configure scripts to fail. By printing the full #include stack every time the file changes, the problem is avoided. The printing is moved into a separate function because it needs to call itself recursively.

truedfx

Allow literal to prefix an expression to indicate that the expression is to be interpreted as a constant expression. This is useful for offsetof, which needs to returns a target-dependent constant expression. Without a way to force an expression as a constant, offsetof cannot be used in (for example) the definitions of enumeration constants.

literal does not become a keyword by default. It must be defined using

# pragma TenDRA keyword __literal for keyword literal

where __literal can be any valid identifier.

truedfx

Support anonymous unions as an extension in C. The code to handle these already exists in tendra, but is hidden in #if LANGUAGE_CPP blocks. Remove these #if blocks, add a new error so that use of this feature is still diagnosed in C by default. Add a pragma

# pragma TenDRA anonymous union ...

to allow this feature to be enabled or disabled during compilation, and default to an error for C, and no error for C++, to preserve the existing behaviour.

DERA

tcpplus 1.8.2; TenDRA 4.1.2 release.