package bap-c

  1. Overview
  2. Docs
A C language support library for BAP

Install

Dune Dependency

Authors

Maintainers

Sources

v2.3.0.tar.gz
sha256=a6e80853aaaa26b7ca564d9878891d7146ec1c83852541387c1bba1ad036b8ea
md5=13f2cb1e3b9d90348852252fb0f2d09f

doc/bap-c/Bap_c_data/index.html

Module Bap_c_data

C Data model.

This module defines abstractions for C values.

A value is backed by a datum - a sequence of bits that represents the value. This module also defines models for integer representation.

type model32 = [
  1. | `LP32
  2. | `ILP32
]

models for 32 bit systems

type model64 = [
  1. | `ILP64
  2. | `LLP64
  3. | `LP64
]

models for 64 bit systems

type model = [
  1. | model32
  2. | model64
]

The following table summarize all models of integer representation.

      LP32	 ILP32	 ILP64	 LLP64	 LP64
char	  8	    8	     8	     8	    8
short	 16	   16	    16	    16	   16
int	 16	   32	    64	    32	   32
long	 32	   32	    64	    32	   64
addr    32	   32	    64	    64	   64
type value =
  1. | Top
    (*

    any possible value

    *)
  2. | Set of Bap.Std.word list
    (*

    one of the specified

    *)

Abstract value lattice. The lattice is complete, and Set [] is the supremum, i.e., the bot.

val bin_shape_value : Core_kernel.Bin_prot.Shape.t
val bin_size_value : value Core_kernel.Bin_prot.Size.sizer
val bin_write_value : value Core_kernel.Bin_prot.Write.writer
val bin_writer_value : value Core_kernel.Bin_prot.Type_class.writer
val __bin_read_value__ : (int -> value) Core_kernel.Bin_prot.Read.reader
val bin_read_value : value Core_kernel.Bin_prot.Read.reader
val bin_reader_value : value Core_kernel.Bin_prot.Type_class.reader
val bin_value : value Core_kernel.Bin_prot.Type_class.t
val compare_value : value -> value -> int
val value_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> value
val sexp_of_value : value -> Ppx_sexp_conv_lib.Sexp.t
type t =
  1. | Imm of Bap.Std.Size.t * value
    (*

    Imm (size,value)

    *)
  2. | Seq of t list
    (*

    Seq (t1,..,tN)

    *)
  3. | Ptr of t
    (*

    Ptr (type,size)

    *)

abstraction of a С datum.

The datum is a sequence of bits that represenst a particular C value. We abstract datum as either an immediate value of the given size and value lattice, or a sequence of data, or a pointer to a datum.

val bin_shape_t : Core_kernel.Bin_prot.Shape.t
val bin_size_t : t Core_kernel.Bin_prot.Size.sizer
val bin_write_t : t Core_kernel.Bin_prot.Write.writer
val bin_writer_t : t Core_kernel.Bin_prot.Type_class.writer
val __bin_read_t__ : (int -> t) Core_kernel.Bin_prot.Read.reader
val bin_read_t : t Core_kernel.Bin_prot.Read.reader
val bin_reader_t : t Core_kernel.Bin_prot.Type_class.reader
val bin_t : t Core_kernel.Bin_prot.Type_class.t
val compare : t -> t -> Base.Int.t
val t_of_sexp : Ppx_sexp_conv_lib.Sexp.t -> t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
OCaml

Innovation. Community. Security.