/hg/icedtea7-forest/jdk: 2 new changesets
andrew at icedtea.classpath.org
andrew at icedtea.classpath.org
Fri Apr 3 15:53:06 UTC 2015
changeset a0983132193a in /hg/icedtea7-forest/jdk
details: http://icedtea.classpath.org/hg/icedtea7-forest/jdk?cmd=changeset;node=a0983132193a
author: andrew
date: Fri Apr 03 15:50:26 2015 +0100
PR2233, RH1190835: Discover gsettings symbols separately so early versions of GLib can be used (e.g. on RHEL 6)
changeset bf4c2a6c354d in /hg/icedtea7-forest/jdk
details: http://icedtea.classpath.org/hg/icedtea7-forest/jdk?cmd=changeset;node=bf4c2a6c354d
author: andrew
date: Fri Apr 03 16:52:05 2015 +0100
PR2236: ppc64le should report its os.arch as ppc64le so tools can detect it
Summary: Support ppc64le appearing as a separate architecture
diffstat:
make/common/Defs-linux.gmk | 13 +-
make/common/shared/Platform.gmk | 1 -
make/java/net/FILES_c.gmk | 2 +-
make/java/net/Makefile | 10 +-
make/java/nio/Makefile | 4 +
make/javax/sound/SoundDefs.gmk | 4 +
make/sun/xawt/Makefile | 4 +
src/share/native/com/sun/media/sound/SoundDefs.h | 1 +
src/solaris/bin/ppc64le/jvm.cfg | 33 ++++
src/solaris/native/common/deps/glib2/gio/gio_typedefs.h | 6 +-
src/solaris/native/common/deps/glib2/gio_fp.c | 114 ++++++++++++---
src/solaris/native/common/deps/glib2/gio_fp.h | 10 +-
src/solaris/native/common/deps/glib2/glib_fp.h | 27 +++-
src/solaris/native/sun/net/spi/DefaultProxySelector.c | 6 +-
src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c | 44 ++++-
src/solaris/native/sun/xawt/awt_Desktop.c | 5 +
16 files changed, 220 insertions(+), 64 deletions(-)
diffs (truncated from 540 to 500 lines):
diff -r 8e740701950b -r bf4c2a6c354d make/common/Defs-linux.gmk
--- a/make/common/Defs-linux.gmk Tue Feb 10 16:24:28 2015 +0000
+++ b/make/common/Defs-linux.gmk Fri Apr 03 16:52:05 2015 +0100
@@ -199,16 +199,9 @@
CFLAGS_REQUIRED_mips +=
CFLAGS_REQUIRED_mipsel += -D_LITTLE_ENDIAN
CFLAGS_REQUIRED_ppc += -m32 -fsigned-char -D_BIG_ENDIAN
-ifeq ($(ARCH),ppc64)
- ifeq ($(OPENJDK_TARGET_CPU_ENDIAN),big)
- CFLAGS_REQUIRED_ppc64 += -m64 -D_BIG_ENDIAN
- LDFLAGS_COMMON_ppc64 += -m64 -L/lib64 -Wl,-melf64ppc
- else ifeq ($(OPENJDK_TARGET_CPU_ENDIAN),little)
- CFLAGS_REQUIRED_ppc64 += -D_LITTLE_ENDIAN -DABI_ELFv2
- else
- $(error Expected big/little for ARCH=ppc64, got OPENJDK_TARGET_CPU_ENDIAN=$(OPENJDK_TARGET_CPU_ENDIAN))
- endif
-endif
+CFLAGS_REQUIRED_ppc64 += -m64 -D_BIG_ENDIAN
+LDFLAGS_COMMON_ppc64 += -m64 -L/lib64 -Wl,-melf64ppc
+CFLAGS_REQUIRED_ppc64le += -D_LITTLE_ENDIAN -DABI_ELFv2
CFLAGS_REQUIRED_s390 +=
CFLAGS_REQUIRED_s390x += -m64
CFLAGS_REQUIRED_sh += -mieee
diff -r 8e740701950b -r bf4c2a6c354d make/common/shared/Platform.gmk
--- a/make/common/shared/Platform.gmk Tue Feb 10 16:24:28 2015 +0000
+++ b/make/common/shared/Platform.gmk Fri Apr 03 16:52:05 2015 +0100
@@ -217,7 +217,6 @@
else ifeq ($(ARCH), ppc64le)
ARCH_DATA_MODEL=64
OPENJDK_TARGET_CPU_ENDIAN=little
- ARCH := ppc64
else
# Most archs are 32-bit
ifndef ARCH_DATA_MODEL
diff -r 8e740701950b -r bf4c2a6c354d make/java/net/FILES_c.gmk
--- a/make/java/net/FILES_c.gmk Tue Feb 10 16:24:28 2015 +0000
+++ b/make/java/net/FILES_c.gmk Fri Apr 03 16:52:05 2015 +0100
@@ -68,6 +68,6 @@
FILES_c += gconf_fp.c
endif
-ifneq ($(SYSTEM_GIO), true)
+ifneq ($(SYSTEM_GIO)$(SYSTEM_GSETTINGS), truetrue)
FILES_c += gio_fp.c
endif
diff -r 8e740701950b -r bf4c2a6c354d make/java/net/Makefile
--- a/make/java/net/Makefile Tue Feb 10 16:24:28 2015 +0000
+++ b/make/java/net/Makefile Fri Apr 03 16:52:05 2015 +0100
@@ -90,7 +90,7 @@
vpath %.c $(PLATFORM_SRC)/native/common/deps/gconf2
endif
-ifneq ($(SYSTEM_GIO), true)
+ifneq ($(SYSTEM_GIO)$(SYSTEM_GSETTINGS), truetrue)
vpath %.c $(PLATFORM_SRC)/native/common/deps/glib2
endif
@@ -101,6 +101,10 @@
include $(BUILDDIR)/common/Library.gmk
+ifeq ($(NATIVE_SUPPORT_DEBUG), true)
+ OTHER_CFLAGS += -DNATIVE_SUPPORT_DEBUG
+endif
+
ifeq ($(PLATFORM), macosx)
ifdef DONT_ENABLE_IPV6
OTHER_CFLAGS += -DDONT_ENABLE_IPV6
@@ -127,9 +131,9 @@
OTHER_LDLIBS += $(LIBDL)
endif
-ifeq ($(SYSTEM_GIO), true)
+ifeq ($(SYSTEM_GIO)$(SYSTEM_GSETTINGS), truetrue)
OTHER_LDLIBS += $(GIO_LIBS)
- CPPFLAGS += $(GIO_CFLAGS) -DUSE_SYSTEM_GIO
+ CPPFLAGS += $(GIO_CFLAGS) -DUSE_SYSTEM_GIO -DUSE_SYSTEM_GSETTINGS
else
CPPFLAGS += -I$(PLATFORM_SRC)/native/common/deps/glib2
OTHER_LDLIBS += $(LIBDL)
diff -r 8e740701950b -r bf4c2a6c354d make/java/nio/Makefile
--- a/make/java/nio/Makefile Tue Feb 10 16:24:28 2015 +0000
+++ b/make/java/nio/Makefile Fri Apr 03 16:52:05 2015 +0100
@@ -383,6 +383,10 @@
JAVALIB = # Don't self-link
+ifeq ($(NATIVE_SUPPORT_DEBUG), true)
+ OTHER_CFLAGS += -DNATIVE_SUPPORT_DEBUG
+endif
+
#
# Access to io_util.c and net_util.c
#
diff -r 8e740701950b -r bf4c2a6c354d make/javax/sound/SoundDefs.gmk
--- a/make/javax/sound/SoundDefs.gmk Tue Feb 10 16:24:28 2015 +0000
+++ b/make/javax/sound/SoundDefs.gmk Fri Apr 03 16:52:05 2015 +0100
@@ -110,6 +110,10 @@
CPPFLAGS += -DX_ARCH=X_PPC
endif # ARCH ppc64
+ ifeq ($(ARCH), ppc64le)
+ CPPFLAGS += -DX_ARCH=X_PPC64LE
+ endif # ARCH ppc64le
+
ifeq ($(ARCH), s390)
CPPFLAGS += -DX_ARCH=X_S390
endif # ARCH s390
diff -r 8e740701950b -r bf4c2a6c354d make/sun/xawt/Makefile
--- a/make/sun/xawt/Makefile Tue Feb 10 16:24:28 2015 +0000
+++ b/make/sun/xawt/Makefile Fri Apr 03 16:52:05 2015 +0100
@@ -215,6 +215,10 @@
endif
endif
+ifeq ($(NATIVE_SUPPORT_DEBUG), true)
+ OTHER_CFLAGS += -DNATIVE_SUPPORT_DEBUG
+endif
+
# We have some odd logic here because some Solaris 10 updates
# have a render.h file that suggests gradients are supported, but
# the Xrender.h doesn't have the corresponding type definitions.
diff -r 8e740701950b -r bf4c2a6c354d src/share/native/com/sun/media/sound/SoundDefs.h
--- a/src/share/native/com/sun/media/sound/SoundDefs.h Tue Feb 10 16:24:28 2015 +0000
+++ b/src/share/native/com/sun/media/sound/SoundDefs.h Fri Apr 03 16:52:05 2015 +0100
@@ -52,6 +52,7 @@
#define X_S390X 15
#define X_SH 16
#define X_AARCH64 17
+#define X_PPC64LE 18
// **********************************
// Make sure you set X_PLATFORM and X_ARCH defines correctly.
diff -r 8e740701950b -r bf4c2a6c354d src/solaris/bin/ppc64le/jvm.cfg
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/solaris/bin/ppc64le/jvm.cfg Fri Apr 03 16:52:05 2015 +0100
@@ -0,0 +1,33 @@
+# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# This code is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License version 2 only, as
+# published by the Free Software Foundation. Oracle designates this
+# particular file as subject to the "Classpath" exception as provided
+# by Oracle in the LICENSE file that accompanied this code.
+#
+# This code is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# version 2 for more details (a copy is included in the LICENSE file that
+# accompanied this code).
+#
+# You should have received a copy of the GNU General Public License version
+# 2 along with this work; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+# or visit www.oracle.com if you need additional information or have any
+# questions.
+#
+# List of JVMs that can be used as an option to java, javac, etc.
+# Order is important -- first in this list is the default JVM.
+# NOTE that this both this file and its format are UNSUPPORTED and
+# WILL GO AWAY in a future release.
+#
+# You may also select a JVM in an arbitrary location with the
+# "-XXaltjvm=<jvm_dir>" option, but that too is unsupported
+# and may not be available in a future release.
+#
+-server KNOWN
diff -r 8e740701950b -r bf4c2a6c354d src/solaris/native/common/deps/glib2/gio/gio_typedefs.h
--- a/src/solaris/native/common/deps/glib2/gio/gio_typedefs.h Tue Feb 10 16:24:28 2015 +0000
+++ b/src/solaris/native/common/deps/glib2/gio/gio_typedefs.h Fri Apr 03 16:52:05 2015 +0100
@@ -30,14 +30,9 @@
#define G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "standard::content-type"
-typedef void* gpointer;
-typedef int gint;
-typedef gint gboolean;
-typedef char gchar;
typedef struct _GFile GFile;
typedef struct _GFileInfo GFileInfo;
typedef struct _GCancellable GCancellable;
-typedef struct _GError GError;
typedef struct _GAppLaunchContext GAppLaunchContext;
typedef struct _GSettings GSettings;
@@ -61,5 +56,6 @@
typedef gint (*settings_get_int_func) (GSettings *settings, const gchar *key);
typedef GSettings* (*settings_get_child_func) (GSettings *settings, const gchar *name);
typedef void (*strfreev_func) (gchar **str_array);
+typedef void (*error_free_func) (GError *error);
#endif
diff -r 8e740701950b -r bf4c2a6c354d src/solaris/native/common/deps/glib2/gio_fp.c
--- a/src/solaris/native/common/deps/glib2/gio_fp.c Tue Feb 10 16:24:28 2015 +0000
+++ b/src/solaris/native/common/deps/glib2/gio_fp.c Fri Apr 03 16:52:05 2015 +0100
@@ -34,29 +34,47 @@
file_query_info_func file_query_info;
file_info_get_content_type_func file_info_get_content_type;
app_info_launch_default_for_uri_func app_info_launch_default_for_uri;
+strfreev_func gstrfreev;
+free_func gfree;
+error_free_func gerror_free;
+
settings_new_func settings_new;
settings_get_boolean_func settings_get_boolean;
settings_get_string_func settings_get_string;
settings_get_strv_func settings_get_strv;
settings_get_int_func settings_get_int;
settings_get_child_func settings_get_child;
-strfreev_func gstrfreev;
-free_func gfree;
+
+static void* gio_handle = NULL;
jboolean gio_init()
{
- void* gio_handle;
- gio_handle = dlopen("libgio-2.0.so", RTLD_LAZY);
if (gio_handle == NULL) {
- gio_handle = dlopen("libgio-2.0.so.0", RTLD_LAZY);
+ gio_handle = dlopen("libgio-2.0.so", RTLD_LAZY);
if (gio_handle == NULL) {
- return JNI_FALSE;
+ gio_handle = dlopen("libgio-2.0.so.0", RTLD_LAZY);
+ if (gio_handle == NULL) {
+ return JNI_FALSE;
+ }
}
}
+ if (type_init != NULL &&
+ object_unref != NULL &&
+ file_new_for_path != NULL &&
+ file_query_info != NULL &&
+ file_info_get_content_type != NULL &&
+ app_info_launch_default_for_uri != NULL &&
+ gstrfreev != NULL &&
+ gfree != NULL &&
+ gerror_free != NULL)
+ {
+ NATDEBUG("gio_init returning early true\n")
+ return JNI_TRUE;
+ }
+
type_init = (type_init_func)dlsym(gio_handle, "g_type_init");
- (*g_type_init)();
object_unref = (object_unref_func)dlsym(gio_handle, "g_object_unref");
@@ -70,7 +88,54 @@
dlsym(gio_handle, "g_file_info_get_content_type");
app_info_launch_default_for_uri = (app_info_launch_default_for_uri_func)
- dlsym (gio_handle, "g_app_info_launch_default_for_uri");
+ dlsym (gio_handle, "g_app_info_launch_default_for_uri");
+
+ gstrfreev = (strfreev_func) dlsym (gio_handle, "g_strfreev");
+ gfree = (free_func) dlsym (gio_handle, "g_free");
+ gerror_free = (error_free_func) dlsym (gio_handle, "g_error_free");
+
+#ifdef NATIVE_SUPPORT_DEBUG
+ printf("type_init=%p, object_unref=%p, file_new_for_path=%p,"
+ "file_query_info=%p, file_info_get_content_type=%p,"
+ "app_info_launch_default_for_uri=%p,gstrfreev=%p,"
+ "gfree=%p, gerror_free=%p\n", type_init, object_unref,
+ file_new_for_path, file_query_info, file_info_get_content_type,
+ app_info_launch_default_for_uri, gstrfreev, gfree, gerror_free);
+#endif
+
+ if (type_init == NULL ||
+ object_unref == NULL ||
+ file_new_for_path == NULL ||
+ file_query_info == NULL ||
+ file_info_get_content_type == NULL ||
+ app_info_launch_default_for_uri == NULL ||
+ gstrfreev == NULL ||
+ gfree == NULL ||
+ gerror_free == NULL)
+ {
+ dlclose(gio_handle);
+ NATDEBUG("gio_init returning false\n")
+ return JNI_FALSE;
+ }
+
+ NATDEBUG("gio_init returning true\n")
+ return JNI_TRUE;
+}
+
+jboolean gsettings_init()
+{
+ gio_init();
+
+ if (settings_new != NULL &&
+ settings_get_boolean != NULL &&
+ settings_get_string != NULL &&
+ settings_get_strv != NULL &&
+ settings_get_int != NULL &&
+ settings_get_child != NULL)
+ {
+ NATDEBUG("gsettings_init returning early true\n")
+ return JNI_TRUE;
+ }
settings_new = (settings_new_func) dlsym (gio_handle, "g_settings_new");
settings_get_boolean = (settings_get_boolean_func)
@@ -83,27 +148,28 @@
dlsym (gio_handle, "g_settings_get_int");
settings_get_child = (settings_get_child_func)
dlsym (gio_handle, "g_settings_get_child");
- gstrfreev = (strfreev_func) dlsym (gio_handle, "g_strfreev");
- gfree = (free_func) dlsym (gio_handle, "g_free");
- if (type_init == NULL ||
- object_unref == NULL ||
- file_new_for_path == NULL ||
- file_query_info == NULL ||
- file_info_get_content_type == NULL ||
- app_info_launch_default_for_uri == NULL ||
- settings_new == NULL ||
- settings_get_boolean == NULL ||
- settings_get_string == NULL ||
- settings_get_strv == NULL ||
- settings_get_int == NULL ||
- settings_get_child == NULL ||
- gstrfreev == NULL ||
- gfree == NULL)
+#ifdef NATIVE_SUPPORT_DEBUG
+ printf("settings_new=%p, settings_get_boolean=%p,"
+ "settings_get_string=%p, settings_get_strv=%p,"
+ "settings_get_int=%p, settings_get_child=%p\n",
+ settings_new, settings_get_boolean,
+ settings_get_string, settings_get_strv,
+ settings_get_int, settings_get_child);
+#endif
+
+ if (settings_new == NULL ||
+ settings_get_boolean == NULL ||
+ settings_get_string == NULL ||
+ settings_get_strv == NULL ||
+ settings_get_int == NULL ||
+ settings_get_child == NULL)
{
dlclose(gio_handle);
+ NATDEBUG("g_settings_init returning false\n")
return JNI_FALSE;
}
+ NATDEBUG("g_settings_init returning true\n")
return JNI_TRUE;
}
diff -r 8e740701950b -r bf4c2a6c354d src/solaris/native/common/deps/glib2/gio_fp.h
--- a/src/solaris/native/common/deps/glib2/gio_fp.h Tue Feb 10 16:24:28 2015 +0000
+++ b/src/solaris/native/common/deps/glib2/gio_fp.h Fri Apr 03 16:52:05 2015 +0100
@@ -26,9 +26,14 @@
#ifndef __GIO_FP_H__
#define __GIO_FP_H__
+#include <glib_fp.h>
#include <gio/gio_typedefs.h>
-#include <glib_fp.h>
+#ifdef NATIVE_SUPPORT_DEBUG
+#define NATDEBUG(x) printf(x);
+#else
+#define NATDEBUG(x)
+#endif
extern object_unref_func object_unref;
extern file_new_for_path_func file_new_for_path;
@@ -42,9 +47,11 @@
extern settings_get_int_func settings_get_int;
extern settings_get_child_func settings_get_child;
extern strfreev_func gstrfreev;
+extern error_free_func gerror_free;
#define g_object_unref (*object_unref)
#define g_strfreev (*gstrfreev)
+#define g_error_free (*gerror_free);
#define g_file_new_for_path (*file_new_for_path)
#define g_file_query_info (*file_query_info)
#define g_file_info_get_content_type (*file_info_get_content_type)
@@ -57,5 +64,6 @@
#define g_settings_get_child (*settings_get_child)
jboolean gio_init();
+jboolean gsettings_init();
#endif
diff -r 8e740701950b -r bf4c2a6c354d src/solaris/native/common/deps/glib2/glib_fp.h
--- a/src/solaris/native/common/deps/glib2/glib_fp.h Tue Feb 10 16:24:28 2015 +0000
+++ b/src/solaris/native/common/deps/glib2/glib_fp.h Fri Apr 03 16:52:05 2015 +0100
@@ -27,15 +27,32 @@
#ifndef __GLIB_FP_H__
#define __GLIB_FP_H__
+#if !defined (USE_SYSTEM_GIO) && !defined (USE_SYSTEM_GCONF)
+
+#include <stdint.h>
+
+typedef void* gpointer;
+typedef int gint;
+typedef gint gboolean;
+typedef char gchar;
+typedef uint32_t guint32;
+typedef guint32 GQuark;
+
+typedef struct {
+ GQuark domain;
+ gint code;
+ gchar *message;
+} GError;
+
+#define g_type_init (*type_init)
+#define g_free (*gfree)
+
+#endif
+
typedef void (*type_init_func)(void);
typedef void (*free_func) (void* mem);
extern type_init_func type_init;
extern free_func gfree;
-#ifndef USE_SYSTEM_GIO
-#define g_type_init (*type_init)
-#define g_free (*gfree)
-#endif
-
#endif /* __GLIB_FP_H__ */
diff -r 8e740701950b -r bf4c2a6c354d src/solaris/native/sun/net/spi/DefaultProxySelector.c
--- a/src/solaris/native/sun/net/spi/DefaultProxySelector.c Tue Feb 10 16:24:28 2015 +0000
+++ b/src/solaris/native/sun/net/spi/DefaultProxySelector.c Fri Apr 03 16:52:05 2015 +0100
@@ -37,7 +37,7 @@
#include <gconf/gconf-client.h>
-#ifdef USE_SYSTEM_GIO
+#ifdef USE_SYSTEM_GSETTINGS
#include <gio/gio.h>
#else
#include <gio_fp.h>
@@ -103,11 +103,11 @@
ptype_socksID = (*env)->GetStaticFieldID(env, ptype_class, "SOCKS", "Ljava/net/Proxy$Type;");
isaddr_createUnresolvedID = (*env)->GetStaticMethodID(env, isaddr_class, "createUnresolved", "(Ljava/lang/String;I)Ljava/net/InetSocketAddress;");
-#ifdef USE_SYSTEM_GIO
+#ifdef USE_SYSTEM_GSETTINGS
use_gio = JNI_TRUE;
g_type_init ();
#else
- use_gio = gio_init();
+ use_gio = gsettings_init();
#endif
if (use_gio == JNI_TRUE) {
diff -r 8e740701950b -r bf4c2a6c354d src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c
--- a/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c Tue Feb 10 16:24:28 2015 +0000
+++ b/src/solaris/native/sun/nio/fs/GnomeFileTypeDetector.c Fri Apr 03 16:52:05 2015 +0100
@@ -68,6 +68,11 @@
ret = gio_init();
#endif
+#ifdef NATIVE_SUPPORT_DEBUG
+ printf("initializeGio: gio_init returned %s\n",
+ ret == JNI_FALSE ? "false" : "true");
+#endif
+
// If there was an error initializing GIO, return false immediately
if (ret == JNI_FALSE)
{
@@ -85,22 +90,39 @@
char* path = (char*)jlong_to_ptr(pathAddress);
GFile* gfile;
GFileInfo* gfileinfo;
+ GError *error = NULL;
jbyteArray result = NULL;
gfile = g_file_new_for_path (path);
gfileinfo = g_file_query_info (gfile, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
- G_FILE_QUERY_INFO_NONE, NULL, NULL);
- if (gfileinfo != NULL) {
- const char* mime = g_file_info_get_content_type (gfileinfo);
- if (mime != NULL) {
- jsize len = strlen(mime);
- result = (*env)->NewByteArray(env, len);
- if (result != NULL) {
- (*env)->SetByteArrayRegion(env, result, 0, len, (jbyte*)mime);
- }
- }
- g_object_unref (gfileinfo);
+ G_FILE_QUERY_INFO_NONE, NULL, &error);
+
+#ifdef NATIVE_SUPPORT_DEBUG
+ printf("gfile=%p, gfileinfo=%p\n", gfile, gfileinfo);
+#endif
+
More information about the distro-pkg-dev
mailing list