Skip to content

Commit 327080e

Browse files
Treat XMM15 as a zero register
1 parent 433fd0a commit 327080e

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/main/java/golanganalyzerextension/GolangFunction.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import ghidra.program.model.data.Undefined6DataType;
1818
import ghidra.program.model.data.Undefined7DataType;
1919
import ghidra.program.model.data.Undefined8DataType;
20+
import ghidra.program.model.data.UnsignedInteger16DataType;
2021
import ghidra.program.model.lang.Register;
2122
import ghidra.program.model.listing.Function;
2223
import ghidra.program.model.listing.Instruction;
@@ -196,7 +197,8 @@ boolean check_inst_builtin_reg_arg(Instruction inst, Map<Register, REG_FLAG> bui
196197
(reg.getTypeFlags()&(Register.TYPE_PC|Register.TYPE_SP))==0 &&
197198
!reg.toString().toUpperCase().contains("SP") &&
198199
(!program.getLanguage().getProcessor().toString().equals("x86") ||
199-
(!compare_register(reg, program.getRegister("BP")))) &&
200+
// XMM15 is used as a zero register.
201+
(!compare_register(reg, program.getRegister("BP")) && !compare_register(reg, program.getRegister("XMM15")))) &&
200202
(!program.getLanguage().getProcessor().toString().equals("ARM") ||
201203
(!compare_register(reg, program.getRegister("lr"))))) {
202204
builtin_reg_state.put(reg.getBaseRegister(), REG_FLAG.READ);
@@ -268,8 +270,10 @@ boolean init_params() {
268270
data_type=new Undefined2DataType();
269271
}else if(size==1) {
270272
data_type=new Undefined1DataType();
273+
}else if(size==16) {
274+
data_type=new UnsignedInteger16DataType();
271275
}else {
272-
data_type=func.getParameter(i).getDataType();
276+
data_type=new Undefined8DataType();
273277
}
274278
Register reg=null;
275279
if(is_reg_arg_x86) {

0 commit comments

Comments
 (0)