dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 1 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_ADDRSIZE );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 8 );
CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == 8 );
CU_ASSERT( p_exp->dw_depth == 1 );
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_REG | b_reg) );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
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 );
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_REG | b_reg) );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
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 );
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 );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
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 );
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 );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
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 );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 4 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, (LIBGOBLIN_DWARF_REQUEST_REG | 0x0a) );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
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 );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 4 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, (LIBGOBLIN_DWARF_REQUEST_REG | 0x1f ) );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
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 );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 10 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_DEREF );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0xabcdef );
CU_ASSERT( 2 == p_exp->dw_depth );
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_DEREF );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0xabcd );
CU_ASSERT( 2 == p_exp->dw_depth );
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_XDEREF );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0xabcdef );
CU_ASSERT( 3 == p_exp->dw_depth );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 12 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_XDEREF );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0xabcd );
CU_ASSERT( 3 == p_exp->dw_depth );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 10 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_OBJADDR );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0xab01cd23 );
CU_ASSERT( 2 == p_exp->dw_depth );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 10 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_TLSADDR );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0xabcdef );
CU_ASSERT( 2 == p_exp->dw_depth );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 10 );
Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
LIBGOBLIN_DWARF_STATUS_EVALUATED,
- LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_CFAADDR );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.qw_value == 0xab01cd23 );
CU_ASSERT( 2 == p_exp->dw_depth );
LIBGOBLIN_DWARF_STATUS_EVALUATED,
LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
CU_ASSERT( p_exp->result.ii_value == 129 );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value = 129 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == 129 );
CU_ASSERT( p_exp->dw_depth == 1 );
// DW_OP_and: // 0x1a
b_data[0] = DW_OP_const4u;
b_data[1] = 0xff;
- b_data[2] = 0xff;
+ b_data[2] = 0xff;
b_data[3] = 0x55;
- b_data[4] = 0x55; // 0xffff5555
+ b_data[4] = 0x55; // 0x5555ffff
b_data[5] = DW_OP_const4u;
b_data[6] = 0xff;
- b_data[7] = 0x00;
+ b_data[7] = 0x00;
b_data[8] = 0x55;
- b_data[9] = 0xaa; // 0xff0055aa
+ b_data[9] = 0xaa; // 0xaa5500ff
b_data[10] = DW_OP_and;
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 == 0xff005500 );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value = 0xff005500 );
+ CU_ASSERT( p_exp->result.qw_value == 0x005500ff );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == 0x005500ff );
CU_ASSERT( p_exp->dw_depth == 1 );
// DW_OP_div: // 0x1b
+ b_data[0] = DW_OP_consts;
+ b_data[1] = 0xff;
+ b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ b_data[3] = DW_OP_consts;
+ b_data[4] = 0x81;
+ b_data[5] = 0x01; // value = 129 (0x81 0x01)
+ b_data[6] = DW_OP_div;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 7 );
+ Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
+ LIBGOBLIN_DWARF_STATUS_EVALUATED,
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == -1 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == -1 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
// DW_OP_minus: // 0x1c
+ b_data[0] = DW_OP_consts;
+ b_data[1] = 0xff;
+ b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ b_data[3] = DW_OP_consts;
+ b_data[4] = 0x81;
+ b_data[5] = 0x01; // value = 129 (0x81 0x01)
+ b_data[6] = DW_OP_minus;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 7 );
+ Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
+ LIBGOBLIN_DWARF_STATUS_EVALUATED,
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == -258 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == -258 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
// DW_OP_mod: // 0x1d
+ b_data[0] = DW_OP_consts;
+ b_data[1] = 0xff;
+ b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ b_data[3] = DW_OP_consts;
+ b_data[4] = 0x81;
+ b_data[5] = 0x01; // value = 129 (0x81 0x01)
+ b_data[6] = DW_OP_mod;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 7 );
+ Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
+ LIBGOBLIN_DWARF_STATUS_EVALUATED,
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == 0 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == 0 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
// DW_OP_mul: // 0x1e
+ b_data[0] = DW_OP_consts;
+ b_data[1] = 0xff;
+ b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ b_data[3] = DW_OP_consts;
+ b_data[4] = 0x81;
+ b_data[5] = 0x01; // value = 129 (0x81 0x01)
+ b_data[6] = DW_OP_mul;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 7 );
+ Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
+ LIBGOBLIN_DWARF_STATUS_EVALUATED,
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == -16641 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == -16641 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
// DW_OP_neg: // 0x1f
+ b_data[0] = DW_OP_consts;
+ b_data[1] = 0x81;
+ b_data[2] = 0x01; // value = 129 (0x81 0x01)
+ b_data[3] = DW_OP_neg;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 4 );
+ Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
+ LIBGOBLIN_DWARF_STATUS_EVALUATED,
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == -129 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == -129 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
+ b_data[0] = DW_OP_consts;
+ b_data[1] = 0xff;
+ b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ b_data[3] = DW_OP_neg;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 4 );
+ Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
+ LIBGOBLIN_DWARF_STATUS_EVALUATED,
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == 129 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == 129 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
// DW_OP_not: // 0x20
+ b_data[0] = DW_OP_const4u;
+ b_data[1] = 0xff;
+ b_data[2] = 0xaa;
+ b_data[3] = 0x55;
+ b_data[4] = 0x00; // 0x0055aaff
+ b_data[5] = DW_OP_not;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 6 );
+ 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 == 0xffffffffffaa5500 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == 0xffffffffffaa5500 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
// DW_OP_or: // 0x21
b_data[0] = DW_OP_const4u;
b_data[1] = 0xff;
- b_data[2] = 0xff;
+ b_data[2] = 0xff;
b_data[3] = 0x55;
- b_data[4] = 0x55; // 0xffff5555
+ b_data[4] = 0x55; // 0x5555ffff
b_data[5] = DW_OP_const4u;
b_data[6] = 0xff;
- b_data[7] = 0x00;
+ b_data[7] = 0x00;
b_data[8] = 0x55;
- b_data[9] = 0xaa; // 0xff0055aa
+ b_data[9] = 0xaa; // 0xaa5500ff
b_data[10] = DW_OP_or;
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 == 0xffff55ff );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value = 0xffff55ff );
+ CU_ASSERT( p_exp->result.qw_value == 0xff55ffff );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == 0xff55ffff );
CU_ASSERT( p_exp->dw_depth == 1 );
// DW_OP_plus: // 0x22
+ b_data[0] = DW_OP_consts;
+ b_data[1] = 0xff;
+ b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ b_data[3] = DW_OP_consts;
+ b_data[4] = 0x81;
+ b_data[5] = 0x01; // value = 129 (0x81 0x01)
+ b_data[6] = DW_OP_plus;
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 7 );
+ Test_LibGoblin_DWARF_Expression_CheckStruct( p_exp,
+ LIBGOBLIN_DWARF_STATUS_EVALUATED,
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == 0 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == 0 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
// DW_OP_plus_uconst: // 0x23
+ b_data[0] = DW_OP_constu;
+ b_data[1] = 0xb9;
+ b_data[2] = 0x64; // value = 12857 (0xb9 0x64)
+ b_data[3] = DW_OP_plus_uconst;
+ b_data[4] = 0xb9;
+ b_data[5] = 0x64; // value = 12857 (0xb9 0x64)
+ DWARF_Expression_ClearValue( p_exp );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 6 );
+ 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 == 25714 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == 25714 );
+ CU_ASSERT( p_exp->dw_depth == 1 );
+
// DW_OP_shl: // 0x24
- b_data[0] = DW_OP_lit4;
- b_data[1] = DW_OP_const4u;
- b_data[2] = 0xff;
- b_data[3] = 0xff;
- b_data[4] = 0x55;
- b_data[5] = 0xaa; // 0xffff55aa
+ b_data[0] = DW_OP_const4u;
+ b_data[1] = 0xff;
+ b_data[2] = 0xaa;
+ b_data[3] = 0x55;
+ b_data[4] = 0x00; // 0x0055aaff
+ b_data[5] = DW_OP_lit8;
b_data[6] = DW_OP_shl;
DWARF_Expression_ClearValue( p_exp );
dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 7 );
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 == 0xff55aa00 );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value = 0xff55aa00 );
+ CU_ASSERT( p_exp->result.qw_value == 0x55aaff00 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == 0x55aaff00 );
CU_ASSERT( p_exp->dw_depth == 1 );
// DW_OP_shr: // 0x25
- // DW_OP_shra: // 0x26
-
- // DW_OP_xor: // 0x27
b_data[0] = DW_OP_const4u;
b_data[1] = 0xff;
- b_data[2] = 0xff;
+ b_data[2] = 0xaa;
b_data[3] = 0x55;
- b_data[4] = 0x55; // 0xffff5555
- b_data[5] = DW_OP_const4u;
- b_data[6] = 0xff;
- b_data[7] = 0x00;
- b_data[8] = 0x55;
- b_data[9] = 0xaa; // 0xff0055aa
- b_data[10] = DW_OP_xor;
+ b_data[4] = 0x00; // 0x0055aaff
+ b_data[5] = DW_OP_lit8;
+ b_data[6] = DW_OP_shl;
DWARF_Expression_ClearValue( p_exp );
- dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 11 );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 7 );
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 == 0x00ff00ff );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value = 0x00ff00ff );
+ CU_ASSERT( p_exp->result.qw_value == 0x55aaff00 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == 0x55aaff00 );
CU_ASSERT( p_exp->dw_depth == 1 );
-
-/*
+ // DW_OP_shra: // 0x26
b_data[0] = DW_OP_consts;
- b_data[1] = 0xef;
- b_data[2] = 0xcd;
- b_data[3] = 0xab;
- b_data[4] = 0x90;
- b_data[5] = 0x78;
- b_data[6] = 0x56;
- b_data[7] = 0x34;
- b_data[8] = 0x12;
- b_data[9] = DW_OP_deref_size;
- b_data[10] = 2;
- 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_REQUESTED,
- LIBGOBLIN_DWARF_REQUEST_DEREF, LIBGOBLIN_DWARF_REQUEST_NONE );
- CU_ASSERT( p_exp->ptr_reference.value == 0x1234567890abcdef );
- CU_ASSERT( p_exp->dw_reqsize == 2 );
- CU_ASSERT( 1 == p_exp->dw_depth );
-*/
-
-/*
- b_data[0] = DW_OP_fbreg;
- b_data[1] = 0x81;
- b_data[2] = 0x01; // value = 129 (0x81 0x01)
+ b_data[1] = 0xff;
+ b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ b_data[3] = DW_OP_lit1;
+ b_data[4] = DW_OP_shra;
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 );
+ dw_result = DWARF_Expression_Evaluate( p_exp, b_data, 5 );
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) );
+ LIBGOBLIN_DWARF_REQUEST_NONE, LIBGOBLIN_DWARF_REQUEST_NONE );
+ CU_ASSERT( p_exp->result.ii_value == -65 );
+ CU_ASSERT( p_exp->t_stack[ 0 ].value.ii_value == -65 );
CU_ASSERT( p_exp->dw_depth == 1 );
-
-
- b_data[0] = DW_OP_fbreg;
+
+ // DW_OP_xor: // 0x27
+ b_data[0] = DW_OP_const4u;
b_data[1] = 0xff;
- b_data[2] = 0x7e; // value = -129 (0xff 0x7e)
+ 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;
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 );
+ 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_FRAME_BASE );
- CU_ASSERT( p_exp->result.qw_value == (0x80000000 - 129) );
- CU_ASSERT( p_exp->t_stack[ 0 ].value.qw_value == (0x80000000 - 129) );
+ 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 );
-*/
-
i_result = DWARF_Expression_Free( p_exp );
Test_LibGoblin_DWARF_Expression_InitTerm_test00_001 );
CU_add_test( pt_goblin, "Test_LibGoblin_DWARF_Expression_AllocFree_test00_001",
Test_LibGoblin_DWARF_Expression_AllocFree_test00_001 );
+
CU_add_test( pt_goblin, "LibGoblin_DWARF_Expression_Constant_test00_001",
Test_LibGoblin_DWARF_Expression_Constant_test00_001 );
CU_add_test( pt_goblin, "LibGoblin_DWARF_Expression_RegBase_test01_001",
CU_add_test( pt_goblin, "LibGoblin_DWARF_Expression_ArithmeticLogical_test01_001",
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;
}