Module Arm_target

Declarations of various ARM targets.

val parent : Bap_core_theory.Theory.Target.t

The parent of all ARM targets.

When a new target is declared it is advised to use this target as parent so that the newly declared target will be included into the ARM Targets family. The parent target is pure abstract and doesn't have any propreties set.

module LE : sig ... end

The family of little endian targets.

module EB : sig ... end

The family of big endian targets.

module Bi : sig ... end

The family of targets with switchable endiannes.

val llvm_a32 : Bap_core_theory.Theory.language
val llvm_t32 : Bap_core_theory.Theory.language
val llvm_a64 : Bap_core_theory.Theory.language
val load : ?⁠interworking:bool -> unit -> unit

load () loads the knowledge base rules for the ARM targets.

This includes parsing the loader output and enabling backward compatibility with the old Arch.t representation.

parameter [interworking]

if set disables/enables the interworking mode (switching between arm and thumb modes). If not set, then the presence of interworking is detected using heurisitics. Right now if the heuristic looks into the symbol table and if there is a symbol there with an odd address (which is used to indicate thumb encoding) then interworking is enabled.