commit: 8f5ca4a330e9d05b4a19432f0a57c0255d0fcac0 Author: Sv. Lockal <lockalsash <AT> gmail <DOT> com> AuthorDate: Fri Aug 15 16:14:56 2025 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Fri Aug 15 19:13:42 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8f5ca4a3
llvm-runtimes/libcxx: install GDB Pretty printers for libc++ https://github.com/llvm/llvm-project/blob/llvmorg-21.1.0-rc3/libcxx/docs/UserDocumentation.rst#gdb-pretty-printers-for-libc describes the procedure to set up GDB printers for STL data structures from libc++. Since LLVM 21 these pretty printers work quite well, including MI-mode (enabling visualization in IDEs like vscode). In a way, similar to python, libgobject, libstdc++ and so on, file like /usr/share/gdb/auto-load/usr/lib64/libc++.so.1.0-gdb.py enables autoloading for pretty printers. Closes: https://bugs.gentoo.org/961530 Signed-off-by: Sv. Lockal <lockalsash <AT> gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/43455 Closes: https://github.com/gentoo/gentoo/pull/43455 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> llvm-runtimes/libcxx/libcxx-21.1.0.9999.ebuild | 14 ++++++++++++++ llvm-runtimes/libcxx/libcxx-22.0.0.9999.ebuild | 14 ++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/llvm-runtimes/libcxx/libcxx-21.1.0.9999.ebuild b/llvm-runtimes/libcxx/libcxx-21.1.0.9999.ebuild index aadd7774d65e..cb170c03ff83 100644 --- a/llvm-runtimes/libcxx/libcxx-21.1.0.9999.ebuild +++ b/llvm-runtimes/libcxx/libcxx-21.1.0.9999.ebuild @@ -191,6 +191,20 @@ multilib_src_install() { dolib.so lib/libc++_shared.so use static-libs && dolib.a lib/libc++_static.a fi + + local install_prefix= + is_crosspkg && install_prefix=/usr/${CTARGET} + insinto "${install_prefix}/usr/share/libc++/gdb" + doins ../libcxx/utils/gdb/libcxx/printers.py + + local lib_version=$(sed -n -e 's/^LIBCXX_LIBRARY_VERSION:STRING=//p' CMakeCache.txt || die) + [[ -n ${lib_version} ]] || die "Could not determine LIBCXX_LIBRARY_VERSION from CMakeCache.txt" + + insinto "${install_prefix}/usr/share/gdb/auto-load/usr/$(get_libdir)" + newins - "libc++.so.${lib_version}-gdb.py" <<-EOF + __import__("sys").path.insert(0, "${EPREFIX}/usr/share/libc++/gdb") + __import__("printers").register_libcxx_printer_loader() + EOF } # Usage: deps diff --git a/llvm-runtimes/libcxx/libcxx-22.0.0.9999.ebuild b/llvm-runtimes/libcxx/libcxx-22.0.0.9999.ebuild index aadd7774d65e..cb170c03ff83 100644 --- a/llvm-runtimes/libcxx/libcxx-22.0.0.9999.ebuild +++ b/llvm-runtimes/libcxx/libcxx-22.0.0.9999.ebuild @@ -191,6 +191,20 @@ multilib_src_install() { dolib.so lib/libc++_shared.so use static-libs && dolib.a lib/libc++_static.a fi + + local install_prefix= + is_crosspkg && install_prefix=/usr/${CTARGET} + insinto "${install_prefix}/usr/share/libc++/gdb" + doins ../libcxx/utils/gdb/libcxx/printers.py + + local lib_version=$(sed -n -e 's/^LIBCXX_LIBRARY_VERSION:STRING=//p' CMakeCache.txt || die) + [[ -n ${lib_version} ]] || die "Could not determine LIBCXX_LIBRARY_VERSION from CMakeCache.txt" + + insinto "${install_prefix}/usr/share/gdb/auto-load/usr/$(get_libdir)" + newins - "libc++.so.${lib_version}-gdb.py" <<-EOF + __import__("sys").path.insert(0, "${EPREFIX}/usr/share/libc++/gdb") + __import__("printers").register_libcxx_printer_loader() + EOF } # Usage: deps
