VirtualBox

Changeset 73537 in vbox for trunk/src


Ignore:
Timestamp:
Aug 7, 2018 8:11:07 AM (6 years ago)
Author:
vboxsync
Message:

IPRT: Some more work on stack unwinding using dwarf info. bugref:3897

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/common/dbg/dbgmoddwarf.cpp

    r73531 r73537  
    373373/** @} */
    374374
     375/** @name Call frame instructions.
     376 * @{  */
     377/** Mask to use to identify DW_CFA_advance_loc, DW_CFA_offset and DW_CFA_restore. */
     378#define DW_CFA_high_bit_mask        UINT8_C(0xc0)
     379
     380#define DW_CFA_nop                  UINT8_C(0x00) /**< No operands. */
     381
     382#define DW_CFA_advance_loc          UINT8_C(0x40) /**< low 6 bits: delta to advance. */
     383#define DW_CFA_set_loc              UINT8_C(0x01) /**< op1: address. */
     384#define DW_CFA_advance_loc1         UINT8_C(0x02) /**< op1: 1-byte delta. */
     385#define DW_CFA_advance_loc2         UINT8_C(0x03) /**< op1: 2-byte delta. */
     386#define DW_CFA_advance_loc4         UINT8_C(0x04) /**< op1: 4-byte delta. */
     387
     388#define DW_CFA_offset               UINT8_C(0x80) /**< low 6 bits: register; op1: ULEB128 offset. */
     389#define DW_CFA_offset_extended      UINT8_C(0x05) /**< op1: ULEB128 register; op2: ULEB128 offset. */
     390#define DW_CFA_offset_extended_sf   UINT8_C(0x11) /**< op1: ULEB128 register; op2: SLEB128 offset. */
     391#define DW_CFA_restore              UINT8_C(0xc0) /**< low 6 bits: register. */
     392#define DW_CFA_restore_extended     UINT8_C(0x06) /**< op1: ULEB128 register; op2: ULEB128 offset. */
     393#define DW_CFA_undefined            UINT8_C(0x07) /**< op1: ULEB128 register. */
     394#define DW_CFA_same_value           UINT8_C(0x08) /**< op1: ULEB128 register. */
     395#define DW_CFA_register             UINT8_C(0x09) /**< op1: ULEB128 destination register; op2: ULEB128 source register. */
     396#define DW_CFA_expression           UINT8_C(0x10) /**< op1: ULEB128 register; op2: BLOCK. */
     397
     398#define DW_CFA_val_offset           UINT8_C(0x14) /**< op1: ULEB128 register; op2: ULEB128. */
     399#define DW_CFA_val_offset_sf        UINT8_C(0x15) /**< op1: ULEB128 register; op2: SLEB128. */
     400#define DW_CFA_val_expression       UINT8_C(0x16) /**< op1: ULEB128 register; op2: BLOCK. */
     401
     402#define DW_CFA_remember_state       UINT8_C(0x0a) /**< No operands. */
     403#define DW_CFA_restore_state        UINT8_C(0x0b) /**< No operands. */
     404
     405#define DW_CFA_def_cfa              UINT8_C(0x0c) /**< op1: ULEB128 register; op2: ULEB128 offset. */
     406#define DW_CFA_def_cfa_register     UINT8_C(0x0d) /**< op1: ULEB128 register. */
     407#define DW_CFA_def_cfa_offset       UINT8_C(0x0e) /**< op1: ULEB128 offset. */
     408#define DW_CFA_def_cfa_expression   UINT8_C(0x0f) /**< op1: BLOCK. */
     409#define DW_CFA_def_cfa_sf           UINT8_C(0x12) /**< op1: ULEB128 register; op2: SLEB128 offset. */
     410#define DW_CFA_def_cfa_offset_sf    UINT8_C(0x13) /**< op1: SLEB128 offset. */
     411
     412#define DW_CFA_lo_user              UINT8_C(0x1c) /**< User defined operands. */
     413#define DW_CFA_MIPS_advance_loc8    UINT8_C(0x1d) /**< op1: 8-byte delta? */
     414#define DW_CFA_GNU_window_save      UINT8_C(0x2d) /**< op1: ??; op2: ?? */
     415#define DW_CFA_GNU_args_size        UINT8_C(0x2e) /**< op1: ??; op2: ?? */
     416#define DW_CFA_GNU_negative_offset_extended UINT8_C(0x2f) /**< op1: ??; op2: ?? */
     417#define DW_CFA_hi_user              UINT8_C(0x3f) /**< User defined operands. */
     418/** @} */
     419
    375420
    376421/*********************************************************************************************************************************
     
    25092554typedef RTDWARFCIEINFO const *PCRTDWARFCIEINFO;
    25102555
     2556#if 0
     2557
     2558typedef struct RTDWARFCFEXPR
     2559{
     2560
     2561};
     2562
     2563/**
     2564 * Call frame engine state.
     2565 */
     2566typedef struct RTDWARFCFSTATE
     2567{
     2568    /** Stack worked by DW_CFA_remember_state and DW_CFA_restore_state. */
     2569    struct RTDWARFCFSTATE      *pNextOnStack;
     2570
     2571
     2572
     2573} RTDWARFCFSTATE;
     2574#endif
    25112575
    25122576/**
Note: See TracChangeset for help on using the changeset viewer.

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