RFR: JDK-8200267 a.out created at top dir by Solaris build

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Tue Apr 3 13:11:44 UTC 2018


There's an unwanted a.out in the top directory when building with Solaris.

This one was actually a bit tricky to hunt down. It is created by ld 
when extracting the version information, but only when the output of ld 
is piped to head. I'm guessing this has something to do with how Solaris 
handles pipes; perhaps head closes the pipe "forcefully" after it has 
recieved it's single line, causing ld to not being able to clean up the 
temporary a.out that it has created. The patch below solves the issue, 
at any rate.

Bug: https://bugs.openjdk.java.net/browse/JDK-8200267
Patch inline:
diff --git a/make/autoconf/toolchain.m4 b/make/autoconf/toolchain.m4
--- a/make/autoconf/toolchain.m4
+++ b/make/autoconf/toolchain.m4
@@ -597,8 +597,9 @@

      # solstudio cc requires us to have an existing file to pass as 
argument,
      # but it need not be a syntactically correct C file, so just use
-    # ourself. :)
-    LINKER_VERSION_STRING=`$LD -Wl,-V $TOPDIR/configure 2>&1 | $HEAD -n 
1 | $SED -e 's/ld: //'`
+    # ourself. :) The intermediate 'cat' is needed to stop ld from leaving
+    # a lingering a.out (!).
+    LINKER_VERSION_STRING=`$LD -Wl,-V $TOPDIR/configure 2>&1 | $CAT | 
$HEAD -n 1 | $SED -e 's/ld: //'`
      # Extract version number
      [ LINKER_VERSION_NUMBER=`$ECHO $LINKER_VERSION_STRING | \
          $SED -e 's/.* 
\([0-9][0-9]*\.[0-9][0-9]*\)-\([0-9][0-9]*\.[0-9][0-9]*\)/\1.\2/'` ]

/Magnus


More information about the build-dev mailing list