diff --git a/OAT.xml b/OAT.xml
index f977703803c0a2000a7ddc994291a5dffc219cc5..715e4703286eff2110d76fd2d16dc23ddf390e4d 100644
--- a/OAT.xml
+++ b/OAT.xml
@@ -52,7 +52,7 @@
-
+
diff --git a/adapter-ohos.patch b/adapter-ohos.patch
new file mode 100644
index 0000000000000000000000000000000000000000..2b4696bbb544c04bf97c527239fbb89bd69b4e20
--- /dev/null
+++ b/adapter-ohos.patch
@@ -0,0 +1,291 @@
+diff --git a/CMake/AbseilDll.cmake b/CMake/AbseilDll.cmake
+index f0d984a..875517b 100644
+--- a/CMake/AbseilDll.cmake
++++ b/CMake/AbseilDll.cmake
+@@ -624,24 +624,7 @@ set(ABSL_INTERNAL_TEST_DLL_TARGETS
+
+ include(CheckCXXSourceCompiles)
+
+-check_cxx_source_compiles(
+- [==[
+-#ifdef _MSC_VER
+-# if _MSVC_LANG < 201700L
+-# error "The compiler defaults or is configured for C++ < 17"
+-# endif
+-#elif __cplusplus < 201700L
+-# error "The compiler defaults or is configured for C++ < 17"
+-#endif
+-int main() { return 0; }
+-]==]
+- ABSL_INTERNAL_AT_LEAST_CXX17)
+-
+-if(ABSL_INTERNAL_AT_LEAST_CXX17)
+- set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_17)
+-else()
+- set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_14)
+-endif()
++set(ABSL_INTERNAL_CXX_STD_FEATURE cxx_std_14)
+
+ function(absl_internal_dll_contains)
+ cmake_parse_arguments(ABSL_INTERNAL_DLL
+diff --git a/absl/base/internal/low_level_alloc.cc b/absl/base/internal/low_level_alloc.cc
+index 6d2cfea..9adbedb 100644
+--- a/absl/base/internal/low_level_alloc.cc
++++ b/absl/base/internal/low_level_alloc.cc
+@@ -42,10 +42,6 @@
+ #include
+ #endif
+
+-#ifdef __linux__
+-#include
+-#endif
+-
+ #include
+
+ #include
+@@ -569,18 +565,6 @@ static void *DoAllocWithArena(size_t request, LowLevelAlloc::Arena *arena) {
+ ABSL_RAW_LOG(FATAL, "mmap error: %d", errno);
+ }
+
+-#ifdef __linux__
+-#if defined(PR_SET_VMA) && defined(PR_SET_VMA_ANON_NAME)
+- // Attempt to name the allocated address range in /proc/$PID/smaps on
+- // Linux.
+- //
+- // This invocation of prctl() may fail if the Linux kernel was not
+- // configured with the CONFIG_ANON_VMA_NAME option. This is OK since
+- // the naming of arenas is primarily a debugging aid.
+- prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, new_pages, new_pages_size,
+- "absl");
+-#endif
+-#endif // __linux__
+ #endif // _WIN32
+ arena->mu.Lock();
+ s = reinterpret_cast(new_pages);
+diff --git a/absl/debugging/internal/elf_mem_image.h b/absl/debugging/internal/elf_mem_image.h
+index e7fe6ab..09ada21 100644
+--- a/absl/debugging/internal/elf_mem_image.h
++++ b/absl/debugging/internal/elf_mem_image.h
+@@ -34,7 +34,7 @@
+ #if defined(__ELF__) && !defined(__OpenBSD__) && !defined(__QNX__) && \
+ !defined(__native_client__) && !defined(__asmjs__) && \
+ !defined(__wasm__) && !defined(__HAIKU__) && !defined(__sun) && \
+- !defined(__VXWORKS__) && !defined(__hexagon__)
++ !defined(__VXWORKS__) && !defined(__hexagon__) && !defined(__OHOS__)
+ #define ABSL_HAVE_ELF_MEM_IMAGE 1
+ #endif
+
+diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h
+index 3929b1b..83bc8ee 100644
+--- a/absl/debugging/internal/stacktrace_config.h
++++ b/absl/debugging/internal/stacktrace_config.h
+@@ -26,6 +26,10 @@
+ #if defined(ABSL_STACKTRACE_INL_HEADER)
+ #error ABSL_STACKTRACE_INL_HEADER cannot be directly set
+
++#elif defined(__OHOS__)
++#define ABSL_STACKTRACE_INL_HEADER \
++ "absl/debugging/internal/stacktrace_unimplemented-inl.inc"
++
+ #elif defined(_WIN32)
+ #define ABSL_STACKTRACE_INL_HEADER \
+ "absl/debugging/internal/stacktrace_win32-inl.inc"
+
+diff --git a/absl/debugging/failure_signal_handler.cc b/absl/debugging/failure_signal_handler.cc
+index 992c89c..dcfa752 100644
+--- a/absl/debugging/failure_signal_handler.cc
++++ b/absl/debugging/failure_signal_handler.cc
+@@ -36,7 +36,7 @@
+ #endif
+ #endif
+
+-#ifdef __linux__
++#if defined __linux__ && !defined(__OHOS__)
+ #include
+ #endif
+
+@@ -177,7 +177,7 @@ static bool SetupAlternateStackOnce() {
+ ABSL_RAW_LOG(FATAL, "sigaltstack() failed with errno=%d", errno);
+ }
+
+-#ifdef __linux__
++#if defined __linux__ && !defined(__OHOS__)
+ #if defined(PR_SET_VMA) && defined(PR_SET_VMA_ANON_NAME)
+ // Make a best-effort attempt to name the allocated region in
+ // /proc/$PID/smaps.
+
+diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc
+index c2bab71..0fdd4b9 100644
+--- a/absl/debugging/internal/examine_stack.cc
++++ b/absl/debugging/internal/examine_stack.cc
+@@ -33,7 +33,9 @@
+ #include
+ #endif
+
++#if !defined(__OHOS__)
+ #include
++#endif
+ #include
+
+ #include "absl/base/attributes.h"
+@@ -155,6 +157,7 @@ SymbolizeUrlEmitter GetDebugStackTraceHook() { return debug_stack_trace_hook; }
+ // unknown. vuc is a ucontext_t*. We use void* to avoid the use of
+ // ucontext_t on non-POSIX systems.
+ void* GetProgramCounter(void* const vuc) {
++#if !defined(__OHOS__)
+ #ifdef __linux__
+ if (vuc != nullptr) {
+ ucontext_t* context = reinterpret_cast(vuc);
+@@ -233,7 +236,8 @@ void* GetProgramCounter(void* const vuc) {
+ return reinterpret_cast(get_user_ctx_pc(ctx));
+ #endif
+ static_cast(vuc);
+- return nullptr;
++#endif
++return nullptr;
+ }
+
+ void DumpPCAndFrameSizesAndStackTrace(void* const pc, void* const stack[],
+
+diff --git a/absl/crc/internal/cpu_detect.cc b/absl/crc/internal/cpu_detect.cc
+index 8383808..0f0fd22 100644
+--- a/absl/crc/internal/cpu_detect.cc
++++ b/absl/crc/internal/cpu_detect.cc
+@@ -19,7 +19,7 @@
+
+ #include "absl/base/config.h"
+
+-#if defined(__aarch64__) && defined(__linux__)
++#if defined(__aarch64__) && defined(__linux__) && !defined(__OHOS__)
+ #include
+ #include
+ #endif
+@@ -215,7 +215,7 @@ CpuType GetCpuType() {
+
+ bool SupportsArmCRC32PMULL() { return false; }
+
+-#elif defined(__aarch64__) && defined(__linux__)
++#elif defined(__aarch64__) && defined(__linux__) && !defined(__OHOS__)
+
+ #ifndef HWCAP_CPUID
+ #define HWCAP_CPUID (1 << 11)
+
+diff --git a/CMake/AbseilDll.cmake b/CMake/AbseilDll.cmake
+index 875517b..9e39aea 100644
+--- a/CMake/AbseilDll.cmake
++++ b/CMake/AbseilDll.cmake
+@@ -788,12 +788,12 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n")
+ ${_dll_consume}
+ )
+
+- if(ABSL_PROPAGATE_CXX_STD)
++ # if(ABSL_PROPAGATE_CXX_STD)
+ # Abseil libraries require C++14 as the current minimum standard. When
+ # compiled with C++17 (either because it is the compiler's default or
+ # explicitly requested), then Abseil requires C++17.
+ target_compile_features(${_dll} PUBLIC ${ABSL_INTERNAL_CXX_STD_FEATURE})
+- endif()
++ # endif()
+
+ install(TARGETS ${_dll} EXPORT ${PROJECT_NAME}Targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake
+index 3bd33ce..1deea98 100644
+--- a/CMake/AbseilHelpers.cmake
++++ b/CMake/AbseilHelpers.cmake
+@@ -285,12 +285,12 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n")
+ set_property(TARGET ${_NAME} PROPERTY FOLDER ${ABSL_IDE_FOLDER}/internal)
+ endif()
+
+- if(ABSL_PROPAGATE_CXX_STD)
++ # if(ABSL_PROPAGATE_CXX_STD)
+ # Abseil libraries require C++14 as the current minimum standard. When
+ # compiled with C++17 (either because it is the compiler's default or
+ # explicitly requested), then Abseil requires C++17.
+ target_compile_features(${_NAME} PUBLIC ${ABSL_INTERNAL_CXX_STD_FEATURE})
+- endif()
++ # endif()
+
+ # When being installed, we lose the absl_ prefix. We want to put it back
+ # to have properly named lib files. This is a no-op when we are not being
+@@ -322,12 +322,12 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n")
+ )
+ target_compile_definitions(${_NAME} INTERFACE ${ABSL_CC_LIB_DEFINES})
+
+- if(ABSL_PROPAGATE_CXX_STD)
++ # if(ABSL_PROPAGATE_CXX_STD)
+ # Abseil libraries require C++14 as the current minimum standard.
+ # Top-level application CMake projects should ensure a consistent C++
+ # standard for all compiled sources by setting CMAKE_CXX_STANDARD.
+ target_compile_features(${_NAME} INTERFACE ${ABSL_INTERNAL_CXX_STD_FEATURE})
+- endif()
++ # endif()
+ endif()
+
+ if(ABSL_ENABLE_INSTALL)
+@@ -434,12 +434,12 @@ function(absl_cc_test)
+ # Add all Abseil targets to a folder in the IDE for organization.
+ set_property(TARGET ${_NAME} PROPERTY FOLDER ${ABSL_IDE_FOLDER}/test)
+
+- if(ABSL_PROPAGATE_CXX_STD)
++ # if(ABSL_PROPAGATE_CXX_STD)
+ # Abseil libraries require C++14 as the current minimum standard.
+ # Top-level application CMake projects should ensure a consistent C++
+ # standard for all compiled sources by setting CMAKE_CXX_STANDARD.
+ target_compile_features(${_NAME} PUBLIC ${ABSL_INTERNAL_CXX_STD_FEATURE})
+- endif()
++ # endif()
+
+ add_test(NAME ${_NAME} COMMAND ${_NAME})
+ endfunction()
+
+diff --git a/absl/debugging/internal/examine_stack.cc b/absl/debugging/internal/examine_stack.cc
+index 68c33d4..24d9727 100644
+--- a/absl/debugging/internal/examine_stack.cc
++++ b/absl/debugging/internal/examine_stack.cc
+@@ -29,9 +29,11 @@
+ #endif
+ #endif
+
+-#if defined(__linux__) || defined(__APPLE__)
++#if !defined(__OHOS__)
++#if defined(__linux__) || defined(__APPLE__)
+ #include
+ #endif
++#endif
+
+ #if !defined(__OHOS__)
+ #include
+
+diff --git a/absl/log/internal/log_message.cc b/absl/log/internal/log_message.cc
+index 10ac245..bddc95d 100644
+--- a/absl/log/internal/log_message.cc
++++ b/absl/log/internal/log_message.cc
+@@ -315,11 +315,6 @@ LogMessage& LogMessage::ToSinkOnly(absl::LogSink* sink) {
+ return *this;
+ }
+
+-#ifdef __ELF__
+-extern "C" void __gcov_dump() ABSL_ATTRIBUTE_WEAK;
+-extern "C" void __gcov_flush() ABSL_ATTRIBUTE_WEAK;
+-#endif
+-
+ void LogMessage::FailWithoutStackTrace() {
+ // Now suppress repeated trace logging:
+ log_internal::SetSuppressSigabortTrace(true);
+@@ -327,16 +322,6 @@ void LogMessage::FailWithoutStackTrace() {
+ // When debugging on windows, avoid the obnoxious dialog.
+ __debugbreak();
+ #endif
+-
+-#ifdef __ELF__
+- // For b/8737634, flush coverage if we are in coverage mode.
+- if (&__gcov_dump != nullptr) {
+- __gcov_dump();
+- } else if (&__gcov_flush != nullptr) {
+- __gcov_flush();
+- }
+-#endif
+-
+ abort();
+ }
diff --git a/install_no_lock.sh b/install_no_lock.sh
index 883b635e485cd910ed4a2d3d5c4e7a5cc68bd260..0be3018d884b97228f4abc8763ecfed6c804901b 100755
--- a/install_no_lock.sh
+++ b/install_no_lock.sh
@@ -18,5 +18,6 @@ patch -p1 < $1/abseil-cpp-20210324.2-sw.patch
patch -p1 < $1/0001-add-loongarch-suopport-for-abseil-cpp.patch
patch -p1 < $1/0002-PR-1644-unscaledcycleclock-remove-RISC-V-support.patch
patch -p1 < $1/fix-mingw-complier-error.patch
+patch -p1 < $1/adapter-ohos.patch
patch -p1 < $1/backport-CVE-2025-0838.patch
exit 0