CU_ASSERT( p_exp->dw_depth == 4 );
// DW_OP_bra // 0x28
-
-/*
- b_data[0] = DW_OP_const4u;
- b_data[1] = 0xff;
- b_data[2] = 0xff;
- b_data[3] = 0x55;
- b_data[4] = 0x55; // 0x5555ffff
- b_data[5] = DW_OP_const4u;
- b_data[6] = 0xff;
- b_data[7] = 0x00;
- b_data[8] = 0x55;
- b_data[9] = 0xaa; // 0xaa5500ff
- b_data[10] = DW_OP_xor;
+ b_data[0] = DW_OP_lit0;
+ b_data[1] = DW_OP_bra;
+ b_data[2] = 0x06;
+ b_data[3] = 0x00; // for b_data[10]
+ b_data[4] = DW_OP_lit18;
+ b_data[5] = DW_OP_lit19;
+ b_data[6] = DW_OP_lit21;
+ b_data[7] = DW_OP_bra;
+ b_data[8] = 0xf7;
+ b_data[9] = 0xff; // for b_data[1]
+ b_data[10] = DW_OP_lit22;
DWARF_Expression_ClearValue( p_exp );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 11 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
- CU_ASSERT( p_exp->result.qw_value == 0xff00ff00 );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == 0xff00ff00 );
- CU_ASSERT( p_exp->dw_depth == 1 );
-*/
-/*
- b_data[0] = DW_OP_fbreg;
- b_data[1] = 0x81;
- b_data[2] = 0x01; // value = 129 (0x81 0x01)
- DWARF_Expression_ClearValue( p_exp );
- dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 3 );
- Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
- LIBGOBLIN_DWARF_STATUS_REQUESTED,
- LIBGOBLIN_DWARF_REQUEST_FRAME_BASE, LIBGOBLIN_DWARF_REQUEST_NONE );
-
- p_exp->qw_reqdata[ LIBGOBLIN_DWARF_DATAID_FRAME_BASE ] = 0x80000000;
- p_exp->dw_setdata |= LIBGOBLIN_DWARF_REQUEST_FRAME_BASE;
- dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 3 );
- Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
- LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_FRAME_BASE );
- CU_ASSERT( p_exp->result.qw_value == (0x80000000 + 129) );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == (0x80000000 + 129) );
- CU_ASSERT( p_exp->dw_depth == 1 );
-
-
- b_data[0] = DW_OP_fbreg;
- b_data[1] = 0xff;
- b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
- DWARF_Expression_ClearValue( p_exp );
- p_exp->qw_reqdata[ LIBGOBLIN_DWARF_DATAID_FRAME_BASE ] = 0x80000000;
- p_exp->dw_setdata |= LIBGOBLIN_DWARF_REQUEST_FRAME_BASE;
- dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 3 );
- Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
- LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_FRAME_BASE );
- CU_ASSERT( p_exp->result.qw_value == (0x80000000 - 129) );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == (0x80000000 - 129) );
- CU_ASSERT( p_exp->dw_depth == 1 );
-*/
-
+ CU_ASSERT( p_exp->result.qw_value == 22 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == 18 );
+ CU_ASSERT( p_exp->t_stack[ 1 ].value.ii_value == 22 );
+ CU_ASSERT( p_exp->dw_depth == 2 );
i_result = DWARF_Expression_Free( p_exp );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data1, 8 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_CALLING,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_FRAME_BASE );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0x00 );
CU_ASSERT( p_exp->t_stack[ 1 ].value.qw_value == (0x80000000 + 129) );
CU_ASSERT( p_exp->dw_depth == 2 );
b_data2[10] = 0x12;
b_data2[11] = DW_OP_xderef_size;
b_data2[12] = 2;
- //DWARF_Expression_ClearValue( p_exp );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data2, 13 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_REQUESTED,
- LIBGOBLIN_DWARF_REQUEST_XDEREF, LIBGOBLIN_DWARF_REQUEST_FRAME_BASE );
+ LIBGOBLIN_DWARF_REQUEST_XDEREF, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->ptr_reference.value == 0x1234567890abcdef );
CU_ASSERT( p_exp->dw_reqsize == 2 );
CU_ASSERT( 3 == p_exp->dw_depth );
CU_ASSERT( p_exp->resume.pb_resume == b_data2 + 11 );
CU_ASSERT( p_exp->resume.qw_remain == 2 );
+
p_exp->qw_reqdata[ LIBGOBLIN_DWARF_DATAID_XDEREF ] = 0xabcd;
p_exp->dw_setdata |= LIBGOBLIN_DWARF_REQUEST_XDEREF;
dw_result = DWARF_Expression_Evaluate( p_exp, b_data2, 13 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_RETCALL,
- LIBGOBLIN_DWARF_REQUEST_NONE,
- LIBGOBLIN_DWARF_REQUEST_XDEREF | LIBGOBLIN_DWARF_REQUEST_FRAME_BASE );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0x00 );
CU_ASSERT( 4 == p_exp->dw_depth );
CU_ASSERT( p_exp->b_callers == 1 );
CU_ASSERT( p_exp->caller[ 0 ].pb_return == b_data1 + 7 );
CU_ASSERT( p_exp->caller[ 0 ].qw_retremain == 1 );
-// TODO: xderef & deref requst value (reference.value) is seperating !!
-/*
+
+/* XXX
dw_result = DWARF_Expression_Evaluate( p_exp, b_data1, 8 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_REQUESTED,
- LIBGOBLIN_DWARF_REQUEST_DEREF,
- LIBGOBLIN_DWARF_REQUEST_XDEREF | LIBGOBLIN_DWARF_REQUEST_FRAME_BASE );
+ LIBGOBLIN_DWARF_REQUEST_DEREF, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->b_callers == 0 );
- CU_ASSERT( p_exp->resume.pb_resume == NULL );
- CU_ASSERT( p_exp->resume.qw_remain == 4 );
+ CU_ASSERT( p_exp->resume.pb_resume == b_data1 + 7 );
+ CU_ASSERT( p_exp->resume.qw_remain == 1 );
*/
+
/*
CU_ASSERT( p_exp->result.qw_value == 0x00 );
CU_ASSERT( p_exp->t_stack[ 1 ].value.qw_value == (0x80000000 + 129) );
Test_LibGoblin_DWARF_Expression_ArithmeticLogical_test01_001 );
CU_add_test( pt_goblin, "LibGoblin_DWARF_Expression_FlowControl_test01_001",
Test_LibGoblin_DWARF_Expression_FlowControl_test01_001 );
-/*
CU_add_test( pt_goblin, "LibGoblin_DWARF_Expression_FlowControl_test02_001",
Test_LibGoblin_DWARF_Expression_FlowControl_test02_001 );
-*/
return 0x00;
}