[MacPorts] #65945: jemalloc fails on 10.5.8: Undefined symbols: _malloc_default_purgeable_zone, __Unwind_Resume using a modified MacPorts setup on 10.5 that is defaulting to use gcc11
MacPorts
noreply at macports.org
Mon Oct 10 17:47:02 UTC 2022
#65945: jemalloc fails on 10.5.8: Undefined symbols:
_malloc_default_purgeable_zone, __Unwind_Resume using a modified MacPorts
setup on 10.5 that is defaulting to use gcc11
---------------------------+-------------------------------------------
Reporter: barracuda156 | Owner: kencu
Type: defect | Status: assigned
Priority: Normal | Milestone:
Component: ports | Version: 2.7.2
Resolution: | Keywords: powerpc, leopard, snowleopard
Port: jemalloc |
---------------------------+-------------------------------------------
Comment (by kencu):
using gcc to do the link fails manually:
{{{
$ MACOSX_DEPLOYMENT_TARGET='10.5' /opt/local/bin/g++-mp-12 -shared
-Wl,-install_name,/opt/local/lib/libjemalloc.2.dylib -o
lib/libjemalloc.2.dylib src/jemalloc.pic.o src/arena.pic.o
src/background_thread.pic.o src/base.pic.o src/bin.pic.o
src/bin_info.pic.o src/bitmap.pic.o src/buf_writer.pic.o
src/cache_bin.pic.o src/ckh.pic.o src/counter.pic.o src/ctl.pic.o
src/decay.pic.o src/div.pic.o src/ecache.pic.o src/edata.pic.o
src/edata_cache.pic.o src/ehooks.pic.o src/emap.pic.o src/eset.pic.o
src/exp_grow.pic.o src/extent.pic.o src/extent_dss.pic.o
src/extent_mmap.pic.o src/fxp.pic.o src/san.pic.o src/san_bump.pic.o
src/hook.pic.o src/hpa.pic.o src/hpa_hooks.pic.o src/hpdata.pic.o
src/inspect.pic.o src/large.pic.o src/log.pic.o src/malloc_io.pic.o
src/mutex.pic.o src/nstime.pic.o src/pa.pic.o src/pa_extra.pic.o
src/pai.pic.o src/pac.pic.o src/pages.pic.o src/peak_event.pic.o
src/prof.pic.o src/prof_data.pic.o src/prof_log.pic.o
src/prof_recent.pic.o src/prof_stats.pic.o src/prof_sys.pic.o
src/psset.pic.o src/rtree.pic.o src/safety_check.pic.o src/sc.pic.o
src/sec.pic.o src/stats.pic.o src/sz.pic.o src/tcache.pic.o
src/test_hooks.pic.o src/thread_event.pic.o src/ticker.pic.o src/tsd.pic.o
src/witness.pic.o src/zone.pic.o src/jemalloc_cpp.pic.o -L/opt/local/lib
-Wl,-headerpad_max_install_names -arch x86_64 -lstdc++ -pthread
Kens-MacBook-Pro:jemalloc-5.3.0 cunningh$ MACOSX_DEPLOYMENT_TARGET='10.5'
/opt/local/bin/gcc-mp-12 -shared
-Wl,-install_name,/opt/local/lib/libjemalloc.2.dylib -o
lib/libjemalloc.2.dylib src/jemalloc.pic.o src/arena.pic.o
src/background_thread.pic.o src/base.pic.o src/bin.pic.o
src/bin_info.pic.o src/bitmap.pic.o src/buf_writer.pic.o
src/cache_bin.pic.o src/ckh.pic.o src/counter.pic.o src/ctl.pic.o
src/decay.pic.o src/div.pic.o src/ecache.pic.o src/edata.pic.o
src/edata_cache.pic.o src/ehooks.pic.o src/emap.pic.o src/eset.pic.o
src/exp_grow.pic.o src/extent.pic.o src/extent_dss.pic.o
src/extent_mmap.pic.o src/fxp.pic.o src/san.pic.o src/san_bump.pic.o
src/hook.pic.o src/hpa.pic.o src/hpa_hooks.pic.o src/hpdata.pic.o
src/inspect.pic.o src/large.pic.o src/log.pic.o src/malloc_io.pic.o
src/mutex.pic.o src/nstime.pic.o src/pa.pic.o src/pa_extra.pic.o
src/pai.pic.o src/pac.pic.o src/pages.pic.o src/peak_event.pic.o
src/prof.pic.o src/prof_data.pic.o src/prof_log.pic.o
src/prof_recent.pic.o src/prof_stats.pic.o src/prof_sys.pic.o
src/psset.pic.o src/rtree.pic.o src/safety_check.pic.o src/sc.pic.o
src/sec.pic.o src/stats.pic.o src/sz.pic.o src/tcache.pic.o
src/test_hooks.pic.o src/thread_event.pic.o src/ticker.pic.o src/tsd.pic.o
src/witness.pic.o src/zone.pic.o src/jemalloc_cpp.pic.o -L/opt/local/lib
-Wl,-headerpad_max_install_names -arch x86_64 -lstdc++ -pthread
Undefined symbols for architecture x86_64:
"__Unwind_Resume", referenced from:
__ZL9handleOOMmb in jemalloc_cpp.pic.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
}}}
but using gc++ to do the link succeeds as it should:
{{{
$ MACOSX_DEPLOYMENT_TARGET='10.5' /opt/local/bin/g++-mp-12 -shared
-Wl,-install_name,/opt/local/lib/libjemalloc.2.dylib -o
lib/libjemalloc.2.dylib src/jemalloc.pic.o src/arena.pic.o
src/background_thread.pic.o src/base.pic.o src/bin.pic.o
src/bin_info.pic.o src/bitmap.pic.o src/buf_writer.pic.o
src/cache_bin.pic.o src/ckh.pic.o src/counter.pic.o src/ctl.pic.o
src/decay.pic.o src/div.pic.o src/ecache.pic.o src/edata.pic.o
src/edata_cache.pic.o src/ehooks.pic.o src/emap.pic.o src/eset.pic.o
src/exp_grow.pic.o src/extent.pic.o src/extent_dss.pic.o
src/extent_mmap.pic.o src/fxp.pic.o src/san.pic.o src/san_bump.pic.o
src/hook.pic.o src/hpa.pic.o src/hpa_hooks.pic.o src/hpdata.pic.o
src/inspect.pic.o src/large.pic.o src/log.pic.o src/malloc_io.pic.o
src/mutex.pic.o src/nstime.pic.o src/pa.pic.o src/pa_extra.pic.o
src/pai.pic.o src/pac.pic.o src/pages.pic.o src/peak_event.pic.o
src/prof.pic.o src/prof_data.pic.o src/prof_log.pic.o
src/prof_recent.pic.o src/prof_stats.pic.o src/prof_sys.pic.o
src/psset.pic.o src/rtree.pic.o src/safety_check.pic.o src/sc.pic.o
src/sec.pic.o src/stats.pic.o src/sz.pic.o src/tcache.pic.o
src/test_hooks.pic.o src/thread_event.pic.o src/ticker.pic.o src/tsd.pic.o
src/witness.pic.o src/zone.pic.o src/jemalloc_cpp.pic.o -L/opt/local/lib
-Wl,-headerpad_max_install_names -arch x86_64 -lstdc++ -pthread
$ ls lib/*
lib/libjemalloc.2.dylib lib/libjemalloc_pic.a
}}}
and the difference is that when you use g++-mp-12 to do the link, it adds
these two extra libraries automatically, that are not added when you use
gcc-mp-12 to do the link:
{{
-lgcc_s.1.1 -lgcc_s.10.5
}}}
So, as expected above, the issue is being caused by the build using the
GCC C compiler instead of the GCC C++ compiler to link code that uses c++.
--
Ticket URL: <https://trac.macports.org/ticket/65945#comment:12>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list