Skip to content

Commit e333b4b

Browse files
committed
Add ghidra 11.3.1 updates
1 parent 9d745d5 commit e333b4b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+18622
-4548
lines changed

docs/guide.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -84,5 +84,5 @@ SLEIGH & P-Code References
8484
--------------------------
8585
Extensive documentation covering SLEIGH and P-Code is available online:
8686

87-
* `SLEIGH, P-Code Introduction <https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_11.1.2_build/GhidraDocs/languages/html/sleigh.html>`_
88-
* `P-Code Reference Manual <https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_11.1.2_build/GhidraDocs/languages/html/pcoderef.html>`_
87+
* `SLEIGH, P-Code Introduction <https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_11.3.1_build/GhidraDocs/languages/html/sleigh.html>`_
88+
* `P-Code Reference Manual <https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_11.3.1_build/GhidraDocs/languages/html/pcoderef.html>`_

docs/index.rst

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
pypcode documentation
22
=====================
33
pypcode is a machine code disassembly and IR translation library for Python using the
4-
excellent `SLEIGH <https://ghidra.re/courses/languages/html/sleigh.html>`__ library from the `Ghidra <https://ghidra-sre.org/>`__ framework (version 11.1.2).
4+
excellent `SLEIGH <https://ghidra.re/courses/languages/html/sleigh.html>`__ library from the `Ghidra <https://ghidra-sre.org/>`__ framework (version 11.3.1).
55

66
This library was created primarily for use with `angr <http://angr.io>`__, which provides analyses and symbolic
77
execution of p-code.

pypcode/processors/68000/data/languages/68000.ldefs

+4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
<external_name tool="IDA-PRO" name="68K"/>
1919
<external_name tool="DWARF.register.mapping.file" name="68000.dwarf"/>
2020
<external_name tool="qemu" name="qemu-m68k"/>
21+
<external_name tool="qemu_system" name="qemu-system-m68k"/>
2122
</language>
2223
<language processor="68000"
2324
endian="big"
@@ -34,6 +35,7 @@
3435
<external_name tool="IDA-PRO" name="68030"/>
3536
<external_name tool="DWARF.register.mapping.file" name="68000.dwarf"/>
3637
<external_name tool="qemu" name="qemu-m68k"/>
38+
<external_name tool="qemu_system" name="qemu-system-m68k"/>
3739
</language>
3840
<language processor="68000"
3941
endian="big"
@@ -52,6 +54,7 @@
5254
<external_name tool="IDA-PRO" name="68020EX"/>
5355
<external_name tool="DWARF.register.mapping.file" name="68000.dwarf"/>
5456
<external_name tool="qemu" name="qemu-m68k"/>
57+
<external_name tool="qemu_system" name="qemu-system-m68k"/>
5558
</language>
5659
<language processor="68000"
5760
endian="big"
@@ -68,5 +71,6 @@
6871
<external_name tool="IDA-PRO" name="colfire"/>
6972
<external_name tool="DWARF.register.mapping.file" name="68000.dwarf"/>
7073
<external_name tool="qemu" name="qemu-m68k"/>
74+
<external_name tool="qemu_system" name="qemu-system-m68k"/>
7175
</language>
7276
</language_definitions>

pypcode/processors/68000/data/languages/68000.sinc

+4-4
Original file line numberDiff line numberDiff line change
@@ -1529,9 +1529,9 @@ subdiv: regdr:regdq is regdq & regdr & divsz=1 & divsgn=1 {
15291529
:exg reg9an,regan is op=12 & reg9an & op8=1 & op37=9 & regan { local tmp = reg9an; reg9an=regan; regan=tmp; }
15301530
:exg reg9dn,regan is op=12 & reg9dn & op8=1 & op37=17 & regan { local tmp = reg9dn; reg9dn=regan; regan=tmp; }
15311531

1532-
:ext.w regdnw is op=4 & reg9dn=4 & op68=2 & op35=0 & regdnw { local tmp = regdnw:1; regdnw = sext(tmp); }
1533-
:ext.l regdn is op=4 & reg9dn=4 & op68=3 & op35=0 & regdn { local tmp = regdn:2; regdn = sext(tmp); }
1534-
:extb.l regdn is op=4 & reg9dn=4 & op68=7 & op35=0 & regdn { local tmp = regdn:1; regdn = sext(tmp); }
1532+
:ext.w regdnw is op=4 & reg9dn=4 & op68=2 & op35=0 & regdnw { local tmp = regdnw:1; regdnw = sext(tmp); resflags(regdnw); logflags(); }
1533+
:ext.l regdn is op=4 & reg9dn=4 & op68=3 & op35=0 & regdn { local tmp = regdn:2; regdn = sext(tmp); resflags(regdn); logflags(); }
1534+
:extb.l regdn is op=4 & reg9dn=4 & op68=7 & op35=0 & regdn { local tmp = regdn:1; regdn = sext(tmp); resflags(regdn); logflags(); }
15351535

15361536
@ifdef COLDFIRE
15371537
:halt is d16=0x4ac8 unimpl
@@ -2687,7 +2687,7 @@ m2fpC2: FPCR is FPCR & f12=1 { FPCR = *movemptr; movemptr = movemptr + 1
26872687
m2fpC2: is f12=0 { }
26882688
m2fpC1: m2fpC2" "FPSR is FPSR & f11=1 & m2fpC2 { FPSR = *movemptr; movemptr = movemptr + 12; }
26892689
m2fpC1: m2fpC2 is f11=0 & m2fpC2 { }
2690-
m2fpC0: { m2fpC1" "FPCR } is FPCR & f10=1 & m2fpC1 { FPCR = *movemptr; movemptr = movemptr + 12; }
2690+
m2fpC0: { m2fpC1" "FPIAR } is FPIAR & f10=1 & m2fpC1 { FPIAR = *movemptr; movemptr = movemptr + 12; }
26912691
m2fpC0: { m2fpC1 } is f10=0 & m2fpC1 { }
26922692

26932693
# Floating point control register to Memory
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<opinions>
2+
<constraint loader="Object Module Format (OMF-51)">
3+
<constraint compilerSpecID="default">
4+
<constraint primary="8051" processor="8051" endian="big" size="16" />
5+
</constraint>
6+
</constraint>
7+
</opinions>

pypcode/processors/AARCH64/data/languages/AARCH64.ldefs

+5
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
<compiler name="golang" spec="AARCH64_golang.cspec" id="golang"/>
1616
<external_name tool="gnu" name="aarch64"/>
1717
<external_name tool="DWARF.register.mapping.file" name="AARCH64.dwarf"/>
18+
<external_name tool="Golang.register.info.file" name="AARCH64_golang.register.info"/>
1819
<external_name tool="qemu" name="qemu-aarch64"/>
20+
<external_name tool="qemu_system" name="qemu-system-aarch64"/>
1921
</language>
2022
<language processor="AARCH64"
2123
endian="big"
@@ -34,6 +36,7 @@
3436
<external_name tool="DWARF.register.mapping.file" name="AARCH64.dwarf"/>
3537
<external_name tool="Golang.register.info.file" name="AARCH64_golang.register.info"/>
3638
<external_name tool="qemu" name="qemu-aarch64_be"/>
39+
<external_name tool="qemu_system" name="qemu-system-aarch64"/>
3740
</language>
3841
<language processor="AARCH64"
3942
endian="little"
@@ -51,6 +54,7 @@
5154
<external_name tool="gnu" name="aarch64:ilp32"/>
5255
<external_name tool="DWARF.register.mapping.file" name="AARCH64.dwarf"/>
5356
<external_name tool="qemu" name="qemu-aarch64"/>
57+
<external_name tool="qemu_system" name="qemu-system-aarch64"/>
5458
</language>
5559
<language processor="AARCH64"
5660
endian="big"
@@ -69,5 +73,6 @@
6973
<external_name tool="gnu" name="aarch64:ilp32"/>
7074
<external_name tool="DWARF.register.mapping.file" name="AARCH64.dwarf"/>
7175
<external_name tool="qemu" name="qemu-aarch64_be"/>
76+
<external_name tool="qemu_system" name="qemu-system-aarch64"/>
7277
</language>
7378
</language_definitions>

pypcode/processors/AARCH64/data/languages/AARCH64.opinion

+3
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@
2222
<constraint loader="Portable Executable (PE)" compilerSpecID="windows">
2323
<constraint primary="43620" processor="AARCH64" endian="little" size="64" variant="v8A" />
2424
</constraint>
25+
<constraint loader="MS Common Object File Format (COFF)" compilerSpecID="windows">
26+
<constraint primary="-21916" processor="AARCH64" endian="little" size="64" variant="v8A" />
27+
</constraint>
2528
</opinions>

pypcode/processors/AARCH64/data/languages/AARCH64_golang.cspec

+18
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,26 @@
281281
<killedbycall>
282282
<register name="x21"/>
283283
<register name="x20"/>
284+
<register name="x26"/>
285+
<register name="x27"/>
284286
</killedbycall>
285287
<unaffected>
288+
<register name="x0"/>
289+
<register name="x1"/>
290+
<register name="x2"/>
291+
<register name="x3"/>
292+
<register name="x4"/>
293+
<register name="x5"/>
294+
<register name="x6"/>
295+
<register name="x7"/>
296+
<register name="x8"/>
297+
<register name="x9"/>
298+
<register name="x10"/>
299+
<register name="x11"/>
300+
<register name="x12"/>
301+
<register name="x13"/>
302+
<register name="x14"/>
303+
<register name="x15"/>
286304
<register name="x16"/>
287305
<register name="x17"/>
288306
</unaffected>
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
11
<golang>
22
<!-- see https://github.com/golang/go/blob/master/src/internal/abi/abi_arm64.go -->
3-
<register_info versions="V1_17,V1_18,V1_19,V1_20,V1_21,V1_22">
3+
<register_info versions="V1_17,V1_18,V1_19,V1_20,V1_21,V1_22,V1_23">
44
<int_registers list="x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15"/>
55
<float_registers list="q0,q1,q2,q3,q4,q5,q6,q7,q8,q9,q10,q11,q12,q13,q14,q15"/>
66
<stack initialoffset="8" maxalign="8"/>
77
<current_goroutine register="x28"/>
88
<zero_register register="xzr" builtin="true"/>
9+
<duffzero dest="x20" zero_arg="" zero_type=""/>
910
</register_info>
11+
<register_info versions="V1_16">
12+
<int_registers list=""/>
13+
<float_registers list=""/>
14+
<stack initialoffset="8" maxalign="8"/>
15+
<current_goroutine register="x28"/>
16+
<zero_register register="xzr" builtin="true"/>
17+
<duffzero dest="x20" zero_arg="" zero_type=""/>
18+
</register_info>
1019
</golang>

pypcode/processors/AARCH64/data/languages/AARCH64_swift.cspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<pointer_size value="8" />
1010
<wchar_size value="4" />
1111
<short_size value="2" />
12-
<integer_size value="8" />
12+
<integer_size value="4" />
1313
<long_size value="8" />
1414
<long_long_size value="8" />
1515
<float_size value="4" />

pypcode/processors/ARM/data/languages/ARM.dwarf

+7-1
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@
88
<register_mapping dwarf="17" ghidra="cpsr"/>
99
</register_mappings>
1010
<call_frame_cfa value="0"/>
11-
<use_formal_parameter_storage/>
11+
<!--
12+
In the past, this flag has been present in this file but was not correctly implemented in
13+
the DWARF analyzer. The DWARF analyzer now respects this flag, and also has the
14+
"Ignore Parameter Storage Info" toggle option to enable the same feature.
15+
This flag is being left disabled to match recent DWARF analyzer behavior.
16+
<use_formal_parameter_storage/>
17+
-->
1218
</dwarf>

pypcode/processors/ARM/data/languages/ARM.ldefs

+18
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<external_name tool="IDA-PRO" name="arm"/>
2222
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
2323
<external_name tool="qemu" name="qemu-arm"/>
24+
<external_name tool="qemu_system" name="qemu-system-arm"/>
2425
</language>
2526

2627
<language processor="ARM"
@@ -41,6 +42,7 @@
4142
<external_name tool="IDA-PRO" name="arm"/>
4243
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
4344
<external_name tool="qemu" name="qemu-arm"/>
45+
<external_name tool="qemu_system" name="qemu-system-arm"/>
4446
</language>
4547

4648
<language processor="ARM"
@@ -78,6 +80,7 @@
7880
<external_name tool="IDA-PRO" name="armb"/>
7981
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
8082
<external_name tool="qemu" name="qemu-armeb"/>
83+
<external_name tool="qemu_system" name="qemu-system-arm"/>
8184
</language>
8285

8386
<language processor="ARM"
@@ -96,6 +99,7 @@
9699
<external_name tool="IDA-PRO" name="armb"/>
97100
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
98101
<external_name tool="qemu" name="qemu-armeb"/>
102+
<external_name tool="qemu_system" name="qemu-system-arm"/>
99103
</language>
100104

101105
<language processor="ARM"
@@ -116,6 +120,7 @@
116120
<external_name tool="IDA-PRO" name="arm"/>
117121
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
118122
<external_name tool="qemu" name="qemu-arm"/>
123+
<external_name tool="qemu_system" name="qemu-system-arm"/>
119124
</language>
120125

121126
<language processor="ARM"
@@ -151,6 +156,7 @@
151156
<external_name tool="IDA-PRO" name="armb"/>
152157
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
153158
<external_name tool="qemu" name="qemu-armeb"/>
159+
<external_name tool="qemu_system" name="qemu-system-arm"/>
154160
</language>
155161

156162
<language processor="ARM"
@@ -173,6 +179,7 @@
173179
<external_name tool="IDA-PRO" name="arm"/>
174180
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
175181
<external_name tool="qemu" name="qemu-arm"/>
182+
<external_name tool="qemu_system" name="qemu-system-arm"/>
176183
</language>
177184

178185
<language processor="ARM"
@@ -194,6 +201,7 @@
194201
<external_name tool="IDA-PRO" name="armb"/>
195202
<external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/>
196203
<external_name tool="qemu" name="qemu-armeb"/>
204+
<external_name tool="qemu_system" name="qemu-system-arm"/>
197205
</language>
198206

199207
<language processor="ARM"
@@ -250,6 +258,7 @@
250258
<!-- change DWARF register mapping to ARMneon.dwarf if VFPv2 is enabled -->
251259
<!-- <external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/> -->
252260
<external_name tool="qemu" name="qemu-arm"/>
261+
<external_name tool="qemu_system" name="qemu-system-arm"/>
253262
</language>
254263

255264
<language processor="ARM"
@@ -271,6 +280,7 @@
271280
<!-- change DWARF register mapping to ARMneon.dwarf if VFPv2 is enabled -->
272281
<!-- <external_name tool="DWARF.register.mapping.file" name="ARMneon.dwarf"/> -->
273282
<external_name tool="qemu" name="qemu-armeb"/>
283+
<external_name tool="qemu_system" name="qemu-system-arm"/>
274284
</language>
275285

276286
<language processor="ARM"
@@ -290,6 +300,7 @@
290300
<external_name tool="IDA-PRO" name="arm"/>
291301
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
292302
<external_name tool="qemu" name="qemu-arm"/>
303+
<external_name tool="qemu_system" name="qemu-system-arm"/>
293304
</language>
294305

295306
<language processor="ARM"
@@ -309,6 +320,7 @@
309320
<external_name tool="IDA-PRO" name="armb"/>
310321
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
311322
<external_name tool="qemu" name="qemu-armeb"/>
323+
<external_name tool="qemu_system" name="qemu-system-arm"/>
312324
</language>
313325

314326
<language processor="ARM"
@@ -326,6 +338,7 @@
326338
<external_name tool="IDA-PRO" name="arm"/>
327339
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
328340
<external_name tool="qemu" name="qemu-arm"/>
341+
<external_name tool="qemu_system" name="qemu-system-arm"/>
329342
</language>
330343

331344
<language processor="ARM"
@@ -343,6 +356,7 @@
343356
<external_name tool="IDA-PRO" name="armb"/>
344357
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
345358
<external_name tool="qemu" name="qemu-armeb"/>
359+
<external_name tool="qemu_system" name="qemu-system-arm"/>
346360
</language>
347361

348362
<language processor="ARM"
@@ -361,6 +375,7 @@
361375
<external_name tool="IDA-PRO" name="arm"/>
362376
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
363377
<external_name tool="qemu" name="qemu-arm"/>
378+
<external_name tool="qemu_system" name="qemu-system-arm"/>
364379
</language>
365380

366381
<language processor="ARM"
@@ -379,6 +394,7 @@
379394
<external_name tool="IDA-PRO" name="armb"/>
380395
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
381396
<external_name tool="qemu" name="qemu-armeb"/>
397+
<external_name tool="qemu_system" name="qemu-system-arm"/>
382398
</language>
383399

384400
<language processor="ARM"
@@ -400,6 +416,7 @@
400416
<external_name tool="IDA-PRO" name="arm"/>
401417
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
402418
<external_name tool="qemu" name="qemu-arm"/>
419+
<external_name tool="qemu_system" name="qemu-system-arm"/>
403420
</language>
404421

405422
<language processor="ARM"
@@ -421,6 +438,7 @@
421438
<external_name tool="IDA-PRO" name="armb"/>
422439
<external_name tool="DWARF.register.mapping.file" name="ARM.dwarf"/>
423440
<external_name tool="qemu" name="qemu-armeb"/>
441+
<external_name tool="qemu_system" name="qemu-system-arm"/>
424442
</language>
425443

426444
</language_definitions>

pypcode/processors/ARM/data/languages/ARMneon.dwarf

+7-1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,11 @@
1010
<register_mapping dwarf="64" ghidra="s0" auto_count="32"/> <!-- s0..s31 -->
1111
</register_mappings>
1212
<call_frame_cfa value="0"/>
13-
<use_formal_parameter_storage/>
13+
<!--
14+
In the past, this flag has been present in this file but was not correctly implemented in
15+
the DWARF analyzer. The DWARF analyzer now respects this flag, and also has the
16+
"Ignore Parameter Storage Info" toggle option to enable the same feature.
17+
This flag is being left disabled to match recent DWARF analyzer behavior.
18+
<use_formal_parameter_storage/>
19+
-->
1420
</dwarf>

0 commit comments

Comments
 (0)