diff options
Diffstat (limited to 'core')
3 files changed, 116 insertions, 60 deletions
diff --git a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java index f1cfb482308..67f9202fb54 100644 --- a/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java +++ b/core/org.eclipse.cdt.core.tests/misc/org/eclipse/cdt/core/internal/errorparsers/tests/GLDErrorParserTests.java @@ -22,39 +22,6 @@ import junit.framework.TestSuite; */ public class GLDErrorParserTests extends GenericErrorParserTests { - // old style: no colons before sections - public static final String[] GLD_ERROR_STREAM0 = { - "make -k all", - "gcc -o hallo.o main.c libfoo.a", - "main.c(.text+0x14): undefined reference to `foo()'", - "main.o(.rodata+0x14): undefined reference to `something'", - "make: Target `all' not remade because of errors." }; - public static final int GLD_ERROR_STREAM0_WARNINGS = 0; - public static final int GLD_ERROR_STREAM0_ERRORS = 2; - public static final String[] GLD_ERROR_STREAM0_FILENAMES = {"main.c","main.o"}; - - // new style: colons before sections - public static final String[] GLD_ERROR_STREAM1 = { - "make -k all", - "gcc -o hallo.o main.c libfoo.a", - "main.c:(.text+0x14): undefined reference to `foo()'", - "main.o:(.rodata+0x14): undefined reference to `something'", - "make: Target `all' not remade because of errors." }; - public static final int GLD_ERROR_STREAM1_WARNINGS = 0; - public static final int GLD_ERROR_STREAM1_ERRORS = 2; - public static final String[] GLD_ERROR_STREAM1_FILENAMES = {"main.c","main.o"}; - - public static final String[] GLD_ERROR_STREAM2 = { - "make -k all", - "gcc -o hallo.o main.c libfoo.a", - "libfoo.a(foo.o): In function `foo':", - "foo.c:(.text+0x7): undefined reference to `bar'", - "make: Target `all' not remade because of errors." }; - public static final int GLD_ERROR_STREAM2_WARNINGS = 0; - public static final int GLD_ERROR_STREAM2_ERRORS = 1; - public static final String[] GLD_ERROR_STREAM2_FILENAMES = {"foo.c"}; - - public GLDErrorParserTests() { super(); } @@ -65,15 +32,84 @@ public class GLDErrorParserTests extends GenericErrorParserTests { } public void testLinkerMessages0() throws IOException { - runParserTest(GLD_ERROR_STREAM0, GLD_ERROR_STREAM0_ERRORS, GLD_ERROR_STREAM0_WARNINGS, GLD_ERROR_STREAM0_FILENAMES, - null, new String[]{GLD_ERROR_PARSER_ID}); + runParserTest( + // old style: no colons before sections + new String[] { + "make -k all", + "gcc -o hallo.o main.c libfoo.a", + "main.c(.text+0x14): undefined reference to `foo()'", + "main.o(.rodata+0x14): undefined reference to `something'", + "make: Target `all' not remade because of errors.", + }, + 2, // errors + 0, // warnings + 0, // Infos + new String[] {"main.c","main.o"}, + new String[] { + "undefined reference to `foo()'", + "undefined reference to `something'" + }, + new String[]{GLD_ERROR_PARSER_ID} + ); } + public void testLinkerMessages1() throws IOException { - runParserTest(GLD_ERROR_STREAM1, GLD_ERROR_STREAM1_ERRORS, GLD_ERROR_STREAM1_WARNINGS, GLD_ERROR_STREAM1_FILENAMES, - null, new String[]{GLD_ERROR_PARSER_ID}); + runParserTest( + // new style: colons before sections + new String[] { + "make -k all", + "gcc -o hallo.o main.c libfoo.a", + "main.c:(.text+0x14): undefined reference to `foo()'", + "main.o:(.rodata+0x14): undefined reference to `something'", + "make: Target `all' not remade because of errors.", + }, + 2, // errors + 0, // warnings + 0, // Infos + new String[] {"main.c","main.o"}, + new String[] { + "undefined reference to `foo()'", + "undefined reference to `something'" + }, + new String[]{GLD_ERROR_PARSER_ID} + ); } + public void testLinkerMessages2() throws IOException { - runParserTest(GLD_ERROR_STREAM2, GLD_ERROR_STREAM2_ERRORS, GLD_ERROR_STREAM2_WARNINGS, GLD_ERROR_STREAM2_FILENAMES, - null, new String[]{GLD_ERROR_PARSER_ID}); + runParserTest( + new String[] { + "make -k all", + "gcc -o hallo.o main.c libfoo.a", + "libfoo.a(foo.o): In function `foo':", + "foo.c:(.text+0x7): undefined reference to `bar'", + "make: Target `all' not remade because of errors.", + }, + 1, // errors + 0, // warnings + 0, // Infos + new String[] {"foo.c"}, + new String[] {"undefined reference to `bar'"}, + new String[] {GLD_ERROR_PARSER_ID} + ); + } + + public void testLinkerMessages_DangerousFunction_bug248669() throws IOException { + runParserTest( + new String[] { + "mktemp.o(.text+0x19): In function 'main':", + "mktemp.c:15: the use of 'mktemp' is dangerous, better use 'mkstemp'", + "1.o: In function `main':", + "1.c:(.text+0x19): warning: the use of `mktemp' is dangerous, better use `mkstemp'", + }, + 0, // errors + 2, // warnings + 0, // Infos + new String[] {"1.c", "mktemp.c"}, + new String[] { + "the use of 'mktemp' is dangerous, better use 'mkstemp'", + "the use of `mktemp' is dangerous, better use `mkstemp'", + }, + new String[] {GLD_ERROR_PARSER_ID} + ); } } diff --git a/core/org.eclipse.cdt.core/plugin.properties b/core/org.eclipse.cdt.core/plugin.properties index 61989a47521..ca36f5da40a 100644 --- a/core/org.eclipse.cdt.core/plugin.properties +++ b/core/org.eclipse.cdt.core/plugin.properties @@ -45,29 +45,35 @@ MachOParser64.name=Mach-O 64 Parser SOMParser.name=HP-UX SOM Parser CDTGNUCErrorParser.name=CDT GNU C/C++ Error Parser -CDTGNUAssemblerErrorParser.name=CDT GNU Assembler Error Parser +CDTGNUCErrorParser.regex.ReportedOnlyOnce=(.*?):(\\d+):(\\d+:)? .*\\(Each undeclared identifier is reported only once.* +CDTGNUCErrorParser.regex.ForEachFunctionItAppearsIn=(.*?):(\\d+):(\\d+:)? .*for each function it appears in.\\).* +CDTGNUCErrorParser.regex.ReportedOnlyOncePerInputFile=(.*?):(\\d+):(\\d+:)? .*this will be reported only once per input file.* +CDTGNUCErrorParser.regex.InstantiatedFromHere=(.*?):(\\d+):(\\d+:)?\\s*(.*instantiated from here.*) +CDTGNUCErrorParser.regex.GenericInfo=(.*?):(\\d+):(\\d+:)?\\s*(([Nn]ote)|(NOTE)|([Ii]nfo)|(INFO)): (.*) +CDTGNUCErrorParser.regex.ParseErrorBefore=(.*?):(\\d+):(\\d+:)? (parse error before.*[`'"](.*)['"].*) +CDTGNUCErrorParser.regex.ErrorUndeclared=(.*?):(\\d+):(\\d+:)? [Ee]rror: ([`'"](.*)['"] undeclared .*) +CDTGNUCErrorParser.regex.ErrorConflictingTypesFor=(.*?):(\\d+):(\\d+:)? [Ee]rror: (conflicting types for .*[`'"](.*)['"].*) +CDTGNUCErrorParser.regex.GenericError=(.*?):(\\d+):(\\d+:)?\\s*(([Ee]rror)|(ERROR)): (.*) +CDTGNUCErrorParser.regex.DefinedButNotUsed=(.*?):(\\d+):(\\d+:)? [Ww]arning: ([`'"](.*)['"] defined but not used.*) +CDTGNUCErrorParser.regex.WarningConflictingTypesFor=(.*?):(\\d+):(\\d+:)? [Ww]arning: (conflicting types for .*[`'"](.*)['"].*) +CDTGNUCErrorParser.regex.GenericWarning=(.*?):(\\d+):(\\d+:)?\\s*(([Ww]arning)|(WARNING)): (.*) +CDTGNUCErrorParser.regex.OtherError=(.*?):(\\d+):(\\d+:)? (.*) + CDTGNULinkerErrorParser.name=CDT GNU Linker Error Parser +CDTGNULinkerErrorParser.regex.InFunction=(.*?):?(\\(\\.\\w+\\+.*\\))?:\\s*(In function [`'"](.*)['"]:) +CDTGNULinkerErrorParser.regex.WarningDangerousFunction=(.*?):(\\d+):(\\d+:)? ([Ww]arning:)?\\s*(the use of [`'"](.*)['"] is dangerous, better use [`'"](.*)['"].*) +CDTGNULinkerErrorParser.regex.TextWarning=(.*?):?\\(\\.\\w+\\+.*\\): [Ww]arning:? (.*) +CDTGNULinkerErrorParser.regex.TextError=(.*?):?\\(\\.\\w+\\+.*\\): (.*) +CDTGNULinkerErrorParser.regex.ldWarning=ld(\\.exe)?: [Ww]arning:? (.*) +CDTGNULinkerErrorParser.regex.ldError=ld(\\.exe)?: (.*) + +CDTGNUAssemblerErrorParser.name=CDT GNU Assembler Error Parser CDTWorkingDirLocator.name=CDT CWD Locator CDTGNUMakeErrorParser.name=CDT GNU Make Error Parser 7.0 CDTGNUMakeErrorParser.name.deprecated=CDT GNU Make Error Parser 6.0 (Deprecated) CDTVisualCErrorParser.name=CDT Visual C Error Parser CDTRegexErrorParser.name=CDT Regular Expression Error Parser -CDTGNUCErrorParser.regex.ReportedOnlyOnce=(.*?):([0-9]+):([0-9]+:)? .*\\(Each undeclared identifier is reported only once.* -CDTGNUCErrorParser.regex.ForEachFunctionItAppearsIn=(.*?):([0-9]+):([0-9]+:)? .*for each function it appears in.\\).* -CDTGNUCErrorParser.regex.ReportedOnlyOncePerInputFile=(.*?):([0-9]+):([0-9]+:)? .*this will be reported only once per input file.* -CDTGNUCErrorParser.regex.InstantiatedFromHere=(.*?):([0-9]+):([0-9]+:)?\\s*(.*instantiated from here.*) -CDTGNUCErrorParser.regex.GenericInfo=(.*?):([0-9]+):([0-9]+:)?\\s*(([Nn]ote)|(NOTE)|([Ii]nfo)|(INFO)): (.*) -CDTGNUCErrorParser.regex.ParseErrorBefore=(.*?):([0-9]+):([0-9]+:)? (parse error before.*[`'"](.*)['"].*) -CDTGNUCErrorParser.regex.ErrorUndeclared=(.*?):([0-9]+):([0-9]+:)? [Ee]rror: ([`'"](.*)['"] undeclared .*) -CDTGNUCErrorParser.regex.ErrorConflictingTypesFor=(.*?):([0-9]+):([0-9]+:)? [Ee]rror: (conflicting types for .*[`'"](.*)['"].*) -CDTGNUCErrorParser.regex.GenericError=(.*?):([0-9]+):([0-9]+:)?\\s*(([Ee]rror)|(ERROR)): (.*) -CDTGNUCErrorParser.regex.DefinedButNotUsed=(.*?):([0-9]+):([0-9]+:)? [Ww]arning: ([`'"](.*)['"] defined but not used.*) -CDTGNUCErrorParser.regex.WarningConflictingTypesFor=(.*?):([0-9]+):([0-9]+:)? [Ww]arning: (conflicting types for .*[`'"](.*)['"].*) -CDTGNUCErrorParser.regex.WarningDangerousFunction=(.*?):([0-9]+):([0-9]+:)? ([Ww]arning:)?\\s*(the use of [`'"](.*)['"] is dangerous, better use [`'"](.*)['"].*) -CDTGNUCErrorParser.regex.GenericWarning=(.*?):([0-9]+):([0-9]+:)?\\s*(([Ww]arning)|(WARNING)): (.*) -CDTGNUCErrorParser.regex.OtherError=(.*?):([0-9]+):([0-9]+:)? (.*) - PathEntryContainerInitializer=Path Entry Container Initializer fileTypeMapping.AssemblyLanguage=Assembly diff --git a/core/org.eclipse.cdt.core/plugin.xml b/core/org.eclipse.cdt.core/plugin.xml index 05ed1a97e89..97edfb93299 100644 --- a/core/org.eclipse.cdt.core/plugin.xml +++ b/core/org.eclipse.cdt.core/plugin.xml @@ -165,7 +165,7 @@ <pattern description-expr="$4" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.ParseErrorBefore" severity="Error" variable-expr="$5"/> <pattern description-expr="$4" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.DefinedButNotUsed" severity="Warning" variable-expr="$5"/> <pattern description-expr="$4" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.WarningConflictingTypesFor" severity="Warning" variable-expr="$5"/> - <pattern description-expr="$5" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.WarningDangerousFunction" severity="Warning" variable-expr="$6"/> + <pattern description-expr="$5" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNULinkerErrorParser.regex.WarningDangerousFunction" severity="Warning" variable-expr="$6"/> <pattern description-expr="$4" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.InstantiatedFromHere" severity="Info"/> <pattern description-expr="$7" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.GenericError" severity="Error"/> <pattern description-expr="$7" eat-processed-line="true" file-expr="$1" line-expr="$2" regex="%CDTGNUCErrorParser.regex.GenericWarning" severity="Warning"/> @@ -192,32 +192,46 @@ id="org.eclipse.cdt.core.GLDErrorParser" name="%CDTGNULinkerErrorParser.name"> <pattern + description-expr="$3" + eat-processed-line="true" + file-expr="$1" + line-expr="" + regex="%CDTGNULinkerErrorParser.regex.InFunction" + severity="Ignore"/> + <pattern + description-expr="$5" + eat-processed-line="true" + file-expr="$1" + line-expr="$2" + regex="%CDTGNULinkerErrorParser.regex.WarningDangerousFunction" + severity="Warning"/> + <pattern description-expr="$2" eat-processed-line="true" file-expr="$1" line-expr="" - regex="(.*)\(\.text\+.*\): [Ww]arning:? (.*)" + regex="%CDTGNULinkerErrorParser.regex.TextWarning" severity="Warning"/> <pattern description-expr="$2" eat-processed-line="true" file-expr="$1" line-expr="" - regex="(.*?):?\(\.\w+\+.*\): (.*)" + regex="%CDTGNULinkerErrorParser.regex.TextError" severity="Error"/> <pattern description-expr="$2" eat-processed-line="true" file-expr="" line-expr="" - regex="ld(\.exe)?: [Ww]arning:? (.*)" + regex="%CDTGNULinkerErrorParser.regex.ldWarning" severity="Warning"/> <pattern description-expr="$2" eat-processed-line="true" file-expr="" line-expr="" - regex="ld(\.exe)?: (.*)" + regex="%CDTGNULinkerErrorParser.regex.ldError" severity="Error"/> </errorparser> </extension> |