---
name: "tdfc2"
section: "1"
platform: "linux"
package: "tendra"
version: "4.1.2-19"
release: "Debian 6.0 (Squeeze)"
platforms: ["linux"]
url: "https://new.carta.tech/tdfc2"
---

# tdfc2(1)

C to TDF/ANDF producer

## NAME

tdfc2 - C to TDF/ANDF producer

## SYNOPSIS

**tdfc2** \[ *options* \] \[ *input-file* \] \[ *output-file* \]

## DESCRIPTION

In its default action, **tdfc2** translates the input C source file, *input-file*, into a TDF/ANDF capsule, *output-file*.  If the output file name is omitted or is **-**, the standard output is used. If the input file name is omitted or is **-**, the standard input is used.

By use of the **-s***spec-file* option, **tdfc2** can additionally be made to output a C spec file which contains information enabling intermodule analysis to be performed.  Alternatively usage and error information suitable for processing by other tools can be output using the **-d***opt***=***dump-file* option.

**tdfc2** also has a preprocessing action, when invoked with the **-E** option, in which the input C source file, *input-file*, is preprocessed to an output file, *ouput-file*.

Finally **tdfc2** has a spec linker action, when invoked with the **-S** option, in which any number of spec input files, *input-file*, are combined into a spec output file, which may be specified using the **-s** option.  Any extra code generation resulting from this linking phase is written to the TDF capsule, *output-file*.

It is recommended that **tdfc2** is invoked via [*tcc*(1)](/tcc/1.md). The **-Yc++** option is required to enable the C capabilities. Files with a **.c** suffix are recognised as C source files. Options can be passed directly to **tdfc2** using the **-Wc,***opt* option to *tcc*.

## OPTIONS

The command-line options can appear in any order and can be interspersed with the input and output files.  All the multi-part options can be given either as one or two command-line arguments, so that **-I***dir* and **-I** *dir* are equivalent.  Most of the option handling required is handled by [*tcc*(1)](/tcc/1.md) when this is being used, but options may be passed directly to **tdfc2** using the **-Wc,***opt* option.

- **-A***predicate***(***tokens***)**

  Asserts that the given predicate is true.  The special case **-A-** undefines all the built-in predicates (of which there are none).

- **-D***macro*

  Defines the given macro to be 1.

- **-D***macro***=***tokens*

  Defines the given macro to be the given sequence of preprocessing tokens.

- **-E**

  Enables preprocessing mode in which the input C source file is preprocessed into the output file.

- **-F***file*

  Causes a list of options to be read from *file*.

- **-H**

  Enables verbose inclusion mode in which warnings are printed at the start and the end of each included source file.

- **-I***directory*

  Adds the given directory to the list searched by **tdfc2** for included source files.  No such directories are built into **tdfc2**.

- **-N***name***:***directory*

  Is identical to **-I***directory* except that it also associates the given identifier with the directory.

- **-S**

  Enables spec linker mode in which any number of C spec input files are linked into a single C spec output file.

- **-U***macro*

  Undefines the given macro.  The special case **-U-** undefines all the built-in macros.  These are **\_\_FILE\_\_**, **\_\_LINE\_\_**, **\_\_TIME\_\_**, **\_\_DATE\_\_**, **\_\_STDC\_\_** and **\_\_STDC\_VERSION\_\_**.

- **-V**

  Causes **tdfc2** to print the name of each function to the standard output as it is compiled.

- **-W***option*

  Causes **tdfc2** to print a warning in the circumstances described by *option*.  The special case **-Wall** enables a wide range of warnings.

- **-X**

  Disables exception handling.  The current implementation can be a large run-time overhead if not required.  The effect of linking any module compiled with this option with a module which throws an exception is undefined.  This is equivalent to **-j-e**.

- **-Z***number*

  Sets the maximum number of errors printed by **tdfc2** before bailing out to be *number*.  The default is 32.

- **-a**

  Causes **tdfc2** to apply complete program analysis to its input files.  That is it assumes that no other translation units need to be linked in order for the program to execute.

- **-c**

  Disables TDF output.  The output file will still be a valid TDF capsule, only it will contain no information.  This is equivalent to **-j-c**.

- **-d***opt***=***dump-file*

  Causes **tdfc2** to dump information about its input file into *dump-file*.  *opt* is a series of characters describing the information to be dumped; **c** for string literals, **e** for errors, **h** for header files, **k** for keywords, **l** for local variables, **m** for macros, **s** for scopes, and **u** for usage.  **a** is equivalent to **ehlmu**.

- **-e***file*

  Specifies the given file as an end-up file.  This is equivalent to adding a **#include** directive for this file at the end of the input source file.

- **-f***file*

  Specifies the given file as a start-up file.  This is equivalent to adding a **#include** directive for this file at the start of the input source file.

- **-g**

  Specifies that the output TDF capsule should also contain information to allow for the generation of run-time debugging directives.  This is equivalent to **-jg**.

- **-h**

  Causes **tdfc2** to print a full list of its available command-line options.  This includes a number not documented here which are unlikely to prove useful to the normal user.

- **-j***opt*

  Sets the TDF output options given by *opt*.

- **-m***opt*

  Sets the error formatting options given by *opt*.

- **-n***port-table*

  Specifies that the given portability table should be used to specify the basic configuration parameters.

- **-o***output-file*

  Gives an alternative method of specifying the output file.

- **-q**

  Causes **tdfc2** to quit immediately without processing its input file.  This is useful primarily in version and option queries.

- **-s***spec-file*

  Causes **tdfc2** to write a C spec file describing the input source file to *spec-file*.

- **-t**

  Specifies that **tdfc2** should include token declarations in its output TDF capsule.  While these are strictly unnecessary, they help when pretty-printing the output.  This is equivalent to **-jt**.

- **-u** *name ... name*

  Causes **tdfc2** to print the unmangle forms of the given mangled identifier names.

- **-v**

  Causes **tdfc2** to print its version number.

- **-w**

  Disables all warning messages.  This is equivalent to **-mw**.

- **-z**

  Forces **tdfc2** to produce an output file even if compilation errors occur.  The effect of installing a TDF capsule produced using this option is undefined.  This is equivalent to **-mz**.

## SEE ALSO

[*tcc*(1)](/tcc/1.md), [*tcpplus*(1)](/tcpplus/1.md).
