fn nop_graph(address: u64) -> Result<ControlFlowGraph> {
    let mut cfg = ControlFlowGraph::new();

    let block_index = {
        let block = cfg.new_block()?;
        block.nop();
        block.index()
    };

    cfg.set_entry(block_index)?;
    cfg.set_exit(block_index)?;

    cfg.set_address(Some(address));

    Ok(cfg)
}
// Direct branches are omitted, and we emit edges in the control flow graph
// instead. However, this can mess up some analyses where we expect an
// instruction at that address, such as branching to a return address. We emit
// a NOP instruction in these cases.
Direct branches are omitted, and we emit edges in the control flow graph
instead. However, this can mess up some analyses where we expect an
instruction at that address, such as branching to a return address. We emit
a NOP instruction in these cases.
Direct branches are omitted and we emit edges in the control flow graph instead . However this can mess up some analyses where we expect an instruction at that address such as branching to a return address . We emit a NOP instruction in these cases .
fn nop_graph(address: u64) -> Result<ControlFlowGraph> {
    let mut cfg = ControlFlowGraph::new();
    let block_index = {
        let block = cfg.new_block()?;
        block.nop();
        block.index()
    };
    cfg.set_entry(block_index)?;
    cfg.set_exit(block_index)?;
    cfg.set_address(Some(address));
    Ok(cfg)
}
fn nop_graph ( address : u64 ) -> Result < ControlFlowGraph > { let mut cfg = ControlFlowGraph :: new ( ) ; let block_index = { let block = cfg . new_block ( ) ? ; block . nop ( ) ; block . index ( ) } ; cfg . set_entry ( block_index ) ? ; cfg . set_exit ( block_index ) ? ; cfg . set_address ( Some ( address ) ) ; Ok ( cfg ) }
Direct branches are omitted, and we emit edges in the control flow graph
instead.
Direct branches are omitted and we emit edges in the control flow graph instead .
address
u64
address
u64