Created attachment 366780 [details] build log # ldd -r /usr/lib64/libecl.so > /dev/null undefined symbol: GC_start_call_back (/usr/lib64/libecl.so) undefined symbol: GC_print_stats (/usr/lib64/libecl.so) It seems the set of symbols exporte by libgc.so got reduced. The trigger for this appears to be the following commit, which adds -fvisibility=hidden to CFLAGS: https://github.com/ivmai/bdwgc/commit/d6f15183b4064af11ce78cbf8a55edb04ad4a672 Remerging fails: libeclmin.a(alloc_2.o): In function `init_alloc': /var/tmp/portage/dev-lisp/ecls-13.5.1/work/ecl-13.5.1/src/c/alloc_2.d:1093: undefined reference to `GC_start_call_back' libeclmin.a(alloc_2.o): In function `si_gc_stats': /var/tmp/portage/dev-lisp/ecls-13.5.1/work/ecl-13.5.1/src/c/alloc_2.d:1216: undefined reference to `GC_print_stats' /var/tmp/portage/dev-lisp/ecls-13.5.1/work/ecl-13.5.1/src/c/alloc_2.d:1239: undefined reference to `GC_print_stats' /var/tmp/portage/dev-lisp/ecls-13.5.1/work/ecl-13.5.1/src/c/alloc_2.d:1232: undefined reference to `GC_print_stats' collect2: error: ld returned 1 exit status Makefile:79: recipe for target 'ecl_min' failed https://github.com/ivmai/bdwgc/commit/86a4ee915f3dcd4241882e4ff9b8564b56714451 looks like we should rather use a setter function to set GC_start_call_back. GC_print_stats is controlled by an environment variable, and I see no setter function for that. So I can think of several solutions: 1. Add a setter function to boehm-gc sources 2. Mark the symbol as exported in boehm-gc source code 3. Drop the --disable-static configure option in the boehm-gc ebuild 4. Modify boehm-gc configure script to omit that compiler flag in all cases 5. Declare the external symbol weak in ecls to avoid linker errors 6. Find some other way to not rely on that symbol in ecls Option 3 provides a workaround for now: USE=static-libs emerge -1 boehm-gc
Created attachment 366784 [details, diff] Fix from ecl upstream Upstream has already committed a fix for these issues: http://sourceforge.net/p/ecls/ecl/ci/6b754564f1d1a2d320b1fd46f0c0da2e623862c1/ It applies cleanly to ecl 13.5.1. I suggest including this in a revbumped ebuild. Since the setter function used to distinguish the cases has been around quite some time, it should produce a package even if ecls is built against an older boehm-gc and boehm-gc is updated afterwards.
*ecls-13.5.1-r1 (11 Jan 2014) 11 Jan 2014; Andrey Grozin <grozin@gentoo.org> +ecls-13.5.1-r1.ebuild, +files/13.5.1-gc74.patch: Upstream fix for building with boehm-gc-7.4, bug #496780
*** Bug 499162 has been marked as a duplicate of this bug. ***