Merge
diff --git a/.hgtags b/.hgtags
index 85783d8..e7963e7 100644
--- a/.hgtags
+++ b/.hgtags
@@ -45,3 +45,4 @@
b23d905cb5d3b382295240d28ab0bfb266b4503c jdk7-b68
226b20019b1f020c09ea97d137d98e011ce65d76 jdk7-b69
893bcca951b747ddcf6986362b877f0e1dbb835b jdk7-b70
+b3f3240135f0c10b9f2481c174b81b7fcf0daa60 jdk7-b71
diff --git a/make/common/shared/Defs-java.gmk b/make/common/shared/Defs-java.gmk
index 9d918af..f9ed635 100644
--- a/make/common/shared/Defs-java.gmk
+++ b/make/common/shared/Defs-java.gmk
@@ -201,7 +201,10 @@
ifeq ($(JAVAC_WARNINGS_FATAL), true)
BOOT_JAVACFLAGS += -Werror
endif
-BOOT_JAVACFLAGS += -encoding ascii
+
+BOOT_SOURCE_LANGUAGE_VERSION = 6
+BOOT_TARGET_CLASS_VERSION = 6
+BOOT_JAVACFLAGS += -encoding ascii -source $(BOOT_SOURCE_LANGUAGE_VERSION) -target $(BOOT_TARGET_CLASS_VERSION)
BOOT_JAR_JFLAGS += $(JAR_JFLAGS)
BOOT_JAVACFLAGS += $(NO_PROPRIETARY_API_WARNINGS)
diff --git a/make/tools/freetypecheck/Makefile b/make/tools/freetypecheck/Makefile
index 94c9835..2316196 100644
--- a/make/tools/freetypecheck/Makefile
+++ b/make/tools/freetypecheck/Makefile
@@ -28,16 +28,21 @@
include $(BUILDDIR)/common/Defs.gmk
# Default name
-FT_TEST = $(BUILDTOOLBINDIR)/freetype_versioncheck$(EXE_SUFFIX)
+PROGRAM = freetype_versioncheck
+FT_OBJ = $(BUILDTOOLBINDIR)/$(PROGRAM).$(OBJECT_SUFFIX)
+FT_TEST = $(BUILDTOOLBINDIR)/$(PROGRAM)$(EXE_SUFFIX)
# Used on openjdk only
ifeq ($(OPENJDK),true)
# Start with CFLAGS (which gets us the required -xarch setting on solaris)
ifeq ($(PLATFORM), windows)
- FT_OPTIONS = /nologo $(CC_OBJECT_OUTPUT_FLAG)$(TEMPDIR)
+ FT_OPTIONS = /nologo /c
FREETYPE_DLL = $(FREETYPE_LIB_PATH)/freetype.dll
FT_LD_OPTIONS = $(FREETYPE_LIB_PATH)/freetype.lib
+ifdef MT
+ FT_LD_OPTIONS += /manifest
+endif
else
FT_OPTIONS = $(CFLAGS)
FT_LD_OPTIONS = -L$(FREETYPE_LIB_PATH)
@@ -55,15 +60,22 @@
# Create test program
all: $(FT_TEST)
- @$(FT_TEST)
+ $(FT_TEST)
# On windows we need to copy dll to test dir to ensure it will be found
# at runtime
$(FT_TEST): freetypecheck.c
- @$(prep-target)
- @$(CC) $(FT_OPTIONS) $(CC_PROGRAM_OUTPUT_FLAG)$@ $< $(FT_LD_OPTIONS)
+ $(prep-target)
ifeq ($(PLATFORM), windows)
- @$(CP) $(FREETYPE_DLL) `dirname $@`
+ $(CC) $(FT_OPTIONS) $(CC_OBJECT_OUTPUT_FLAG)$(FT_OBJ) $<
+ $(LINK) $(FT_LD_OPTIONS) /OUT:$(FT_TEST) $(FT_OBJ)
+ $(CP) $(FREETYPE_DLL) $(@D)/
+ifdef MT
+ $(CP) $(MSVCRNN_DLL_PATH)/$(MSVCRNN_DLL) $(@D)/
+ $(MT) /manifest $(FT_TEST).manifest /outputresource:$(FT_TEST);#1
+endif
+else
+ @$(CC) $(FT_OPTIONS) $(CC_PROGRAM_OUTPUT_FLAG)$@ $< $(FT_LD_OPTIONS)
endif
else
diff --git a/make/tools/freetypecheck/freetypecheck.c b/make/tools/freetypecheck/freetypecheck.c
index 3f900a8..71d3202 100644
--- a/make/tools/freetypecheck/freetypecheck.c
+++ b/make/tools/freetypecheck/freetypecheck.c
@@ -32,6 +32,45 @@
#include "ft2build.h"
#include FT_FREETYPE_H
+#ifdef _MSC_VER
+#if _MSC_VER > 1400
+
+/*
+ * When building for Microsoft Windows, your program has a dependency
+ * on msvcr??.dll.
+ *
+ * When using Visual Studio 2005 or later, that must be recorded in
+ * the <program>.exe.manifest file.
+ *
+ * Reference:
+ * C:/Program Files/Microsoft SDKs/Windows/v6.1/include/crtdefs.h
+ */
+#include <crtassem.h>
+#ifdef _M_IX86
+
+#pragma comment(linker,"/manifestdependency:\"type='win32' " \
+ "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \
+ "version='" _CRT_ASSEMBLY_VERSION "' " \
+ "processorArchitecture='x86' " \
+ "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
+
+#endif /* _M_IX86 */
+
+//This may not be necessary yet for the Windows 64-bit build, but it
+//will be when that build environment is updated. Need to test to see
+//if it is harmless:
+#ifdef _M_AMD64
+
+#pragma comment(linker,"/manifestdependency:\"type='win32' " \
+ "name='" __LIBRARIES_ASSEMBLY_NAME_PREFIX ".CRT' " \
+ "version='" _CRT_ASSEMBLY_VERSION "' " \
+ "processorArchitecture='amd64' " \
+ "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
+
+#endif /* _M_AMD64 */
+#endif /* _MSC_VER > 1400 */
+#endif /* _MSC_VER */
+
#define QUOTEMACRO(x) QUOTEME(x)
#define QUOTEME(x) #x
diff --git a/src/share/classes/java/nio/file/Files.java b/src/share/classes/java/nio/file/Files.java
index 00e1014..bf59640 100644
--- a/src/share/classes/java/nio/file/Files.java
+++ b/src/share/classes/java/nio/file/Files.java
@@ -133,10 +133,11 @@
* <p> This method walks a file tree rooted at a given starting file. The
* file tree traversal is <em>depth-first</em> with the given {@link
* FileVisitor} invoked for each file encountered. File tree traversal
- * completes when all accessible files in the tree have been visited, a
- * visitor returns a result of {@link FileVisitResult#TERMINATE TERMINATE},
- * or the visitor terminates due to an uncaught {@code Error} or {@code
- * RuntimeException}.
+ * completes when all accessible files in the tree have been visited, or a
+ * visit method returns a result of {@link FileVisitResult#TERMINATE
+ * TERMINATE}. Where a visit method terminates due an uncaught error or
+ * runtime exception then the traversal is terminated and the error or
+ * exception is propagated to the caller of this method.
*
* <p> For each file encountered this method attempts to gets its {@link
* java.nio.file.attribute.BasicFileAttributes}. If the file is not a
diff --git a/src/share/classes/java/nio/file/SimpleFileVisitor.java b/src/share/classes/java/nio/file/SimpleFileVisitor.java
index 7617735..f252ef0 100644
--- a/src/share/classes/java/nio/file/SimpleFileVisitor.java
+++ b/src/share/classes/java/nio/file/SimpleFileVisitor.java
@@ -124,8 +124,8 @@
* cause.
*
* @throws IOError
- * if iteration of the directory completed prematurely due to an
- * I/O error
+ * with the I/O exception thrown when iteration of the directory
+ * completed prematurely due to an I/O error
*/
@Override
public FileVisitResult postVisitDirectory(T dir, IOException exc) {
diff --git a/src/share/sample/nio/file/Xdd.java b/src/share/sample/nio/file/Xdd.java
index b540b31..b510297 100644
--- a/src/share/sample/nio/file/Xdd.java
+++ b/src/share/sample/nio/file/Xdd.java
@@ -57,9 +57,9 @@
Path file = (args.length == 1) ?
Paths.get(args[0]) : Paths.get(args[2]);
- // check that user defined attributes are supported by the file system
+ // check that user defined attributes are supported by the file store
FileStore store = file.getFileStore();
- if (!store.supportsFileAttributeView("user")) {
+ if (!store.supportsFileAttributeView(UserDefinedFileAttributeView.class)) {
System.err.format("UserDefinedFileAttributeView not supported on %s\n", store);
System.exit(-1);
diff --git a/src/share/transport/socket/socketTransport.c b/src/share/transport/socket/socketTransport.c
index f960fae..59ebcc9 100644
--- a/src/share/transport/socket/socketTransport.c
+++ b/src/share/transport/socket/socketTransport.c
@@ -134,15 +134,16 @@
static jdwpTransportError
handshake(int fd, jlong timeout) {
- char *hello = "JDWP-Handshake";
+ const char *hello = "JDWP-Handshake";
char b[16];
- int rv, received, i;
+ int rv, helloLen, received;
if (timeout > 0) {
dbgsysConfigureBlocking(fd, JNI_FALSE);
}
+ helloLen = (int)strlen(hello);
received = 0;
- while (received < (int)strlen(hello)) {
+ while (received < helloLen) {
int n;
char *buf;
if (timeout > 0) {
@@ -154,7 +155,7 @@
}
buf = b;
buf += received;
- n = dbgsysRecv(fd, buf, (int)strlen(hello)-received, 0);
+ n = dbgsysRecv(fd, buf, helloLen-received, 0);
if (n == 0) {
setLastError(0, "handshake failed - connection prematurally closed");
return JDWPTRANSPORT_ERROR_IO_ERROR;
@@ -167,20 +168,19 @@
if (timeout > 0) {
dbgsysConfigureBlocking(fd, JNI_TRUE);
}
- for (i=0; i<(int)strlen(hello); i++) {
- if (b[i] != hello[i]) {
- char msg[64];
- strcpy(msg, "handshake failed - received >");
- strncat(msg, b, strlen(hello));
- strcat(msg, "< - excepted >");
- strcat(msg, hello);
- strcat(msg, "<");
- setLastError(0, msg);
- return JDWPTRANSPORT_ERROR_IO_ERROR;
- }
+ if (strncmp(b, hello, received) != 0) {
+ char msg[80+2*16];
+ b[received] = '\0';
+ /*
+ * We should really use snprintf here but it's not available on Windows.
+ * We can't use jio_snprintf without linking the transport against the VM.
+ */
+ sprintf(msg, "handshake failed - received >%s< - expected >%s<", b, hello);
+ setLastError(0, msg);
+ return JDWPTRANSPORT_ERROR_IO_ERROR;
}
- if (dbgsysSend(fd, hello, (int)strlen(hello), 0) != (int)strlen(hello)) {
+ if (dbgsysSend(fd, (char*)hello, helloLen, 0) != helloLen) {
RETURN_IO_ERROR("send failed during handshake");
}
return JDWPTRANSPORT_ERROR_NONE;
diff --git a/src/solaris/classes/sun/nio/fs/LinuxFileStore.java b/src/solaris/classes/sun/nio/fs/LinuxFileStore.java
index 7eb45bd..8113298 100644
--- a/src/solaris/classes/sun/nio/fs/LinuxFileStore.java
+++ b/src/solaris/classes/sun/nio/fs/LinuxFileStore.java
@@ -25,6 +25,7 @@
package sun.nio.fs;
+import java.nio.file.attribute.*;
import java.util.*;
import java.io.IOException;
@@ -113,10 +114,12 @@
}
@Override
- public boolean supportsFileAttributeView(String name) {
+ public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
// support DosFileAttributeView and UserDefinedAttributeView if extended
// attributes enabled
- if (name.equals("dos") || name.equals("user")) {
+ if (type == DosFileAttributeView.class ||
+ type == UserDefinedFileAttributeView.class)
+ {
// lookup fstypes.properties
FeatureStatus status = checkIfFeaturePresent("user_xattr");
if (status == FeatureStatus.PRESENT)
@@ -142,7 +145,15 @@
}
return xattrEnabled;
}
+ return super.supportsFileAttributeView(type);
+ }
+ @Override
+ public boolean supportsFileAttributeView(String name) {
+ if (name.equals("dos"))
+ return supportsFileAttributeView(DosFileAttributeView.class);
+ if (name.equals("user"))
+ return supportsFileAttributeView(UserDefinedFileAttributeView.class);
return super.supportsFileAttributeView(name);
}
diff --git a/src/solaris/classes/sun/nio/fs/SolarisFileStore.java b/src/solaris/classes/sun/nio/fs/SolarisFileStore.java
index aaa7371..8cf2bbe 100644
--- a/src/solaris/classes/sun/nio/fs/SolarisFileStore.java
+++ b/src/solaris/classes/sun/nio/fs/SolarisFileStore.java
@@ -25,6 +25,7 @@
package sun.nio.fs;
+import java.nio.file.attribute.*;
import java.io.IOException;
import static sun.nio.fs.UnixNativeDispatcher.*;
@@ -72,27 +73,39 @@
}
@Override
- public boolean supportsFileAttributeView(String name) {
- if (name.equals("acl")) {
+ public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
+ if (type == AclFileAttributeView.class) {
// lookup fstypes.properties
FeatureStatus status = checkIfFeaturePresent("nfsv4acl");
- if (status == FeatureStatus.PRESENT)
- return true;
- if (status == FeatureStatus.NOT_PRESENT)
- return false;
- // AclFileAttributeView available on ZFS
- return (type().equals("zfs"));
+ switch (status) {
+ case PRESENT : return true;
+ case NOT_PRESENT : return false;
+ default :
+ // AclFileAttributeView available on ZFS
+ return (type().equals("zfs"));
+ }
}
- if (name.equals("user")) {
+ if (type == UserDefinedFileAttributeView.class) {
// lookup fstypes.properties
FeatureStatus status = checkIfFeaturePresent("xattr");
- if (status == FeatureStatus.PRESENT)
- return true;
- if (status == FeatureStatus.NOT_PRESENT)
- return false;
- return xattrEnabled;
+ switch (status) {
+ case PRESENT : return true;
+ case NOT_PRESENT : return false;
+ default :
+ // UserDefinedFileAttributeView available if extended
+ // attributes supported
+ return xattrEnabled;
+ }
}
+ return super.supportsFileAttributeView(type);
+ }
+ @Override
+ public boolean supportsFileAttributeView(String name) {
+ if (name.equals("acl"))
+ return supportsFileAttributeView(AclFileAttributeView.class);
+ if (name.equals("user"))
+ return supportsFileAttributeView(UserDefinedFileAttributeView.class);
return super.supportsFileAttributeView(name);
}
diff --git a/src/solaris/classes/sun/nio/fs/UnixFileStore.java b/src/solaris/classes/sun/nio/fs/UnixFileStore.java
index 0239764..f19b2f9 100644
--- a/src/solaris/classes/sun/nio/fs/UnixFileStore.java
+++ b/src/solaris/classes/sun/nio/fs/UnixFileStore.java
@@ -145,9 +145,8 @@
{
// lookup fstypes.properties
FeatureStatus status = checkIfFeaturePresent("posix");
- if (status == FeatureStatus.NOT_PRESENT)
- return false;
- return true;
+ // assume supported if UNKNOWN
+ return (status != FeatureStatus.NOT_PRESENT);
}
return false;
}
diff --git a/src/windows/classes/sun/nio/fs/WindowsFileStore.java b/src/windows/classes/sun/nio/fs/WindowsFileStore.java
index a906b54..5af14f1 100644
--- a/src/windows/classes/sun/nio/fs/WindowsFileStore.java
+++ b/src/windows/classes/sun/nio/fs/WindowsFileStore.java
@@ -153,7 +153,7 @@
public boolean supportsFileAttributeView(Class<? extends FileAttributeView> type) {
if (type == null)
throw new NullPointerException();
- if (type == BasicFileAttributeView.class)
+ if (type == BasicFileAttributeView.class || type == DosFileAttributeView.class)
return true;
if (type == AclFileAttributeView.class || type == FileOwnerAttributeView.class)
return ((volInfo.flags() & FILE_PERSISTENT_ACLS) != 0);
diff --git a/test/com/sun/jdi/BadHandshakeTest.java b/test/com/sun/jdi/BadHandshakeTest.java
index a0fba89..d5ecd0a 100644
--- a/test/com/sun/jdi/BadHandshakeTest.java
+++ b/test/com/sun/jdi/BadHandshakeTest.java
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 6306165
+ * @bug 6306165 6432567
* @summary Check that a bad handshake doesn't cause a debuggee to abort
*
* @build VMConnection BadHandshakeTest Exit0
diff --git a/test/java/nio/file/FileStore/Basic.java b/test/java/nio/file/FileStore/Basic.java
index 604795d..85e6b99 100644
--- a/test/java/nio/file/FileStore/Basic.java
+++ b/test/java/nio/file/FileStore/Basic.java
@@ -22,7 +22,7 @@
*/
/* @test
- * @bug 4313887
+ * @bug 4313887 6873621
* @summary Unit test for java.nio.file.FileStore
* @library ..
*/
@@ -67,6 +67,15 @@
* Test: File and FileStore attributes
*/
assertTrue(store1.supportsFileAttributeView("basic"));
+ assertTrue(store1.supportsFileAttributeView(BasicFileAttributeView.class));
+ assertTrue(store1.supportsFileAttributeView("posix") ==
+ store1.supportsFileAttributeView(PosixFileAttributeView.class));
+ assertTrue(store1.supportsFileAttributeView("dos") ==
+ store1.supportsFileAttributeView(DosFileAttributeView.class));
+ assertTrue(store1.supportsFileAttributeView("acl") ==
+ store1.supportsFileAttributeView(AclFileAttributeView.class));
+ assertTrue(store1.supportsFileAttributeView("user") ==
+ store1.supportsFileAttributeView(UserDefinedFileAttributeView.class));
/**
* Test: Enumerate all FileStores