Merge remote-tracking branch 'origin/patch'

This commit is contained in:
Ryan Kurtz 2025-07-21 13:17:27 -04:00
commit cc177afc8f
3 changed files with 73 additions and 36 deletions

View file

@ -435,6 +435,11 @@ public class ConstantPropagationAnalyzer extends AbstractAnalyzer {
// now get rid of all the instructions that were analyzed // now get rid of all the instructions that were analyzed
todoSet.delete(resultSet); todoSet.delete(resultSet);
} }
// make sure todoSet removes start address if no results
if (resultSet == null || resultSet.isEmpty()) {
todoSet.delete(start,start);
}
} }
} }

View file

@ -5,16 +5,18 @@
<data>0x03e00008 0x........ 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x03e00008 0x........ 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x03e00008 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x03e00008 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x03e00008 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x03e00008 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>000010.. 0x...... 0x27 0xbd 0....... ......00</data> <!-- J xyz : _ADDIU This is probably a shared return--> <data>000010.. 0x...... 0.100111 0xbd 0....... ......00</data> <!-- J xyz : _D/ADDIU This is probably a shared return-->
<data>0x1000.... 0x27 0xbd 0....... ......00</data> <!-- B xyz : _ADDIU This is probably a shared return--> <data>000010.. 0x...... 0.100111 0xbd 0....... ......00 0x00000000 </data> <!-- J xyz : _D/ADDIU This is probably a shared return-->
<data>0x03 0x20 00000... ..001000 0x27 0xbd 0x0. 0x.. </data> <!-- JR t9 : _ADDIU --> <data>0x1000.... 0.100111 0xbd 0....... ......00</data> <!-- B xyz : _D/ADDIU This is probably a shared return-->
<data>0x1000.... 0.100111 0xbd 0....... ......00 0x00000000 </data> <!-- B xyz : _D/ADDIU This is probably a shared return-->
<data>0x03 0x20 00000... ..001000 0.100111 0xbd 0x0. 0x.. </data> <!-- JR t9 : _D/ADDIU -->
</prepatterns> </prepatterns>
<postpatterns> <postpatterns>
<data>00100111 10111101 1....... ......00</data> <!-- ADDIU SP,SP,-xxxx --> <data>0.100111 10111101 1....... ......00 </data> <!-- D/D/ADDIU SP,SP,-xxxx -->
<data>0x3c...... 0x27 0xbd 1....... ......00</data> <!-- LUI - ADDIU SP,SP,-xxxx --> <data>0x3c...... 0.100111 0xbd 1....... ......00</data> <!-- LUI - D/ADDIU SP,SP,-xxxx -->
<data>100011.. 0x...... 0x27 0xbd 1....... ......00</data> <!-- LW - ADDIU SP,SP,-xxxx --> <data>100011.. 0x...... 0.100111 0xbd 1....... ......00</data> <!-- LW - D/ADDIU SP,SP,-xxxx -->
<data>0x3c...... 100011.. 0x...... 0x27 0xbd 1....... ......00</data> <!-- LUI - LW - ADDIU SP,SP,-xxxx --> <data>0x3c...... 100011.. 0x...... 0.100111 0xbd 1....... ......00</data> <!-- LUI - LW - D/ADDIU SP,SP,-xxxx -->
<data>0x3c1c.... 0x279c.... </data> <!-- LUI gp,xxxx ADDIU GP,GP,xxxx --> <data>0x3c1c.... 0.100111 0x9c.... </data> <!-- LUI gp,xxxx D/ADDIU GP,GP,xxxx -->
<funcstart/> <funcstart/>
</postpatterns> </postpatterns>
</patternpairs> </patternpairs>
@ -24,9 +26,9 @@
<data>0x03e00008 0x........ 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x03e00008 0x........ 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x03e00008 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x03e00008 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x03e00008 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x03e00008 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>000010.. 0x...... 0x27 0xbd 0....... ......00</data> <!-- J xyz : _ADDIU This is probably a shared return--> <data>000010.. 0x...... 0.100111 0xbd 0....... ......00</data> <!-- J xyz : _D/ADDIU This is probably a shared return-->
<data>0x1000.... 0x27 0xbd 0....... ......00</data> <!-- B xyz : _ADDIU This is probably a shared return--> <data>0x1000.... 0.100111 0xbd 0....... ......00</data> <!-- B xyz : _D/ADDIU This is probably a shared return-->
<data>0x03 0x20 00000... ..001000 0x27 0xbd 0x0. 0x.. </data> <!-- JR t9 : _ADDIU --> <data>0x03 0x20 00000... ..001000 0.100111 0xbd 0x0. 0x.. </data> <!-- JR t9 : _D/ADDIU -->
</prepatterns> </prepatterns>
<postpatterns> <postpatterns>
<data>0x3c06.... </data> <!-- lui a2,xxx --> <data>0x3c06.... </data> <!-- lui a2,xxx -->
@ -34,6 +36,21 @@
</postpatterns> </postpatterns>
</patternpairs> </patternpairs>
<pattern> <!-- MIPS64 -->
<data> 01100111 10111101 1....... ......00 0xff 0xbc 0....... ......00 </data>
<!-- daddiu sp, sp, -xxxx
sd gp, (0x...)sp
-->
<funcstart validcode="6" contiguous="true"/>
</pattern>
<pattern> <!-- MIPS32 -->
<data> 00100111 10111101 1....... ......00 0xaf 0xbc 0....... ......00 </data>
<!-- addiu sp, sp, -xxxx
sw gp, (0x...)sp
-->
<funcstart validcode="6" contiguous="true"/>
</pattern>
<pattern> <!-- MIPS32 Thunk --> <pattern> <!-- MIPS32 Thunk -->
<data> 0x3c 0x0f 0x.. 0x.. 0x8d 0xf9 0x.. 0x.. 0x03 0x20 00000... 0x08 0x25 0xf8 0x.. 0x.. </data> <data> 0x3c 0x0f 0x.. 0x.. 0x8d 0xf9 0x.. 0x.. 0x03 0x20 00000... 0x08 0x25 0xf8 0x.. 0x.. </data>

View file

@ -5,16 +5,16 @@
<data>0x0800e003 0x........ 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x0800e003 0x........ 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x0800e003 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x0800e003 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x0800e003 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x0800e003 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x...... 000010.. ......00 0....... 0xbd 0x27 </data> <!-- J xyz : _ADDIU This is probably a shared return--> <data>0x...... 000010.. ......00 0....... 0xbd 0.100111 </data> <!-- J xyz : _ADDIU This is probably a shared return-->
<data>0x....0010 ......00 0....... 0xbd 0x27</data> <!-- B xyz : _ADDIU This is probably a shared return--> <data>0x....0010 ......00 0....... 0xbd 0.100111</data> <!-- B xyz : _ADDIU This is probably a shared return-->
<data>..001000 00000... 0x20 0x03 0x0. 0x.. 0xbd 0x27 </data> <!-- JR t9 : _ADDIU --> <data>..001000 00000... 0x20 0x03 0x0. 0x.. 0xbd 0.100111 </data> <!-- JR t9 : _ADDIU -->
</prepatterns> </prepatterns>
<postpatterns> <postpatterns>
<data>......00 1....... 10111101 00100111</data> <!-- ADDIU SP,SP,-xxxx --> <data>......00 1....... 10111101 00100111</data> <!-- ADDIU SP,SP,-xxxx -->
<data>0x......3c ......00 1....... 0xbd 0x27</data> <!-- LUI - ADDIU SP,SP,-xxxx --> <data>0x......3c ......00 1....... 0xbd 0.100111 </data> <!-- LUI - ADDIU SP,SP,-xxxx -->
<data>0x...... 100011.. ......00 1....... 0xbd 0x27</data> <!-- LW - ADDIU SP,SP,-xxxx --> <data>0x...... 100011.. ......00 1....... 0xbd 0.100111 </data> <!-- LW - ADDIU SP,SP,-xxxx -->
<data>0x......3c 0x...... 100011.. ......00 1....... 0xbd 0x27</data> <!-- LUI - LW - ADDIU SP,SP,-xxxx --> <data>0x......3c 0x...... 100011.. ......00 1....... 0xbd 0.100111 </data> <!-- LUI - LW - ADDIU SP,SP,-xxxx -->
<data>0x....1c3c 0x....9c27 </data> <!-- LUI gp,xxxx ADDIU GP,GP,xxxx --> <data>0x....1c3c 0x....9c 0.100111 </data> <!-- LUI gp,xxxx ADDIU GP,GP,xxxx -->
<funcstart/> <funcstart/>
</postpatterns> </postpatterns>
</patternpairs> </patternpairs>
@ -24,9 +24,9 @@
<data>0x0800e003 0x........ 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x0800e003 0x........ 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x0800e003 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x0800e003 0x........ 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x0800e003 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler --> <data>0x0800e003 0x........ 0x00000000 0x00000000 0x00000000 </data> <!-- RETN : delayslot filler -->
<data>0x...... 000010.. ......00 0....... 0xbd 0x27 </data> <!-- J xyz : _ADDIU This is probably a shared return--> <data>0x...... 000010.. ......00 0....... 0xbd 0.100111 </data> <!-- J xyz : _ADDIU This is probably a shared return-->
<data>0x....0010 ......00 0....... 0xbd 0x27</data> <!-- B xyz : _ADDIU This is probably a shared return--> <data>0x....0010 ......00 0....... 0xbd 0.100111 </data> <!-- B xyz : _ADDIU This is probably a shared return-->
<data>..001000 00000... 0x20 0x03 0x0. 0x.. 0xbd 0x27 </data> <!-- JR t9 : _ADDIU --> <data>..001000 00000... 0x20 0x03 0x0. 0x.. 0xbd 0.100111 </data> <!-- JR t9 : _ADDIU -->
</prepatterns> </prepatterns>
<postpatterns> <postpatterns>
<data>0x....063c </data> <!-- lui a2,xxx --> <data>0x....063c </data> <!-- lui a2,xxx -->
@ -34,6 +34,21 @@
</postpatterns> </postpatterns>
</patternpairs> </patternpairs>
<pattern> <!-- MIPS64 -->
<data> ......00 1....... 10111101 01100111 ......00 0....... 0xbc 0xff </data>
<!-- daddiu sp, sp, -xxxx
sd gp, (0x...)sp
-->
<funcstart validcode="6" contiguous="true"/>
</pattern>
<pattern> <!-- MIPS32 -->
<data> ......00 1....... 10111101 00100111 ......00 0....... 0xbc 0xaf </data>
<!-- addiu sp, sp, -xxxx
sw gp, (0x...)sp
-->
<funcstart validcode="6" contiguous="true"/>
</pattern>
<pattern> <!-- MIPS32 Thunk --> <pattern> <!-- MIPS32 Thunk -->
<data> 0x.. 0x.. 0x0f 0x3c 0x.. 0x.. 0xf9 0x8d 0x08 00000... 0x20 0x03 0x.. 0x.. 0xf8 0x25 </data> <data> 0x.. 0x.. 0x0f 0x3c 0x.. 0x.. 0xf9 0x8d 0x08 00000... 0x20 0x03 0x.. 0x.. 0xf8 0x25 </data>