示例#1
0
static int disassemble_file( const char * name, opdis_off_t offset ) {
    int rv;
    FILE * f;
    opdis_t o;
    opdis_buf_t buf;
    opdis_insn_tree_t tree;

    f = fopen( name, "r" );
    if (! f ) {
        printf( "Unable to open file %s: %s\n", name, strerror(errno) );
        return -1;
    }

    buf = opdis_buf_read( f, 0, 0 );

    fclose( f );

    o = opdis_init();

    tree = opdis_insn_tree_init( 1 );
    opdis_set_display( o, store_insn, tree );

    rv = opdis_disasm_cflow( o, buf, (opdis_vma_t) offset );
    opdis_insn_tree_foreach( tree, print_insn, (void *) name );

    opdis_insn_tree_free( tree );
    opdis_term( o );

    return (rv > 0) ? 0 : -2;
}
示例#2
0
文件: main.c 项目: grugq/tg-community
static void set_defaults( struct opdis_options * opts ) {
	opts->jobs = job_list_alloc();
	opts->map = mem_map_alloc();
	opts->targets = tgt_list_alloc();
	opts->opdis = opdis_init();
	opts->insn_tree = opdis_insn_tree_init( 1 );
	opts->output_file = stdout;

	// TODO get first available arch
	// TODO: use 64-bit detection?
	opts->arch_str = "i386";
	opts->arch = bfd_mach_i386_i386;

	opts->syntax_str = "att";
	opts->syntax = opdis_x86_syntax_att;

	opts->fmt_str = "dump";
	opts->fmt = asmfmt_dump;


	opts->disasm_opts = "";
}