Re: Base libc++ missing symbol
- Reply: jbo_a_insane.engineer: "Re: Base libc++ missing symbol"
- In reply to: Mark Millard : "RE: Base libc++ missing symbol"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 03 Oct 2023 00:48:22 UTC
On Oct 2, 2023, at 15:56, Mark Millard <marklmi@yahoo.com> wrote: > 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: >> >> ld-elf.so.1: /usr/local/lib/qt5/libQt5Widgets.so.5: Undefined symbol >> "_ZTVNSt3__13pmr25monotonic_buffer_resourceE" >> >> 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=c++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.amd64/sys/GENERIC-NODBG amd64 amd64 1500001 1500001 > >> Any ideas or wild guesses? Anything obvious I'm missing here? >> >> uname -a >> FreeBSD beefy02 13.2-STABLE FreeBSD 13.2-STABLE >> stable/13-n256443-ef295f69abbf GENERIC amd64 >> >> freebsd-version -kru >> 13.2-STABLE >> 13.2-STABLE >> 13.2-STABLE >> >> 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 > Given Dimitry Andric's notes: # objdump -x /lib/libc++.so.1 | grep _ZTVNSt3__13pmr25monotonic_buffer_resourceE 00000000001006d8 g O .data.rel.ro 0000000000000038 _ZTVNSt3__13pmr25monotonic_buffer_resourceE # nm /lib/libc++.so.1 | grep _ZTVNSt3__13pmr25monotonic_buffer_resourceE 00000000001006d8 D _ZTVNSt3__13pmr25monotonic_buffer_resourceE So /lib/libc++.so.1 has a global symbol naming initialized data for this in my context. Reminder for the a.out: # 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 My original thinking makes no sense for this. Sorry for the noise. The procedure of seeing if the a.out is produced without complaint might still be useful. === Mark Millard marklmi at yahoo.com