From 705a1eaff621bef7adc2a3ff8fb1f4155534b10a Mon Sep 17 00:00:00 2001
From: Sergey Fedorov <vital.had@gmail.com>
Date: Thu, 25 Jun 2026 11:49:51 +0800
Subject: [PATCH] Restore mac32 defs

---
 src/tbb/def/mac32-tbb.def             | 170 ++++++++++++++++++++++++++
 src/tbbbind/def/mac32-tbbbind.def     |  19 +++
 src/tbbmalloc/def/mac32-tbbmalloc.def |  44 +++++++
 3 files changed, 236 insertions(+)
 create mode 100644 src/tbb/def/mac32-tbb.def
 create mode 100644 src/tbbbind/def/mac32-tbbbind.def
 create mode 100644 src/tbbmalloc/def/mac32-tbbmalloc.def

diff --git src/tbb/def/mac32-tbb.def src/tbb/def/mac32-tbb.def
new file mode 100644
index 00000000..9cd929b6
--- /dev/null
+++ src/tbb/def/mac32-tbb.def
@@ -0,0 +1,164 @@
+# Copyright (c) 2005-2025 Intel Corporation
+# Copyright (c) 2025 UXL Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+# TODO: check the legacy comment below, currently use extra leading underscore everywhere.
+# Sometimes macOS* requires leading underscore (e. g. in export list file), but sometimes not
+# (e. g. when searching symbol in a dynamic library via dlsym()). Symbols in this file SHOULD
+# be listed WITHOUT one leading underscore. __TBB_SYMBOL macro should add underscore when
+# necessary, depending on the intended usage.
+
+# Assertions (assert.cpp)
+__ZN3tbb6detail2r117assertion_failureEPKciS3_S3_
+__ZN3tbb6detail2r121set_assertion_handlerEPFvPKciS3_S3_E
+__ZN3tbb6detail2r121get_assertion_handlerEv
+
+# ITT (profiling.cpp)
+__ZN3tbb6detail2r112itt_task_endENS0_2d115itt_domain_enumE
+__ZN3tbb6detail2r114itt_region_endENS0_2d115itt_domain_enumEPvy
+__ZN3tbb6detail2r114itt_task_beginENS0_2d115itt_domain_enumEPvyS4_yNS0_2d021string_resource_indexE
+__ZN3tbb6detail2r115call_itt_notifyEiPv
+__ZN3tbb6detail2r115create_itt_syncEPvPKcS4_
+__ZN3tbb6detail2r116itt_region_beginENS0_2d115itt_domain_enumEPvyS4_yNS0_2d021string_resource_indexE
+__ZN3tbb6detail2r116itt_relation_addENS0_2d115itt_domain_enumEPvyNS0_2d012itt_relationES4_y
+__ZN3tbb6detail2r117itt_set_sync_nameEPvPKc
+__ZN3tbb6detail2r119itt_make_task_groupENS0_2d115itt_domain_enumEPvyS4_yNS0_2d021string_resource_indexE
+__ZN3tbb6detail2r120itt_metadata_str_addENS0_2d115itt_domain_enumEPvyNS0_2d021string_resource_indexEPKc
+__ZN3tbb6detail2r120itt_metadata_ptr_addENS0_2d115itt_domain_enumEPvyNS0_2d021string_resource_indexES4_
+
+# Allocators (allocator.cpp)
+__ZN3tbb6detail2r115allocate_memoryEm
+__ZN3tbb6detail2r117deallocate_memoryEPv
+__ZN3tbb6detail2r122cache_aligned_allocateEm
+__ZN3tbb6detail2r124cache_aligned_deallocateEPv
+__ZN3tbb6detail2r115cache_line_sizeEv
+__ZN3tbb6detail2r117is_tbbmalloc_usedEv
+
+# Small object pool (small_object_pool.cpp)
+__ZN3tbb6detail2r18allocateERPNS0_2d117small_object_poolEm
+__ZN3tbb6detail2r18allocateERPNS0_2d117small_object_poolEmRKNS2_14execution_dataE
+__ZN3tbb6detail2r110deallocateERNS0_2d117small_object_poolEPvm
+__ZN3tbb6detail2r110deallocateERNS0_2d117small_object_poolEPvmRKNS2_14execution_dataE
+
+# Error handling (exception.cpp)
+__ZN3tbb6detail2r115throw_exceptionENS0_2d012exception_idE
+__ZTIN3tbb6detail2r114bad_last_allocE
+__ZTVN3tbb6detail2r114bad_last_allocE
+__ZTIN3tbb6detail2r112missing_waitE
+__ZTVN3tbb6detail2r112missing_waitE
+__ZTIN3tbb6detail2r110user_abortE
+__ZTVN3tbb6detail2r110user_abortE
+__ZTIN3tbb6detail2r111unsafe_waitE
+__ZTVN3tbb6detail2r111unsafe_waitE
+
+# RTM Mutex (rtm_mutex.cpp)
+__ZN3tbb6detail2r17acquireERNS0_2d19rtm_mutexERNS3_11scoped_lockEb
+__ZN3tbb6detail2r17releaseERNS0_2d19rtm_mutex11scoped_lockE
+__ZN3tbb6detail2r111try_acquireERNS0_2d19rtm_mutexERNS3_11scoped_lockE
+
+# RTM RW Mutex (rtm_rw_mutex.cpp)
+__ZN3tbb6detail2r114acquire_readerERNS0_2d112rtm_rw_mutexERNS3_11scoped_lockEb
+__ZN3tbb6detail2r114acquire_writerERNS0_2d112rtm_rw_mutexERNS3_11scoped_lockEb
+__ZN3tbb6detail2r118try_acquire_readerERNS0_2d112rtm_rw_mutexERNS3_11scoped_lockE
+__ZN3tbb6detail2r118try_acquire_writerERNS0_2d112rtm_rw_mutexERNS3_11scoped_lockE
+__ZN3tbb6detail2r17releaseERNS0_2d112rtm_rw_mutex11scoped_lockE
+__ZN3tbb6detail2r17upgradeERNS0_2d112rtm_rw_mutex11scoped_lockE
+__ZN3tbb6detail2r19downgradeERNS0_2d112rtm_rw_mutex11scoped_lockE
+
+# Tasks and partitioners (task.cpp)
+__ZN3tbb6detail2r17suspendEPFvPvPNS1_18suspend_point_typeEES2_
+__ZN3tbb6detail2r16resumeEPNS1_18suspend_point_typeE
+__ZN3tbb6detail2r121current_suspend_pointEv
+__ZN3tbb6detail2r114notify_waitersEm
+__ZN3tbb6detail2r127get_thread_reference_vertexEPNS0_2d126wait_tree_vertex_interfaceE
+__ZN3tbb6detail2r116current_task_ptrEv
+
+# Task dispatcher (task_dispatcher.cpp)
+__ZN3tbb6detail2r114execution_slotEPKNS0_2d114execution_dataE
+__ZN3tbb6detail2r14waitERNS0_2d112wait_contextERNS2_18task_group_contextE
+__ZN3tbb6detail2r15spawnERNS0_2d14taskERNS2_18task_group_contextE
+__ZN3tbb6detail2r15spawnERNS0_2d14taskERNS2_18task_group_contextEt
+__ZN3tbb6detail2r116execute_and_waitERNS0_2d14taskERNS2_18task_group_contextERNS2_12wait_contextES6_
+__ZN3tbb6detail2r16submitERNS0_2d14taskERNS2_18task_group_contextEPNS1_5arenaEm
+__ZN3tbb6detail2r115current_contextEv
+
+# Task group context (task_group_context.cpp)
+__ZN3tbb6detail2r110initializeERNS0_2d118task_group_contextE
+__ZN3tbb6detail2r122cancel_group_executionERNS0_2d118task_group_contextE
+__ZN3tbb6detail2r128is_group_execution_cancelledERNS0_2d118task_group_contextE
+__ZN3tbb6detail2r15resetERNS0_2d118task_group_contextE
+__ZN3tbb6detail2r17destroyERNS0_2d118task_group_contextE
+__ZN3tbb6detail2r119capture_fp_settingsERNS0_2d118task_group_contextE
+
+# Task arena (arena.cpp)
+__ZN3tbb6detail2r115max_concurrencyEPKNS0_2d115task_arena_baseE
+__ZN3tbb6detail2r110initializeERNS0_2d115task_arena_baseE
+__ZN3tbb6detail2r16attachERNS0_2d115task_arena_baseE
+__ZN3tbb6detail2r17executeERNS0_2d115task_arena_baseERNS2_13delegate_baseE
+__ZN3tbb6detail2r19terminateERNS0_2d115task_arena_baseE
+__ZN3tbb6detail2r120isolate_within_arenaERNS0_2d113delegate_baseEl
+__ZN3tbb6detail2r17enqueueERNS0_2d14taskEPNS2_15task_arena_baseE
+__ZN3tbb6detail2r17enqueueERNS0_2d14taskERNS2_18task_group_contextEPNS2_15task_arena_baseE
+__ZN3tbb6detail2r14waitERNS0_2d115task_arena_baseE
+__ZN3tbb6detail2r114execution_slotERKNS0_2d115task_arena_baseE
+__ZN3tbb6detail2r119exit_parallel_phaseEPNS0_2d115task_arena_baseEm
+__ZN3tbb6detail2r120enter_parallel_phaseEPNS0_2d115task_arena_baseEm
+
+# System topology parsing and threads pinning (governor.cpp)
+__ZN3tbb6detail2r115numa_node_countEv
+__ZN3tbb6detail2r117fill_numa_indicesEPi
+__ZN3tbb6detail2r115core_type_countEl
+__ZN3tbb6detail2r122fill_core_type_indicesEPil
+__ZN3tbb6detail2r131constraints_default_concurrencyERKNS0_2d111constraintsEl
+__ZN3tbb6detail2r128constraints_threads_per_coreERKNS0_2d111constraintsEl
+__ZN3tbb6detail2r124numa_default_concurrencyEi
+
+# Interleaved memory allocation (numa_allocation.cpp)
+__ZN3tbb6detail2r120allocate_interleavedEmPKimm
+__ZN3tbb6detail2r122deallocate_interleavedEPvm
+
+# Observer (observer_proxy.cpp)
+__ZN3tbb6detail2r17observeERNS0_2d123task_scheduler_observerEb
+
+# Queuing RW Mutex (queuing_rw_mutex.cpp)
+__ZN3tbb6detail2r111try_acquireERNS0_2d116queuing_rw_mutexERNS3_11scoped_lockEb
+__ZN3tbb6detail2r117upgrade_to_writerERNS0_2d116queuing_rw_mutex11scoped_lockE
+__ZN3tbb6detail2r119downgrade_to_readerERNS0_2d116queuing_rw_mutex11scoped_lockE
+__ZN3tbb6detail2r17acquireERNS0_2d116queuing_rw_mutexERNS3_11scoped_lockEb
+__ZN3tbb6detail2r17releaseERNS0_2d116queuing_rw_mutex11scoped_lockE
+__ZN3tbb6detail2r19constructERNS0_2d116queuing_rw_mutexE
+__ZN3tbb6detail2r19is_writerERKNS0_2d116queuing_rw_mutex11scoped_lockE
+
+# Global control (global_control.cpp)
+__ZN3tbb6detail2r16createERNS0_2d114global_controlE
+__ZN3tbb6detail2r17destroyERNS0_2d114global_controlE
+__ZN3tbb6detail2r127global_control_active_valueEi
+__ZN3tbb6detail2r18finalizeERNS0_2d121task_scheduler_handleEl
+__ZN3tbb6detail2r13getERNS0_2d121task_scheduler_handleE
+
+# Parallel pipeline (parallel_pipeline.cpp)
+__ZN3tbb6detail2r117parallel_pipelineERNS0_2d118task_group_contextEmRKNS2_11filter_nodeE
+__ZN3tbb6detail2r116set_end_of_inputERNS0_2d111base_filterE
+
+# Concurrent bounded queue (concurrent_bounded_queue.cpp)
+__ZN3tbb6detail2r126allocate_bounded_queue_repEm
+__ZN3tbb6detail2r126wait_bounded_queue_monitorEPNS1_18concurrent_monitorEmiRNS0_2d113delegate_baseE
+__ZN3tbb6detail2r128abort_bounded_queue_monitorsEPNS1_18concurrent_monitorE
+__ZN3tbb6detail2r128deallocate_bounded_queue_repEPhm
+__ZN3tbb6detail2r128notify_bounded_queue_monitorEPNS1_18concurrent_monitorEmm
+
+# Concurrent monitor (address_waiter.cpp)
+__ZN3tbb6detail2r115wait_on_addressEPvRNS0_2d113delegate_baseEm
+__ZN3tbb6detail2r117notify_by_addressEPvm
+__ZN3tbb6detail2r121notify_by_address_oneEPv
+__ZN3tbb6detail2r121notify_by_address_allEPv
+
+# Versioning (version.cpp)
+_TBB_runtime_interface_version
+_TBB_runtime_version
diff --git src/tbbbind/def/mac32-tbbbind.def src/tbbbind/def/mac32-tbbbind.def
new file mode 100644
index 00000000..eb179a68
--- /dev/null
+++ src/tbbbind/def/mac32-tbbbind.def
@@ -0,0 +1,19 @@
+# Copyright (c) 2023-2025 Intel Corporation
+# Copyright (c) 2025 UXL Foundation Contributors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+___TBB_internal_initialize_system_topology
+___TBB_internal_get_default_concurrency
+___TBB_internal_destroy_system_topology
+___TBB_internal_set_tbbbind_assertion_handler
diff --git src/tbbmalloc/def/mac32-tbbmalloc.def src/tbbmalloc/def/mac32-tbbmalloc.def
new file mode 100644
index 00000000..71253e0a
--- /dev/null
+++ src/tbbmalloc/def/mac32-tbbmalloc.def
@@ -0,0 +1,44 @@
+# Copyright (c) 2005-2021 Intel Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+_scalable_calloc
+_scalable_free
+_scalable_malloc
+_scalable_realloc
+_scalable_posix_memalign
+_scalable_aligned_malloc
+_scalable_aligned_realloc
+_scalable_aligned_free
+_scalable_msize
+_scalable_allocation_mode
+_scalable_allocation_command
+___TBB_malloc_safer_aligned_msize
+___TBB_malloc_safer_aligned_realloc
+___TBB_malloc_safer_free
+___TBB_malloc_safer_msize
+___TBB_malloc_safer_realloc
+___TBB_malloc_free_definite_size
+/* memory pool stuff */
+__ZN3rml11pool_createElPKNS_13MemPoolPolicyE
+__ZN3rml14pool_create_v1ElPKNS_13MemPoolPolicyEPPNS_10MemoryPoolE
+__ZN3rml10pool_resetEPNS_10MemoryPoolE
+__ZN3rml12pool_destroyEPNS_10MemoryPoolE
+__ZN3rml11pool_mallocEPNS_10MemoryPoolEm
+__ZN3rml9pool_freeEPNS_10MemoryPoolEPv
+__ZN3rml12pool_reallocEPNS_10MemoryPoolEPvm
+__ZN3rml20pool_aligned_reallocEPNS_10MemoryPoolEPvmm
+__ZN3rml19pool_aligned_mallocEPNS_10MemoryPoolEmm
+__ZN3rml13pool_identifyEPv
+__ZN3rml10pool_msizeEPNS_10MemoryPoolEPv
+
