VirtualBox

Changeset 88366 in vbox for trunk/include/VBox/vmm


Ignore:
Timestamp:
Apr 5, 2021 7:08:37 AM (4 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
143613
Message:

VMM/DBGFR3Flow: Add ability to put call instructions into separate basic blocks which will aid the flow tracing code to instrument calls to other functions more easily

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/vmm/dbgf.h

    r87776 r88366  
    29182918 * @{ */
    29192919/** The basic block is the entry into the owning control flow graph. */
    2920 #define DBGF_FLOW_BB_F_ENTRY             RT_BIT_32(0)
     2920#define DBGF_FLOW_BB_F_ENTRY                                RT_BIT_32(0)
    29212921/** The basic block was not populated because the limit was reached. */
    2922 #define DBGF_FLOW_BB_F_EMPTY             RT_BIT_32(1)
     2922#define DBGF_FLOW_BB_F_EMPTY                                RT_BIT_32(1)
    29232923/** The basic block is not complete because an error happened during disassembly. */
    2924 #define DBGF_FLOW_BB_F_INCOMPLETE_ERR    RT_BIT_32(2)
     2924#define DBGF_FLOW_BB_F_INCOMPLETE_ERR                       RT_BIT_32(2)
    29252925/** The basic block is reached through a branch table. */
    2926 #define DBGF_FLOW_BB_F_BRANCH_TABLE      RT_BIT_32(3)
     2926#define DBGF_FLOW_BB_F_BRANCH_TABLE                         RT_BIT_32(3)
     2927/** The basic block consists only of a single call instruction because
     2928 * DBGF_FLOW_CREATE_F_CALL_INSN_SEPARATE_BB was given. */
     2929#define DBGF_FLOW_BB_F_CALL_INSN                            RT_BIT_32(4)
     2930/** The branch target of the call instruction could be deduced and can be queried with
     2931 * DBGFR3FlowBbGetBranchAddress(). May only be available when DBGF_FLOW_BB_F_CALL_INSN
     2932 * is set. */
     2933#define DBGF_FLOW_BB_F_CALL_INSN_TARGET_KNOWN               RT_BIT_32(5)
    29272934/** @} */
    29282935
     
    29302937 * @{ */
    29312938/** Default options. */
    2932 #define DBGF_FLOW_CREATE_F_DEFAULT                       0
     2939#define DBGF_FLOW_CREATE_F_DEFAULT                          0
    29332940/** Tries to resolve indirect branches, useful for code using
    29342941 * jump tables generated for large switch statements by some compilers. */
    2935 #define DBGF_FLOW_CREATE_F_TRY_RESOLVE_INDIRECT_BRANCHES RT_BIT_32(0)
     2942#define DBGF_FLOW_CREATE_F_TRY_RESOLVE_INDIRECT_BRANCHES    RT_BIT_32(0)
     2943/** Call instructions are placed in a separate basic block. */
     2944#define DBGF_FLOW_CREATE_F_CALL_INSN_SEPARATE_BB            RT_BIT_32(1)
    29362945/** @} */
    29372946
     
    29943003VMMR3DECL(uint32_t)          DBGFR3FlowGetBbCount(DBGFFLOW hFlow);
    29953004VMMR3DECL(uint32_t)          DBGFR3FlowGetBranchTblCount(DBGFFLOW hFlow);
     3005VMMR3DECL(uint32_t)          DBGFR3FlowGetCallInsnCount(DBGFFLOW hFlow);
    29963006
    29973007VMMR3DECL(uint32_t)          DBGFR3FlowBbRetain(DBGFFLOWBB hFlowBb);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette