Skip to content

Commit f85e06c

Browse files
authored
refines and extends target definitions (#1430)
1. adds a few nicknames for various targets 2. rectifies target hierarachies 3. fixes bitness for the x86 parent
1 parent d940fd0 commit f85e06c

File tree

3 files changed

+44
-12
lines changed

3 files changed

+44
-12
lines changed

lib/bap_mips/bap_mips_target.ml

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ let parent = Theory.Target.declare ~package "mips"
4646
let array bits pref n =
4747
List.init n ~f:(fun i -> reg bits (sprintf "%s%d" pref i))
4848

49-
let define ?(parent=parent) bits endianness =
49+
let define ?(parent=parent) ?nicknames bits endianness =
5050
let size = Theory.Bitv.size bits in
5151
let gprs = List.map gpr_names ~f:(reg bits) in
5252
let fprs = array bits "R" 32 in
@@ -56,6 +56,7 @@ let define ?(parent=parent) bits endianness =
5656
let regs = List.map ~f:(fun name -> Theory.Var.forget (reg bits name)) in
5757
Theory.Target.declare ~package (name size endianness)
5858
~parent
59+
?nicknames
5960
~bits:size
6061
~endianness
6162
~code:data
@@ -71,12 +72,18 @@ let define ?(parent=parent) bits endianness =
7172
]
7273

7374
let mips32bi = define r32 Theory.Endianness.bi
74-
let mips32eb = define r32 Theory.Endianness.eb ~parent:mips32bi
75-
let mips32le = define r32 Theory.Endianness.le ~parent:mips32bi
75+
~nicknames:["mipsbi"; "mips32bi"]
76+
let mips32eb = define r32 Theory.Endianness.eb
77+
~nicknames:["mipseb"; "mips32eb"; "mipsbe"; "mips32be"]
78+
let mips32le = define r32 Theory.Endianness.le
79+
~nicknames:["mipsle"; "mipsel"; "mips32le"; "mips32el"]
7680

7781
let mips64bi = define r64 Theory.Endianness.bi
78-
let mips64le = define r64 Theory.Endianness.le ~parent:mips64bi
79-
let mips64eb = define r64 Theory.Endianness.eb ~parent:mips64bi
82+
~nicknames:["mips64bi"]
83+
let mips64le = define r64 Theory.Endianness.le
84+
~nicknames:["misp64le"; "mips64el"]
85+
let mips64eb = define r64 Theory.Endianness.eb
86+
~nicknames:["mips64"; "mips64eb"; "mips64be"]
8087

8188
let enable_loader () =
8289
KB.Rule.(declare ~package "mips-target" |>

lib/bap_powerpc/bap_powerpc_target.ml

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ let flags = List.map ~f:(reg bool) [
4343
"C"; "FL"; "FE"; "FG"; "FU"
4444
] @ crflags
4545

46-
let define ?(parent=parent) bits endianness =
46+
let define ?(parent=parent) ?nicknames bits endianness =
4747
let size = Theory.Bitv.size bits in
4848
let mems = Theory.Mem.define bits r8 in
4949
let data = Theory.Var.define mems "mem" in
@@ -55,6 +55,7 @@ let define ?(parent=parent) bits endianness =
5555
[data] in
5656
Theory.Target.declare ~package (name size endianness)
5757
~parent
58+
?nicknames
5859
~bits:size
5960
~endianness
6061
~vars
@@ -76,12 +77,36 @@ let define ?(parent=parent) bits endianness =
7677
]
7778

7879
let powerpc32bi = define r32 Theory.Endianness.bi
79-
let powerpc32eb = define r32 Theory.Endianness.eb ~parent:powerpc32bi
80-
let powerpc32le = define r32 Theory.Endianness.le ~parent:powerpc32bi
80+
~nicknames:["powerpc32bi"; "ppc32bi"]
81+
82+
let powerpc32eb = define r32 Theory.Endianness.eb
83+
~nicknames:[
84+
"powerpc"; "ppc"; "powerpc32"; "ppc32";
85+
"powerpc32eb"; "powerpc32be"; "ppc32eb"; "ppc32be";
86+
"power"; "power32";
87+
]
88+
let powerpc32le = define r32 Theory.Endianness.le
89+
~nicknames:[
90+
"powerpcle"; "ppcle"; "ppcel";
91+
"powerpc32le"; "powerpc32el";
92+
"ppc32le"; "ppc32el"
93+
]
8194

8295
let powerpc64bi = define r64 Theory.Endianness.bi
83-
let powerpc64le = define r64 Theory.Endianness.le ~parent:powerpc64bi
84-
let powerpc64eb = define r64 Theory.Endianness.eb ~parent:powerpc64bi
96+
~nicknames:["powerpc64bi"; "power64bi"]
97+
let powerpc64eb = define r64 Theory.Endianness.eb
98+
~nicknames:[
99+
"powerpc64"; "ppc64"; "power64";
100+
"powerpc64eb"; "powerpc64be";
101+
"ppc64eb"; "ppc64be";
102+
"power64eb"; "power64be"
103+
]
104+
let powerpc64le = define r64 Theory.Endianness.le
105+
~nicknames:[
106+
"powerpc64el"; "powerpc64le";
107+
"ppc64el"; "ppc64le";
108+
"power64el"; "power64le"
109+
]
85110

86111
let enable_loader () =
87112
let open KB.Syntax in

lib/x86_cpu/x86_target.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,12 +218,12 @@ module M64 = struct
218218
end
219219

220220
let parent = Theory.Target.declare ~package "x86"
221+
~bits:16
222+
~byte:8
221223

222224
let i86 = Theory.Target.declare ~package "i86"
223225
~parent
224226
~nicknames:["8086"]
225-
~bits:16
226-
~byte:8
227227
~data:M16.data
228228
~code:M16.data
229229
~vars:M16.vars

0 commit comments

Comments
 (0)