当前位置: 首页>>代码示例>>C++>>正文


C++ AsmFormatPluginHelper::set_section方法代码示例

本文整理汇总了C++中AsmFormatPluginHelper::set_section方法的典型用法代码示例。如果您正苦于以下问题:C++ AsmFormatPluginHelper::set_section方法的具体用法?C++ AsmFormatPluginHelper::set_section怎么用?C++ AsmFormatPluginHelper::set_section使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在AsmFormatPluginHelper的用法示例。


在下文中一共展示了AsmFormatPluginHelper::set_section方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: _flat_decode

/* flat_decode */
static int _flat_decode(AsmFormatPlugin * format, int raw)
{
    AsmFormatPluginHelper * helper = format->helper;
    off_t offset;

    if((offset = helper->seek(helper->format, 0, SEEK_END)) >= 0
            && helper->set_section(helper->format, 0, 0, ".text", 0,
                offset, 0) != NULL)
        return 0;
    return -1;
}
开发者ID:,项目名称:,代码行数:12,代码来源:

示例2: sizeof

static int _elf_decode32(AsmFormatPlugin * format, int raw)
{
    AsmFormatPluginHelper * helper = format->helper;
    Elf32_Ehdr ehdr;
    Elf32_Shdr * shdr = NULL;
    Elf32_Addr base = 0x0;
    char * shstrtab = NULL;
    size_t shstrtab_cnt = 0;
    size_t i;

#ifdef DEBUG
    fprintf(stderr, "DEBUG: %s() \"%s\"\n", __func__,
            helper->get_filename(helper->format));
#endif
    if(helper->seek(helper->format, 0, SEEK_SET) != 0
            || helper->read(helper->format, &ehdr, sizeof(ehdr))
            != sizeof(ehdr))
        return -1;
    if(ehdr.e_ident[EI_DATA] != elf_arch_native->endian)
        _swap_32_ehdr(&ehdr);
    if(_decode32_shdr(format, &ehdr, &shdr) != 0)
        return -1;
    if(_decode32_addr(format, &ehdr, &base) != 0
            || _decode32_strtab(format, shdr, ehdr.e_shnum,
                ehdr.e_shstrndx, &shstrtab, &shstrtab_cnt)
            != 0)
    {
        free(shdr);
        return -1;
    }
    for(i = 0; i < ehdr.e_shnum; i++)
        if(shdr[i].sh_type == SHT_SYMTAB)
        {
            /* XXX ignore errors? */
            _decode32_symtab(format, &ehdr, shdr, ehdr.e_shnum, i);
            break;
        }
    for(i = 0; i < ehdr.e_shnum; i++)
    {
        if(shdr[i].sh_name >= shstrtab_cnt)
            continue;
        if((raw || (shdr[i].sh_type == SHT_PROGBITS && shdr[i].sh_flags
                        & SHF_EXECINSTR))
                && helper->set_section(helper->format, i,
                    &shstrtab[shdr[i].sh_name],
                    shdr[i].sh_offset, shdr[i].sh_size,
                    base + shdr[i].sh_offset) < 0)
            break;
    }
    free(shstrtab);
    free(shdr);
    return (i == ehdr.e_shnum) ? 0 : -1;
}
开发者ID:khorben,项目名称:DeforaOS,代码行数:53,代码来源:elf.c

示例3: _decode_map_code

static int _decode_map_code(AsmFormatPlugin * format, size_t id, off_t offset,
        size_t size)
{
    AsmFormatPluginHelper * helper = format->helper;

#ifdef DEBUG
    fprintf(stderr, "DEBUG: %s(%lu, %ld, %lu)\n", __func__, id, offset,
            size);
#endif
    return (helper->set_section(helper->format, id, 0,
                ".text", offset, size, 0) != NULL) ? 0 : -1;
}
开发者ID:,项目名称:,代码行数:12,代码来源:


注:本文中的AsmFormatPluginHelper::set_section方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。