Path: blob/buildjre8/patches/jdk8u_ios.diff
861 views
diff --git a/common/autoconf/build-aux/config.sub b/common/autoconf/build-aux/config.sub1index a665b00f..eed57c77 1006442--- a/common/autoconf/build-aux/config.sub3+++ b/common/autoconf/build-aux/config.sub4@@ -35,7 +35,8 @@ if echo $* | grep linux-musl >/dev/null ; then5fi67# First, filter out everything that doesn't begin with "aarch64-"8-if ! echo $* | grep '^aarch64-' >/dev/null ; then9+# or the mobile platforms (ios and android)10+if ! echo $* | egrep "^aarch64-|-ios" >/dev/null ; then11. $DIR/autoconf-config.sub "$@"12# autoconf-config.sub exits, so we never reach here, but just in13# case we do:14@@ -43,9 +44,13 @@ if ! echo $* | grep '^aarch64-' >/dev/null ; then15fi1617while test $# -gt 0 ; do18- case $1 in19+ case $1 in20-- ) # Stop option processing21shift; break ;;22+ *-ios* )23+ echo $124+ exit25+ ;;26aarch64-* )27config=`echo $1 | sed 's/^aarch64-/arm-/'`28sub_args="$sub_args $config"29diff --git a/common/autoconf/flags.m4 b/common/autoconf/flags.m430index e2e0c5a6..c5493ebe 10064431--- a/common/autoconf/flags.m432+++ b/common/autoconf/flags.m433@@ -729,8 +729,8 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],34# The macro takes the version with no dots, ex: 107035# Let the flags variables get resolved in make for easier override on make36# command line.37- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"38- LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"39+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"40+ LDFLAGS_JDK="$LDFLAGS_JDK -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"41elif test "x$TOOLCHAIN_TYPE" = xclang; then42# FIXME: This needs to be exported in spec.gmk due to closed legacy code.43# FIXME: clean this up, and/or move it elsewhere.44@@ -750,8 +750,8 @@ AC_DEFUN_ONCE([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK],45# The macro takes the version with no dots, ex: 107046# Let the flags variables get resolved in make for easier override on make47# command line.48- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"49- LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"50+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"51+ LDFLAGS_JDK="$LDFLAGS_JDK -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"52fi53fi5455diff --git a/common/autoconf/generated-configure.sh b/common/autoconf/generated-configure.sh56index a6973629..3365acaa 10064457--- a/common/autoconf/generated-configure.sh58+++ b/common/autoconf/generated-configure.sh59@@ -15651,7 +15651,7 @@ printf "%s\n" "$COMPILE_TYPE" >&6; }60OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"61fi62elif test "x$OPENJDK_TARGET_OS" = xmacosx && test "x$TOOLCHAIN_TYPE" = xclang ; then63- OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -stdlib=libc++ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"64+ OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -stdlib=libc++ -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"65fi666768@@ -15679,7 +15679,7 @@ printf "%s\n" "$COMPILE_TYPE" >&6; }69ADD_LP64="-D_LP64=1"70fi71elif test "x$OPENJDK_TARGET_OS" = xmacosx && test "x$TOOLCHAIN_TYPE" = xclang ; then72- OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"73+ OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"74fi75LP64=$A_LP647677@@ -45706,8 +45706,8 @@ printf "%s\n" "$supports" >&6; }78# The macro takes the version with no dots, ex: 107079# Let the flags variables get resolved in make for easier override on make80# command line.81- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"82- LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"83+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"84+ LDFLAGS_JDK="$LDFLAGS_JDK -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"85elif test "x$TOOLCHAIN_TYPE" = xclang; then86# FIXME: This needs to be exported in spec.gmk due to closed legacy code.87# FIXME: clean this up, and/or move it elsewhere.88@@ -45727,8 +45727,8 @@ printf "%s\n" "$supports" >&6; }89# The macro takes the version with no dots, ex: 107090# Let the flags variables get resolved in make for easier override on make91# command line.92- CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"93- LDFLAGS_JDK="$LDFLAGS_JDK -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"94+ CCXXFLAGS_JDK="$CCXXFLAGS_JDK -DMAC_OS_X_VERSION_MIN_REQUIRED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -DMAC_OS_X_VERSION_MAX_ALLOWED=\$(subst .,,\$(MACOSX_VERSION_MIN)) -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"95+ LDFLAGS_JDK="$LDFLAGS_JDK -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"96fi97fi9899diff --git a/common/autoconf/platform.m4 b/common/autoconf/platform.m4100index 2cf39678..cf8e880a 100644101--- a/common/autoconf/platform.m4102+++ b/common/autoconf/platform.m4103@@ -388,7 +388,7 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],104OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -DLIBARCH32NAME='\"i386\"' -DLIBARCH64NAME='\"amd64\"'"105fi106elif test "x$OPENJDK_TARGET_OS" = xmacosx && test "x$TOOLCHAIN_TYPE" = xclang ; then107- OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -stdlib=libc++ -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"108+ OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -stdlib=libc++ -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"109fi110AC_SUBST(OPENJDK_TARGET_CPU_JLI_CFLAGS)111112@@ -416,7 +416,7 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS],113ADD_LP64="-D_LP64=1"114fi115elif test "x$OPENJDK_TARGET_OS" = xmacosx && test "x$TOOLCHAIN_TYPE" = xclang ; then116- OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -mmacosx-version-min=\$(MACOSX_VERSION_MIN)"117+ OPENJDK_TARGET_CPU_JLI_CFLAGS="$OPENJDK_TARGET_CPU_JLI_CFLAGS -miphoneos-version-min=\$(MACOSX_VERSION_MIN)"118fi119AC_SUBST(LP64,$A_LP64)120121diff --git a/hotspot/agent/src/os/bsd/BsdDebuggerLocal.c b/hotspot/agent/src/os/bsd/BsdDebuggerLocal.c122index 85b07f76..75bdc756 100644123--- a/hotspot/agent/src/os/bsd/BsdDebuggerLocal.c124+++ b/hotspot/agent/src/os/bsd/BsdDebuggerLocal.c125@@ -38,6 +38,10 @@126#include "sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext.h"127#endif128129+#ifdef aarch64130+#include "sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext.h"131+#endif132+133#if defined(sparc) || defined(sparcv9)134#include "sun_jvm_hotspot_debugger_sparc_SPARCThreadContext.h"135#endif136@@ -304,6 +308,9 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_137#ifdef amd64138#define NPRGREG sun_jvm_hotspot_debugger_amd64_AMD64ThreadContext_NPRGREG139#endif140+#ifdef aarch64141+#define NPRGREG sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext_NPRGREG142+#endif143#if defined(sparc) || defined(sparcv9)144#define NPRGREG sun_jvm_hotspot_debugger_sparc_SPARCThreadContext_NPRGREG145#endif146@@ -407,6 +414,16 @@ JNIEXPORT jlongArray JNICALL Java_sun_jvm_hotspot_debugger_bsd_BsdDebuggerLocal_147regs[REG_INDEX(R_O7)] = gregs.u_regs[14];148#endif /* sparc */149150+#if defined(aarch64)151+#define REG_INDEX(reg) sun_jvm_hotspot_debugger_aarch64_AARCH64ThreadContext_##reg152+ {153+ int i;154+ for (i = 0; i < 31; i++)155+ regs[i] = gregs.x[i];156+ regs[REG_INDEX(SP)] = gregs.sp;157+ regs[REG_INDEX(PC)] = gregs.elr;158+ }159+#endif /* aarch64 */160161(*env)->ReleaseLongArrayElements(env, array, regs, JNI_COMMIT);162return array;163diff --git a/hotspot/agent/src/os/bsd/Makefile b/hotspot/agent/src/os/bsd/Makefile164index af22b597..4de4565b 100644165--- a/hotspot/agent/src/os/bsd/Makefile166+++ b/hotspot/agent/src/os/bsd/Makefile167@@ -51,7 +51,7 @@ SOURCES = symtab.c \168OBJS = $(SOURCES:.c=.o)169OBJSPLUS = MacosxDebuggerLocal.o sadis.o $(OBJS)170EXTINCLUDE = -I.171-EXTCFLAGS = -m64 -D__APPLE__ -framework JavaNativeFoundation172+EXTCFLAGS = -m64 -D__APPLE__173FOUNDATIONFLAGS = -framework Foundation -framework JavaNativeFoundation -framework Security -framework CoreFoundation174LIBSA = $(ARCH)/libsaproc.dylib175endif # Darwin176@@ -70,7 +70,8 @@ MacosxDebuggerLocal.o: MacosxDebuggerLocal.m177echo "OS="$(OS)178$(JAVAH) -jni -classpath ../../../build/classes \179sun.jvm.hotspot.debugger.x86.X86ThreadContext \180- sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext181+ sun.jvm.hotspot.debugger.amd64.AMD64ThreadContext \182+ sun.jvm.hotspot.debugger.aarch64.AARCH64ThreadContext183$(GCC) $(CFLAGS) $(FOUNDATIONFLAGS) $<184185sadis.o: ../../share/native/sadis.c186diff --git a/hotspot/agent/src/os/bsd/libproc_impl.h b/hotspot/agent/src/os/bsd/libproc_impl.h187index 0d3fd166..916a2fff 100644188--- a/hotspot/agent/src/os/bsd/libproc_impl.h189+++ b/hotspot/agent/src/os/bsd/libproc_impl.h190@@ -1,5 +1,6 @@191/*192- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.193+ * Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved.194+ * Copyright (c) 2021, Azul Systems, Inc. All rights reserved.195* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.196*197* This code is free software; you can redistribute it and/or modify it198@@ -30,6 +31,16 @@199#include "libproc.h"200#include "symtab.h"201202+#define UNSUPPORTED_ARCH "Unsupported architecture!"203+204+#if defined(__x86_64__) && !defined(amd64)205+#define amd64 1206+#endif207+208+#if defined(__arm64__) && !defined(aarch64)209+#define aarch64 1210+#endif211+212#ifdef __APPLE__213#include <inttypes.h> // for PRIx64, 32, ...214#include <pthread.h>215diff --git a/hotspot/agent/src/os/bsd/ps_core.c b/hotspot/agent/src/os/bsd/ps_core.c216index 8fc6adb3..8b5369a8 100644217--- a/hotspot/agent/src/os/bsd/ps_core.c218+++ b/hotspot/agent/src/os/bsd/ps_core.c219@@ -22,6 +22,7 @@220*221*/222223+#include <inttypes.h> // for PRIx64, 32, ...224#include <jni.h>225#include <unistd.h>226#include <fcntl.h>227@@ -1160,6 +1161,42 @@ static bool core_handle_prstatus(struct ps_prochandle* ph, const char* buf, size228//print_debug("\tfs = 0x%lx\n", newthr->regs.fs);229//print_debug("\tgs = 0x%lx\n", newthr->regs.gs);230#endif231+232+#ifdef aarch64233+ print_debug("\tr0 = 0x%lx\n", newthr->regs.r_r0);234+ print_debug("\tr1 = 0x%lx\n", newthr->regs.r_r1);235+ print_debug("\tr2 = 0x%lx\n", newthr->regs.r_r2);236+ print_debug("\tr3 = 0x%lx\n", newthr->regs.r_r3);237+ print_debug("\tr4 = 0x%lx\n", newthr->regs.r_r4);238+ print_debug("\tr5 = 0x%lx\n", newthr->regs.r_r5);239+ print_debug("\tr6 = 0x%lx\n", newthr->regs.r_r6);240+ print_debug("\tr7 = 0x%lx\n", newthr->regs.r_r7);241+ print_debug("\tr8 = 0x%lx\n", newthr->regs.r_r8);242+ print_debug("\tr9 = 0x%lx\n", newthr->regs.r_r9);243+ print_debug("\tr10 = 0x%lx\n", newthr->regs.r_r10);244+ print_debug("\tr11 = 0x%lx\n", newthr->regs.r_r11);245+ print_debug("\tr12 = 0x%lx\n", newthr->regs.r_r12);246+ print_debug("\tr13 = 0x%lx\n", newthr->regs.r_r13);247+ print_debug("\tr14 = 0x%lx\n", newthr->regs.r_r14);248+ print_debug("\tr15 = 0x%lx\n", newthr->regs.r_r15);249+ print_debug("\tr16 = 0x%lx\n", newthr->regs.r_r16);250+ print_debug("\tr17 = 0x%lx\n", newthr->regs.r_r17);251+ print_debug("\tr18 = 0x%lx\n", newthr->regs.r_r18);252+ print_debug("\tr19 = 0x%lx\n", newthr->regs.r_r19);253+ print_debug("\tr20 = 0x%lx\n", newthr->regs.r_r20);254+ print_debug("\tr21 = 0x%lx\n", newthr->regs.r_r21);255+ print_debug("\tr22 = 0x%lx\n", newthr->regs.r_r22);256+ print_debug("\tr23 = 0x%lx\n", newthr->regs.r_r23);257+ print_debug("\tr24 = 0x%lx\n", newthr->regs.r_r24);258+ print_debug("\tr25 = 0x%lx\n", newthr->regs.r_r25);259+ print_debug("\tr26 = 0x%lx\n", newthr->regs.r_r26);260+ print_debug("\tr27 = 0x%lx\n", newthr->regs.r_r27);261+ print_debug("\tr28 = 0x%lx\n", newthr->regs.r_r28);262+ print_debug("\tfp = 0x%lx\n", newthr->regs.r_fp);263+ print_debug("\tlr = 0x%lx\n", newthr->regs.r_lr);264+ print_debug("\tsp = 0x%lx\n", newthr->regs.r_sp);265+ print_debug("\tpc = 0x%lx\n", newthr->regs.r_pc);266+#endif267}268269return true;270diff --git a/hotspot/make/bsd/makefiles/gcc.make b/hotspot/make/bsd/makefiles/gcc.make271index b45dd47a..fd94ee45 100644272--- a/hotspot/make/bsd/makefiles/gcc.make273+++ b/hotspot/make/bsd/makefiles/gcc.make274@@ -248,7 +248,8 @@ endif275276# Compiler warnings are treated as errors277ifneq ($(COMPILER_WARNINGS_FATAL),false)278- WARNINGS_ARE_ERRORS = -Werror279+ # WARNINGS_ARE_ERRORS = -Werror280+ WARNINGS_ARE_ERRORS = -Werror=implicit-function-declaration281endif282283ifeq ($(USE_CLANG), true)284@@ -318,7 +319,7 @@ ifeq ($(USE_CLANG), true)285# Known to fail with clang <= 7.0;286# do no optimize these on later clang until verified287OPT_CFLAGS/loopTransform.o += $(OPT_CFLAGS/NOOPT)288- OPT_CFLAGS/unsafe.o += -O1289+ OPT_CFLAGS/unsafe.o += $(OPT_CFLAGS/NOOPT)290else291# 6835796. Problem in GCC 4.3.0 with mulnode.o optimized compilation.292ifeq ($(shell expr $(CC_VER_MAJOR) = 4 \& $(CC_VER_MINOR) = 3), 1)293@@ -348,10 +349,17 @@ ifeq ($(OS_VENDOR), Darwin)294MACOSX_VERSION_MIN=10.7.0295endif296# The macro takes the version with no dots, ex: 1070297- CFLAGS += -DMAC_OS_X_VERSION_MIN_REQUIRED=$(subst .,,$(MACOSX_VERSION_MIN)) \298+ CFLAGS_TMP = -DMAC_OS_X_VERSION_MIN_REQUIRED=$(subst .,,$(MACOSX_VERSION_MIN)) \299-DMAC_OS_X_VERSION_MAX_ALLOWED=$(subst .,,$(MACOSX_VERSION_MIN)) \300- -mmacosx-version-min=$(MACOSX_VERSION_MIN)301- LFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN)302+ -miphoneos-version-min=$(MACOSX_VERSION_MIN)303+ LFLAGS_TMP = -miphoneos-version-min=$(MACOSX_VERSION_MIN)304+ ifdef CROSS_COMPILE_ARCH305+ HOSTCC += $(CFLAGS_TMP)306+ HOSTCXX += $(CFLAGS_TMP)307+ else308+ CFLAGS += $(CFLAGS_TMP)309+ LFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN)310+ endif311endif312313314diff --git a/hotspot/make/bsd/makefiles/rules.make b/hotspot/make/bsd/makefiles/rules.make315index 31c2e094..dfb1b228 100644316--- a/hotspot/make/bsd/makefiles/rules.make317+++ b/hotspot/make/bsd/makefiles/rules.make318@@ -52,6 +52,8 @@ PREPROCESS.CXX = $(CXX_COMPILE) -E319# cross compiling the jvm with c2 requires host compilers to build320# adlc tool321322+# iOS build hack323+HOSTCXX := ${thehostcxx}324HOST.CXX_COMPILE = $(HOSTCXX) $(CXXFLAGS) $(CFLAGS)325HOST.COMPILE.CXX = $(HOST.CXX_COMPILE) -c326HOST.LINK_NOPROF.CXX = $(HOSTCXX) $(LFLAGS) $(AOUT_FLAGS)327diff --git a/hotspot/make/bsd/makefiles/saproc.make b/hotspot/make/bsd/makefiles/saproc.make328index 5c837895..284cb2eb 100644329--- a/hotspot/make/bsd/makefiles/saproc.make330+++ b/hotspot/make/bsd/makefiles/saproc.make331@@ -66,7 +66,6 @@ else332SASRCFILES = $(DARWIN_NON_STUB_SASRCFILES)333SALIBS = -g \334-framework Foundation \335- -framework JavaNativeFoundation \336-framework Security \337-framework CoreFoundation338#objc compiler blows up on -march=i586, perhaps it should not be included in the macosx intel 32-bit C++ compiles?339diff --git a/hotspot/src/cpu/aarch64/vm/icache_aarch64.hpp b/hotspot/src/cpu/aarch64/vm/icache_aarch64.hpp340index 9479eaea..249915d8 100644341--- a/hotspot/src/cpu/aarch64/vm/icache_aarch64.hpp342+++ b/hotspot/src/cpu/aarch64/vm/icache_aarch64.hpp343@@ -27,6 +27,13 @@344#ifndef CPU_AARCH64_VM_ICACHE_AARCH64_HPP345#define CPU_AARCH64_VM_ICACHE_AARCH64_HPP346347+#ifdef __APPLE__348+#include <libkern/OSCacheControl.h>349+350+#define __clear_cache(start, end) \351+ sys_icache_invalidate(start, (char*)end - (char*)start);352+#endif353+354// Interface for updating the instruction cache. Whenever the VM355// modifies code, part of the processor instruction cache potentially356// has to be flushed.357diff --git a/hotspot/src/os/bsd/vm/os_bsd.cpp b/hotspot/src/os/bsd/vm/os_bsd.cpp358index bc8fccbd..522ea6a4 100644359--- a/hotspot/src/os/bsd/vm/os_bsd.cpp360+++ b/hotspot/src/os/bsd/vm/os_bsd.cpp361@@ -952,6 +952,14 @@ extern "C" Thread* get_thread() {362return ThreadLocalStorage::thread();363}364365+//////////////////////////////////////////////////////////////////////////////366+// primordial thread367+368+// Check if current thread is the primordial thread, similar to Solaris thr_main.369+bool os::is_primordial_thread(void) {370+ return pthread_main_np();371+}372+373374////////////////////////////////////////////////////////////////////////////////375// time support376@@ -2208,7 +2216,7 @@ static void warn_fail_commit_memory(char* addr, size_t size, bool exec,377// left at the time of mmap(). This could be a potential378// problem.379bool os::pd_commit_memory(char* addr, size_t size, bool exec) {380- int prot = exec ? PROT_READ|PROT_WRITE|PROT_EXEC : PROT_READ|PROT_WRITE;381+ int prot = /* exec ? PROT_READ|PROT_WRITE|PROT_EXEC : */ PROT_READ|PROT_WRITE;382#if defined( __OpenBSD__)383// XXX: Work-around mmap/MAP_FIXED bug temporarily on OpenBSD384if (::mprotect(addr, size, prot) == 0) {385@@ -2341,12 +2349,14 @@ static char* anon_mmap(char* requested_addr, size_t bytes, bool fixed, bool exec386int flags;387388flags = MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS;389+/*390#ifdef __APPLE__391if (executable) {392guarantee(!fixed, "MAP_JIT (for execute) is incompatible with MAP_FIXED");393flags |= MAP_JIT;394}395#endif396+*/397if (fixed) {398assert((uintptr_t)requested_addr % os::Bsd::page_size() == 0, "unaligned address");399flags |= MAP_FIXED;400@@ -2413,6 +2423,7 @@ bool os::protect_memory(char* addr, size_t bytes, ProtType prot,401case MEM_PROT_READ: p = PROT_READ; break;402case MEM_PROT_RW: p = PROT_READ|PROT_WRITE; break;403case MEM_PROT_RWX: p = PROT_READ|PROT_WRITE|PROT_EXEC; break;404+ case MEM_PROT_RX: p = PROT_READ|PROT_EXEC; break;405default:406ShouldNotReachHere();407}408diff --git a/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.cpp b/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.cpp409index 25919960..2b221c63 100644410--- a/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.cpp411+++ b/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.cpp412@@ -211,6 +211,30 @@ JVM_handle_bsd_signal(int sig,413int abort_if_unrecognized) {414ucontext_t* uc = (ucontext_t*) ucVoid;415416+ if (sig == SIGBUS) {417+ address addr = os::Bsd::ucontext_get_pc(uc);418+ //address addr = (address) info->si_addr;419+ //if (addr >= os::GLOBAL_CODE_CACHE_ADDR && addr < os::GLOBAL_CODE_CACHE_ADDR + 0x270000) {420+ // return !mprotect(os::GLOBAL_CODE_CACHE_ADDR, 0x270000, PROT_READ | PROT_EXEC);421+ //} else if (addr >= os::GLOBAL_CODE_CACHE_ADDR + 0x270000 && addr < os::GLOBAL_CODE_CACHE_ADDR + 0x270000*2) {422+ // return !mprotect(os::GLOBAL_CODE_CACHE_ADDR + 0x270000, 0x270000, PROT_READ | PROT_EXEC);423+ if (addr >= os::GLOBAL_CODE_CACHE_ADDR && addr < os::GLOBAL_CODE_CACHE_ADDR + os::GLOBAL_CODE_CACHE_SIZE && addr == info->si_addr) {424+ return !mprotect((address) ((uintptr_t)addr & -PAGE_SIZE), PAGE_SIZE, PROT_READ | PROT_EXEC);425+ } else { // if (t->is_Compiler_thread() || t->is_VM_thread()) {426+ return !mprotect((address) ((uintptr_t)info->si_addr & -PAGE_SIZE), PAGE_SIZE, PROT_READ | PROT_WRITE);427+ }428+ }429+/*430+ if (addr >= os::GLOBAL_CODE_CACHE_ADDR - os::GLOBAL_CODE_CACHE_DIFF && addr < os::GLOBAL_CODE_CACHE_ADDR) {431+ uc->context_pc = (uint64_t)addr + os::GLOBAL_CODE_CACHE_DIFF;432+ return 1;433+ } else if (addr >= os::GLOBAL_CODE_CACHE_ADDR && addr < os::GLOBAL_CODE_CACHE_ADDR + os::GLOBAL_CODE_CACHE_DIFF) {434+ // try again435+ uc->context_pc = (uint64_t)addr - os::GLOBAL_CODE_CACHE_DIFF;436+ return 1;437+ }438+*/439+440Thread* t = ThreadLocalStorage::get_thread_slow();441442// Must do this before SignalHandlerMark, if crash protection installed we will longjmp away443diff --git a/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.hpp b/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.hpp444index 49b579d5..1344de99 100644445--- a/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.hpp446+++ b/hotspot/src/os_cpu/bsd_aarch64/vm/os_bsd_aarch64.hpp447@@ -26,6 +26,11 @@448#ifndef OS_CPU_BSD_AARCH64_VM_OS_BSD_AARCH64_HPP449#define OS_CPU_BSD_AARCH64_VM_OS_BSD_AARCH64_HPP450451+#include <sys/mman.h>452+#include "tcg-apple-jit.h"453+454+ //extern "C" int mprotect(void *addr, size_t len, int prot);455+456static void setup_fpu();457458static bool is_allocatable(size_t bytes);459@@ -42,10 +47,18 @@460private:461462static void current_thread_enable_wx_impl(WXMode mode) {463-#pragma clang diagnostic push464-#pragma clang diagnostic ignored "-Wunguarded-availability-new"465- pthread_jit_write_protect_np(mode == WXExec ? true : false);466-#pragma clang diagnostic pop467+// #pragma clang diagnostic push468+// #pragma clang diagnostic ignored "-Wunguarded-availability-new"469+ // pthread_jit_write_protect_np(mode == WXExec ? true : false);470+ // jit_write_protect(mode == WXExec);471+/*472+ if (mode == WXExec) {473+ mprotect(os::GLOBAL_CODE_CACHE_ADDR, os::GLOBAL_CODE_CACHE_SIZE, PROT_READ | PROT_EXEC);474+ } else {475+ mprotect(os::GLOBAL_CODE_CACHE_ADDR, os::GLOBAL_CODE_CACHE_SIZE, PROT_READ | PROT_WRITE);476+ }477+*/478+// #pragma clang diagnostic pop479}480481public:482diff --git a/hotspot/src/os_cpu/bsd_aarch64/vm/tcg-apple-jit.h b/hotspot/src/os_cpu/bsd_aarch64/vm/tcg-apple-jit.h483new file mode 100644484index 00000000..e8227412485--- /dev/null486+++ b/hotspot/src/os_cpu/bsd_aarch64/vm/tcg-apple-jit.h487@@ -0,0 +1,85 @@488+/*489+ * Apple Silicon APRR functions for JIT handling490+ *491+ * Copyright (c) 2020 osy492+ *493+ * This library is free software; you can redistribute it and/or494+ * modify it under the terms of the GNU Lesser General Public495+ * License as published by the Free Software Foundation; either496+ * version 2.1 of the License, or (at your option) any later version.497+ *498+ * This library is distributed in the hope that it will be useful,499+ * but WITHOUT ANY WARRANTY; without even the implied warranty of500+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU501+ * Lesser General Public License for more details.502+ *503+ * You should have received a copy of the GNU Lesser General Public504+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.505+ */506+507+/*508+ * Credits to: https://siguza.github.io/APRR/509+ * Reversed from /usr/lib/system/libsystem_pthread.dylib510+ */511+512+#ifndef TCG_APPLE_JIT_H513+#define TCG_APPLE_JIT_H514+515+#if defined(__aarch64__) && defined(__APPLE__)516+517+#define _COMM_PAGE_START_ADDRESS (0x0000000FFFFFC000ULL) /* In TTBR0 */518+#define _COMM_PAGE_APRR_SUPPORT (_COMM_PAGE_START_ADDRESS + 0x10C)519+#define _COMM_PAGE_APPR_WRITE_ENABLE (_COMM_PAGE_START_ADDRESS + 0x110)520+#define _COMM_PAGE_APRR_WRITE_DISABLE (_COMM_PAGE_START_ADDRESS + 0x118)521+522+static __attribute__((__always_inline__)) bool jit_write_protect_supported(void)523+{524+ /* Access shared kernel page at fixed memory location. */525+ uint8_t aprr_support = *(volatile uint8_t *)_COMM_PAGE_APRR_SUPPORT;526+ return aprr_support > 0;527+}528+529+/* write protect enable = write disable */530+static __attribute__((__always_inline__)) void jit_write_protect(int enabled)531+{532+ /* Access shared kernel page at fixed memory location. */533+ uint8_t aprr_support = *(volatile uint8_t *)_COMM_PAGE_APRR_SUPPORT;534+ if (aprr_support == 0 || aprr_support > 3) {535+ return;536+ } else if (aprr_support == 1) {537+ __asm__ __volatile__ (538+ "mov x0, %0\n"539+ "ldr x0, [x0]\n"540+ "msr S3_4_c15_c2_7, x0\n"541+ "isb sy\n"542+ :: "r" (enabled ? _COMM_PAGE_APRR_WRITE_DISABLE543+ : _COMM_PAGE_APPR_WRITE_ENABLE)544+ : "memory", "x0"545+ );546+ } else {547+ __asm__ __volatile__ (548+ "mov x0, %0\n"549+ "ldr x0, [x0]\n"550+ "msr S3_6_c15_c1_5, x0\n"551+ "isb sy\n"552+ :: "r" (enabled ? _COMM_PAGE_APRR_WRITE_DISABLE553+ : _COMM_PAGE_APPR_WRITE_ENABLE)554+ : "memory", "x0"555+ );556+ }557+}558+559+#else /* defined(__aarch64__) && defined(__APPLE__) */560+561+static __attribute__((__always_inline__)) bool jit_write_protect_supported(void)562+{563+ return false;564+}565+566+static __attribute__((__always_inline__)) void jit_write_protect(int enabled)567+{568+}569+570+#endif571+572+#endif /* define TCG_APPLE_JIT_H */573diff --git a/hotspot/src/share/vm/runtime/os.cpp b/hotspot/src/share/vm/runtime/os.cpp574index 36d00f9e..76042100 100644575--- a/hotspot/src/share/vm/runtime/os.cpp576+++ b/hotspot/src/share/vm/runtime/os.cpp577@@ -80,6 +80,9 @@ long os::_rand_seed = 1;578int os::_processor_count = 0;579int os::_initial_active_processor_count = 0;580size_t os::_page_sizes[os::page_sizes_max];581+address os::GLOBAL_CODE_CACHE_ADDR = NULL;582+uintptr_t os::GLOBAL_CODE_CACHE_DIFF = 0;583+uint32_t os::GLOBAL_CODE_CACHE_SIZE = 0;584585#ifndef PRODUCT586julong os::num_mallocs = 0; // # of calls to malloc/realloc587diff --git a/hotspot/src/share/vm/runtime/os.hpp b/hotspot/src/share/vm/runtime/os.hpp588index a2bb8804..2b49abb5 100644589--- a/hotspot/src/share/vm/runtime/os.hpp590+++ b/hotspot/src/share/vm/runtime/os.hpp591@@ -50,6 +50,7 @@592# include <setjmp.h>593# ifdef __APPLE__594# include <mach/mach_time.h>595+# include <sys/mman.h>596# endif597#endif598599@@ -346,7 +347,7 @@ class os: AllStatic {600// are passed.601static void pretouch_memory(char* start, char* end);602603- enum ProtType { MEM_PROT_NONE, MEM_PROT_READ, MEM_PROT_RW, MEM_PROT_RWX };604+ enum ProtType { MEM_PROT_NONE, MEM_PROT_READ, MEM_PROT_RW, MEM_PROT_RWX, MEM_PROT_RX };605static bool protect_memory(char* addr, size_t bytes, ProtType prot,606bool is_committed = true);607608@@ -475,7 +476,7 @@ class os: AllStatic {609// need special-case handling of the primordial thread if it attaches610// to the VM.611static bool is_primordial_thread(void)612-#if defined(_WINDOWS) || defined(BSD)613+#if defined(_WINDOWS) //|| defined(BSD)614// No way to identify the primordial thread.615{ return false; }616#else617@@ -959,6 +960,9 @@ class os: AllStatic {618bool _done;619};620621+ static address GLOBAL_CODE_CACHE_ADDR;622+ static uintptr_t GLOBAL_CODE_CACHE_DIFF;623+ static uint32_t GLOBAL_CODE_CACHE_SIZE;624// If the JVM is running in W^X mode, enable write or execute access to625// writeable and executable pages. No-op otherwise.626static inline void current_thread_enable_wx(WXMode mode) {627diff --git a/hotspot/src/share/vm/runtime/stubRoutines.hpp b/hotspot/src/share/vm/runtime/stubRoutines.hpp628index 746f6eac..222a664f 100644629--- a/hotspot/src/share/vm/runtime/stubRoutines.hpp630+++ b/hotspot/src/share/vm/runtime/stubRoutines.hpp631@@ -278,7 +278,7 @@ class StubRoutines: AllStatic {632TRAPS633);634635- static CallStub call_stub() { return CAST_TO_FN_PTR(CallStub, _call_stub_entry); }636+ static CallStub call_stub() { return CAST_TO_FN_PTR(CallStub, _call_stub_entry + os::GLOBAL_CODE_CACHE_DIFF); }637638// Exceptions639static address forward_exception_entry() { return _forward_exception_entry; }640diff --git a/hotspot/src/share/vm/runtime/virtualspace.cpp b/hotspot/src/share/vm/runtime/virtualspace.cpp641index 7f12ce6b..88c0d693 100644642--- a/hotspot/src/share/vm/runtime/virtualspace.cpp643+++ b/hotspot/src/share/vm/runtime/virtualspace.cpp644@@ -41,6 +41,19 @@645#endif646#ifdef TARGET_OS_FAMILY_bsd647# include "os_bsd.inline.hpp"648+# include "os_bsd.hpp"649+# include <mach/mach.h>650+extern "C" kern_return_t mach_vm_remap(vm_map_t target_task,651+ mach_vm_address_t *target_address,652+ mach_vm_size_t size,653+ mach_vm_offset_t mask,654+ int flags,655+ vm_map_t src_task,656+ mach_vm_address_t src_address,657+ boolean_t copy,658+ vm_prot_t *cur_protection,659+ vm_prot_t *max_protection,660+ vm_inherit_t inheritance);661#endif662663PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC664@@ -357,6 +370,14 @@ ReservedCodeSpace::ReservedCodeSpace(size_t r_size,665size_t rs_align,666bool large) :667ReservedSpace(r_size, rs_align, large, /*executable*/ true) {668+669+ os::GLOBAL_CODE_CACHE_ADDR = (address)base();670+ os::GLOBAL_CODE_CACHE_SIZE = r_size;671+672+ if (!os::protect_memory(base(), r_size, os::MEM_PROT_RW)) {673+ fatal("cannot protect protection page for jit (rw)");674+ }675+676MemTracker::record_virtual_memory_type((address)base(), mtCode);677}678679diff --git a/jdk/make/CompileLaunchers.gmk b/jdk/make/CompileLaunchers.gmk680index 61973b3b..b2e80582 100644681--- a/jdk/make/CompileLaunchers.gmk682+++ b/jdk/make/CompileLaunchers.gmk683@@ -99,7 +99,7 @@ define SetupLauncher684endif685686$1_LDFLAGS += -Wl,-all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \687- -framework Cocoa -framework Security -framework ApplicationServices \688+ -framework Foundation -framework Security \689-sectcreate __TEXT __info_plist $(JDK_TOPDIR)/src/macosx/lib/$$($1_PLIST_FILE)690$1_LDFLAGS_SUFFIX += -pthread691endif692@@ -250,8 +250,10 @@ BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java$(EXE_SUFFIX)693ifeq ($(ENABLE_DEBUG_SYMBOLS), true)694ifneq ($(POST_STRIP_CMD), )695ifneq ($(STRIP_POLICY), no_strip)696+ ifneq ($(OPENJDK_TARGET_OS), macosx) # Darwin does not support?697BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/java$(DEBUGINFO_EXT)698endif699+ endif700endif701endif702703@@ -571,8 +573,10 @@ BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/unpack200$(EXE_SUFFIX)704ifeq ($(ENABLE_DEBUG_SYMBOLS), true)705ifneq ($(POST_STRIP_CMD), )706ifneq ($(STRIP_POLICY), no_strip)707+ ifneq ($(OPENJDK_TARGET_OS), macosx) # Darwin does not support?708BUILD_LAUNCHERS += $(JDK_OUTPUTDIR)/bin$(OUTPUT_SUBDIR)/unpack200$(DEBUGINFO_EXT)709endif710+ endif711endif712endif713714diff --git a/jdk/make/CopyFiles.gmk b/jdk/make/CopyFiles.gmk715index a132f617..eeafc003 100644716--- a/jdk/make/CopyFiles.gmk717+++ b/jdk/make/CopyFiles.gmk718@@ -338,9 +338,15 @@ else719ifeq ($(CLIENT_AND_SERVER), true)720COPY_JVM_CFG_FILE := true721else722- # For zero, the default jvm.cfg file is sufficient723+ # For zero, the default jvm.cfg file is sufficient.724ifeq ($(JVM_VARIANT_ZERO), true)725COPY_JVM_CFG_FILE := true726+ else727+ ifeq ($(OPENJDK_TARGET_CPU), aarch32)728+ ifeq ($(JVM_VARIANT_CORE), true)729+ COPY_JVM_CFG_FILE := true730+ endif731+ endif732endif733endif734endif735diff --git a/jdk/make/lib/Awt2dLibraries.gmk b/jdk/make/lib/Awt2dLibraries.gmk736index 01e03690..097ac9f0 100644737--- a/jdk/make/lib/Awt2dLibraries.gmk738+++ b/jdk/make/lib/Awt2dLibraries.gmk739@@ -23,6 +23,8 @@740# questions.741#742743+X_LIBS :=744+745WIN_AWT_LIB := $(JDK_OUTPUTDIR)/objs/libawt/awt.lib746747##########################################################################################748@@ -223,7 +225,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows)749$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \750$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/windows \751$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/d3d752-else ifneq ($(OPENJDK_TARGET_OS), macosx)753+else ifneq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)754LIBAWT_DIRS += \755$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/java2d/x11756endif757@@ -477,7 +479,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBAWT, \758LDFLAGS_SUFFIX_linux := -ljvm $(LIBM) $(LIBDL) -ljava, \759LDFLAGS_SUFFIX_solaris := -ljvm $(LIBM) $(LIBDL) -ljava -lc, \760LDFLAGS_SUFFIX_aix :=-ljvm $(LIBM) $(LIBDL) -ljava -lm,\761- LDFLAGS_SUFFIX_macosx := -lmlib_image -ljvm $(LIBM) \762+ LDFLAGS_SUFFIX_macosx := -lmlib_image -ljvm -ljava $(LIBM), \763+ LDFLAGS_SUFFIX_macosx_NOTIOS := -lmlib_image -ljvm $(LIBM) \764-framework Cocoa \765-framework OpenGL \766-framework JavaNativeFoundation \767@@ -558,7 +561,8 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),)768LIBAWT_XAWT_CFLAGS += -DINTERNAL_BUILD769endif770771- LIBAWT_XAWT_FILES := \772+ LIBAWT_XAWT_FILES := list.c773+ LIBAWT_XAWT_FILES_Z := \774XlibWrapper.c \775XWindow.c \776XToolkit.c \777@@ -616,8 +620,8 @@ ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),)778sun_awt_X11_GtkFileDialogPeer.c \779XRSurfaceData.c \780XRBackendNative.c781-782- LIBAWT_XAWT_LDFLAGS_SUFFIX := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm -lc783+ # -lXext -lX11 -lXrender -lXtst -lXi784+ LIBAWT_XAWT_LDFLAGS_SUFFIX := $(LIBM) -lawt $(LIBDL) -ljava -ljvm -lc785786ifeq ($(OPENJDK_TARGET_OS), linux)787# To match old build, add this to LDFLAGS instead of suffix.788@@ -762,9 +766,9 @@ BUILD_LIBRARIES += $(BUILD_LIBJPEG)789790##########################################################################################791792-ifeq ($(BUILD_HEADLESS), true)793+# ifeq ($(BUILD_HEADLESS), true)794# Mac and Windows only use the native AWT lib, do not build libawt_headless795- ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),)796+ # ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx_NOTIOS),)797798LIBAWT_HEADLESS_DIRS := $(JDK_TOPDIR)/src/share/native/sun/font \799$(JDK_TOPDIR)/src/share/native/sun/java2d/opengl \800@@ -773,7 +777,7 @@ ifeq ($(BUILD_HEADLESS), true)801$(JDK_TOPDIR)/src/solaris/native/sun/java2d/opengl \802$(JDK_TOPDIR)/src/solaris/native/sun/java2d/x11803804- ifeq ($(OPENJDK_TARGET_OS), macosx)805+ ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)806LIBAWT_HEADLESS_DIRS += $(JDK_TOPDIR)/src/macosx/native/sun/font807endif808809@@ -792,15 +796,29 @@ ifeq ($(BUILD_HEADLESS), true)810-I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/jdga \811$(foreach dir, $(LIBAWT_HEADLESS_DIRS), -I$(dir))812813+# X11Renderer.c814+# X11PMBlitLoops.c815+# X11SurfaceData.c816+817+# TODO: Port below to GL4ES/Android GLES renderer.818+# GLXGraphicsConfig.c819+# GLXSurfaceData.c820+821+# awt_DrawingSurface.c822+# awt_GraphicsEnv.c823+# awt_UNIXToolkit.c824+825LIBAWT_HEADLESS_FILES := \826+ awt_AWTEvent.c \827+ awt_Event.c \828awt_Font.c \829+ awt_Insets.c \830+ awt_Robot.c \831+ awt_util.c \832HeadlessToolkit.c \833fontpath.c \834VDrawingArea.c \835X11Color.c \836- X11Renderer.c \837- X11PMBlitLoops.c \838- X11SurfaceData.c \839X11FontScaler_md.c \840X11TextRenderer_md.c \841OGLBlitLoops.c \842@@ -815,8 +833,6 @@ ifeq ($(BUILD_HEADLESS), true)843OGLSurfaceData.c \844OGLTextRenderer.c \845OGLVertexCache.c \846- GLXGraphicsConfig.c \847- GLXSurfaceData.c \848AccelGlyphCache.c \849CUPSfuncs.c850851@@ -840,9 +856,10 @@ ifeq ($(BUILD_HEADLESS), true)852$(call SET_SHARED_LIBRARY_ORIGIN), \853LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \854LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \855- LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN)., \856+ LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \857REORDER := $(LIBAWT_HEADLESS_REORDER), \858LDFLAGS_SUFFIX_linux := -ljvm -lawt -lm $(LIBDL) -ljava, \859+ LDFLAGS_SUFFIX_macosx := -ljvm -lawt -ljava,\860LDFLAGS_SUFFIX_aix := -ljvm -lawt -ljava,\861LDFLAGS_SUFFIX_solaris := $(LIBDL) -ljvm -lawt -lm -ljava $(LIBCXX) -lc, \862OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libawt_headless, \863@@ -851,9 +868,8 @@ ifeq ($(BUILD_HEADLESS), true)864$(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT)865866BUILD_LIBRARIES += $(BUILD_LIBAWT_HEADLESS)867-868- endif869-endif870+# endif871+#endif872873##########################################################################################874875@@ -873,7 +889,7 @@ ifeq ($(OPENJDK_TARGET_OS), windows)876LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \877X11TextRenderer.c878LIBFONTMANAGER_OPTIMIZATION := HIGHEST879-else ifeq ($(OPENJDK_TARGET_OS), macosx)880+else ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)881LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \882X11TextRenderer.c \883fontpath.c \884@@ -914,8 +930,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \885EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \886AccelGlyphCache.c, \887LANG := C++, \888- CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON), \889- CXXFLAGS := $(CXXFLAGS_JDKLIB) $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON), \890+ CFLAGS := $(CFLAGS_JDKLIB) -fno-rtti $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON), \891+ CXXFLAGS := $(CXXFLAGS_JDKLIB) -fno-rtti $(BUILD_LIBFONTMANAGER_CFLAGS_COMMON), \892OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \893CFLAGS_windows = -I$(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/windows \894-DCC_NOEX, \895@@ -924,7 +940,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \896$(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) $(LDFLAGS_CXX_JDK) \897$(call SET_SHARED_LIBRARY_ORIGIN), \898LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \899- LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \900+ LDFLAGS_SUFFIX_linux := -lawt -lawt_headless $(LIBM) -lsupc++ -ljava -ljvm -lc, \901LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \902LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\903LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \904@@ -1044,20 +1060,23 @@ ifeq ($(OPENJDK_TARGET_OS), windows)905else # OPENJDK_TARGET_OS not windows906907ifeq ($(OPENJDK_TARGET_OS), macosx)908- JAWT_FILES := jawt.m909- JAWT_LIBS := -lawt_lwawt910+# JAWT_FILES := jawt.m911+# JAWT_LIBS := -lawt_lwawt912+ JAWT_FILES := jawt.c913+ JAWT_LIBS := -lawt_headless914+# maybe -lawt_xawt later?915else916JAWT_FILES := jawt.c917JAWT_LIBS :=918ifneq ($(OPENJDK_TARGET_OS), solaris)919JAWT_LIBS += -lawt920endif921- ifndef BUILD_HEADLESS_ONLY922- JAWT_LIBS += -lawt_xawt923- else924+ # ifndef BUILD_HEADLESS_ONLY925+ # JAWT_LIBS += -lawt_xawt926+ # else927JAWT_LIBS += -lawt_headless928HEADLESS_CFLAG += -DHEADLESS929- endif930+ # endif931endif932933$(eval $(call SetupNativeCompilation,BUILD_LIBJAWT, \934@@ -1079,17 +1098,17 @@ else # OPENJDK_TARGET_OS not windows935LDFLAGS_SUFFIX_aix := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX),\936LDFLAGS_SUFFIX_solaris := $(JAWT_LIBS) $(LDFLAGS_JDKLIB_SUFFIX) -lXrender, \937LDFLAGS_SUFFIX_macosx := -Xlinker -rpath -Xlinker @loader_path $(JAWT_LIBS) \938- -framework Cocoa $(LDFLAGS_JDKLIB_SUFFIX), \939+ -framework Foundation $(LDFLAGS_JDKLIB_SUFFIX), \940OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjawt, \941DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))942943- ifndef BUILD_HEADLESS_ONLY944- $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT)945- else946+ # ifndef BUILD_HEADLESS_ONLY947+ # $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT)948+ # else949$(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_headless$(SHARED_LIBRARY_SUFFIX)950- endif951+ # endif952953- ifeq ($(OPENJDK_TARGET_OS), macosx)954+ ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)955$(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_lwawt$(SHARED_LIBRARY_SUFFIX)956endif957958@@ -1192,7 +1211,7 @@ ifndef BUILD_HEADLESS_ONLY959LIBSPLASHSCREEN_CFLAGS += $(ZLIB_CPPFLAGS)960endif961962- ifeq ($(OPENJDK_TARGET_OS), macosx)963+ ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)964LIBSPLASHSCREEN_LDFLAGS_SUFFIX += $(LIBM) -lpthread -liconv -losxapp \965-framework ApplicationServices \966-framework Foundation \967@@ -1225,9 +1244,9 @@ ifndef BUILD_HEADLESS_ONLY968OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libsplashscreen, \969DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))970971- BUILD_LIBRARIES += $(LIBSPLASHSCREEN)972+ # BUILD_LIBRARIES += $(LIBSPLASHSCREEN)973974- ifeq ($(OPENJDK_TARGET_OS), macosx)975+ ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)976$(LIBSPLASHSCREEN): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)osxapp$(SHARED_LIBRARY_SUFFIX)977endif978979@@ -1276,7 +1295,7 @@ endif980981##########################################################################################982983-ifeq ($(OPENJDK_TARGET_OS), macosx)984+ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)985986LIBAWT_LWAWT_FILES := \987awt.m \988@@ -1382,7 +1401,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)989-I$(JDK_TOPDIR)/src/share/native/sun/awt/debug, \990LDFLAGS := $(LDFLAGS_JDKLIB) \991$(call SET_SHARED_LIBRARY_ORIGIN), \992- LDFLAGS_SUFFIX_macosx := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \993+ LDFLAGS_SUFFIX_macosx := -lawt -lmlib_image -DEXCLUDE_losxapp -ljvm $(LIBM) \994-framework Accelerate \995-framework ApplicationServices \996-framework AudioToolbox \997@@ -1411,7 +1430,7 @@ endif998999##########################################################################################10001001-ifeq ($(OPENJDK_TARGET_OS), macosx)1002+ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)10031004$(eval $(call SetupNativeCompilation,BUILD_LIBOSXUI, \1005LIBRARY := osxui, \1006diff --git a/jdk/make/lib/CoreLibraries.gmk b/jdk/make/lib/CoreLibraries.gmk1007index 0d7e3aae..9d3c92b5 1006441008--- a/jdk/make/lib/CoreLibraries.gmk1009+++ b/jdk/make/lib/CoreLibraries.gmk1010@@ -415,7 +415,6 @@ LIBJLI_CFLAGS += $(OPENJDK_TARGET_CPU_JLI_CFLAGS)10111012ifeq ($(OPENJDK_TARGET_OS), macosx)1013LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\"1014- LIBJLI_CFLAGS += -mmacosx-version-min=$(MACOSX_VERSION_MIN)1015endif10161017ifneq ($(USE_EXTERNAL_LIBZ), true)1018@@ -449,7 +448,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \1019$(call SET_SHARED_LIBRARY_ORIGIN), \1020LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \1021LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \1022- LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices -mmacosx-version-min=$(MACOSX_VERSION_MIN), \1023+ LDFLAGS_macosx := -framework Foundation -framework Security, \1024LDFLAGS_SUFFIX_solaris := $(LIBZ) $(LIBDL) -lc, \1025LDFLAGS_SUFFIX_linux := $(LIBZ) $(LIBDL) -lc -lpthread, \1026LDFLAGS_SUFFIX_aix := $(LIBZ) $(LIBDL),\1027@@ -509,8 +508,8 @@ else ifeq ($(OPENJDK_TARGET_OS), macosx)1028INCLUDE_FILES := $(BUILD_LIBJLI_FILES), \1029LANG := C, \1030OPTIMIZATION := HIGH, \1031- CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) -mmacosx-version-min=$(MACOSX_VERSION_MIN), \1032- LDFLAGS := -nostdlib -r -mmacosx-version-min=$(MACOSX_VERSION_MIN), \1033+ CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \1034+ LDFLAGS := -nostdlib -r, \1035OBJECT_DIR := $(JDK_OUTPUTDIR)/objs/libjli_static, \1036DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES)))10371038diff --git a/jdk/make/lib/NioLibraries.gmk b/jdk/make/lib/NioLibraries.gmk1039index 6c9c46a3..11c5e90c 1006441040--- a/jdk/make/lib/NioLibraries.gmk1041+++ b/jdk/make/lib/NioLibraries.gmk1042@@ -170,10 +170,14 @@ ifeq ($(OPENJDK_TARGET_OS_API), posix)1043ifeq (, $(filter $(OPENJDK_TARGET_OS), macosx aix))10441045# Suppress unused parameters required by exported JNI functions.1046- SCTP_WERROR := -Werror -Wno-error=unused-parameter1047+ # -Werror1048+ SCTP_WERROR := -Werror=implicit-function-declaration -Wno-error=unused-parameter1049ifeq ($(OPENJDK_TARGET_CPU_ARCH), ppc)1050SCTP_WERROR :=1051endif1052+ ifeq ($(OPENJDK_TARGET_CPU_ARCH), aarch32)1053+ SCTP_WERROR :=1054+ endif10551056$(eval $(call SetupNativeCompilation,BUILD_LIBSCTP, \1057LIBRARY := sctp, \1058diff --git a/jdk/make/lib/PlatformLibraries.gmk b/jdk/make/lib/PlatformLibraries.gmk1059index 49f584b4..9fc79e28 1006441060--- a/jdk/make/lib/PlatformLibraries.gmk1061+++ b/jdk/make/lib/PlatformLibraries.gmk1062@@ -23,7 +23,7 @@1063# questions.1064#10651066-ifeq ($(OPENJDK_TARGET_OS), macosx)1067+ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)10681069$(eval $(call SetupNativeCompilation,BUILD_LIBAPPLESCRIPTENGINE, \1070LIBRARY := AppleScriptEngine, \1071@@ -50,7 +50,7 @@ endif10721073##########################################################################################10741075-ifeq ($(OPENJDK_TARGET_OS), macosx)1076+ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)10771078$(eval $(call SetupNativeCompilation,BUILD_LIBOSXAPP, \1079LIBRARY := osxapp, \1080@@ -85,7 +85,7 @@ endif10811082##########################################################################################10831084-ifeq ($(OPENJDK_TARGET_OS), macosx)1085+ifeq ($(OPENJDK_TARGET_OS), macosx_NOTIOS)10861087LIBOSX_DIRS := \1088$(JDK_TOPDIR)/src/macosx/native/com/apple/concurrent \1089diff --git a/jdk/make/lib/SecurityLibraries.gmk b/jdk/make/lib/SecurityLibraries.gmk1090index 84abb7e7..29e55cfb 1006441091--- a/jdk/make/lib/SecurityLibraries.gmk1092+++ b/jdk/make/lib/SecurityLibraries.gmk1093@@ -133,6 +133,7 @@ endif1094##########################################################################################10951096ifneq ($(BUILD_CRYPTO), no)1097+ifneq ($(BUILD_IOS), 1)1098BUILD_LIBKRB5_NAME :=1099ifeq ($(OPENJDK_TARGET_OS), windows)1100BUILD_LIBKRB5_NAME := w2k_lsa_auth1101@@ -172,6 +173,7 @@ ifneq ($(BUILD_CRYPTO), no)1102BUILD_LIBRARIES += $(BUILD_LIBKRB5)1103endif1104endif1105+endif11061107##########################################################################################11081109diff --git a/jdk/make/lib/ServiceabilityLibraries.gmk b/jdk/make/lib/ServiceabilityLibraries.gmk1110index c951b118..37399b1d 1006441111--- a/jdk/make/lib/ServiceabilityLibraries.gmk1112+++ b/jdk/make/lib/ServiceabilityLibraries.gmk1113@@ -262,7 +262,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \1114LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \1115LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli), \1116LDFLAGS_macosx := -Xlinker -all_load $(JDK_OUTPUTDIR)/objs/libjli_static.a \1117- -framework Cocoa -framework Security -framework ApplicationServices, \1118+ -framework Foundation -framework Security, \1119LDFLAGS_SUFFIX := $(LIBINSTRUMENT_LDFLAGS_SUFFIX), \1120LDFLAGS_SUFFIX_macosx := -liconv $(LIBZ), \1121LDFLAGS_SUFFIX_solaris := $(LIBZ) -L $(INSTALL_LIBRARIES_HERE)/jli -ljli $(LIBDL) -lc, \1122diff --git a/jdk/make/lib/SoundLibraries.gmk b/jdk/make/lib/SoundLibraries.gmk1123index b59a9462..ca2a3ff7 1006441124--- a/jdk/make/lib/SoundLibraries.gmk1125+++ b/jdk/make/lib/SoundLibraries.gmk1126@@ -84,6 +84,7 @@ ifeq ($(OPENJDK_TARGET_OS), macosx)1127-DUSE_PLATFORM_MIDI_IN=TRUE1128LIBJSOUND_SRC_DIRS += $(JDK_TOPDIR)/src/macosx/native/com/sun/media/sound1129LIBJSOUND_SRC_FILES += \1130+ PLATFORM_API_iPhoneOS_Permission.m \1131PLATFORM_API_MacOSX_Utils.cpp \1132PLATFORM_API_MacOSX_PCM.cpp \1133PLATFORM_API_MacOSX_Ports.cpp \1134@@ -144,6 +145,10 @@ else1135LIBJSOUND_CFLAGS += -DX_ARCH=X_PPC64LE1136endif11371138+ ifeq ($(OPENJDK_TARGET_CPU), aarch32)1139+ LIBJSOUND_CFLAGS += -DX_ARCH=X_AARCH321140+ endif1141+1142ifeq ($(OPENJDK_TARGET_CPU), aarch64)1143LIBJSOUND_CFLAGS += -DX_ARCH=X_AARCH641144endif1145@@ -151,6 +156,7 @@ endif11461147LIBJSOUND_CFLAGS += -DEXTRA_SOUND_JNI_LIBS='"$(EXTRA_SOUND_JNI_LIBS)"'11481149+# -framework AudioUnit1150$(eval $(call SetupNativeCompilation,BUILD_LIBJSOUND, \1151LIBRARY := jsound, \1152OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \1153@@ -165,7 +171,7 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJSOUND, \1154LDFLAGS := $(LDFLAGS_JDKLIB) \1155$(call SET_SHARED_LIBRARY_ORIGIN), \1156LDFLAGS_macosx := -framework CoreAudio -framework CoreFoundation \1157- -framework CoreServices -framework AudioUnit $(LIBCXX) \1158+ -framework CoreServices -framework AVFoundation $(LIBCXX) \1159-framework CoreMIDI -framework AudioToolbox, \1160LDFLAGS_windows := $(WIN_JAVA_LIB) advapi32.lib winmm.lib, \1161LDFLAGS_SUFFIX_posix := -ljava -ljvm, \1162@@ -216,7 +222,7 @@ ifneq ($(filter jsoundalsa, $(EXTRA_SOUND_JNI_LIBS)), )11631164$(BUILD_LIBJSOUNDALSA): $(BUILD_LIBJAVA)11651166- BUILD_LIBRARIES += $(BUILD_LIBJSOUNDALSA)1167+ # BUILD_LIBRARIES += $(BUILD_LIBJSOUNDALSA)11681169endif11701171diff --git a/jdk/src/macosx/native/com/sun/media/sound/PLATFORM_API_MacOSX_PCM.cpp b/jdk/src/macosx/native/com/sun/media/sound/PLATFORM_API_MacOSX_PCM.cpp1172index 608ee13d..53fee94c 1006441173--- a/jdk/src/macosx/native/com/sun/media/sound/PLATFORM_API_MacOSX_PCM.cpp1174+++ b/jdk/src/macosx/native/com/sun/media/sound/PLATFORM_API_MacOSX_PCM.cpp1175@@ -44,6 +44,9 @@1176extern "C" {1177#include "Utilities.h"1178#include "DirectAudio.h"1179+#if TARGET_OS_IPHONE1180+void DAUDIO_RequestRecordPermission();1181+#endif1182}11831184#if USE_DAUDIO == TRUE1185@@ -71,6 +74,9 @@ static inline void PrintStreamDesc(const AudioStreamBasicDescription *inDesc) {1186static DeviceList deviceCache;11871188INT32 DAUDIO_GetDirectAudioDeviceCount() {1189+#ifdef TARGET_OS_IPHONE1190+ DAUDIO_RequestRecordPermission();1191+#endif1192deviceCache.Refresh();1193int count = deviceCache.GetCount();1194if (count > 0) {1195@@ -635,7 +641,11 @@ static AudioUnit CreateOutputUnit(AudioDeviceID deviceID, int isSource)11961197AudioComponentDescription desc;1198desc.componentType = kAudioUnitType_Output;1199+#if !TARGET_OS_IPHONE1200desc.componentSubType = (deviceID == 0 && isSource) ? kAudioUnitSubType_DefaultOutput : kAudioUnitSubType_HALOutput;1201+#else1202+ desc.componentSubType = kAudioUnitSubType_RemoteIO;1203+#endif1204desc.componentManufacturer = kAudioUnitManufacturer_Apple;1205desc.componentFlags = 0;1206desc.componentFlagsMask = 0;1207diff --git a/jdk/src/macosx/native/com/sun/media/sound/PLATFORM_API_iPhoneOS_Permission.m b/jdk/src/macosx/native/com/sun/media/sound/PLATFORM_API_iPhoneOS_Permission.m1208new file mode 1006441209index 00000000..4375ef711210--- /dev/null1211+++ b/jdk/src/macosx/native/com/sun/media/sound/PLATFORM_API_iPhoneOS_Permission.m1212@@ -0,0 +1,15 @@1213+#import <AVFAudio/AVFAudio.h>1214+1215+#if TARGET_OS_IPHONE1216+void DAUDIO_RequestRecordPermission() {1217+ AVAudioSession *session = AVAudioSession.sharedInstance;1218+ if ([session respondsToSelector:@selector(requestRecordPermission:)]) {1219+ dispatch_group_t group = dispatch_group_create();1220+ dispatch_group_enter(group);1221+ [session requestRecordPermission:^(BOOL granted) {1222+ dispatch_group_leave(group);1223+ }];1224+ dispatch_group_wait(group, DISPATCH_TIME_FOREVER);1225+ }1226+}1227+#endif1228diff --git a/jdk/src/macosx/native/sun/awt/OSVersion.h b/jdk/src/macosx/native/sun/awt/OSVersion.h1229new file mode 1006441230index 00000000..65d2f2c21231--- /dev/null1232+++ b/jdk/src/macosx/native/sun/awt/OSVersion.h1233@@ -0,0 +1,29 @@1234+/*1235+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.1236+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.1237+ *1238+ * This code is free software; you can redistribute it and/or modify it1239+ * under the terms of the GNU General Public License version 2 only, as1240+ * published by the Free Software Foundation. Oracle designates this1241+ * particular file as subject to the "Classpath" exception as provided1242+ * by Oracle in the LICENSE file that accompanied this code.1243+ *1244+ * This code is distributed in the hope that it will be useful, but WITHOUT1245+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or1246+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License1247+ * version 2 for more details (a copy is included in the LICENSE file that1248+ * accompanied this code).1249+ *1250+ * You should have received a copy of the GNU General Public License version1251+ * 2 along with this work; if not, write to the Free Software Foundation,1252+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.1253+ *1254+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA1255+ * or visit www.oracle.com if you need additional information or have any1256+ * questions.1257+ */1258+1259+// Support for detecting Mac OS X versions1260+1261+double getOSXMajorVersion();1262+BOOL isSnowLeopardOrLower();1263diff --git a/jdk/src/macosx/native/sun/awt/OSVersion.m b/jdk/src/macosx/native/sun/awt/OSVersion.m1264new file mode 1006441265index 00000000..93951abe1266--- /dev/null1267+++ b/jdk/src/macosx/native/sun/awt/OSVersion.m1268@@ -0,0 +1,61 @@1269+/*1270+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.1271+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.1272+ *1273+ * This code is free software; you can redistribute it and/or modify it1274+ * under the terms of the GNU General Public License version 2 only, as1275+ * published by the Free Software Foundation. Oracle designates this1276+ * particular file as subject to the "Classpath" exception as provided1277+ * by Oracle in the LICENSE file that accompanied this code.1278+ *1279+ * This code is distributed in the hope that it will be useful, but WITHOUT1280+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or1281+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License1282+ * version 2 for more details (a copy is included in the LICENSE file that1283+ * accompanied this code).1284+ *1285+ * You should have received a copy of the GNU General Public License version1286+ * 2 along with this work; if not, write to the Free Software Foundation,1287+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.1288+ *1289+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA1290+ * or visit www.oracle.com if you need additional information or have any1291+ * questions.1292+ */1293+1294+// Support for detecting Mac OS X Versions1295+1296+#include <math.h>1297+#include <stdlib.h>1298+#include <stdio.h>1299+#import <JavaRuntimeSupport/JavaRuntimeSupport.h>1300+1301+1302+// returns 107 for Lion, 106 for SnowLeopard etc.1303+int getOSXMajorVersion() {1304+ char *ver = JRSCopyOSVersion();1305+ if (ver == NULL) {1306+ return 0;1307+ }1308+1309+ int len = strlen(ver);1310+ int v = 0;1311+1312+ // Third char must be a '.'1313+ if (len >= 3 && ver[2] == '.') {1314+ int i;1315+1316+ v = (ver[0] - '0') * 10 + (ver[1] - '0');1317+ for (i = 3; i < len && isdigit(ver[i]); ++i) {1318+ v = v * 10 + (ver[i] - '0');1319+ }1320+ }1321+1322+ free(ver);1323+1324+ return v;1325+}1326+1327+BOOL isSnowLeopardOrLower() {1328+ return (getOSXMajorVersion() < 107);1329+}1330diff --git a/jdk/src/share/classes/sun/security/util/ManifestEntryVerifier.java b/jdk/src/share/classes/sun/security/util/ManifestEntryVerifier.java1331index 303c96d7..aa555cc2 1006441332--- a/jdk/src/share/classes/sun/security/util/ManifestEntryVerifier.java1333+++ b/jdk/src/share/classes/sun/security/util/ManifestEntryVerifier.java1334@@ -73,6 +73,18 @@ public class ManifestEntryVerifier {13351336private CodeSigner[] signers = null;13371338+ /**1339+ * Create a new ManifestEntryVerifier object.1340+ */1341+ public ManifestEntryVerifier(Manifest man)1342+ {1343+ createdDigests = new HashMap<String, MessageDigest>(11);1344+ digests = new ArrayList<MessageDigest>();1345+ manifestHashes = new ArrayList<byte[]>();1346+ this.manifestFileName = "default_name";1347+ this.man = man;1348+ }1349+1350/**1351* Create a new ManifestEntryVerifier object.1352*/1353diff --git a/jdk/src/solaris/native/java/lang/java_props_macosx.c b/jdk/src/solaris/native/java/lang/java_props_macosx.c1354index 80dc483b..c62a0c1d 1006441355--- a/jdk/src/solaris/native/java/lang/java_props_macosx.c1356+++ b/jdk/src/solaris/native/java/lang/java_props_macosx.c1357@@ -23,14 +23,24 @@1358* questions.1359*/13601361+#include "TargetConditionals.h"1362+1363#include <sys/socket.h>1364#include <netinet/in.h>1365#include <arpa/inet.h>1366#include <objc/objc-runtime.h>13671368+#ifndef TARGET_OS_IOS1369#include <Security/AuthSession.h>1370+#endif1371#include <CoreFoundation/CoreFoundation.h>1372+#ifndef TARGET_OS_IOS1373#include <SystemConfiguration/SystemConfiguration.h>1374+#else1375+#include <SystemConfiguration/OSXSCSchemaDefinitions.h>1376+#include <SystemConfiguration/SCDynamicStore.h>1377+CFDictionaryRef SCDynamicStoreCopyProxies(SCDynamicStoreRef store);1378+#endif1379#include <Foundation/Foundation.h>13801381#include "java_props_macosx.h"1382@@ -159,6 +169,7 @@ int isInAquaSession() {1383// if "true" then tell the caller we're in an Aqua session without actually checking1384return 1;1385}1386+#ifndef TARGET_OS_IOS1387// Is the WindowServer available?1388SecuritySessionId session_id;1389SessionAttributeBits session_info;1390@@ -168,6 +179,7 @@ int isInAquaSession() {1391return 1;1392}1393}1394+#endif1395return 0;1396}13971398diff --git a/jdk/src/solaris/native/sun/awt/awt.h b/jdk/src/solaris/native/sun/awt/awt.h1399index df5f6030..f2f12852 1006441400--- a/jdk/src/solaris/native/sun/awt/awt.h1401+++ b/jdk/src/solaris/native/sun/awt/awt.h1402@@ -34,9 +34,9 @@1403#include "jni_util.h"1404#include "debug_util.h"14051406-#if !defined(HEADLESS) && !defined(MACOSX)1407+#if defined(__ANDROID__) || (!defined(HEADLESS) && !defined(MACOSX))1408#include <X11/Intrinsic.h>1409-#endif /* !HEADLESS && !MACOSX */1410+#endif /* __ANDROID__ (!HEADLESS && !MACOSX) */141114121413/* The JVM instance: defined in awt_MToolkit.c */1414@@ -116,9 +116,9 @@ extern void awt_output_flush();1415#define AWT_NOTIFY() AWT_NOTIFY_IMPL()1416#define AWT_NOTIFY_ALL() AWT_NOTIFY_ALL_IMPL()14171418-#if !defined(HEADLESS) && !defined(MACOSX)1419+#if defined(__ANDROID__) || (!defined(HEADLESS) && !defined(MACOSX))1420extern Display *awt_display; /* awt_GraphicsEnv.c */1421extern Boolean awt_ModLockIsShiftLock; /* XToolkit.c */1422-#endif /* !HEADLESS && !MACOSX */1423+#endif /* __ANDROID__ || (!HEADLESS && !MACOSX) */14241425#endif /* ! _AWT_ */1426diff --git a/jdk/src/solaris/native/sun/awt/awt_AWTEvent.c b/jdk/src/solaris/native/sun/awt/awt_AWTEvent.c1427index 317e346e..9d7031a5 1006441428--- a/jdk/src/solaris/native/sun/awt/awt_AWTEvent.c1429+++ b/jdk/src/solaris/native/sun/awt/awt_AWTEvent.c1430@@ -29,11 +29,11 @@1431* THIS FILE DOES NOT IMPLEMENT ANY OF THE OBSOLETE java.awt.Event1432* CLASS. SEE awt_Event.[ch] FOR THAT CLASS' IMPLEMENTATION.1433*/1434-1435+/*1436#ifdef HEADLESS1437#error This file should not be included in headless library1438#endif1439-1440+*/1441#include "awt_p.h"1442#include "java_awt_AWTEvent.h"1443#include "java_awt_event_InputEvent.h"1444diff --git a/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c b/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c1445index de7e8488..e3e578c1 1006441446--- a/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c1447+++ b/jdk/src/solaris/native/sun/awt/awt_DrawingSurface.c1448@@ -23,10 +23,15 @@1449* questions.1450*/14511452+/*1453#ifdef HEADLESS1454#error This file should not be included in headless library1455#endif1456+*/14571458+#ifdef __ANDROID__1459+# include "awt.h"1460+#endif1461#include "awt_p.h"1462#include "java_awt_Component.h"14631464@@ -36,14 +41,27 @@1465#include <jni_util.h>1466#include <jawt_md.h>14671468+#include "awt_GraphicsEnv.h"1469+1470+1471+// FIXME awt_TopLevel.c not found1472+#ifndef __ANDROID__1473extern struct ComponentIDs componentIDs;14741475-#include "awt_GraphicsEnv.h"1476extern jfieldID windowID;1477extern jfieldID targetID;1478extern jfieldID graphicsConfigID;1479extern jfieldID drawStateID;1480extern struct X11GraphicsConfigIDs x11GraphicsConfigIDs;1481+#else1482+struct ComponentIDs componentIDs;1483+1484+jfieldID windowID;1485+jfieldID targetID;1486+jfieldID graphicsConfigID;1487+jfieldID drawStateID;1488+struct X11GraphicsConfigIDs x11GraphicsConfigIDs;1489+#endif14901491/*1492* Lock the surface of the target component for native rendering.1493@@ -160,7 +178,11 @@ JNIEXPORT int32_t JNICALL1494JNU_GetLongFieldAsPtr(env, gc_object,1495x11GraphicsConfigIDs.aData);1496} else {1497+#ifndef __ANDROID__1498adata = getDefaultConfig(DefaultScreen(awt_display));1499+#else1500+ adata = getDefaultConfig(0);1501+#endif1502}15031504result = adata->AwtColorMatch(r, g, b, adata);1505@@ -232,13 +254,29 @@ awt_DrawingSurface_GetDrawingSurfaceInfo(JAWT_DrawingSurface* ds)15061507/* Set drawable and display */1508px->drawable = (*env)->GetLongField(env, peer, windowID);1509+/*1510+#ifdef __ANDROID__1511+ Display fake_awt_display;1512+ awt_display = &fake_awt_display;1513+ awt_display->proto_major_version = 11;1514+ awt_display->proto_minor_version = 7;1515+ awt_display->vendor = "Android Xlib";1516+#endif1517+*/1518px->display = awt_display;15191520/* Get window attributes to set other values */1521+#if !defined(__ANDROID__) && !defined(HEADLESS)1522XGetWindowAttributes(awt_display, (Window)(px->drawable), &attrs);15231524- /* Set the other values */1525px->visualID = XVisualIDFromVisual(attrs.visual);1526+#else1527+ px->visualID = TrueColor;1528+ attrs.colormap = 1; // FIXME!1529+ attrs.depth = 24;1530+#endif1531+1532+ /* Set the other values */1533px->colormapID = attrs.colormap;1534px->depth = attrs.depth;1535px->GetAWTColor = awt_GetColor;1536diff --git a/jdk/src/solaris/native/sun/awt/awt_Event.c b/jdk/src/solaris/native/sun/awt/awt_Event.c1537index 64424697..af3df03c 1006441538--- a/jdk/src/solaris/native/sun/awt/awt_Event.c1539+++ b/jdk/src/solaris/native/sun/awt/awt_Event.c1540@@ -28,9 +28,12 @@1541*** awt_AWTEvent.[ch] FOR THE NEWER EVENT CLASSES.1542***1543***/1544+1545+/*1546#ifdef HEADLESS1547#error This file should not be included in headless library1548#endif1549+*/15501551#include "java_awt_Event.h"1552#include "jni_util.h"1553diff --git a/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c b/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c1554index 94f02281..77439ce6 1006441555--- a/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c1556+++ b/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c1557@@ -886,6 +886,8 @@ Java_sun_awt_X11GraphicsEnvironment_initGLX(JNIEnv *env, jclass x11ge)1558AWT_UNLOCK();15591560return glxAvailable;1561+#elif defined(__ANDROID)1562+ return JNI_TRUE;1563#else1564return JNI_FALSE;1565#endif /* !HEADLESS */1566@@ -900,7 +902,7 @@ JNIEXPORT jint JNICALL1567Java_sun_awt_X11GraphicsEnvironment_getNumScreens(JNIEnv *env, jobject this)1568{1569#ifdef HEADLESS1570- return (jint)0;1571+ return (jint)1;1572#else1573return awt_numScreens;1574#endif /* !HEADLESS */1575diff --git a/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c b/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c1576index 59483027..c2298361 1006441577--- a/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c1578+++ b/jdk/src/solaris/native/sun/awt/awt_LoadLibrary.c1579@@ -30,6 +30,7 @@1580#include <jni.h>1581#include <jni_util.h>1582#include <jvm.h>1583+#include <stdbool.h>1584#include "gdefs.h"15851586#include <sys/param.h>1587@@ -86,8 +87,9 @@ JNIEXPORT jboolean JNICALL AWTIsHeadless() {1588*/15891590#ifdef MACOSX1591- #define LWAWT_PATH "/libawt_lwawt.dylib"1592- #define DEFAULT_PATH LWAWT_PATH1593+ #define XAWT_PATH "/libawt_xawt.dylib"1594+ #define DEFAULT_PATH XAWT_PATH1595+ #define HEADLESS_PATH "/libawt_headless.dylib"1596#else1597#define XAWT_PATH "/libawt_xawt.so"1598#define DEFAULT_PATH XAWT_PATH1599@@ -116,8 +118,13 @@ AWT_OnLoad(JavaVM *vm, void *reserved)1600jvm = vm;16011602/* Get address of this library and the directory containing it. */1603- dladdr((void *)AWT_OnLoad, &dlinfo);1604- realpath((char *)dlinfo.dli_fname, buf);1605+ char *altpath = getenv("JAVA_AWT_PATH");1606+ if (altpath != NULL) {1607+ realpath(altpath, buf);1608+ } else {1609+ dladdr((void *)AWT_OnLoad, &dlinfo);1610+ realpath((char *)dlinfo.dli_fname, buf);1611+ }1612len = strlen(buf);1613p = strrchr(buf, '/');16141615@@ -130,7 +137,7 @@ AWT_OnLoad(JavaVM *vm, void *reserved)1616fmProp = (*env)->NewStringUTF(env, "sun.font.fontmanager");1617CHECK_EXCEPTION_FATAL(env, "Could not allocate font manager property");16181619-#ifdef MACOSX1620+#ifdef MACOSX_NOTIOS1621fmanager = (*env)->NewStringUTF(env, "sun.font.CFontManager");1622tk = LWAWT_PATH;1623#else1624@@ -146,11 +153,9 @@ AWT_OnLoad(JavaVM *vm, void *reserved)1625CHECK_EXCEPTION_FATAL(env, "Could not allocate set properties");1626}16271628-#ifndef MACOSX1629if (AWTIsHeadless()) {1630tk = HEADLESS_PATH;1631}1632-#endif16331634/* Calculate library name to load */1635strncpy(p, tk, MAXPATHLEN-len-1);1636diff --git a/jdk/src/solaris/native/sun/awt/awt_Robot.c b/jdk/src/solaris/native/sun/awt/awt_Robot.c1637index 35ff9478..b4ff620e 1006441638--- a/jdk/src/solaris/native/sun/awt/awt_Robot.c1639+++ b/jdk/src/solaris/native/sun/awt/awt_Robot.c1640@@ -23,9 +23,11 @@1641* questions.1642*/16431644+/*1645#ifdef HEADLESS1646#error This file should not be included in headless library1647#endif1648+*/16491650#include "jvm_md.h"1651#include <dlfcn.h>1652@@ -68,6 +70,7 @@ static void *xCompositeHandle;1653static const char* XCOMPOSITE = JNI_LIB_NAME("Xcomposite");1654static const char* XCOMPOSITE_VERSIONED = VERSIONED_JNI_LIB_NAME("Xcomposite", "1");16551656+#ifndef HEADLESS1657static Bool checkXCompositeFunctions(void) {1658return (compositeQueryExtension != NULL &&1659compositeQueryVersion != NULL &&1660@@ -229,6 +232,7 @@ static XImage *getWindowImage(Display * display, Window window,16611662return image;1663}1664+#endif16651666/*********************************************************************************************/16671668@@ -236,6 +240,7 @@ static XImage *getWindowImage(Display * display, Window window,1669JNIEXPORT void JNICALL1670Java_sun_awt_X11_XRobotPeer_setup (JNIEnv * env, jclass cls, jint numberOfButtons, jintArray buttonDownMasks)1671{1672+#ifndef HEADLESS1673int32_t xtestAvailable;1674jint *tmp;1675int i;1676@@ -266,6 +271,7 @@ Java_sun_awt_X11_XRobotPeer_setup (JNIEnv * env, jclass cls, jint numberOfButton1677}16781679AWT_UNLOCK();1680+#endif1681}168216831684@@ -278,7 +284,7 @@ Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl( JNIEnv *env,1685jint width,1686jint height,1687jintArray pixelArray) {1688-1689+#ifndef HEADLESS1690XImage *image;1691jint *ary; /* Array of jints for sending pixel values back1692* to parent process.1693@@ -337,13 +343,14 @@ Java_sun_awt_X11_XRobotPeer_getRGBPixelsImpl( JNIEnv *env,1694XDestroyImage(image);16951696AWT_UNLOCK();1697+#endif1698}16991700JNIEXPORT void JNICALL1701Java_sun_awt_X11_XRobotPeer_keyPressImpl (JNIEnv *env,1702jclass cls,1703jint keycode) {1704-1705+#ifndef HEADLESS1706AWT_LOCK();17071708DTRACE_PRINTLN1("RobotPeer: keyPressImpl(%i)", keycode);1709@@ -356,13 +363,14 @@ Java_sun_awt_X11_XRobotPeer_keyPressImpl (JNIEnv *env,1710XSync(awt_display, False);17111712AWT_UNLOCK();1713-1714+#endif1715}17161717JNIEXPORT void JNICALL1718Java_sun_awt_X11_XRobotPeer_keyReleaseImpl (JNIEnv *env,1719jclass cls,1720jint keycode) {1721+#ifndef HEADLESS1722AWT_LOCK();17231724DTRACE_PRINTLN1("RobotPeer: keyReleaseImpl(%i)", keycode);1725@@ -375,6 +383,7 @@ Java_sun_awt_X11_XRobotPeer_keyReleaseImpl (JNIEnv *env,1726XSync(awt_display, False);17271728AWT_UNLOCK();1729+#endif1730}17311732JNIEXPORT void JNICALL1733@@ -383,7 +392,7 @@ Java_sun_awt_X11_XRobotPeer_mouseMoveImpl (JNIEnv *env,1734jobject xgc,1735jint root_x,1736jint root_y) {1737-1738+#ifndef HEADLESS1739AwtGraphicsConfigDataPtr adata;17401741AWT_LOCK();1742@@ -397,6 +406,7 @@ Java_sun_awt_X11_XRobotPeer_mouseMoveImpl (JNIEnv *env,1743XSync(awt_display, False);17441745AWT_UNLOCK();1746+#endif1747}17481749/*1750@@ -407,6 +417,7 @@ void mouseAction(JNIEnv *env,1751jint buttonMask,1752Bool isMousePress)1753{1754+#ifndef HEADLESS1755AWT_LOCK();17561757DTRACE_PRINTLN1("RobotPeer: mouseAction(%i)", buttonMask);1758@@ -444,6 +455,7 @@ void mouseAction(JNIEnv *env,17591760XSync(awt_display, False);1761AWT_UNLOCK();1762+#endif1763}17641765JNIEXPORT void JNICALL1766@@ -468,7 +480,7 @@ Java_sun_awt_X11_XRobotPeer_mouseWheelImpl (JNIEnv *env,1767/* probably could have been hacked into robot_mouseButtonEvent, but it's */1768/* cleaner to give it its own command type, in case the implementation */1769/* needs to be changed later. -bchristi, 6/20/01 */1770-1771+#ifndef HEADLESS1772int32_t repeat = abs(wheelAmt);1773int32_t button = wheelAmt < 0 ? 4 : 5; /* wheel up: button 4 */1774/* wheel down: button 5 */1775@@ -486,9 +498,12 @@ Java_sun_awt_X11_XRobotPeer_mouseWheelImpl (JNIEnv *env,1776XSync(awt_display, False);17771778AWT_UNLOCK();1779+#endif1780}17811782JNIEXPORT void JNICALL1783Java_sun_awt_X11_XRobotPeer_loadNativeLibraries (JNIEnv *env, jclass cls) {1784+#ifndef HEADLESS1785initXCompositeFunctions();1786+#endif1787}1788diff --git a/jdk/src/solaris/native/sun/awt/awt_p.h b/jdk/src/solaris/native/sun/awt/awt_p.h1789index d2d1d749..df62cf13 1006441790--- a/jdk/src/solaris/native/sun/awt/awt_p.h1791+++ b/jdk/src/solaris/native/sun/awt/awt_p.h1792@@ -40,7 +40,7 @@1793#include <stdlib.h>1794#include <string.h>1795#include <unistd.h>1796-#ifndef HEADLESS1797+#ifndef HEADLESS_Z1798#include <X11/Intrinsic.h>1799#include <X11/IntrinsicP.h>1800#include <X11/Shell.h>1801@@ -49,28 +49,28 @@1802#include <X11/keysym.h>1803#include <X11/keysymdef.h>1804#include <X11/extensions/Xrender.h>1805-#endif /* !HEADLESS */1806+#endif /* !HEADLESS_Z */1807#include "awt.h"1808#include "awt_util.h"1809#include "color.h"1810#include "colordata.h"1811#include "gdefs.h"18121813-#ifndef HEADLESS1814+#ifndef HEADLESS_Z1815#ifndef min1816#define min(a,b) ((a) <= (b)? (a):(b))1817#endif1818#ifndef max1819#define max(a,b) ((a) >= (b)? (a):(b))1820#endif1821-#endif /* !HEADLESS */1822+#endif // !HEADLESS_Z18231824#define RepaintPending_NONE 01825#define RepaintPending_REPAINT (1 << 0)1826#define RepaintPending_EXPOSE (1 << 1)1827#define LOOKUPSIZE 3218281829-#ifndef HEADLESS1830+#ifndef HEADLESS_Z18311832typedef XRenderPictFormat *1833XRenderFindVisualFormatFunc (Display *dpy, _Xconst Visual *visual);1834@@ -130,12 +130,12 @@ extern struct FontData *awtJNI_GetFontData(JNIEnv *env,jobject font, char **errm18351836extern AwtGraphicsConfigDataPtr getDefaultConfig(int screen);1837extern AwtScreenDataPtr getScreenData(int screen);1838-#endif /* !HEADLESS */1839+#endif /* !HEADLESS_Z */18401841/* allocated and initialize a structure */1842#define ZALLOC(T) ((struct T *)calloc(1, sizeof(struct T)))18431844-#ifndef HEADLESS1845+#ifndef HEADLESS_Z1846#define XDISPLAY awt_display;18471848extern int awt_allocate_colors(AwtGraphicsConfigDataPtr);1849@@ -147,5 +147,5 @@ extern int awtJNI_GetColorForVis (JNIEnv *, jobject, AwtGraphicsConfigDataPtr);1850extern jobject awtJNI_GetColorModel(JNIEnv *, AwtGraphicsConfigDataPtr);1851extern void awtJNI_CreateColorData (JNIEnv *, AwtGraphicsConfigDataPtr, int lock);18521853-#endif /* !HEADLESS */1854+#endif /* !HEADLESS_Z */1855#endif /* _AWT_P_H_ */1856diff --git a/jdk/src/solaris/native/sun/awt/awt_util.c b/jdk/src/solaris/native/sun/awt/awt_util.c1857index 13ba3779..36eab248 1006441858--- a/jdk/src/solaris/native/sun/awt/awt_util.c1859+++ b/jdk/src/solaris/native/sun/awt/awt_util.c1860@@ -23,9 +23,11 @@1861* questions.1862*/18631864+/*1865#ifdef HEADLESS1866#error This file should not be included in headless library1867#endif1868+*/18691870#include "awt_p.h"1871#include "color.h"1872diff --git a/jdk/src/solaris/native/sun/awt/color.h b/jdk/src/solaris/native/sun/awt/color.h1873index 92df41ca..5eebb4b0 1006441874--- a/jdk/src/solaris/native/sun/awt/color.h1875+++ b/jdk/src/solaris/native/sun/awt/color.h1876@@ -28,13 +28,20 @@1877#include "awt.h"1878#include "colordata.h"18791880-#if !defined(HEADLESS) && !defined(MACOSX)1881+#if defined(__ANDROID__) || (!defined(HEADLESS_IGNORED) && !defined(MACOSX_NOTIOS))1882+1883+typedef struct {1884+ int depth;1885+ int bits_per_pixel;1886+ int scanline_pad;1887+} XPixmapFormatValues_DUP;1888+1889typedef struct {1890unsigned int Depth;1891- XPixmapFormatValues wsImageFormat;1892+ XPixmapFormatValues_DUP wsImageFormat;1893ImgColorData clrdata;1894ImgConvertFcn *convert[NUM_IMGCV];1895} awtImageData;1896-#endif /* !HEADLESS && !MACOSX */1897+#endif /* __ANDROID__ || (!HEADLESS && !MACOSX) */18981899#endif /* _COLOR_H_ */1900diff --git a/jdk/src/solaris/native/sun/awt/fontpath.c b/jdk/src/solaris/native/sun/awt/fontpath.c1901index 4caae37a..28777601 1006441902--- a/jdk/src/solaris/native/sun/awt/fontpath.c1903+++ b/jdk/src/solaris/native/sun/awt/fontpath.c1904@@ -501,8 +501,9 @@ static char *getPlatformFontPathChars(JNIEnv *env, jboolean noType1, jboolean is19051906char **fcdirs = NULL, **x11dirs = NULL, **knowndirs = NULL, *path = NULL;19071908+ // mod: NULL -> FALLBACK1909/* As of 1.5 we try to use fontconfig on both Solaris and Linux.1910- * If its not available NULL is returned.1911+ * If its not available FALLBACK is returned.1912*/1913fcdirs = getFontConfigLocations();19141915@@ -565,6 +566,7 @@ JNIEXPORT jstring JNICALL Java_sun_awt_FcFontManager_getFontPathNative1916if (ptr == NULL) {1917ptr = getPlatformFontPathChars(env, noType1, isX11);1918}1919+1920ret = (*env)->NewStringUTF(env, ptr);1921return ret;1922}1923@@ -734,6 +736,18 @@ typedef FcStrList* (*FcConfigGetCacheDirsFuncType)(FcConfig *config);1924typedef FcChar8* (*FcStrListNextFuncType)(FcStrList *list);1925typedef FcChar8* (*FcStrListDoneFuncType)(FcStrList *list);19261927+// mod: fallback directories1928+static char **getFallbackFontLocations() {1929+1930+ char **fontdirs = (char**)calloc(3, sizeof(char*));1931+ fontdirs[0] = (char *)calloc(1, 4096);1932+ fontdirs[1] = (char *)calloc(1, 40);1933+ sprintf(fontdirs[0], "%s/lib/fonts", getenv("JAVA_HOME"));1934+ sprintf(fontdirs[1], "%s", "/System/Library/Fonts/UnicodeSupport");1935+ return fontdirs;1936+1937+}1938+1939static char **getFontConfigLocations() {19401941char **fontdirs;1942@@ -759,7 +773,8 @@ static char **getFontConfigLocations() {1943void* libfontconfig = openFontConfig();19441945if (libfontconfig == NULL) {1946- return NULL;1947+ return getFallbackFontLocations();1948+ // original: NULL1949}19501951FcPatternBuild =1952@@ -806,7 +821,8 @@ static char **getFontConfigLocations() {1953fontSet = (*FcFontList)(NULL, pattern, objset);1954if (fontSet == NULL) {1955/* FcFontList() may return NULL if fonts are not installed. */1956- fontdirs = NULL;1957+ fontdirs = getFallbackFontLocations();1958+ // original: NULL1959} else {1960fontdirs = (char**)calloc(fontSet->nfont+1, sizeof(char*));1961for (f=0; f < fontSet->nfont; f++) {1962diff --git a/jdk/src/solaris/native/sun/awt/jawt.c b/jdk/src/solaris/native/sun/awt/jawt.c1963index 64284bc6..176df821 1006441964--- a/jdk/src/solaris/native/sun/awt/jawt.c1965+++ b/jdk/src/solaris/native/sun/awt/jawt.c1966@@ -23,6 +23,10 @@1967* questions.1968*/19691970+#ifdef __APPLE__1971+#include "TargetConditionals.h"1972+#endif1973+1974#include <jawt.h>19751976#include "awt_DrawingSurface.h"1977@@ -33,7 +37,8 @@1978*/1979JNIEXPORT jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt)1980{1981-#if defined(JAVASE_EMBEDDED) && defined(HEADLESS)1982+// todo remove check if ios port get x11 support1983+#if defined(HEADLESS) || ((defined(__ANDROID__) || defined(TARGET_OS_IOS) || defined(JAVASE_EMBEDDED)) && defined(HEADLESS))1984/* there are no AWT libs available at all */1985return JNI_FALSE;1986#else1987@@ -47,6 +52,7 @@ JNIEXPORT jboolean JNICALL JAWT_GetAWT(JNIEnv* env, JAWT* awt)1988return JNI_FALSE;1989}19901991+ // TODO still want port below to Android :v1992awt->GetDrawingSurface = awt_GetDrawingSurface;1993awt->FreeDrawingSurface = awt_FreeDrawingSurface;1994if (awt->version >= JAWT_VERSION_1_4) {1995diff --git a/make/common/NativeCompilation.gmk b/make/common/NativeCompilation.gmk1996index 009139fb..0be692d6 1006441997--- a/make/common/NativeCompilation.gmk1998+++ b/make/common/NativeCompilation.gmk1999@@ -89,6 +89,12 @@ define add_native_source2000ifeq (,$$(filter %.s,$2))2001# And this is the dependency file for this obj file.2002$1_$2_DEP:=$$(patsubst %$(OBJ_SUFFIX),%.d,$$($1_$2_OBJ))2003+2004+ ifeq ($(OPENJDK_TARGET_OS), macosx)2005+ # Workaround for iOS port: dependency file does not exists.2006+ $1_$2_DEP:=""2007+ endif2008+2009# Include previously generated dependency information. (if it exists)2010-include $$($1_$2_DEP)20112012@@ -548,6 +554,12 @@ define SetupNativeCompilation2013$1_EXTRA_LDFLAGS+="-implib:$$($1_OBJECT_DIR)/$$($1_LIBRARY).lib"2014endif20152016+ ifeq ($(OPENJDK_TARGET_OS), macosx)2017+ # iOS workarounds: dynamic lib and rpath2018+ $1_EXTRA_LDFLAGS+="-dynamiclib"2019+ $1_EXTRA_LDFLAGS+="-Wl,-install_name,@rpath/$$($1_BASENAME)"2020+ endif2021+2022$1_EXTRA_LDFLAGS_SUFFIX += $(GLOBAL_LDFLAGS_SUFFIX)20232024$$($1_TARGET) : $$($1_EXPECTED_OBJS) $$($1_RES) $$($1_REAL_MAPFILE)202520262027