函数逻辑报告 |
Source Code:arch\x86\kernel\unwind_orc.c |
Create Date:2022-07-27 09:50:21 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:unwind_next_frame
函数原型:bool unwind_next_frame(struct unwind_state *state)
返回类型:bool
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| struct unwind_state * | state |
| 386 | bool indirect = false |
| 388 | 如果unwind_done(state)则返回:false |
| 392 | 禁止抢占() |
| 405 | 如果非orc则 |
| 421 | 转到:the_end |
| 426 | 当:sp_reg恒等于ORC_REG_SP |
| 430 | 当:sp_reg恒等于ORC_REG_BP |
| 434 | 当:sp_reg恒等于ORC_REG_SP_INDIRECT |
| 439 | 当:sp_reg恒等于ORC_REG_BP_INDIRECT |
| 444 | 当:sp_reg恒等于ORC_REG_R10 |
| 451 | 退出 |
| 453 | 当:sp_reg恒等于ORC_REG_R13 |
| 460 | 退出 |
| 462 | 当:sp_reg恒等于ORC_REG_DI |
| 469 | 退出 |
| 471 | 当:sp_reg恒等于ORC_REG_DX |
| 478 | 退出 |
| 480 | 默认 |
| 486 | 如果indirect则 |
| 487 | 如果非deref_stack_reg(state, sp, & sp)则转到:err |
| 507 | 当:type恒等于ORC_TYPE_REGS |
| 508 | 如果非deref_stack_regs(state, sp, & ip, & sp)则 |
| 511 | 转到:err |
| 515 | full_regs = true |
| 516 | signal = true |
| 517 | 退出 |
| 519 | 当:type恒等于ORC_TYPE_REGS_IRET |
| 520 | 如果非deref_stack_iret_regs(state, sp, & ip, & sp)则 |
| 523 | 转到:err |
| 526 | regs等于sp减IRET_FRAME_OFFSET |
| 527 | full_regs = false |
| 528 | signal = true |
| 529 | 退出 |
| 531 | 默认 |
| 534 | 退出 |
| 544 | 当:bp_reg恒等于ORC_REG_PREV_SP |
| 549 | 当:bp_reg恒等于ORC_REG_BP |
| 554 | 默认 |
| 569 | 禁用抢占和中断() |
| 570 | 返回:true |
| 572 | err : |
| 573 | error = true |
| 575 | the_end : |
| 576 | 禁用抢占和中断() |
| 577 | type等于STACK_TYPE_UNKNOWN |
| 578 | 返回:false |
| 名称 | 描述 |
|---|---|
| __unwind_start |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |