Date: Mon, 2 Oct 2023 15:56:01 -0700 From: Mark Millard <marklmi@yahoo.com> To: "jbo@freebsd.org" <jbo@FreeBSD.org>, FreeBSD-STABLE Mailing List <freebsd-stable@freebsd.org> Subject: RE: Base libc++ missing symbol Message-ID: <97AB873D-57E4-48D3-985D-AAD64FB42E65@yahoo.com> References: <97AB873D-57E4-48D3-985D-AAD64FB42E65.ref@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Joel Bodenmann <jbo_at_FreeBSD.org> wrote on Date: Mon, 02 Oct 2023 20:00:29 UTC : > It seems like I finally managed to hose a FreeBSD system. > The machine in question is my workstation at home. It has been running > stable/13 without any problems. Yesterday I've updated to > ef295f69abbffb3447771a30df6906ca56a5d0c0 and since then I'm getting an > undefined symbol on anything using Qt: >=20 > ld-elf.so.1: /usr/local/lib/qt5/libQt5Widgets.so.5: Undefined symbol > "_ZTVNSt3__13pmr25monotonic_buffer_resourceE" >=20 > Unless I'm missing something, it would seem like my base libc++ > is missing the pmr::monotonic_buffer_resource symbol. I do not have a 13.2 context, so you may want to run the analogous steps in your context for confirming/denying the below applies. # llvm-cxxfilt _ZTVNSt3__13pmr25monotonic_buffer_resourceE vtable for std::__1::pmr::monotonic_buffer_resource Using the example "Run this code" source from: https://en.cppreference.com/w/cpp/memory/monotonic_buffer_resource # c++ -std=3Dc++17 -pedantic -O2 monotonic_buffer_resource.cpp # objdump -x a.out | grep _ZTVNSt3__13pmr25monotonic_buffer_resourceE 0000000000204160 g O .bss.rel.ro 0000000000000038 = _ZTVNSt3__13pmr25monotonic_buffer_resourceE # nm a.out | grep _ZTVNSt3__13pmr25monotonic_buffer_resourceE 0000000000204160 B _ZTVNSt3__13pmr25monotonic_buffer_resourceE # ./a.out t1 (default std alloc): 0.491 sec; t1/t1: 1.000 t2 (default pmr alloc): 0.541 sec; t1/t2: 0.906 t3 (pmr alloc no buf): 0.188 sec; t1/t3: 2.616 t4 (pmr alloc and buf): 0.155 sec; t1/t4: 3.172 Note that the vtable is in the a.out instead of being from a library. It is global but is in the a.out .bss.rel.ro = <http://bss.rel.ro/> in the example and is defined. > At first I thought I might have messed up on installworld but rolling > back to the previous boot environment and then performing the same > procedure again lead to the same outcome. If the above works similarly in your context, then I expect that the issue is on the qt5 or port side of things, not the system libraries/headers. As I understand, clang++ 16 is the first vintage with this directly supported, instead of being just in the experimental category/area for libc++. May be tracking that transition is at issue. For reference: # c++ -v FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git = llvmorg-16.0.6-0-g7cbf1a259152) Target: x86_64-unknown-freebsd15.0 Thread model: posix InstalledDir: /usr/bin # uname -apKU FreeBSD amd64-ZFS 15.0-CURRENT FreeBSD 15.0-CURRENT #124 = main-n265447-e5236d25f2c0-dirty: Thu Sep 21 09:06:08 PDT 2023 = root@amd64-ZFS:/usr/obj/BUILDs/main-amd64-nodbg-clang/usr/main-src/amd64.a= md64/sys/GENERIC-NODBG amd64 amd64 1500001 1500001 > Any ideas or wild guesses? Anything obvious I'm missing here? >=20 > uname -a > FreeBSD beefy02 13.2-STABLE FreeBSD 13.2-STABLE > stable/13-n256443-ef295f69abbf GENERIC amd64 >=20 > freebsd-version -kru > 13.2-STABLE > 13.2-STABLE > 13.2-STABLE >=20 > clang --version > FreeBSD clang version 16.0.6 > (https://github.com/llvm/llvm-project.git > llvmorg-16.0.6-0-g7cbf1a259152) Target: x86_64-unknown-freebsd13.2 > Thread model: posix > InstalledDir: /usr/bin =3D=3D=3D Mark Millard marklmi at yahoo.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?97AB873D-57E4-48D3-985D-AAD64FB42E65>