# HG changeset patch # User iveresov # Date 1516724316 28800 # Node ID decc1bb41107a8798e8d5b6ddc7a0cfd2bdc78ee # Parent 8f451978683ce3193c302f6140ecf05afee1754a 8194669: jaotc truncates the invalid filename provided to --output Summary: Do not skip the first character of the linker output Reviewed-by: kvn diff -r 8f451978683c -r decc1bb41107 src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java --- a/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java Tue Jan 23 08:55:47 2018 +0100 +++ b/src/jdk.aot/share/classes/jdk.tools.jaotc/src/jdk/tools/jaotc/Linker.java Tue Jan 23 08:18:36 2018 -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(); + String errorMessage = getString(p.getErrorStream()); + if (errorMessage.isEmpty()) { + errorMessage = getString(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()); + throw new InternalError(errorMessage); } File objFile = new File(objectFileName); if (objFile.exists()) {