From 04b90441da7e9649cb6508a037423f08d1fc531f Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Sun, 11 May 2025 18:52:45 +0700 Subject: [PATCH] Fix(iOS): fix clang hardening changes --- buildjdk.sh | 3 +- patches/jdk8u_ios_fix_clang.diff | 127 +++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 patches/jdk8u_ios_fix_clang.diff diff --git a/buildjdk.sh b/buildjdk.sh index 631d8c9..56d7b05 100755 --- a/buildjdk.sh +++ b/buildjdk.sh @@ -44,7 +44,7 @@ else platform_args="--with-toolchain-type=clang SDKNAME=iphoneos" # --disable-precompiled-headers AUTOCONF_x11arg="--with-x=/opt/X11/include/X11 --prefix=/usr/lib" - sameflags="-arch arm64 -DHEADLESS=1 -I$PWD/ios-missing-include -Wno-implicit-function-declaration" + sameflags="-arch arm64 -DHEADLESS=1 -I$PWD/ios-missing-include -Wno-c++11-narrowing -Wno-implicit-function-declaration -Wno-reserved-user-defined-literal -Wno-shift-negative-value" export CFLAGS+=" $sameflags" export LDFLAGS+=" -arch arm64" export BUILD_SYSROOT_CFLAGS="-isysroot ${themacsysroot}" @@ -73,6 +73,7 @@ if [[ "$BUILD_IOS" != "1" ]]; then fi else git apply --reject --whitespace=fix ../patches/jdk8u_ios.diff || echo "git apply failed (ios patch set)" + git apply --reject --whitespace=fix ../patches/jdk8u_ios_fix_clang.diff || echo "git apply failed (ios clang fix patch set)" fi # --with-extra-cxxflags="$CXXFLAGS -Dchar16_t=uint16_t -Dchar32_t=uint32_t" \ diff --git a/patches/jdk8u_ios_fix_clang.diff b/patches/jdk8u_ios_fix_clang.diff new file mode 100644 index 0000000..d977524 --- /dev/null +++ b/patches/jdk8u_ios_fix_clang.diff @@ -0,0 +1,127 @@ +diff --git a/hotspot/src/share/vm/code/compiledIC.cpp b/hotspot/src/share/vm/code/compiledIC.cpp +index 63821c06..054b86d0 100644 +--- a/hotspot/src/share/vm/code/compiledIC.cpp ++++ b/hotspot/src/share/vm/code/compiledIC.cpp +@@ -222,7 +222,7 @@ bool CompiledIC::set_to_megamorphic(CallInfo* call_info, Bytecodes::Code bytecod + assert(bytecode == Bytecodes::_invokeinterface, ""); + int itable_index = call_info->itable_index(); + entry = VtableStubs::find_itable_stub(itable_index); +- if (entry == false) { ++ if (entry == nullptr) { + return false; + } + #ifdef ASSERT +diff --git a/hotspot/src/share/vm/code/dependencies.hpp b/hotspot/src/share/vm/code/dependencies.hpp +index 0392d4e3..9d88d166 100644 +--- a/hotspot/src/share/vm/code/dependencies.hpp ++++ b/hotspot/src/share/vm/code/dependencies.hpp +@@ -170,7 +170,7 @@ class Dependencies: public ResourceObj { + LG2_TYPE_LIMIT = 4, // assert(TYPE_LIMIT <= (1<> ((4 - (size - i)) * 8); + #else +- emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8); ++ emask = (mlib_s32)(~0u)<< ((4 - (size - i)) * 8); + #endif /* _LITTLE_ENDIAN */ + ((mlib_u32*)da)[0] = (val1 & emask) | (((mlib_u32*)da)[0] &~ emask); + +@@ -270,7 +270,7 @@ mlib_status mlib_ImageLookUp_Bit_U8_1(const mlib_u8 *src, + #ifdef _LITTLE_ENDIAN + mlib_u64 emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8); + #else +- mlib_u64 emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8); ++ mlib_u64 emask = (mlib_s64)(~0u)<< ((8 - (size - i)) * 8); + #endif /* _LITTLE_ENDIAN */ + + ((mlib_u64*)da)[0] = (((mlib_u64*)dd_array)[sa[0]] & emask) | (((mlib_u64*)da)[0] &~ emask); +@@ -397,7 +397,7 @@ mlib_status mlib_ImageLookUp_Bit_U8_2(const mlib_u8 *src, + #ifdef _LITTLE_ENDIAN + emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8); + #else +- emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8); ++ emask = (mlib_s32)(~0u)<< ((4 - (size - i)) * 8); + #endif /* _LITTLE_ENDIAN */ + ((mlib_u32*)da)[0] = (dd1 & emask) | (((mlib_u32*)da)[0] &~ emask); + +@@ -415,7 +415,7 @@ mlib_status mlib_ImageLookUp_Bit_U8_2(const mlib_u8 *src, + #ifdef _LITTLE_ENDIAN + emask = (mlib_u64)((mlib_s64)(-1)) >> ((8 - (size - i)) * 8); + #else +- emask = (mlib_s64)(-1) << ((8 - (size - i)) * 8); ++ emask = (mlib_s64)(~0u)<< ((8 - (size - i)) * 8); + #endif /* _LITTLE_ENDIAN */ + ((mlib_u64*)da)[0] = (dd & emask) | (((mlib_u64*)da)[0] &~ emask); + +@@ -567,7 +567,7 @@ mlib_status mlib_ImageLookUp_Bit_U8_3(const mlib_u8 *src, + #ifdef _LITTLE_ENDIAN + emask = (mlib_u32)((mlib_s32)(-1)) >> ((4 - (size - i)) * 8); + #else +- emask = (mlib_s32)(-1) << ((4 - (size - i)) * 8); ++ emask = (mlib_s32)(~0u)<< ((4 - (size - i)) * 8); + #endif /* _LITTLE_ENDIAN */ + da[0] = (dd & emask) | (da[0] &~ emask); + }