diff --git a/tools/winapi/winapi.pm b/tools/winapi/winapi.pm index 87339ac9dc1..f5279e15827 100644 --- a/tools/winapi/winapi.pm +++ b/tools/winapi/winapi.pm @@ -279,9 +279,10 @@ sub parse_spec_file($$) { } my $ordinal; + my $ARCHES="alpha|i386|powerpc|sparc|x86_64"; if(/^(\d+|@)\s+ (pascal|stdcall|cdecl|varargs)\s+ - ((?:(?:-arch=(?:i386|x86_64)|-noname|-norelay|-i386|-ret16|-ret64|-register|-interrupt|-private)\s+)*)(\S+)\s*\(\s*(.*?)\s*\)\s*(\S*)$/x) + ((?:(?:-arch=(?:$ARCHES)(?:,(?:$ARCHES))*|-noname|-norelay|-i386|-ret16|-ret64|-register|-interrupt|-private)\s+)*)(\S+)\s*\(\s*(.*?)\s*\)\s*(\S*)$/x) { my $calling_convention = $2; my $flags = $3; @@ -396,7 +397,7 @@ sub parse_spec_file($$) { } } } - } elsif(/^(\d+|@)\s+stub(?:\s+(-noname|-norelay|-i386|-ret16|-ret64|-private))?\s+(\S+)$/) { + } elsif(/^(\d+|@)\s+stub(?:\s+(-arch=(?:$ARCHES)(?:,(?:$ARCHES))*|-noname|-norelay|-i386|-ret16|-ret64|-private))?\s+(\S+)$/) { $ordinal = $1; my $flags = $2;