コード例 #1
0
void
MyTraversal::visit(SgNode* astNode)
{
    SgAsmElfFileHeader *fhdr = isSgAsmElfFileHeader(astNode);
    if (fhdr) {
        size_t oldsize = fhdr->get_word_size();
        if (8==oldsize) {
            size_t newsize = 4;
            printf("*** Changing ELF word size from %zu bits to %zu bits\n", 8*oldsize, 8*newsize);
            fhdr->get_exec_format()->set_word_size(newsize);
        } else if (4==oldsize) {
            size_t newsize = 8;
            printf("*** Changing ELF word size from %zu bits to %zu bits\n", 8*oldsize, 8*newsize);
            fhdr->get_exec_format()->set_word_size(newsize);
        }
    }
}
コード例 #2
0
/* This binary loader can handle ELF object files. */
bool
BinaryLoaderElfObj::can_load(SgAsmGenericHeader *hdr) const
{
    return isSgAsmElfFileHeader(hdr) && hdr->get_exec_format()->get_purpose()==SgAsmExecutableFileFormat::PURPOSE_LIBRARY;
}