mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-06 03:50:02 +02:00
added support for MIPS 32 eabi
This commit is contained in:
parent
8eeeeb87ef
commit
31e2875bd5
4 changed files with 208 additions and 0 deletions
|
@ -12,8 +12,10 @@ data/languages/mips32R6be.slaspec||GHIDRA||||END|
|
|||
data/languages/mips32R6le.slaspec||GHIDRA||||END|
|
||||
data/languages/mips32_fp64.cspec||GHIDRA||||END|
|
||||
data/languages/mips32be.cspec||GHIDRA||||END|
|
||||
data/languages/mips32be_eabi.cspec||GHIDRA||||END|
|
||||
data/languages/mips32be.slaspec||GHIDRA||||END|
|
||||
data/languages/mips32le.cspec||GHIDRA||||END|
|
||||
data/languages/mips32le_eabi.cspec||GHIDRA||||END|
|
||||
data/languages/mips32le.slaspec||GHIDRA||||END|
|
||||
data/languages/mips32micro.pspec||GHIDRA||||END|
|
||||
data/languages/mips64.cspec||GHIDRA||||END|
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
<description>MIPS32 32-bit addresses, big endian, with mips16e</description>
|
||||
<compiler name="default" spec="mips32be.cspec" id="default"/>
|
||||
<compiler name="Visual Studio" spec="mips32be.cspec" id="windows"/>
|
||||
<compiler name="eabi" spec="mips32be_eabi.cspec" id="eabi"/>
|
||||
<external_name tool="gnu" name="mips:4000"/>
|
||||
<external_name tool="IDA-PRO" name="mipsb"/>
|
||||
<external_name tool="DWARF.register.mapping.file" name="mips.dwarf"/>
|
||||
|
@ -28,6 +29,7 @@
|
|||
<description>MIPS32 32-bit addresses, little endian, with mips16e</description>
|
||||
<compiler name="default" spec="mips32le.cspec" id="default"/>
|
||||
<compiler name="Visual Studio" spec="mips32le.cspec" id="windows"/>
|
||||
<compiler name="eabi" spec="mips32le_eabi.cspec" id="eabi"/>
|
||||
<external_name tool="gnu" name="mips:4000"/>
|
||||
<external_name tool="IDA-PRO" name="mipsl"/>
|
||||
<external_name tool="DWARF.register.mapping.file" name="mips.dwarf"/>
|
||||
|
|
102
Ghidra/Processors/MIPS/data/languages/mips32be_eabi.cspec
Normal file
102
Ghidra/Processors/MIPS/data/languages/mips32be_eabi.cspec
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<compiler_spec>
|
||||
<data_organization>
|
||||
<pointer_size value="4"/>
|
||||
<float_size value="4" />
|
||||
<double_size value="8" />
|
||||
<long_double_size value="8" />
|
||||
<size_alignment_map>
|
||||
<entry size="1" alignment="1" />
|
||||
<entry size="2" alignment="2" />
|
||||
<entry size="4" alignment="4" />
|
||||
<entry size="8" alignment="8" />
|
||||
</size_alignment_map>
|
||||
</data_organization>
|
||||
|
||||
<stackpointer register="sp" space="ram"/>
|
||||
<funcptr align="2"/>
|
||||
<spacebase name="gp" register="gp" space="ram"/>
|
||||
<global>
|
||||
<range space="gp"/>
|
||||
<range space="ram"/>
|
||||
<range space="register" first="0x2000" last="0x2fff"/>
|
||||
</global>
|
||||
<returnaddress>
|
||||
<register name="ra"/>
|
||||
</returnaddress>
|
||||
<default_proto>
|
||||
<prototype name="__stdcall" extrapop="0" stackshift="0">
|
||||
<input>
|
||||
<pentry minsize="1" maxsize="8" metatype="float">
|
||||
<register name="f12_13"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8" metatype="float">
|
||||
<register name="f14_15"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a0"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a1"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a2"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a3"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t0"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t1"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t2"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t3"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="500" align="4">
|
||||
<addr offset="0" space="stack"/>
|
||||
</pentry>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="1" maxsize="8" metatype="float">
|
||||
<register name="f0_1"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="v0"/>
|
||||
</pentry>
|
||||
<pentry minsize="5" maxsize="8">
|
||||
<addr space="join" piece1="v0" piece2="v1"/>
|
||||
</pentry>
|
||||
</output>
|
||||
<unaffected>
|
||||
<register name="s0"/>
|
||||
<register name="s1"/>
|
||||
<register name="s2"/>
|
||||
<register name="s3"/>
|
||||
<register name="s4"/>
|
||||
<register name="s5"/>
|
||||
<register name="s6"/>
|
||||
<register name="s7"/>
|
||||
<register name="s8"/>
|
||||
<register name="sp"/>
|
||||
<register name="gp"/>
|
||||
<register name="f20"/>
|
||||
<register name="f22"/>
|
||||
<register name="f24"/>
|
||||
<register name="f26"/>
|
||||
<register name="f28"/>
|
||||
<register name="f30"/>
|
||||
</unaffected>
|
||||
<localrange>
|
||||
<range space="stack" first="0xfff0bdc0" last="0xffffffff"/>
|
||||
<range space="stack" first="0" last="15"/> <!-- This is backup storage space for register params, but we treat as locals -->
|
||||
</localrange>
|
||||
</prototype>
|
||||
</default_proto>
|
||||
|
||||
</compiler_spec>
|
102
Ghidra/Processors/MIPS/data/languages/mips32le_eabi.cspec
Normal file
102
Ghidra/Processors/MIPS/data/languages/mips32le_eabi.cspec
Normal file
|
@ -0,0 +1,102 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<compiler_spec>
|
||||
<data_organization>
|
||||
<pointer_size value="4"/>
|
||||
<float_size value="4" />
|
||||
<double_size value="8" />
|
||||
<long_double_size value="8" />
|
||||
<size_alignment_map>
|
||||
<entry size="1" alignment="1" />
|
||||
<entry size="2" alignment="2" />
|
||||
<entry size="4" alignment="4" />
|
||||
<entry size="8" alignment="8" />
|
||||
</size_alignment_map>
|
||||
</data_organization>
|
||||
|
||||
<stackpointer register="sp" space="ram"/>
|
||||
<funcptr align="2"/>
|
||||
<spacebase name="gp" register="gp" space="ram"/>
|
||||
<global>
|
||||
<range space="gp"/>
|
||||
<range space="ram"/>
|
||||
<range space="register" first="0x2000" last="0x2fff"/>
|
||||
</global>
|
||||
<returnaddress>
|
||||
<register name="ra"/>
|
||||
</returnaddress>
|
||||
<default_proto>
|
||||
<prototype name="__stdcall" extrapop="0" stackshift="0">
|
||||
<input>
|
||||
<pentry minsize="1" maxsize="8" metatype="float">
|
||||
<register name="f12_13"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="8" metatype="float">
|
||||
<register name="f14_15"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a0"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a1"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a2"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="a3"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t0"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t1"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t2"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="t3"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="500" align="4">
|
||||
<addr offset="16" space="stack"/>
|
||||
</pentry>
|
||||
</input>
|
||||
<output>
|
||||
<pentry minsize="1" maxsize="8" metatype="float">
|
||||
<register name="f0_1"/>
|
||||
</pentry>
|
||||
<pentry minsize="1" maxsize="4">
|
||||
<register name="v0"/>
|
||||
</pentry>
|
||||
<pentry minsize="5" maxsize="8">
|
||||
<addr space="join" piece1="v1" piece2="v0"/>
|
||||
</pentry>
|
||||
</output>
|
||||
<unaffected>
|
||||
<register name="s0"/>
|
||||
<register name="s1"/>
|
||||
<register name="s2"/>
|
||||
<register name="s3"/>
|
||||
<register name="s4"/>
|
||||
<register name="s5"/>
|
||||
<register name="s6"/>
|
||||
<register name="s7"/>
|
||||
<register name="s8"/>
|
||||
<register name="sp"/>
|
||||
<register name="gp"/>
|
||||
<register name="f20"/>
|
||||
<register name="f22"/>
|
||||
<register name="f24"/>
|
||||
<register name="f26"/>
|
||||
<register name="f28"/>
|
||||
<register name="f30"/>
|
||||
</unaffected>
|
||||
<localrange>
|
||||
<range space="stack" first="0xfff0bdc0" last="0xffffffff"/>
|
||||
<range space="stack" first="0" last="15"/> <!-- This is backup storage space for register params, but we treat as locals -->
|
||||
</localrange>
|
||||
</prototype>
|
||||
</default_proto>
|
||||
|
||||
</compiler_spec>
|
Loading…
Add table
Add a link
Reference in a new issue