FFX (Flow Fact in XML) format

Content

12 Data Flow Properties

These properties allows to describe the behavior of program data. They are embedded in data element and allows to precise properties of the embedding data item.

The consistency of the data description and of the type description in the application executable (debugging information or high-level sources) must be enforced when processing such information and may be a serious cause for rejecting an FFX file.

12.1 Domain Properties

The domain property definition depends on the real type of the target data item. Both types from program representation and from the FFX description must be consistent to be applied.

DOMAIN-PROPERTY ::=
  | SCALAR-DOMAIN
  | POINTER-DOMAIN
  | ARRAY-DOMAIN
  | STRUCT-DOMAIN

12.1.1 Scalar Type

SCALAR-PROPERTY ::=
  | <const value="VALUE"/>
  | <range lower="VALUE"? upper="VALUE"? step="INT"?/> 

A VALUE depends on the type of the data item itself. It may be one of INT, FLOAT or TEXT in case of an enumerated value. The const allows to assign a constant value to the data item while a range allows to defines a range of value according to the lower, upper and step attributes.

Basically, the data item is in the range [lower, upper]. If the lower attribute is not provided, it is considered as -; if the upper is not defined, it the +. The step allows to define non-full set according to, for example, alignment requirements of memory.

The step is only meaningful of the data item type is integer and defined by:

12.1.2 Pointer Type

A pointer may be defined directly by an address or by a symbolic expression designing a data item whose address is obtained.

POINTER-PROPERTY ::=
  | <address> ADDR </address>
  | ID-ELEMENT

12.1.3 Array Type

The array domain definition allows to assign values to the different items of an array:

ARRAY-DOMAIN ::= <array> ARRAY-ITEM* </array>

ARRAY-ITEM ::=
  | <item index="INT"> DOMAIN-PROPERTY </item>
  | <range lower="INT" upper="INT"> DOMAIN-PROPERTY </range>
  | <other> DOMAIN-PROPERTY </other>

The first allows to assign a domain value to the item of the given index, the next designs a range of items between the lower and the upper indexes (inclusively). The last form can only be unique in the array item list and gives a default value for other items.

12.1.4 Structure Type

The structure type allows to define the domain value of one or several contained fields:

STRUCT-DOMAIN ::= <struct> STRUCT-FIELD* </struct>

STRUCT-ITEM ::=
  <field name="TEXT"> DOMAIN-PROPERTY </field>

12.2 Mutability

FFX is defined in the paradigm of real-time applications running on real hardware host. Therefore, the different data are handled by different entities (tasks, IO registers) of the application and at different time depending on the way the tasks are scheduled (task interlacing, interrupts and preemption).

The goal of this property is to explicit the behavior of the data according to this context. Such an information item may be used to get a better knowledge of the mutation of the data and to improve the accuracy of the analyses.

MUTABILITY-PROPERTY ::= <mutable kind="MUTABILITY-KIND"/>

MUTABILITY-KIND ::= stable | out | in

As any property of the data element, the mutability property applies only in the context where it is defined. This lets define different mutability property according to the current execution context.

The meaning of the mutability kinds follows: