Is having unwind.h in !sparc64 going to cause any breakage? On 12/10/23 22:18 +0200, Theo Buehler wrote: > As can be seen in [1], llvm/16 doesn't build because of > > /usr/bin/ld: unrecognized option '-Bsymbolic-functions' > > which due to missing patches for the OPENBSD_LD_IS_LLD hack. > > It does seem to work, more or less: I got a working ksh and libcrypto, > although I did see a segfault of lld once when building dsa_ameth.c. > > > As can be seen in [2], llvm/13 doesn't package because of > > Error: > /usr/obj/ports/llvm-13.0.0/fake-sparc64/usr/local/llvm13/lib/clang/13.0.0/include/unwind.h > does not exist > > (this also affects llvm/16) > > The reason for this is that sparc64 has /usr/include/unwind.h from gcc, > so it's removed by the post-install hook in Makefile.inc. > > Not sure if exempting unwind.h from removal is the right approach, or > if it should be @commented in the PLIST, or if there is another approach > for special casing this on sparc64. > > The diff below addresses both of these with no package change for other > architectures, so no bump. I'm certain about the fix for 16. I leave the > fix for unwind.h for others to evaluate. > > [1]: > http://build-failures.rhaalovely.net/sparc64/2023-10-08/devel/llvm/16,-lldb.log > [2]: http://build-failures.rhaalovely.net/sparc64/2023-10-08/devel/llvm/13.log > > Index: Makefile.inc > =================================================================== > RCS file: /cvs/ports/devel/llvm/Makefile.inc,v > retrieving revision 1.9 > diff -u -p -r1.9 Makefile.inc > --- Makefile.inc 23 Sep 2023 12:31:55 -0000 1.9 > +++ Makefile.inc 12 Oct 2023 18:45:52 -0000 > @@ -183,8 +183,9 @@ post-install: > rm -rf ${PREFIX}/${LLVM_BASE}/man > > # search and remove headers that might conflict with base > + # explicitly leave unwind.h in place for sparc64 (base-gcc) > cd ${PREFIX}/${CLANG_INCLUDE_PATH} && \ > - find . -name '*.h' | sed "s,./,,g" | while read h; \ > + find . -name '*.h' | fgrep -v './unwind.h' | sed "s,./,,g" | > while read h; \ > do \ > if test -e /usr/include/$${h}; then rm $${h}; fi; \ > done > Index: 16/patches/patch-clang_tools_clang-shlib_CMakeLists_txt > =================================================================== > RCS file: 16/patches/patch-clang_tools_clang-shlib_CMakeLists_txt > diff -N 16/patches/patch-clang_tools_clang-shlib_CMakeLists_txt > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ 16/patches/patch-clang_tools_clang-shlib_CMakeLists_txt 12 Oct 2023 > 18:45:52 -0000 > @@ -0,0 +1,13 @@ > +-Bsymbolic-functions is not supported by our ld.bfd version. > + > +Index: clang/tools/clang-shlib/CMakeLists.txt > +--- clang/tools/clang-shlib/CMakeLists.txt.orig > ++++ clang/tools/clang-shlib/CMakeLists.txt > +@@ -50,6 +50,6 @@ add_clang_library(clang-cpp > + ${_DEPS}) > + # Optimize function calls for default visibility definitions to avoid PLT > and > + # reduce dynamic relocations. > +-if (NOT APPLE AND NOT MINGW) > ++if (NOT APPLE AND NOT MINGW AND ${OPENBSD_LD_IS_LLD}) > + target_link_options(clang-cpp PRIVATE LINKER:-Bsymbolic-functions) > + endif() > Index: 16/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt > =================================================================== > RCS file: 16/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt > diff -N 16/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ 16/patches/patch-llvm_tools_llvm-shlib_CMakeLists_txt 12 Oct 2023 > 18:45:52 -0000 > @@ -0,0 +1,14 @@ > +-Bsymbolic-functions is not supported by our ld.bfd version. > + > +Index: llvm/tools/llvm-shlib/CMakeLists.txt > +--- llvm/tools/llvm-shlib/CMakeLists.txt.orig > ++++ llvm/tools/llvm-shlib/CMakeLists.txt > +@@ -51,7 +51,7 @@ if(LLVM_BUILD_LLVM_DYLIB) > + # Solaris ld does not accept global: *; so there is no way to version > *all* global symbols > + set(LIB_NAMES > -Wl,--version-script,${LLVM_LIBRARY_DIR}/tools/llvm-shlib/simple_version_script.map > ${LIB_NAMES}) > + endif() > +- if (NOT MINGW) > ++ if (NOT MINGW AND ${OPENBSD_LD_IS_LLD}) > + # Optimize function calls for default visibility definitions to avoid > PLT and > + # reduce dynamic relocations. > + # Note: for -fno-pic default, the address of a function may be > different from
-- Regards, Robert Nagy