Skip site navigation (1)Skip section navigation (2)
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>