dwarflang.ast module

The DWARF expression language AST.

Just a list of DwarfInstr.

class dwarflang.ast.DwarfInstr(opcode, args)

Bases: tuple

Parameters
args: List[Any]

Alias for field number 1

opcode: dwarflang.enums.DW_OP

Alias for field number 0

dwarflang.ast.check(instr: dwarflang.ast.DwarfInstr) None
Parameters

instr (dwarflang.ast.DwarfInstr) –

Return type

None

dwarflang.ast.const_to_int(instr: dwarflang.ast.DwarfInstr) Optional[int]
Parameters

instr (dwarflang.ast.DwarfInstr) –

Return type

Optional[int]

dwarflang.ast.instr_to_json(instr: dwarflang.ast.DwarfInstr) List[Any]
Parameters

instr (dwarflang.ast.DwarfInstr) –

Return type

List[Any]

dwarflang.ast.offset_as_lit(reg_instr: dwarflang.ast.DwarfInstr) dwarflang.ast.DwarfInstr

Create a DW_OP_lit* instruction from the offset in reg_instr

Parameters

reg_instr (dwarflang.ast.DwarfInstr) –

Return type

dwarflang.ast.DwarfInstr

dwarflang.ast.offset_to_int(reg_instr: dwarflang.ast.DwarfInstr) int

Get the offset in a DW_OP_breg or DW_OP_fbreg

Parameters

reg_instr (dwarflang.ast.DwarfInstr) –

Return type

int

dwarflang.ast.replace_instructions(instructions: List[dwarflang.ast.DwarfInstr], pred: Callable[[dwarflang.ast.DwarfInstr], bool], replacement: Callable[[dwarflang.ast.DwarfInstr], List[dwarflang.ast.DwarfInstr]]) List[dwarflang.ast.DwarfInstr]

Find and replace all instructions matching a predicate.

Parameters
Return type

List[dwarflang.ast.DwarfInstr]

dwarflang.ast.set_fbreg(instructions: List[dwarflang.ast.DwarfInstr], replacement: Callable[[dwarflang.ast.DwarfInstr], List[dwarflang.ast.DwarfInstr]]) List[dwarflang.ast.DwarfInstr]

Replace DW_OP_fbreg with another expression.

Function parameters and local variables often have location expressions referring to DW_OP_fbreg, which has a value known from their parent DIE. This function can be used to replace instances of DW_OP_fbreg with that known value.

Parameters
Return type

List[dwarflang.ast.DwarfInstr]

dwarflang.ast.to_json(instructions: List[dwarflang.ast.DwarfInstr]) List[Any]
Parameters

instructions (List[dwarflang.ast.DwarfInstr]) –

Return type

List[Any]