GP-4319 minor improvements

This commit is contained in:
emteere 2024-02-22 15:01:58 -05:00
parent 7ceb740e64
commit e1a2362b4f

View file

@ -34,8 +34,11 @@
<stackpointer register="a10" space="ram"/>
<default_proto>
<prototype name="__stdcall" extrapop="0" stackshift="0" strategy="register">
<prototype name="__stdcall" extrapop="0" stackshift="0">
<input>
<pentry minsize="4" maxsize="4" storage="hiddenret">
<register name="a4"/>
</pentry>
<pentry minsize="4" maxsize="4" metatype="ptr"> <!-- This is the first pointer -->
<register name="a4"/>
</pentry>
@ -63,16 +66,13 @@
<pentry minsize="5" maxsize="8"> <!-- This is the first >4 byte non pointer -->
<register name="e4"/>
</pentry>
<pentry minsize="5" maxsize="8">
<register name="e6"/>
</pentry>
<pentry minsize="1" maxsize="500" align="4">
<addr offset="16" space="stack"/>
<addr offset="0" space="stack"/>
</pentry>
</input>
<!-- There are issues with locking in function signatures with multiple possible
return locations. When the signature is committed/locked, Ghidra will apply the
first available location, which is incorrect. The decompiler can figure
out between two variable locations but doesn't currently pass back the
return storage location. A fix is needed, or use custom storage. -->
<output>
<pentry minsize="4" maxsize="4" metatype="ptr">
@ -105,68 +105,9 @@
</prototype>
</default_proto>
<!-- This will no longer be necessary once fixes are made to support the
correct choice of storage location when there are multiple return types -->
<prototype name="__stdcall_data" extrapop="0" stackshift="0" strategy="register">
<input>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="a4"/>
</pentry>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="d4"/>
</pentry>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="d5"/>
</pentry>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="a5"/>
</pentry>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="a6"/>
</pentry>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="d6"/>
</pentry>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="a7"/>
</pentry>
<pentry minsize="1" maxsize="4" extension="inttype">
<register name="d7"/>
</pentry>
<pentry minsize="5" maxsize="8"> <!-- This is the first >4 byte non pointer -->
<register name="e4"/>
</pentry>
<pentry minsize="1" maxsize="500" align="4">
<addr offset="16" space="stack"/>
</pentry>
</input>
<output>
<pentry minsize="1" maxsize="8" extension="inttype">
<register name="e2"/>
</pentry>
</output>
<unaffected>
<register name="d8"/>
<register name="d9"/>
<register name="d10"/>
<register name="d11"/>
<register name="d12"/>
<register name="d13"/>
<register name="d14"/>
<register name="d15"/>
<register name="a0"/>
<register name="a1"/>
<register name="a8"/>
<register name="a9"/>
<register name="a10"/>
<register name="a11"/>
<register name="a12"/>
<register name="a13"/>
<register name="a14"/>
<register name="a15"/>
</unaffected>
</prototype>
<!-- __stdcall_data calling convention removed, no longer necessary as decompiler will return
the correct return storage location when there are multiple return location types
-->
<callotherfixup targetop="saveCallerState">
<pcode>