diff --git a/lib/bap_traces/bap_trace_event_types.ml b/lib/bap_traces/bap_trace_event_types.ml index f923615abb..ed38e5400b 100644 --- a/lib/bap_traces/bap_trace_event_types.ml +++ b/lib/bap_traces/bap_trace_event_types.ml @@ -62,6 +62,10 @@ module Modload = struct } [@@deriving bin_io, compare, fields, sexp] end +module Encoding = struct + type t = string [@@deriving bin_io, compare, sexp] +end + type 'a move = 'a Move.t [@@deriving bin_io, compare, sexp] type chunk = Chunk.t [@@deriving bin_io, compare, sexp] type syscall = Syscall.t [@@deriving bin_io, compare, sexp] @@ -69,3 +73,4 @@ type exn = Exn.t [@@deriving bin_io, compare, sexp] type call = Call.t [@@deriving bin_io, compare, sexp] type return = Return.t [@@deriving bin_io, compare, sexp] type modload = Modload.t [@@deriving bin_io, compare, sexp] +type encoding = Encoding.t [@@deriving bin_io, compare, sexp] diff --git a/lib/bap_traces/bap_trace_events.ml b/lib/bap_traces/bap_trace_events.ml index ecef5f5524..0dca6f4e10 100644 --- a/lib/bap_traces/bap_trace_events.ml +++ b/lib/bap_traces/bap_trace_events.ml @@ -104,6 +104,11 @@ module Pc_update = struct let pp = ppv "pc-update" Word.pp end +module Encoding = struct + include Encoding + let pp = ppv "encoding" String.pp +end + let memory_load = Value.Tag.register (module Load) ~name:"memory-load" @@ -168,3 +173,8 @@ let modload = Value.Tag.register (module Modload) ~name:"modload" ~uuid:"7f842d03-6c9f-4745-af39-002f468f7fc8" + +let encoding = + Value.Tag.register (module Encoding) + ~name:"encoding" + ~uuid:"f7ba0979-c3a9-4509-ba14-01faf577d478" diff --git a/lib/bap_traces/bap_trace_events.mli b/lib/bap_traces/bap_trace_events.mli index 829818149a..406eea5dff 100644 --- a/lib/bap_traces/bap_trace_events.mli +++ b/lib/bap_traces/bap_trace_events.mli @@ -65,3 +65,6 @@ val return : return tag (** represent an executable module being loaded *) val modload : modload tag + +(** the encoding used for future instructions has changed *) +val encoding : encoding tag diff --git a/lib/bap_traces/bap_traces.mli b/lib/bap_traces/bap_traces.mli index 83acc0138d..67c3d6ea6b 100644 --- a/lib/bap_traces/bap_traces.mli +++ b/lib/bap_traces/bap_traces.mli @@ -357,6 +357,13 @@ module Std : sig } [@@deriving bin_io, compare, fields, sexp] end + + (** change of encoding of instructions (e.g. switch to thumb) *) + module Encoding : sig + type t = string [@@deriving bin_io, compare, sexp] + end + + type 'a move = 'a Move.t [@@deriving bin_io, compare, sexp] type chunk = Chunk.t [@@deriving bin_io, compare, sexp] type syscall = Syscall.t [@@deriving bin_io, compare, sexp] @@ -364,6 +371,7 @@ module Std : sig type call = Call.t [@@deriving bin_io, compare, sexp] type return = Return.t [@@deriving bin_io, compare, sexp] type modload = Modload.t [@@deriving bin_io, compare, sexp] + type encoding = Encoding.t [@@deriving bin_io, compare, sexp] (** Types of events. *) module Event : sig @@ -409,6 +417,9 @@ module Std : sig (** a module (shared library) is dynamically linked into a host program. *) val modload : modload tag + + (** the encoding used for future instructions has changed *) + val encoding : encoding tag end