From: Koine Yuusuke(koinec) Date: Mon, 9 Sep 2019 20:53:46 +0000 (+0900) Subject: (Libgoblin) X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=04b81e8ad40727c7dfe59d3b67209537840b0b30;p=drdeamon64%2Fdrdeamon64.git (Libgoblin) * WorkBackup --- diff --git a/libgoblin/drd64_libgoblin_dwarf_expression.c b/libgoblin/drd64_libgoblin_dwarf_expression.c index 8694d58..4057019 100644 --- a/libgoblin/drd64_libgoblin_dwarf_expression.c +++ b/libgoblin/drd64_libgoblin_dwarf_expression.c @@ -755,6 +755,7 @@ DWord case DW_OP_bra: // 0x28 break; case DW_OP_call2: // 0x98 + // 2019/09/10 (Required TEST!!) w_value = *((Word *)pb_now); pb_now += 2; qw_remain -= 2; @@ -765,10 +766,24 @@ DWord p_exp->b_callers++; p_exp->dw_depth = dw_depth_resume; p_exp->dw_status = LIBGOBLIN_DWARF_STATUS_CALLING; + goto goto_DWARF_Expression_Evaluate_post; - break; + break; // NOT reach. case DW_OP_call4: // 0x99 - break; + // 2019/09/10 (Required TEST!!) + dw_value = *((DWord *)pb_now); + pb_now += 4; + qw_remain -= 4; + + p_exp->qw_calloffset = (QWord)dw_value; + p_exp->caller[ p_exp->b_callers ].pb_return = pb_resume; + p_exp->caller[ p_exp->b_callers ].qw_retremain = qw_resume; + p_exp->b_callers++; + p_exp->dw_depth = dw_depth_resume; + p_exp->dw_status = LIBGOBLIN_DWARF_STATUS_CALLING; + + goto goto_DWARF_Expression_Evaluate_post; + break; // NOT reach. case DW_OP_call_ref: // 0x9a break;