equal
deleted
inserted
replaced
49 { |
49 { |
50 Usage("Invalid argument"); |
50 Usage("Invalid argument"); |
51 } |
51 } |
52 |
52 |
53 my $current_package = ""; |
53 my $current_package = ""; |
|
54 my $saved_filename = ""; |
54 my %files; |
55 my %files; |
55 my %errors_by_file; |
56 my %errors_by_file; |
56 my %error_count_by_file; |
57 my %error_count_by_file; |
57 my %errors; |
58 my %errors; |
58 my %message_ids; |
59 my %message_ids; |
89 my $filename = $1; |
90 my $filename = $1; |
90 my $lineno = $2; |
91 my $lineno = $2; |
91 my $messagetype = $3; |
92 my $messagetype = $3; |
92 my $message = $4; |
93 my $message = $4; |
93 |
94 |
|
95 # Heuristic for guessing the problem file for assembler issues |
|
96 # |
|
97 if ($filename =~ /\\TEMP\\/i) |
|
98 { |
|
99 $filename = $saved_filename; |
|
100 $lineno = 0; |
|
101 } |
|
102 else |
|
103 { |
|
104 $saved_filename = $filename; |
|
105 } |
|
106 |
94 if ($messagetype eq "note") |
107 if ($messagetype eq "note") |
95 { |
108 { |
96 next; # ignore notes |
109 next; # ignore notes |
97 } |
110 } |
98 if ($messagetype eq "warning" && !$warnings) |
111 if ($messagetype eq "warning" && !$warnings) |
99 { |
112 { |
100 next; # ignore warnings |
113 next; # ignore warnings |
|
114 } |
|
115 if ($message =~ /.*: No such file/ && !$warnings) |
|
116 { |
|
117 next; # ignore "no such file", as these aren't likely to be GCC-specific |
101 } |
118 } |
102 |
119 |
103 $filename =~ s/^.://; # remove drive letter |
120 $filename =~ s/^.://; # remove drive letter |
104 |
121 |
105 $message =~ s/&/&/g; |
122 $message =~ s/&/&/g; |
108 $message =~ s/'/'/g; |
125 $message =~ s/'/'/g; |
109 my $generic_message = "$messagetype: $message"; |
126 my $generic_message = "$messagetype: $message"; |
110 $generic_message =~ s/'offsetof'/"offsetof"/; |
127 $generic_message =~ s/'offsetof'/"offsetof"/; |
111 $generic_message =~ s/'([^a-zA-Z])'/"\1"/g; # don't catch ';' in next substitution |
128 $generic_message =~ s/'([^a-zA-Z])'/"\1"/g; # don't catch ';' in next substitution |
112 $generic_message =~ s/['`][^']+'/XX/g; # suppress quoted bits of the actual instance |
129 $generic_message =~ s/['`][^']+'/XX/g; # suppress quoted bits of the actual instance |
|
130 $generic_message =~ s/pasting ""(.*)"" and ""(.*)""/pasting XX and YY/g; # suppress detail of "pasting" error |
113 |
131 |
114 my $message_id = $next_message_id; |
132 my $message_id = $next_message_id; |
115 if (!defined $message_ids{$generic_message}) |
133 if (!defined $message_ids{$generic_message}) |
116 { |
134 { |
117 $next_message_id++; |
135 $next_message_id++; |