[MacPorts] #71052: llvm-19 @19.1.1: possibly rpath-related problems on macOS Sequoia

MacPorts noreply at macports.org
Mon Oct 7 19:02:39 UTC 2024


#71052: llvm-19 @19.1.1: possibly rpath-related problems on macOS Sequoia
---------------------+---------------------
 Reporter:  tglsfdc  |      Owner:  (none)
     Type:  defect   |     Status:  new
 Priority:  Normal   |  Milestone:
Component:  ports    |    Version:  2.10.2
 Keywords:           |       Port:  llvm-19
---------------------+---------------------
 I'm having difficulty building postgresql with LLVM support (configure
 option --with-llvm) on Sequoia + Xcode 16.0, though it worked fine on
 previous macOS versions.  Problem number one is a weird linker warning at
 build time:

 {{{
 ccache clang -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-
 after-statement -Werror=vla -Werror=unguarded-availability-new -Wendif-
 labels -Wmissing-format-attribute -Wcast-function-type -Wformat-security
 -Wmissing-variable-declarations -fno-strict-aliasing -fwrapv -fexcess-
 precision=standard -Wno-unused-command-line-argument -Wno-compound-token-
 split-by-macro -Wno-format-truncation -Wno-cast-function-type-strict -g
 -O2 ...lots-of-.o-files-here... -L../../src/port -L../../src/common
 -isysroot
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk
 -L/opt/local/libexec/llvm-19/lib  -Wl,-dead_strip_dylibs
 -Wl,-export_dynamic -lz -lm -L/opt/local/lib -licui18n -licuuc -licudata
 -o postgres

 ld: warning: reexported library with install name
 '@rpath/libunwind.1.dylib' found at
 '/opt/local/libexec/llvm-19/lib/libunwind.1.0.dylib' couldn't be matched
 with any parent library and will be linked directly
 }}}

 This is weird because so far as I can see, there's no reason for that
 library to be pulled into this link.  There's no -lunwind in the command,
 nor do we use any of the APIs exported by that library.  (We do use
 backtrace() and backtrace_symbols(), if that's relevant.)  For that
 matter, the core server executable doesn't reference any LLVM stuff at
 all; all of that is in a separate loadable library that is not what this
 command is building.  I've verified that removing
 -L/opt/local/libexec/llvm-19/lib from this link command silences the
 warning, but what's causing it?

 Problem number two is that the built LLVM library fails at runtime, with

 {{{
 ERROR:  could not load library
 "/Users/tgl/pgsql/lib/postgresql/llvmjit.dylib":
 dlopen(/Users/tgl/pgsql/lib/postgresql/llvmjit.dylib, 0x000A): Library not
 loaded: @rpath/libLLVM.dylib
           Referenced from: <554524D2-EA18-38B0-9475-F9275F1A2822>
 /Users/tgl/pgsql/lib/postgresql/llvmjit.dylib
           Reason: no LC_RPATH's found
 }}}

 I gathered from some other tickets that the reason for this is a lack of a
 linker -rpath switch, and indeed if I add
 -Wl,-rpath,/opt/local/libexec/llvm-19/lib to the LDFLAGS then this problem
 goes away.  However, I argue that this is LLVM's fault not postgresql's
 fault, because (a) llvm-config --ldflags mentions no such requirement, and
 (b) this all worked fine without that before Sequoia.

 This is not specific to llvm-19; I get the same results with llvm-18.
 I've tried building with both the Apple-supplied clang and clang from
 MacPorts, no difference.

-- 
Ticket URL: <https://trac.macports.org/ticket/71052>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list