예제 #1
0
owl_file_handle OWLENTRY OWLFileInit( owl_handle handle, const char *name, owl_client_file client_handle, owl_format format, owl_file_type type ) {
//*************************************************************************************************************************************************

    owl_file_handle     file;

    file = handle->client_funcs.alloc( sizeof( *file ) );
    file->info = handle;
    file->format = format;
    file->client_handle = client_handle;
    file->log = NULL;
    file->type = type;
    file->string_table = OWLStringInit( file );
    file->symbol_table = OWLSymbolTableInit( file );
    file->sections = NULL;
    file->next_index = 0;
    file->name = NULL;
    addFile( handle, file );
    OWLFileSymbol( file, name );
    file->name = OWLStringAdd( file->string_table, name );
    return( file );
}
예제 #2
0
void main( int argc, char *argv[] ) {

    char                buffer[ BUFFER_SIZE ];
    owl_handle          owl;
    owl_file_handle     file;
    owl_string_table    *table;
    owl_client_funcs    funcs = { NULL, NULL, NULL, malloc, free };
    char                *t_buff;

    owl = OWLInit( &funcs, OWL_CPU_PPC );
    file = OWLFileInit( owl, "test", NULL, OWL_FORMAT_ELF, OWL_FILE_OBJECT );
    table = OWLStringInit( file );
    while( fgets( buffer, BUFFER_SIZE, stdin ) != NULL ) {
        addStrings( table, buffer );
        OWLStringDump( table );
    }
    t_buff = malloc( OWLStringTableSize( table ) + 1 );
    OWLStringEmit( table, t_buff );
    write( STDOUT_FILENO, t_buff, OWLStringTableSize( table ) );
    free( t_buff );
    OWLStringFini( table );
    OWLFileFini( file );
    OWLFini( owl );
}