--- old/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java 2018-01-20 19:16:18.000000000 -0800 +++ new/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java 2018-01-20 19:16:18.000000000 -0800 @@ -44,6 +44,14 @@ return libraryFileName; } + private static String getString(InputStream stream) { + BufferedReader br = new BufferedReader(new InputStreamReader(stream)); + Stream lines = br.lines(); + StringBuilder sb = new StringBuilder(); + lines.iterator().forEachRemaining(e -> sb.append(e)); + return sb.toString(); + } + Linker(Main main) throws Exception { this.options = main.options; String name = options.outputName; @@ -106,12 +114,7 @@ Process p = Runtime.getRuntime().exec(linkerCheck); final int exitCode = p.waitFor(); if (exitCode != 0) { - InputStream stderr = p.getErrorStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(stderr)); - Stream lines = br.lines(); - StringBuilder sb = new StringBuilder(); - lines.iterator().forEachRemaining(e -> sb.append(e)); - throw new InternalError(sb.toString()); + throw new InternalError(getString(p.getErrorStream())); } } } @@ -120,15 +123,11 @@ Process p = Runtime.getRuntime().exec(linkerCmd); final int exitCode = p.waitFor(); if (exitCode != 0) { - InputStream stderr = p.getErrorStream(); - if (stderr.read() == -1) { - stderr = p.getInputStream(); - } - BufferedReader br = new BufferedReader(new InputStreamReader(stderr)); - Stream lines = br.lines(); - StringBuilder sb = new StringBuilder(); - lines.iterator().forEachRemaining(e -> sb.append(e)); - throw new InternalError(sb.toString()); + String errorMessage = getString(p.getErrorStream()); + if (errorMessage.isEmpty()) { + errorMessage = getString(p.getInputStream()); + } + throw new InternalError(errorMessage); } File objFile = new File(objectFileName); if (objFile.exists()) {