Frama-C API - Cil_builtins
Builtins management
module Frama_c_builtins : State_builder.Hashtbl with type key = string and type data = Cil_types.varinfo
This module associates the name of a built-in function that might be used during elaboration with the corresponding varinfo. This is done when parsing ${FRAMAC_SHARE}/libc/__fc_builtins.h
, which is always performed before processing the actual list of files provided on the command line (see File.init_from_c_files
). Actual list of such built-ins is managed in Cabs2cil
.
val is_builtin : Cil_types.varinfo -> bool
val has_fc_builtin_attr : Cil_types.varinfo -> bool
val is_unused_builtin : Cil_types.varinfo -> bool
register a new family of special built-in functions.
initialize the C built-ins. Should be called once per project, after the machine has been set.
module Builtin_functions : State_builder.Hashtbl with type key = string and type data = Cil_types.typ * Cil_types.typ list * bool
A list of the built-in functions for the current compiler (GCC or MSVC, depending on !Machine.msvcMode
). Maps the name to the result and argument types, and whether it is vararg. Initialized by Machine.init
. Do not add builtins directly, use add_custom_builtin
below for that.
val string_of_compiler : compiler -> string
type builtin_template = {
name : string;
compiler : compiler option;
rettype : string;
args : string list;
types : string list option;
variadic : bool;
}
module Builtin_templates : State_builder.Hashtbl with type key = string and type data = builtin_template
module Gcc_builtin_templates_loaded : State_builder.Ref with type data = bool
val add_custom_builtin : (unit -> string * Cil_types.typ * Cil_types.typ list * bool) -> unit
Register a new builtin. The function will be called after setting the machdep and initializing machine-dependent builtins. Hence, types such Cil.uint16_t
might be used if needed.
val builtinLoc : Cil_types.location
This is used as the location of the prototypes of builtin functions.