Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Sell2016-12-12 17:13:48 +0000
committerDoug Schaefer2016-12-15 14:44:05 +0000
commite0c3180f80a6d779773813de8a9e62133ef609e9 (patch)
tree23abf22255f3a39dc5f2536658b084c67ab73c9d /build/org.eclipse.cdt.build.gcc.core
parenta6e77633bdc8fa98473f7212150a7f638c45b28a (diff)
downloadorg.eclipse.cdt-e0c3180f80a6d779773813de8a9e62133ef609e9.tar.gz
org.eclipse.cdt-e0c3180f80a6d779773813de8a9e62133ef609e9.tar.xz
org.eclipse.cdt-e0c3180f80a6d779773813de8a9e62133ef609e9.zip
Bug 503153.Fixed NPE in GCCToolChain.getDefaultScannerInfo()
Change-Id: I51c4d4c2e517fc5743b180c99212dc9c3b8134ed Signed-off-by: Christian Sell <c.sell@byterefinery.de>
Diffstat (limited to 'build/org.eclipse.cdt.build.gcc.core')
-rw-r--r--build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java
index 61a0b69f307..c7beb398884 100644
--- a/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java
+++ b/build/org.eclipse.cdt.build.gcc.core/src/org/eclipse/cdt/build/gcc/core/internal/GCCPathToolChainProvider.java
@@ -30,7 +30,8 @@ public class GCCPathToolChainProvider implements IToolChainProvider {
private static final String ID = "org.eclipse.cdt.build.gcc.core.gccPathProvider"; //$NON-NLS-1$
- private static final Pattern gccPattern = Pattern.compile("(.*-)?(gcc|g\\+\\+|clang|clang\\+\\+)"); //$NON-NLS-1$
+ private static final Pattern gppPattern = Pattern.compile("(.*-)?(g\\+\\+|clang\\+\\+)"); //$NON-NLS-1$
+ private static final Pattern gccPattern = Pattern.compile("(.*-)?(gcc|clang)"); //$NON-NLS-1$
private static final Pattern versionPattern = Pattern.compile(".*(gcc|LLVM) version .*"); //$NON-NLS-1$
private static final Pattern targetPattern = Pattern.compile("Target: (.*)"); //$NON-NLS-1$
@@ -48,9 +49,28 @@ public class GCCPathToolChainProvider implements IToolChainProvider {
File dir = new File(dirStr);
if (dir.isDirectory()) {
for (String file : dir.list()) {
+ String prefix = null;
+ boolean hasAltCmd = false;
+
Matcher matcher = gccPattern.matcher(file);
if (matcher.matches()) {
- String prefix = matcher.group(1);
+ prefix = matcher.group(1);
+ String cmd = matcher.group(2);
+ String altFile = prefix + (cmd.startsWith("g") ? "g++" : "clang++");
+ File altCmd = new File(dir, altFile);
+ hasAltCmd = altCmd.exists() && altCmd.canExecute();
+ }
+ else {
+ matcher = gppPattern.matcher(file);
+ if (matcher.matches()) {
+ prefix = matcher.group(1);
+ String cmd = matcher.group(2);
+ String altFile = prefix + (cmd.startsWith("g") ? "gcc" : "clang");
+ File altCmd = new File(dir, altFile);
+ hasAltCmd = altCmd.exists() && altCmd.canExecute();
+ }
+ }
+ if (prefix != null && hasAltCmd) {
String command = dirStr + File.separatorChar + file;
try {
Process proc = new ProcessBuilder(new String[] { command, "-v" }).redirectErrorStream(true) //$NON-NLS-1$

Back to the top