Don't include wine internal functions in the relay debugging table.
This commit is contained in:
parent
caf5f89bcb
commit
f3a15607ad
|
@ -237,44 +237,49 @@ static void output_exports( FILE *outfile, int nr_exports, int fwd_size )
|
||||||
for (i = Base; i <= Limit; i++)
|
for (i = Base; i <= Limit; i++)
|
||||||
{
|
{
|
||||||
ORDDEF *odp = Ordinals[i];
|
ORDDEF *odp = Ordinals[i];
|
||||||
|
unsigned int j, mask = 0;
|
||||||
|
|
||||||
if (odp && ((odp->type == TYPE_STDCALL) ||
|
/* skip non-existent entry points */
|
||||||
(odp->type == TYPE_STDCALL64) ||
|
if (!odp) goto ignore;
|
||||||
(odp->type == TYPE_CDECL) ||
|
/* skip non-functions */
|
||||||
(odp->type == TYPE_REGISTER)))
|
if ((odp->type != TYPE_STDCALL) && (odp->type != TYPE_STDCALL64) &&
|
||||||
|
(odp->type != TYPE_CDECL) && (odp->type != TYPE_REGISTER)) goto ignore;
|
||||||
|
/* skip wine internal functions */
|
||||||
|
if (!strncmp( odp->name, "wine_", 5 ) || !strncmp( odp->name, "__wine_", 7 )) goto ignore;
|
||||||
|
|
||||||
|
for (j = 0; odp->u.func.arg_types[j]; j++)
|
||||||
{
|
{
|
||||||
unsigned int j, mask = 0;
|
if (odp->u.func.arg_types[j] == 't') mask |= 1<< (j*2);
|
||||||
for (j = 0; odp->u.func.arg_types[j]; j++)
|
if (odp->u.func.arg_types[j] == 'W') mask |= 2<< (j*2);
|
||||||
{
|
|
||||||
if (odp->u.func.arg_types[j] == 't') mask |= 1<< (j*2);
|
|
||||||
if (odp->u.func.arg_types[j] == 'W') mask |= 2<< (j*2);
|
|
||||||
}
|
|
||||||
|
|
||||||
switch(odp->type)
|
|
||||||
{
|
|
||||||
case TYPE_STDCALL64:
|
|
||||||
if (j < 16) mask |= 0x80000000;
|
|
||||||
/* fall through */
|
|
||||||
case TYPE_STDCALL:
|
|
||||||
fprintf( outfile, " { 0xe9, { 0,0,0,0 }, 0xc2, 0x%04x, %s, 0x%08x }",
|
|
||||||
strlen(odp->u.func.arg_types) * sizeof(int),
|
|
||||||
odp->u.func.link_name, mask );
|
|
||||||
break;
|
|
||||||
case TYPE_CDECL:
|
|
||||||
fprintf( outfile, " { 0xe9, { 0,0,0,0 }, 0xc3, 0x%04x, %s, 0x%08x }",
|
|
||||||
strlen(odp->u.func.arg_types) * sizeof(int),
|
|
||||||
odp->u.func.link_name, mask );
|
|
||||||
break;
|
|
||||||
case TYPE_REGISTER:
|
|
||||||
fprintf( outfile, " { 0xe9, { 0,0,0,0 }, 0xc3, 0x%04x, __regs_%d, 0x%08x }",
|
|
||||||
0x8000 | (strlen(odp->u.func.arg_types) * sizeof(int)), i, mask );
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
assert(0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else fprintf( outfile, " { 0, { 0,0,0,0 }, 0, 0, 0, 0 }" );
|
|
||||||
|
|
||||||
|
switch(odp->type)
|
||||||
|
{
|
||||||
|
case TYPE_STDCALL64:
|
||||||
|
if (j < 16) mask |= 0x80000000;
|
||||||
|
/* fall through */
|
||||||
|
case TYPE_STDCALL:
|
||||||
|
fprintf( outfile, " { 0xe9, { 0,0,0,0 }, 0xc2, 0x%04x, %s, 0x%08x }",
|
||||||
|
strlen(odp->u.func.arg_types) * sizeof(int),
|
||||||
|
odp->u.func.link_name, mask );
|
||||||
|
break;
|
||||||
|
case TYPE_CDECL:
|
||||||
|
fprintf( outfile, " { 0xe9, { 0,0,0,0 }, 0xc3, 0x%04x, %s, 0x%08x }",
|
||||||
|
strlen(odp->u.func.arg_types) * sizeof(int),
|
||||||
|
odp->u.func.link_name, mask );
|
||||||
|
break;
|
||||||
|
case TYPE_REGISTER:
|
||||||
|
fprintf( outfile, " { 0xe9, { 0,0,0,0 }, 0xc3, 0x%04x, __regs_%d, 0x%08x }",
|
||||||
|
0x8000 | (strlen(odp->u.func.arg_types) * sizeof(int)), i, mask );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert(0);
|
||||||
|
}
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
ignore:
|
||||||
|
fprintf( outfile, " { 0, { 0,0,0,0 }, 0, 0, 0, 0 }" );
|
||||||
|
done:
|
||||||
if (i < Limit) fprintf( outfile, ",\n" );
|
if (i < Limit) fprintf( outfile, ",\n" );
|
||||||
}
|
}
|
||||||
#endif /* __i386__ */
|
#endif /* __i386__ */
|
||||||
|
|
Loading…
Reference in New Issue