示例#1
0
文件: relay.c 项目: NVIDIA/winex_lgpl
/*******************************************************************
 *         BuildRelays32
 *
 * Build all the 32-bit relay callbacks
 */
void BuildRelays32( FILE *outfile )
{
    /* File header */

    fprintf( outfile, "/* File generated automatically. Do not edit! */\n\n" );

    fprintf( outfile, "\t.text\n" );

#ifdef USE_STABS
    if (output_file_name)
    {
        char buffer[1024];
        getcwd(buffer, sizeof(buffer));
        fprintf( outfile, "\t.file\t\"%s\"\n", output_file_name );

        /*
         * The stabs help the internal debugger as they are an indication that it
         * is sensible to step into a thunk/trampoline.
         */
        fprintf( outfile, ".stabs \"%s/\",100,0,0,Code_Start\n", buffer);
        fprintf( outfile, ".stabs \"%s\",100,0,0,Code_Start\n", output_file_name );
        fprintf( outfile, "Code_Start:\n\n" );
    }
#endif
    /* 32-bit register entry point */
    BuildCallFrom32Regs( outfile );

#ifdef USE_STABS
    fprintf( outfile, "\t.stabs \"\",100,0,0,.Letext\n");
    fprintf( outfile, ".Letext:\n");
#endif
}
示例#2
0
/*******************************************************************
 *         BuildRelays32
 *
 * Build all the 32-bit relay callbacks
 */
void BuildRelays32(void)
{
    if (target_cpu != CPU_x86)
    {
        output( "/* File not used with this architecture. Do not edit! */\n\n" );
        return;
    }

    /* File header */

    output( "/* File generated automatically. Do not edit! */\n\n" );
    output( "\t.text\n" );
    output( "%s:\n\n", asm_name("__wine_spec_thunk_text_32") );

    /* 32-bit register entry point */
    BuildCallFrom32Regs();

    output_function_size( "__wine_spec_thunk_text_32" );
    output_gnu_stack_note();
}