# Copyright 2005-2010 Intel Corporation.  All Rights Reserved.
#
# This file is part of Threading Building Blocks.
#
# Threading Building Blocks is free software; you can redistribute it
# and/or modify it under the terms of the GNU General Public License
# version 2 as published by the Free Software Foundation.
#
# Threading Building Blocks is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Threading Building Blocks; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
#
# As a special exception, you may use this file as part of a free software
# library without restriction.  Specifically, if other files instantiate
# templates or use macros or inline functions from this file, or you compile
# this file and link it with other files to produce an executable, this
# file does not by itself cause the resulting executable to be covered by
# the GNU General Public License.  This exception does not however
# invalidate any other reasons why the executable file might be covered by
# the GNU General Public License.

# cache_aligned_allocator.cpp
__ZN3tbb8internal12NFS_AllocateEmmPv
__ZN3tbb8internal15NFS_GetLineSizeEv
__ZN3tbb8internal8NFS_FreeEPv
__ZN3tbb8internal23allocate_via_handler_v3Em
__ZN3tbb8internal25deallocate_via_handler_v3EPv
__ZN3tbb8internal17is_malloc_used_v3Ev

# task.cpp v3
__ZN3tbb4task13note_affinityEt
__ZN3tbb4task22internal_set_ref_countEi
__ZN3tbb4task28internal_decrement_ref_countEv
__ZN3tbb4task22spawn_and_wait_for_allERNS_9task_listE
__ZN3tbb4task4selfEv
__ZN3tbb10interface58internal9task_base7destroyERNS_4taskE
__ZNK3tbb4task26is_owned_by_current_threadEv
__ZN3tbb8internal19allocate_root_proxy4freeERNS_4taskE
__ZN3tbb8internal19allocate_root_proxy8allocateEm
__ZN3tbb8internal28affinity_partitioner_base_v36resizeEj
__ZN3tbb8internal36get_initial_auto_partitioner_divisorEv
__ZNK3tbb8internal20allocate_child_proxy4freeERNS_4taskE
__ZNK3tbb8internal20allocate_child_proxy8allocateEm
__ZNK3tbb8internal27allocate_continuation_proxy4freeERNS_4taskE
__ZNK3tbb8internal27allocate_continuation_proxy8allocateEm
__ZNK3tbb8internal34allocate_additional_child_of_proxy4freeERNS_4taskE
__ZNK3tbb8internal34allocate_additional_child_of_proxy8allocateEm
__ZTIN3tbb4taskE
__ZTSN3tbb4taskE
__ZTVN3tbb4taskE
__ZN3tbb19task_scheduler_init19default_num_threadsEv
__ZN3tbb19task_scheduler_init10initializeEim
__ZN3tbb19task_scheduler_init10initializeEi
__ZN3tbb19task_scheduler_init9terminateEv
__ZN3tbb8internal26task_scheduler_observer_v37observeEb
__ZN3tbb10empty_task7executeEv
__ZN3tbb10empty_taskD0Ev
__ZN3tbb10empty_taskD1Ev
__ZTIN3tbb10empty_taskE
__ZTSN3tbb10empty_taskE
__ZTVN3tbb10empty_taskE

#if !TBB_NO_LEGACY
# task_v2.cpp
__ZN3tbb4task7destroyERS0_
#endif

# Exception handling in task scheduler
__ZNK3tbb8internal32allocate_root_with_context_proxy8allocateEm
__ZNK3tbb8internal32allocate_root_with_context_proxy4freeERNS_4taskE
__ZNK3tbb18task_group_context28is_group_execution_cancelledEv
__ZN3tbb18task_group_context22cancel_group_executionEv
__ZN3tbb18task_group_context26register_pending_exceptionEv
__ZN3tbb18task_group_context5resetEv
__ZN3tbb18task_group_context4initEv
__ZN3tbb18task_group_contextD1Ev
__ZN3tbb18task_group_contextD2Ev
__ZNK3tbb18captured_exception4nameEv
__ZNK3tbb18captured_exception4whatEv
__ZN3tbb18captured_exception10throw_selfEv
__ZN3tbb18captured_exception3setEPKcS2_
__ZN3tbb18captured_exception4moveEv
__ZN3tbb18captured_exception5clearEv
__ZN3tbb18captured_exception7destroyEv
__ZN3tbb18captured_exception8allocateEPKcS2_
__ZN3tbb18captured_exceptionD0Ev
__ZN3tbb18captured_exceptionD1Ev
__ZTIN3tbb18captured_exceptionE
__ZTSN3tbb18captured_exceptionE
__ZTVN3tbb18captured_exceptionE
__ZTIN3tbb13tbb_exceptionE
__ZTSN3tbb13tbb_exceptionE
__ZTVN3tbb13tbb_exceptionE

# Symbols for exceptions thrown from TBB
__ZN3tbb8internal33throw_bad_last_alloc_exception_v4Ev
__ZN3tbb8internal18throw_exception_v4ENS0_12exception_idE
__ZNSt13runtime_errorD1Ev
__ZTISt13runtime_error
__ZTSSt13runtime_error
__ZNSt16invalid_argumentD1Ev
__ZTISt16invalid_argument
__ZTSSt16invalid_argument
__ZNSt11range_errorD1Ev
__ZTISt11range_error
__ZTSSt11range_error
__ZNSt12length_errorD1Ev
__ZTISt12length_error
__ZTSSt12length_error
__ZNSt12out_of_rangeD1Ev
__ZTISt12out_of_range
__ZTSSt12out_of_range
__ZN3tbb14bad_last_allocD0Ev
__ZN3tbb14bad_last_allocD1Ev
__ZNK3tbb14bad_last_alloc4whatEv
__ZTIN3tbb14bad_last_allocE
__ZTSN3tbb14bad_last_allocE
__ZTVN3tbb14bad_last_allocE
__ZN3tbb12missing_waitD0Ev
__ZN3tbb12missing_waitD1Ev
__ZNK3tbb12missing_wait4whatEv
__ZTIN3tbb12missing_waitE
__ZTSN3tbb12missing_waitE
__ZTVN3tbb12missing_waitE
__ZN3tbb27invalid_multiple_schedulingD0Ev
__ZN3tbb27invalid_multiple_schedulingD1Ev
__ZNK3tbb27invalid_multiple_scheduling4whatEv
__ZTIN3tbb27invalid_multiple_schedulingE
__ZTSN3tbb27invalid_multiple_schedulingE
__ZTVN3tbb27invalid_multiple_schedulingE
__ZN3tbb13improper_lockD0Ev
__ZN3tbb13improper_lockD1Ev
__ZNK3tbb13improper_lock4whatEv
__ZTIN3tbb13improper_lockE
__ZTSN3tbb13improper_lockE
__ZTVN3tbb13improper_lockE

# tbb_misc.cpp
__ZN3tbb17assertion_failureEPKciS1_S1_
__ZN3tbb21set_assertion_handlerEPFvPKciS1_S1_E
__ZN3tbb8internal13handle_perrorEiPKc
__ZN3tbb8internal15runtime_warningEPKcz
#ifndef __POWERPC__
___TBB_machine_store8_slow_perf_warning
___TBB_machine_store8_slow
#endif
_TBB_runtime_interface_version

# itt_notify.cpp
__ZN3tbb8internal32itt_load_pointer_with_acquire_v3EPKv
__ZN3tbb8internal33itt_store_pointer_with_release_v3EPvS1_
__ZN3tbb8internal19itt_load_pointer_v3EPKv
__ZN3tbb8internal20itt_set_sync_name_v3EPvPKc

# pipeline.cpp
__ZTIN3tbb6filterE
__ZTSN3tbb6filterE
__ZTVN3tbb6filterE
__ZN3tbb6filterD2Ev
__ZN3tbb8pipeline10add_filterERNS_6filterE
__ZN3tbb8pipeline12inject_tokenERNS_4taskE
__ZN3tbb8pipeline13remove_filterERNS_6filterE
__ZN3tbb8pipeline3runEm
__ZN3tbb8pipeline3runEmRNS_18task_group_contextE
__ZN3tbb8pipeline5clearEv
__ZN3tbb19thread_bound_filter12process_itemEv
__ZN3tbb19thread_bound_filter16try_process_itemEv
__ZN3tbb8pipelineC1Ev
__ZN3tbb8pipelineC2Ev
__ZN3tbb8pipelineD0Ev
__ZN3tbb8pipelineD1Ev
__ZN3tbb8pipelineD2Ev
__ZTIN3tbb8pipelineE
__ZTSN3tbb8pipelineE
__ZTVN3tbb8pipelineE

# queuing_rw_mutex.cpp
__ZN3tbb16queuing_rw_mutex11scoped_lock17upgrade_to_writerEv
__ZN3tbb16queuing_rw_mutex11scoped_lock19downgrade_to_readerEv
__ZN3tbb16queuing_rw_mutex11scoped_lock7acquireERS0_b
__ZN3tbb16queuing_rw_mutex11scoped_lock7releaseEv
__ZN3tbb16queuing_rw_mutex11scoped_lock11try_acquireERS0_b
__ZN3tbb16queuing_rw_mutex18internal_constructEv

# reader_writer_lock.cpp
__ZN3tbb10interface518reader_writer_lock11scoped_lock16internal_destroyEv
__ZN3tbb10interface518reader_writer_lock11scoped_lock18internal_constructERS1_
__ZN3tbb10interface518reader_writer_lock13try_lock_readEv
__ZN3tbb10interface518reader_writer_lock16scoped_lock_read16internal_destroyEv
__ZN3tbb10interface518reader_writer_lock16scoped_lock_read18internal_constructERS1_
__ZN3tbb10interface518reader_writer_lock16internal_destroyEv
__ZN3tbb10interface518reader_writer_lock18internal_constructEv
__ZN3tbb10interface518reader_writer_lock4lockEv
__ZN3tbb10interface518reader_writer_lock6unlockEv
__ZN3tbb10interface518reader_writer_lock8try_lockEv
__ZN3tbb10interface518reader_writer_lock9lock_readEv

#if !TBB_NO_LEGACY
# spin_rw_mutex.cpp v2
__ZN3tbb13spin_rw_mutex16internal_upgradeEPS0_
__ZN3tbb13spin_rw_mutex22internal_itt_releasingEPS0_
__ZN3tbb13spin_rw_mutex23internal_acquire_readerEPS0_
__ZN3tbb13spin_rw_mutex23internal_acquire_writerEPS0_
__ZN3tbb13spin_rw_mutex18internal_downgradeEPS0_
__ZN3tbb13spin_rw_mutex23internal_release_readerEPS0_
__ZN3tbb13spin_rw_mutex23internal_release_writerEPS0_
__ZN3tbb13spin_rw_mutex27internal_try_acquire_readerEPS0_
__ZN3tbb13spin_rw_mutex27internal_try_acquire_writerEPS0_
#endif

# spin_rw_mutex v3
__ZN3tbb16spin_rw_mutex_v316internal_upgradeEv
__ZN3tbb16spin_rw_mutex_v318internal_downgradeEv
__ZN3tbb16spin_rw_mutex_v323internal_acquire_readerEv
__ZN3tbb16spin_rw_mutex_v323internal_acquire_writerEv
__ZN3tbb16spin_rw_mutex_v323internal_release_readerEv
__ZN3tbb16spin_rw_mutex_v323internal_release_writerEv
__ZN3tbb16spin_rw_mutex_v327internal_try_acquire_readerEv
__ZN3tbb16spin_rw_mutex_v327internal_try_acquire_writerEv
__ZN3tbb16spin_rw_mutex_v318internal_constructEv

# spin_mutex.cpp
__ZN3tbb10spin_mutex11scoped_lock16internal_acquireERS0_
__ZN3tbb10spin_mutex11scoped_lock16internal_releaseEv
__ZN3tbb10spin_mutex11scoped_lock20internal_try_acquireERS0_
__ZN3tbb10spin_mutex18internal_constructEv

# mutex.cpp
__ZN3tbb5mutex11scoped_lock16internal_acquireERS0_
__ZN3tbb5mutex11scoped_lock16internal_releaseEv
__ZN3tbb5mutex11scoped_lock20internal_try_acquireERS0_
__ZN3tbb5mutex16internal_destroyEv
__ZN3tbb5mutex18internal_constructEv

# recursive_mutex.cpp
__ZN3tbb15recursive_mutex11scoped_lock16internal_acquireERS0_
__ZN3tbb15recursive_mutex11scoped_lock16internal_releaseEv
__ZN3tbb15recursive_mutex11scoped_lock20internal_try_acquireERS0_
__ZN3tbb15recursive_mutex16internal_destroyEv
__ZN3tbb15recursive_mutex18internal_constructEv

# queuing_mutex.cpp
__ZN3tbb13queuing_mutex11scoped_lock7acquireERS0_
__ZN3tbb13queuing_mutex11scoped_lock7releaseEv
__ZN3tbb13queuing_mutex11scoped_lock11try_acquireERS0_
__ZN3tbb13queuing_mutex18internal_constructEv

# critical_section.cpp
__ZN3tbb8internal19critical_section_v418internal_constructEv

#if !TBB_NO_LEGACY
# concurrent_hash_map
__ZNK3tbb8internal21hash_map_segment_base23internal_grow_predicateEv

# concurrent_queue.cpp v2
__ZN3tbb8internal21concurrent_queue_base12internal_popEPv
__ZN3tbb8internal21concurrent_queue_base13internal_pushEPKv
__ZN3tbb8internal21concurrent_queue_base21internal_set_capacityEim
__ZN3tbb8internal21concurrent_queue_base23internal_pop_if_presentEPv
__ZN3tbb8internal21concurrent_queue_base25internal_push_if_not_fullEPKv
__ZN3tbb8internal21concurrent_queue_baseC2Em
__ZN3tbb8internal21concurrent_queue_baseD2Ev
__ZTIN3tbb8internal21concurrent_queue_baseE
__ZTSN3tbb8internal21concurrent_queue_baseE
__ZTVN3tbb8internal21concurrent_queue_baseE
__ZN3tbb8internal30concurrent_queue_iterator_base6assignERKS1_
__ZN3tbb8internal30concurrent_queue_iterator_base7advanceEv
__ZN3tbb8internal30concurrent_queue_iterator_baseC2ERKNS0_21concurrent_queue_baseE
__ZN3tbb8internal30concurrent_queue_iterator_baseD2Ev
__ZNK3tbb8internal21concurrent_queue_base13internal_sizeEv
#endif

# concurrent_queue v3
# constructors
__ZN3tbb8internal33concurrent_queue_iterator_base_v3C2ERKNS0_24concurrent_queue_base_v3E
__ZN3tbb8internal33concurrent_queue_iterator_base_v3C2ERKNS0_24concurrent_queue_base_v3Em
__ZN3tbb8internal24concurrent_queue_base_v3C2Em
# destructors
__ZN3tbb8internal33concurrent_queue_iterator_base_v3D2Ev
__ZN3tbb8internal24concurrent_queue_base_v3D2Ev
# typeinfo
__ZTIN3tbb8internal24concurrent_queue_base_v3E
__ZTSN3tbb8internal24concurrent_queue_base_v3E
#vtable
__ZTVN3tbb8internal24concurrent_queue_base_v3E
# methods
__ZN3tbb8internal33concurrent_queue_iterator_base_v37advanceEv
__ZN3tbb8internal33concurrent_queue_iterator_base_v36assignERKS1_
__ZN3tbb8internal24concurrent_queue_base_v313internal_pushEPKv
__ZN3tbb8internal24concurrent_queue_base_v325internal_push_if_not_fullEPKv
__ZN3tbb8internal24concurrent_queue_base_v312internal_popEPv
__ZN3tbb8internal24concurrent_queue_base_v323internal_pop_if_presentEPv
__ZN3tbb8internal24concurrent_queue_base_v321internal_set_capacityEim
__ZNK3tbb8internal24concurrent_queue_base_v313internal_sizeEv
__ZNK3tbb8internal24concurrent_queue_base_v314internal_emptyEv
__ZN3tbb8internal24concurrent_queue_base_v321internal_finish_clearEv
__ZNK3tbb8internal24concurrent_queue_base_v324internal_throw_exceptionEv
__ZN3tbb8internal24concurrent_queue_base_v36assignERKS1_

#if !TBB_NO_LEGACY
# concurrent_vector.cpp v2
__ZN3tbb8internal22concurrent_vector_base13internal_copyERKS1_mPFvPvPKvmE
__ZN3tbb8internal22concurrent_vector_base14internal_clearEPFvPvmEb
__ZN3tbb8internal22concurrent_vector_base15internal_assignERKS1_mPFvPvmEPFvS4_PKvmESA_
__ZN3tbb8internal22concurrent_vector_base16internal_grow_byEmmPFvPvmE
__ZN3tbb8internal22concurrent_vector_base16internal_reserveEmmm
__ZN3tbb8internal22concurrent_vector_base18internal_push_backEmRm
__ZN3tbb8internal22concurrent_vector_base25internal_grow_to_at_leastEmmPFvPvmE
__ZNK3tbb8internal22concurrent_vector_base17internal_capacityEv
#endif

# concurrent_vector v3
__ZN3tbb8internal25concurrent_vector_base_v313internal_copyERKS1_mPFvPvPKvmE
__ZN3tbb8internal25concurrent_vector_base_v314internal_clearEPFvPvmE
__ZN3tbb8internal25concurrent_vector_base_v315internal_assignERKS1_mPFvPvmEPFvS4_PKvmESA_
__ZN3tbb8internal25concurrent_vector_base_v316internal_grow_byEmmPFvPvPKvmES4_
__ZN3tbb8internal25concurrent_vector_base_v316internal_reserveEmmm
__ZN3tbb8internal25concurrent_vector_base_v318internal_push_backEmRm
__ZN3tbb8internal25concurrent_vector_base_v325internal_grow_to_at_leastEmmPFvPvPKvmES4_
__ZNK3tbb8internal25concurrent_vector_base_v317internal_capacityEv
__ZN3tbb8internal25concurrent_vector_base_v316internal_compactEmPvPFvS2_mEPFvS2_PKvmE
__ZN3tbb8internal25concurrent_vector_base_v313internal_swapERS1_
__ZNK3tbb8internal25concurrent_vector_base_v324internal_throw_exceptionEm
__ZN3tbb8internal25concurrent_vector_base_v3D2Ev
__ZN3tbb8internal25concurrent_vector_base_v315internal_resizeEmmmPKvPFvPvmEPFvS4_S3_mE
__ZN3tbb8internal25concurrent_vector_base_v337internal_grow_to_at_least_with_resultEmmPFvPvPKvmES4_

# tbb_thread
__ZN3tbb8internal13tbb_thread_v314internal_startEPFPvS2_ES2_
__ZN3tbb8internal13tbb_thread_v320hardware_concurrencyEv
__ZN3tbb8internal13tbb_thread_v34joinEv
__ZN3tbb8internal13tbb_thread_v36detachEv
__ZN3tbb8internal15free_closure_v3EPv
__ZN3tbb8internal15thread_sleep_v3ERKNS_10tick_count10interval_tE
__ZN3tbb8internal15thread_yield_v3Ev
__ZN3tbb8internal16thread_get_id_v3Ev
__ZN3tbb8internal19allocate_closure_v3Em
__ZN3tbb8internal7move_v3ERNS0_13tbb_thread_v3ES2_
