On 11 Dec 2023, at 16:03, Kristof Provost <[email protected]> wrote:
> On 8 Dec 2023, at 18:39, Dimitry Andric wrote:
> The branch main has been updated by dim:
> 
> URL: 
> https://cgit.FreeBSD.org/src/commit/?id=5c16e71d30c388dd43b217de10a3ccb4b0219d0d
>  
> <https://cgit.freebsd.org/src/commit/?id=5c16e71d30c388dd43b217de10a3ccb4b0219d0d>
> commit 5c16e71d30c388dd43b217de10a3ccb4b0219d0d
> Merge: b121cb0095c8 703029dbba78
> Author: Dimitry Andric <[email protected]>
> AuthorDate: 2023-11-30 20:06:52 +0000
> Commit: Dimitry Andric <[email protected]>
> CommitDate: 2023-12-08 17:35:59 +0000
> 
> Merge llvm-project release/17.x llvmorg-17.0.6-0-g6009708b4367
> 
> This updates llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and
> openmp to llvmorg-17.0.6-0-g6009708b4367.
> 
> PR: 273753
> MFC after: 1 month
> 
> 
> There appears to be some fallout in some ports.
> 
> For example, devel/ivykis (but also sysutils/flashrom and databases/rrdtool) 
> fails like this:
> 
> /bin/sh ../libtool  --tag=CC    --mode=link cc  -O2 -pipe  
> -fstack-protector-strong -fno-strict-aliasing  -Wall  -version-info 5:6:5 
> -Wl,--version-script,../libivykis.posix.ver -fstack-protector-strong -o 
> libivykis.la -rpath /usr/local/lib iv_avl.lo iv_event.lo iv_fatal.lo 
> iv_task.lo  iv_timer.lo iv_tls.lo iv_work.lo iv_event_raw_posix.lo iv_fd.lo  
> iv_fd_poll.lo iv_fd_pump.lo iv_main_posix.lo  iv_popen.lo iv_signal.lo 
> iv_thread_posix.lo  iv_tid_posix.lo iv_time_posix.lo iv_wait.lo    
> iv_fd_kqueue.lo
> libtool: link: cc -shared  -fPIC -DPIC  .libs/iv_avl.o .libs/iv_event.o 
> .libs/iv_fatal.o .libs/iv_task.o .libs/iv_timer.o .libs/iv_tls.o 
> .libs/iv_work.o .libs/iv_event_raw_posix.o .libs/iv_fd.o .libs/iv_fd_poll.o 
> .libs/iv_fd_pump.o .libs/iv_main_posix.o .libs/iv_popen.o .libs/iv_signal.o 
> .libs/iv_thread_posix.o .libs/iv_tid_posix.o .libs/iv_time_posix.o 
> .libs/iv_wait.o .libs/iv_fd_kqueue.o    -O2 -fstack-protector-strong 
> -Wl,--version-script -Wl,../libivykis.posix.ver -fstack-protector-strong   
> -Wl,-soname -Wl,libivykis.so.0 -o .libs/libivykis.so.0.5.6
> ld: error: version script assignment of 'IVYKIS_0.29' to symbol 
> 'iv_inotify_register' failed: symbol not defined
> ld: error: version script assignment of 'IVYKIS_0.29' to symbol 
> 'iv_inotify_unregister' failed: symbol not defined
> ld: error: version script assignment of 'IVYKIS_0.29' to symbol 
> 'iv_inotify_watch_register' failed: symbol not defined
> ld: error: version script assignment of 'IVYKIS_0.29' to symbol 
> 'iv_inotify_watch_unregister' failed: symbol not defined
> cc: error: linker command failed with exit code 1 (use -v to see invocation)
> I believe the issue is that it doesn’t build inotify code on FreeBSD, but 
> still mentions the relevant functions in the linker script. The other 
> affected ports I’ve run into appear to have similar issues.
> 
In this case, if it never builds the inotify code, you can safely delete those 
symbols from the linker version script.

> There’s likely to be a fair amount of fallout from that, e.g. 
> https://github.com/llvm/llvm-project/issues/75056
> 
> I’m not sure what the best path forward is. Should we try to make ld warn but 
> not fail on issues like that, or fix each affected port or ?
> 
I fixed dozens of ports for this in https://bugs.freebsd.org/273753, but I 
haven't gone over all of them, since I have limited resources.

That said, there are generally two ways to fix this: either add 
-Wl,--undefined-version to the linker flags, or actually remove the undefined 
symbols from the linker version scripts.

Example of the former: 
https://cgit.freebsd.org/ports/commit/?id=e0c21e404ed0f04c06c3bce7dd093c6e5ffea188
 :

--- a/java/openjfx14/Makefile
+++ b/java/openjfx14/Makefile
@@ -95,6 +95,9 @@ _INSTALLDIR=  ${PREFIX}/${PKGBASE}
 CFLAGS+=       -Wno-error=incompatible-function-pointer-types
 .endif

+# Suppress errors with lld >= 17 due to undefined symbols.
+LDFLAGS+=      -Wl,--undefined-version
+
 post-extract:
        ${MKDIR} ${WRKDIR}/jars
 .for f in core grouping queries queryparser sandbox

Example of the latter: 
https://cgit.freebsd.org/ports/commit/?id=aef056cf0fe1852a7b708d090310a6eb4853b269
 :

--- a/databases/rubygem-pg_query/files/patch-ext_pg__query_pg__query__ruby.sym
+++ b/databases/rubygem-pg_query/files/patch-ext_pg__query_pg__query__ruby.sym
@@ -1,5 +1,5 @@
---- ext/pg_query/pg_query_ruby.sym.orig        2023-06-25 07:13:00 UTC
+--- ext/pg_query/pg_query_ruby.sym.orig        2023-11-19 20:29:16 UTC
 +++ ext/pg_query/pg_query_ruby.sym
-@@ -1 +1,2 @@
- _Init_pg_query
+@@ -1 +1 @@
+-_Init_pg_query
 +Init_pg_query

-Dimitry

Attachment: signature.asc
Description: Message signed with OpenPGP

Reply via email to