summaryrefslogtreecommitdiff
path: root/dev-debug
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-04 16:47:34 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-04 16:47:34 -0500
commitdda948891d3731927b821ce31f9d9a2d03ba20c5 (patch)
tree99cd40be4cbb0606260da212cd81b8ab2db9da9b /dev-debug
parenta3ceca1b4c0d9bdb550dc23f06ffbb5a8e033bc7 (diff)
downloadbaldeagleos-repo-dda948891d3731927b821ce31f9d9a2d03ba20c5.tar.gz
baldeagleos-repo-dda948891d3731927b821ce31f9d9a2d03ba20c5.tar.xz
baldeagleos-repo-dda948891d3731927b821ce31f9d9a2d03ba20c5.zip
Adding metadata
Diffstat (limited to 'dev-debug')
-rw-r--r--dev-debug/apitrace/Manifest2
-rw-r--r--dev-debug/apitrace/apitrace-13.0.ebuild106
-rw-r--r--dev-debug/apitrace/files/apitrace-12.0-unbundle.patch30
-rw-r--r--dev-debug/apitrace/files/apitrace-9.0-disable-multiarch.patch53
-rw-r--r--dev-debug/apitrace/metadata.xml5
-rw-r--r--dev-debug/bpftrace/Manifest7
-rw-r--r--dev-debug/bpftrace/bpftrace-0.24.2.ebuild159
-rw-r--r--dev-debug/bpftrace/bpftrace-0.25.1.ebuild160
-rw-r--r--dev-debug/bpftrace/bpftrace-0.26.1.ebuild160
-rw-r--r--dev-debug/bpftrace/bpftrace-9999.ebuild160
-rw-r--r--dev-debug/bpftrace/files/0.11.4-old-kernels.patch28
-rw-r--r--dev-debug/bpftrace/files/0.21.0-dont-compress-man.patch47
-rw-r--r--dev-debug/bpftrace/files/0.24.1-enable-ubsan.patch88
-rw-r--r--dev-debug/bpftrace/metadata.xml25
-rw-r--r--dev-debug/cgdb/Manifest1
-rw-r--r--dev-debug/cgdb/cgdb-0.8.0.ebuild73
-rw-r--r--dev-debug/cgdb/cgdb-9999.ebuild69
-rw-r--r--dev-debug/cgdb/files/cgdb-0.8.0-ar.patch18
-rw-r--r--dev-debug/cgdb/files/cgdb-0.8.0-configure-c99.patch23
-rw-r--r--dev-debug/cgdb/files/cgdb-9999-ar.patch16
-rw-r--r--dev-debug/cgdb/metadata.xml5
-rw-r--r--dev-debug/d-feet/Manifest1
-rw-r--r--dev-debug/d-feet/d-feet-0.3.16-r1.ebuild58
-rw-r--r--dev-debug/d-feet/files/0001-Do-not-lint-coding-style-in-distro-testing.patch30
-rw-r--r--dev-debug/d-feet/files/d-feet-0.3.16-fix-meson-0.61.patch31
-rw-r--r--dev-debug/d-feet/metadata.xml9
-rw-r--r--dev-debug/d-spy/Manifest2
-rw-r--r--dev-debug/d-spy/d-spy-48.0.ebuild36
-rw-r--r--dev-debug/d-spy/d-spy-49.2.ebuild37
-rw-r--r--dev-debug/d-spy/metadata.xml9
-rw-r--r--dev-debug/ddd/Manifest2
-rw-r--r--dev-debug/ddd/ddd-3.3.12-r5.ebuild90
-rw-r--r--dev-debug/ddd/ddd-3.4.1.ebuild80
-rw-r--r--dev-debug/ddd/files/ddd-3.3.12-clang.patch15
-rw-r--r--dev-debug/ddd/files/ddd-3.3.12-gcc44.patch10
-rw-r--r--dev-debug/ddd/files/ddd-3.3.12-gcc9.patch93
-rw-r--r--dev-debug/ddd/files/ddd-3.3.12-gdb-disassembler-bug.patch11
-rw-r--r--dev-debug/ddd/files/ddd-3.3.12-man.patch16
-rw-r--r--dev-debug/ddd/files/ddd-3.3.12-parallel.patch15
-rw-r--r--dev-debug/ddd/files/ddd-3.3.12-tinfo.patch11
-rw-r--r--dev-debug/ddd/metadata.xml12
-rw-r--r--dev-debug/drgn/Manifest2
-rw-r--r--dev-debug/drgn/drgn-0.0.33.ebuild68
-rw-r--r--dev-debug/drgn/drgn-0.1.0.ebuild70
-rw-r--r--dev-debug/drgn/metadata.xml13
-rw-r--r--dev-debug/dtrace/Manifest2
-rw-r--r--dev-debug/dtrace/dtrace-2.0.6.ebuild232
-rw-r--r--dev-debug/dtrace/dtrace-2.0.7.ebuild232
-rw-r--r--dev-debug/dtrace/dtrace-9999.ebuild233
-rw-r--r--dev-debug/dtrace/files/dtprobed.init15
-rw-r--r--dev-debug/dtrace/metadata.xml23
-rw-r--r--dev-debug/gdb-dashboard/Manifest1
-rw-r--r--dev-debug/gdb-dashboard/files/gdb-dashboard-0.17.4-fix-buffer-overflow.patch34
-rw-r--r--dev-debug/gdb-dashboard/gdb-dashboard-0.17.4-r1.ebuild55
-rw-r--r--dev-debug/gdb-dashboard/metadata.xml8
-rw-r--r--dev-debug/gdb/Manifest3
-rw-r--r--dev-debug/gdb/files/gdb-8.3.1-verbose-build.patch13
-rw-r--r--dev-debug/gdb/gdb-16.3.ebuild349
-rw-r--r--dev-debug/gdb/gdb-17.1.ebuild354
-rw-r--r--dev-debug/gdb/gdb-17.2.ebuild354
-rw-r--r--dev-debug/gdb/gdb-9999.ebuild351
-rw-r--r--dev-debug/gdb/metadata.xml28
-rw-r--r--dev-debug/gdbgui/Manifest3
-rw-r--r--dev-debug/gdbgui/gdbgui-0.15.2.0-r1.ebuild31
-rw-r--r--dev-debug/gdbgui/gdbgui-0.15.2.0.ebuild26
-rw-r--r--dev-debug/gdbgui/gdbgui-0.15.3.0.ebuild26
-rw-r--r--dev-debug/gdbgui/metadata.xml9
-rw-r--r--dev-debug/gef/Manifest3
-rw-r--r--dev-debug/gef/gef-2023.08.ebuild82
-rw-r--r--dev-debug/gef/gef-2025.01.ebuild83
-rw-r--r--dev-debug/gef/gef-2026.01.ebuild75
-rw-r--r--dev-debug/gef/gef-9999.ebuild75
-rw-r--r--dev-debug/gef/metadata.xml22
-rw-r--r--dev-debug/gfxreconstruct/Manifest2
-rw-r--r--dev-debug/gfxreconstruct/files/1.3.313.0-use-system-vulkan.patch38
-rw-r--r--dev-debug/gfxreconstruct/gfxreconstruct-1.4.341.0.ebuild76
-rw-r--r--dev-debug/gfxreconstruct/gfxreconstruct-9999.ebuild76
-rw-r--r--dev-debug/gfxreconstruct/metadata.xml9
-rw-r--r--dev-debug/gprofng-gui/Manifest3
-rw-r--r--dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild35
-rw-r--r--dev-debug/gprofng-gui/gprofng-gui-2.1.ebuild52
-rw-r--r--dev-debug/gprofng-gui/gprofng-gui-2.2.ebuild52
-rw-r--r--dev-debug/gprofng-gui/gprofng-gui-9999.ebuild52
-rw-r--r--dev-debug/gprofng-gui/metadata.xml9
-rw-r--r--dev-debug/hotspot/Manifest4
-rw-r--r--dev-debug/hotspot/files/hotspot-odr.patch234
-rw-r--r--dev-debug/hotspot/hotspot-1.5.1_p20250907-r1.ebuild126
-rw-r--r--dev-debug/hotspot/hotspot-1.6.0.ebuild127
-rw-r--r--dev-debug/hotspot/hotspot-9999.ebuild127
-rw-r--r--dev-debug/hotspot/metadata.xml12
-rw-r--r--dev-debug/kdbg/Manifest3
-rw-r--r--dev-debug/kdbg/kdbg-3.1.0_p20250406-r1.ebuild54
-rw-r--r--dev-debug/kdbg/kdbg-3.1.0_p20250406.ebuild53
-rw-r--r--dev-debug/kdbg/kdbg-3.2.0.ebuild49
-rw-r--r--dev-debug/kdbg/metadata.xml9
-rw-r--r--dev-debug/leaktracer/Manifest1
-rw-r--r--dev-debug/leaktracer/leaktracer-2.4-r3.ebuild56
-rw-r--r--dev-debug/leaktracer/metadata.xml5
-rw-r--r--dev-debug/lldb-mi/Manifest1
-rw-r--r--dev-debug/lldb-mi/files/lldb-mi-0.0.1-find_packages_GTest.patch40
-rw-r--r--dev-debug/lldb-mi/lldb-mi-0.0.1.ebuild52
-rw-r--r--dev-debug/lldb-mi/lldb-mi-9999.ebuild52
-rw-r--r--dev-debug/lldb-mi/metadata.xml8
-rw-r--r--dev-debug/ltrace/Manifest2
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.3-CXX-for-tests.patch11
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.3-alpha-protos.patch12
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.3-ia64-pid_t.patch6
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.3-ia64.patch39
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.3-musl-host.patch11
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.3-print-test-pie.patch15
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.91-debian-patchset-6.4.patch77
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.91-pid_t.patch10
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.91-test-glibc-2.33.patch11
-rw-r--r--dev-debug/ltrace/files/ltrace-0.7.91-tuple-tests.patch11
-rw-r--r--dev-debug/ltrace/ltrace-0.7.91_pre20221216-r1.ebuild63
-rw-r--r--dev-debug/ltrace/ltrace-0.8.1.ebuild58
-rw-r--r--dev-debug/ltrace/metadata.xml9
-rw-r--r--dev-debug/metadata.xml13
-rw-r--r--dev-debug/peda/Manifest1
-rw-r--r--dev-debug/peda/files/peda-1.2-gdb_logging.patch48
-rw-r--r--dev-debug/peda/files/peda-1.2-python3_14.patch438
-rw-r--r--dev-debug/peda/metadata.xml13
-rw-r--r--dev-debug/peda/peda-1.2-r1.ebuild62
-rw-r--r--dev-debug/peda/peda-9999.ebuild49
-rw-r--r--dev-debug/pwndbg/Manifest4
-rw-r--r--dev-debug/pwndbg/files/pwndbg-20250418-no-docs.patch22
-rw-r--r--dev-debug/pwndbg/metadata.xml18
-rw-r--r--dev-debug/pwndbg/pwndbg-20250418-r1.ebuild85
-rw-r--r--dev-debug/pwndbg/pwndbg-20250530-r3.ebuild81
-rw-r--r--dev-debug/pwndbg/pwndbg-20251010-r3.ebuild74
-rw-r--r--dev-debug/pwndbg/pwndbg-20251020-r3.ebuild74
-rw-r--r--dev-debug/pwndbg/pwndbg-99999999.ebuild74
-rw-r--r--dev-debug/rr/Manifest1
-rw-r--r--dev-debug/rr/files/rr-5.7.0-no-force-lto.patch23
-rw-r--r--dev-debug/rr/files/rr-5.9.0-glibc-2.42-termio.patch20
-rw-r--r--dev-debug/rr/files/rr-5.9.0-zen-workaround-service.patch14
-rw-r--r--dev-debug/rr/metadata.xml13
-rw-r--r--dev-debug/rr/rr-5.9.0-r1.ebuild112
-rw-r--r--dev-debug/rr/rr-9999.ebuild111
-rw-r--r--dev-debug/scap-driver/Manifest1
-rw-r--r--dev-debug/scap-driver/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch39
-rw-r--r--dev-debug/scap-driver/files/libs-0.20.0-properly-use-LD.patch24
-rw-r--r--dev-debug/scap-driver/metadata.xml13
-rw-r--r--dev-debug/scap-driver/scap-driver-0.20.0.ebuild54
-rw-r--r--dev-debug/strace/Manifest4
-rw-r--r--dev-debug/strace/files/strace-6.5-static.patch178
-rw-r--r--dev-debug/strace/metadata.xml28
-rw-r--r--dev-debug/strace/strace-6.19.ebuild120
-rw-r--r--dev-debug/strace/strace-7.0-r1.ebuild129
-rw-r--r--dev-debug/strace/strace-9999.ebuild129
-rw-r--r--dev-debug/sysdig/Manifest2
-rw-r--r--dev-debug/sysdig/files/0.38.1-scap-loader.patch32
-rw-r--r--dev-debug/sysdig/files/libs-0.20.0-fix-INET6_ADDRSTRLEN-buffer-size.patch54
-rw-r--r--dev-debug/sysdig/files/libs-0.20.0-fix-buffer-overrun-reading-sockets-from-procfs.patch35
-rw-r--r--dev-debug/sysdig/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch39
-rw-r--r--dev-debug/sysdig/metadata.xml20
-rw-r--r--dev-debug/sysdig/sysdig-0.40.1-r1.ebuild172
-rw-r--r--dev-debug/systemtap/Manifest3
-rw-r--r--dev-debug/systemtap/files/systemtap-3.1-ia64.patch33
-rw-r--r--dev-debug/systemtap/metadata.xml16
-rw-r--r--dev-debug/systemtap/systemtap-5.3-r1.ebuild163
-rw-r--r--dev-debug/systemtap/systemtap-5.4.ebuild173
-rw-r--r--dev-debug/systemtap/systemtap-9999.ebuild173
-rw-r--r--dev-debug/ugdb/Manifest142
-rw-r--r--dev-debug/ugdb/metadata.xml9
-rw-r--r--dev-debug/ugdb/ugdb-0.1.12.ebuild175
-rw-r--r--dev-debug/valgrind/Manifest8
-rw-r--r--dev-debug/valgrind/files/valgrind-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch22
-rw-r--r--dev-debug/valgrind/files/valgrind-3.21.0-glibc-2.34-suppressions.patch197
-rw-r--r--dev-debug/valgrind/files/valgrind-3.26.0-gcc16.patch21
-rw-r--r--dev-debug/valgrind/files/valgrind-3.7.0-respect-flags.patch13
-rw-r--r--dev-debug/valgrind/metadata.xml28
-rw-r--r--dev-debug/valgrind/valgrind-3.26.0.ebuild204
-rw-r--r--dev-debug/valgrind/valgrind-3.26.0_p1.ebuild203
-rw-r--r--dev-debug/valgrind/valgrind-3.27.0.ebuild203
-rw-r--r--dev-debug/valgrind/valgrind-3.27.0_p1.ebuild203
-rw-r--r--dev-debug/valgrind/valgrind-3.27.1.ebuild203
-rw-r--r--dev-debug/valgrind/valgrind-9999.ebuild203
178 files changed, 11248 insertions, 0 deletions
diff --git a/dev-debug/apitrace/Manifest b/dev-debug/apitrace/Manifest
new file mode 100644
index 000000000000..269c07922d3e
--- /dev/null
+++ b/dev-debug/apitrace/Manifest
@@ -0,0 +1,2 @@
+DIST apitrace-13.0-libbacktrace-d4bdca038e8685af3043683a881af37489fc1827.tar.gz 683938 BLAKE2B b9cf6ac161ac3babd769acefaf73567a196ffac5658c18cf0cb0f5b5ff153f074e9ac58b7caf08d5ec0bafe2170ced6c96483ddc01f1d4d2713fd90292b6f993 SHA512 d0ff3edd37d40cfe2f0615c8369992a02e9bb579694806bf8faf8c942b25367bdf74cd73f07affbaa2decf27130f49d1663553102e7bc205fc4cd49c72ea15ef
+DIST apitrace-13.0.tar.gz 2274587 BLAKE2B 5d28db7a5ee0f4798c14c017c2b35294e1758490b0b277b8011eff0405124f23e71c571cf41613326d47736ec5173b8db8d2dfe16610db29c2339b09ca4632bc SHA512 8a8c5b69722cc2eca8ff3e0b30282b0c134f03a55a6a2383750d9842015e3b3cf6265b8831245aa686e806796cb9a52685a41c1d212f6c9fbb0ae5e3c1b066cf
diff --git a/dev-debug/apitrace/apitrace-13.0.ebuild b/dev-debug/apitrace/apitrace-13.0.ebuild
new file mode 100644
index 000000000000..730e0f481cd9
--- /dev/null
+++ b/dev-debug/apitrace/apitrace-13.0.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit cmake-multilib multilib optfeature python-single-r1
+
+DESCRIPTION="Tool for tracing, analyzing, and debugging graphics APIs"
+HOMEPAGE="https://github.com/apitrace/apitrace"
+# Newer than the submodule commit from 13.0, but this commit includes a patch for tests.
+# See #738888
+BACKTRACE_COMMIT="d4bdca038e8685af3043683a881af37489fc1827"
+SRC_URI="
+ https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/ianlancetaylor/libbacktrace/archive/${BACKTRACE_COMMIT}.tar.gz
+ -> ${P}-libbacktrace-${BACKTRACE_COMMIT}.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~x86"
+IUSE="gui test X"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+DEPEND="${PYTHON_DEPS}
+ app-arch/brotli:=[${MULTILIB_USEDEP}]
+ app-arch/snappy:=[${MULTILIB_USEDEP}]
+ media-libs/libpng:0=[${MULTILIB_USEDEP}]
+ media-libs/waffle[${MULTILIB_USEDEP}]
+ virtual/zlib:=[${MULTILIB_USEDEP}]
+ gui? ( dev-qt/qtbase:6[-gles2-only,gui,widgets] )
+ X? ( x11-libs/libX11 )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-cpp/gtest )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-9.0-disable-multiarch.patch
+ "${FILESDIR}"/${PN}-12.0-unbundle.patch
+)
+
+src_prepare() {
+ sed -e "s:0.0-unknown:${PV}:" -i cmake/GenerateVersion.cmake || die
+
+ # still 3rd libs: khronos, crc32c and md5-compat
+ rm -r $(find thirdparty -mindepth 1 -maxdepth 1 \
+ ! -name crc32c \
+ ! -name khronos \
+ ! -name md5 \
+ ! -name support \
+ -type d -print) || die
+
+ mv "${WORKDIR}"/libbacktrace-${BACKTRACE_COMMIT} thirdparty/libbacktrace || die
+
+ cmake_src_prepare
+}
+
+multilib_src_configure() {
+ local mycmakeargs=(
+ -DBUILD_TESTING=$(usex test)
+ -DDOC_INSTALL_DIR="${EPREFIX}"/usr/share/doc/${PF}
+ -DENABLE_X11=$(usex X)
+ -DENABLE_EGL=ON
+ -DENABLE_CLI=ON
+ -DENABLE_GUI=$(multilib_native_usex gui)
+ -DENABLE_QT6=$(multilib_native_usex gui)
+ -DENABLE_STATIC_SNAPPY=OFF
+ -DENABLE_WAFFLE=ON
+ -DPython3_EXECUTABLE="${PYTHON}"
+ )
+ cmake_src_configure
+}
+
+src_install() {
+ MULTILIB_CHOST_TOOLS=(
+ /usr/bin/apitrace$(get_exeext)
+ /usr/bin/eglretrace$(get_exeext)
+ /usr/bin/gltrim$(get_exeext)
+ )
+ use X && MULTILIB_CHOST_TOOLS+=( /usr/bin/glretrace$(get_exeext) )
+
+ cmake-multilib_src_install
+
+ make_libegl_symlinks() {
+ dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libEGL.so
+ dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libEGL.so.1
+ }
+ multilib_foreach_abi make_libegl_symlinks
+
+ make_libgl_symlinks() {
+ dosym glxtrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so
+ dosym glxtrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1
+ dosym glxtrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1.2
+ }
+ use X && multilib_foreach_abi make_libgl_symlinks
+}
+
+pkg_postinst() {
+ optfeature "retracediff.py: side by side retracing" "dev-python/pillow" "dev-python/numpy"
+ optfeature "snapdiff.py: image comparison scripts" "dev-python/pillow"
+}
diff --git a/dev-debug/apitrace/files/apitrace-12.0-unbundle.patch b/dev-debug/apitrace/files/apitrace-12.0-unbundle.patch
new file mode 100644
index 000000000000..03467714e2c8
--- /dev/null
+++ b/dev-debug/apitrace/files/apitrace-12.0-unbundle.patch
@@ -0,0 +1,30 @@
+diff --git a/thirdparty/CMakeLists.txt b/thirdparty/CMakeLists.txt
+index 34eb7f7..5fbd073 100644
+--- a/thirdparty/CMakeLists.txt
++++ b/thirdparty/CMakeLists.txt
+@@ -16,25 +16,6 @@ function (include_with_scope)
+ include (${ARGV})
+ endfunction ()
+
+-set (SUBMODULES_MISSING FALSE)
+-foreach (path IN ITEMS
+- brotli/LICENSE
+- gtest/LICENSE
+- libbacktrace/LICENSE
+- libpng/LICENSE
+- snappy/COPYING
+- zlib/README
+- directxmath/LICENSE
+-)
+- if (NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${path}")
+- message (SEND_ERROR "error: ${CMAKE_CURRENT_SOURCE_DIR}/${path} does not exist")
+- set (SUBMODULES_MISSING TRUE)
+- endif ()
+-endforeach ()
+-if (SUBMODULES_MISSING)
+- message (FATAL_ERROR "Update Git submodules by running\ngit submodule update --init --depth 1 --recursive")
+-endif ()
+-
+ if (ENABLE_STATIC_SNAPPY OR NOT Snappy_FOUND)
+ message (STATUS "Using bundled Snappy")
+ include_with_scope (snappy.cmake)
diff --git a/dev-debug/apitrace/files/apitrace-9.0-disable-multiarch.patch b/dev-debug/apitrace/files/apitrace-9.0-disable-multiarch.patch
new file mode 100644
index 000000000000..37085b1ae299
--- /dev/null
+++ b/dev-debug/apitrace/files/apitrace-9.0-disable-multiarch.patch
@@ -0,0 +1,53 @@
+From 556397e399994b005524b88171c9c103b8cc1b25 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Mon, 29 Apr 2019 20:32:04 +0200
+Subject: [PATCH] Use CMAKE_INSTALL_LIBDIR for LIB_INSTALL_DIR
+
+Respect the libdir cmake already set up for us instead of using
+debian-specific multiarch paths.
+
+Patch was rebased multiple times from 4.0 to 9.0 now.
+
+Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
+---
+ CMakeLists.txt | 17 ++---------------
+ 1 file changed, 2 insertions(+), 15 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 19316e60..6c3c4b85 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -438,15 +438,6 @@ endif ()
+ ##############################################################################
+ # Installation directories
+
+-if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+- # Debian multiarch support
+- execute_process(COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
+- OUTPUT_VARIABLE ARCH_SUBDIR
+- ERROR_QUIET
+- OUTPUT_STRIP_TRAILING_WHITESPACE
+- )
+-endif()
+-
+ if (WIN32 OR APPLE)
+ # On Windows/MacOSX, applications are usually installed on a directory of
+ # their own
+@@ -455,12 +446,8 @@ if (WIN32 OR APPLE)
+ set (LIB_ARCH_INSTALL_DIR lib)
+ else ()
+ set (DOC_DEFAULT_INSTALL_DIR share/doc/${CMAKE_PROJECT_NAME})
+- set (LIB_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME})
+- if (ARCH_SUBDIR)
+- set (LIB_ARCH_INSTALL_DIR lib/${ARCH_SUBDIR}/${CMAKE_PROJECT_NAME})
+- else ()
+- set (LIB_ARCH_INSTALL_DIR lib${LIB_SUFFIX}/${CMAKE_PROJECT_NAME})
+- endif ()
++ set (LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/${CMAKE_PROJECT_NAME})
++ set (LIB_ARCH_INSTALL_DIR ${LIB_INSTALL_DIR})
+ endif ()
+
+ # Allow customization of the doc installation dir (Slackware uses different
+--
+2.24.1
+
diff --git a/dev-debug/apitrace/metadata.xml b/dev-debug/apitrace/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/dev-debug/apitrace/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/bpftrace/Manifest b/dev-debug/bpftrace/Manifest
new file mode 100644
index 000000000000..81369d914bf0
--- /dev/null
+++ b/dev-debug/bpftrace/Manifest
@@ -0,0 +1,7 @@
+DIST bpftrace-0.24.2-man.tar.xz 43820 BLAKE2B b0964633f4c1a462874f20934c286c321307a4abf79ebebaf085396e545a119f39f46f35b597921a61a5707a6cad5b368788ca8db682dee0eb916fc8a65b5520 SHA512 5a64c875400ede0050ee13f00351e06f72aeb8d8ce0db6933ac9c9f93023388218dd5fd62db7fd24370ddadbe390c6efa71692afd2e55b7f5755e4816f4832eb
+DIST bpftrace-0.24.2.tar.gz 1375106 BLAKE2B c397eb7ded3a72ea0805487db66f422bda9a0a743b1757056dc1bc70119e2d4fa7e69577a7e295143ce2b9789c62c4469b995ac0dca228c464efb3db8da25eeb SHA512 d9ff773ce39b578877d5e73a48434d3654b46985bb4b9ad458fbf622718049da5075b3a2d2e6d1ae0a9effbdb74658822b4c4535bca384fbd6e539fdec393f4b
+DIST bpftrace-0.25.0-man.tar.xz 44292 BLAKE2B e3ad8255b74836c9947595cd3c39caa201ccc420e573376ea7a144c499f4f74349911df87618f98a877d797b6d3b0c54f0117292537d03e184d2669b8a1331a5 SHA512 343fadffec5d2a6f702e2fe67087718c909f32cd6440dabc0fa93d2c0b8264ceda7d7a1eee7f79b4be2365318170c4eff7582453ec8ff4e15343ce2cb056b2ea
+DIST bpftrace-0.25.1-man.tar.xz 44300 BLAKE2B 54ed5e0e04f74d7c310d14a2d624238d9d7f42a4abab101272693caf714020bb420a221793ea8bef0bd1490cd47e6cc87ed4e75d187c7127c99b2ef771df208a SHA512 d9b28a4e4705714ba38af0dcda6eb78379cb44da5dd2de47cca1061bc2b020b97aca4fd09cb734932a5f925b31b34aa266e4ff2a54ac438715543c054340cd8d
+DIST bpftrace-0.25.1.tar.gz 1486111 BLAKE2B f2b9f2f9d44faa47f846c3c14800424d27dca0d210672cc03f60e5aadfe789fb4842bddfca4a4d73b3714a8d817710cedb66b055f8477e58f1202b64a188a444 SHA512 abe7bfab906894de889c958020b2dcc65bdc0b5c3d8986846ef41a9d593ca16075632916cf281154630221c6e511a11e3139a09bb641570277a44bd47299bbe6
+DIST bpftrace-0.26.1-man.tar.xz 44680 BLAKE2B 21e0c4492b1885f24fdd91c814a5144326c0e7491b07dd1dfcc4f139842d4094371a179842a6d0cfc5666e3cb4e631138ecdaf56e8ba64b001046ce934294ba2 SHA512 653a0877eb4ff74f17adf7688490c3afb63a264cf9fe3f64d3ec7437f2a51ee7dd21a254277cba677fa6fac8cff836d25e94199ee5ac8ef3152eedee38fbf707
+DIST bpftrace-0.26.1.tar.gz 1549419 BLAKE2B f9be88f6767de8752d46377f2833a511972166fc2d857fc11c16264e40f42cd39f12f9a8e04e0c8b9b8a3f11b1c4df17b002acbadbf30658d01494bdb206818b SHA512 2b2f052b742317b991b2e267881167ec58f0b7fa24574950f090d237665930a7ddfaa26e9a9f03eb3db01ab111a99ecb8f4b41f1c944b6f1df0218f109bfe72d
diff --git a/dev-debug/bpftrace/bpftrace-0.24.2.ebuild b/dev-debug/bpftrace/bpftrace-0.24.2.ebuild
new file mode 100644
index 000000000000..ea57a4ba3a3f
--- /dev/null
+++ b/dev-debug/bpftrace/bpftrace-0.24.2.ebuild
@@ -0,0 +1,159 @@
+# Copyright 2019-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {17..21} )
+RUST_MIN_VER="1.85.1"
+RUST_OPTIONAL=1
+
+inherit cmake flag-o-matic linux-info llvm-r1 rust
+
+DESCRIPTION="High-level tracing language for eBPF"
+HOMEPAGE="https://github.com/bpftrace/bpftrace"
+MY_PV="${PV//_/}"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/bpftrace/bpftrace"
+ EGIT_BRANCH="release/0.24.x"
+ inherit git-r3
+ # use a released man page for git
+ MAN_V="0.24.2"
+else
+ SRC_URI="https://github.com/bpftrace/${PN}/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 ~arm64"
+ # the man page version may trail the release
+ #MAN_V="0.24.2"
+fi
+
+SRC_URI+=" https://github.com/bpftrace/${PN}/releases/download/v${MAN_V:-${PV}}/man.tar.xz -> ${PN}-${MAN_V:-${PV}}-man.tar.xz"
+
+S="${WORKDIR}/${PN}-${MY_PV:-${PV}}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+
+IUSE="pcap systemd test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/blazesym_c-0.1.1
+ >=dev-libs/libbpf-1.5:=
+ >=dev-util/bcc-0.25.0
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}=
+ llvm-core/llvm:${LLVM_SLOT}=[llvm_targets_BPF(+)]
+ ')
+ sys-libs/binutils-libs:=
+ virtual/libelf:=
+ systemd? ( sys-apps/systemd:= )
+ pcap? ( net-libs/libpcap:= )
+ virtual/zlib:=
+"
+DEPEND="
+ ${RDEPEND}
+ dev-libs/cereal:=
+ test? ( dev-cpp/gtest )
+"
+BDEPEND="
+ app-arch/xz-utils
+ app-alternatives/lex
+ app-alternatives/yacc
+ dev-libs/cereal
+ dev-util/bpftool
+ || ( dev-util/xxd app-editors/vim-core )
+ test? (
+ ${RUST_DEPEND}
+ dev-lang/go
+ dev-util/pahole
+ )
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}/0.11.4-old-kernels.patch"
+ "${FILESDIR}/0.21.0-dont-compress-man.patch"
+ "${FILESDIR}/0.24.1-enable-ubsan.patch"
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="
+ ~BPF
+ ~BPF_EVENTS
+ ~BPF_JIT
+ ~BPF_SYSCALL
+ ~DEBUG_INFO_BTF
+ ~DEBUG_INFO_BTF_MODULES
+ ~FTRACE_SYSCALLS
+ ~HAVE_EBPF_JIT
+ "
+
+ check_extra_config
+
+ if use test; then
+ if ! linux_config_exists ; then
+ die "Unable to check your kernel for BTF support: tests cannot run."
+ elif ! linux_chkconfig_present DEBUG_INFO_BTF ; then
+ die "CONFIG_DEBUG_INFO_BTF is not set: tests cannot run."
+ fi
+ fi
+}
+
+pkg_setup() {
+ llvm-r1_pkg_setup
+ use test && rust_pkg_setup
+}
+
+# git-r3 overrides automatic SRC_URI unpacking
+src_unpack() {
+ default
+
+ if [[ ${PV} == *9999* ]] ; then
+ git-r3_src_unpack
+ fi
+}
+
+src_prepare() {
+ # create a usable version from git
+ if [[ ${PV} == *9999* ]] ; then
+ local rev=$(git branch --show-current | sed -e 's/* //g' -e 's/release\///g')-$(git rev-parse --short HEAD)
+ sed -i "/configure_file/i set (BPFTRACE_VERSION \"${rev}\")" cmake/Version.cmake || die
+ fi
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # suppress one remaining and benign ODR violation warning due to
+ # a generated libbpf header used by the tests, see:
+ # https://github.com/bpftrace/bpftrace/issues/4591
+ use test && append-flags -Wno-odr
+
+ local mycmakeargs=(
+ # DO dynamically link the bpftrace executable
+ -DSTATIC_LINKING=OFF
+ # DO NOT build the internal libs as shared
+ -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_TESTING=$(usex test)
+ # we use the pregenerated man page
+ -DENABLE_MAN=OFF
+ -DENABLE_SKB_OUTPUT=$(usex pcap)
+ -DENABLE_SYSTEMD=$(usex systemd)
+ )
+
+ # enable UBSAN only when enabled in the toolchain
+ if is-flagq -fsanitize=undefined; then
+ filter-flags -fsanitize=undefined
+ mycmakeargs+=( -DBUILD_UBSAN=ON )
+ fi
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ doman man/man8/*.?
+ gunzip "${WORKDIR}/man/man8/bpftrace.8.gz" || die
+ doman "${WORKDIR}/man/man8/bpftrace.8"
+}
diff --git a/dev-debug/bpftrace/bpftrace-0.25.1.ebuild b/dev-debug/bpftrace/bpftrace-0.25.1.ebuild
new file mode 100644
index 000000000000..ab4ee111d39f
--- /dev/null
+++ b/dev-debug/bpftrace/bpftrace-0.25.1.ebuild
@@ -0,0 +1,160 @@
+# Copyright 2019-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {18..22} )
+RUST_MIN_VER="1.85.0"
+RUST_OPTIONAL=1
+
+inherit cmake flag-o-matic linux-info llvm-r1 rust
+
+DESCRIPTION="High-level tracing language for eBPF"
+HOMEPAGE="https://github.com/bpftrace/bpftrace"
+MY_PV="${PV//_/}"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/bpftrace/bpftrace"
+ EGIT_BRANCH="master"
+ inherit git-r3
+ # use a released man page for git
+ MAN_V="0.25.0"
+else
+ SRC_URI="https://github.com/bpftrace/bpftrace/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64"
+ # the man page version may trail the release
+ #MAN_V="0.25.0"
+fi
+
+SRC_URI+=" https://github.com/bpftrace/bpftrace/releases/download/v${MAN_V:-${PV}}/man.tar.xz -> bpftrace-${MAN_V:-${PV}}-man.tar.xz"
+
+S="${WORKDIR}/${PN}-${MY_PV:-${PV}}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+
+IUSE="pcap systemd test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/blazesym_c-0.1.1
+ >=dev-libs/libbpf-1.6:=[static-libs]
+ >=dev-util/bcc-0.25.0
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}=
+ llvm-core/llvm:${LLVM_SLOT}=[llvm_targets_BPF(+)]
+ ')
+ sys-libs/binutils-libs:=
+ virtual/libelf:=
+ systemd? ( sys-apps/systemd:= )
+ pcap? ( net-libs/libpcap:= )
+ virtual/zlib:=
+"
+DEPEND="
+ ${RDEPEND}
+ dev-libs/cereal:=
+ test? ( dev-cpp/gtest )
+"
+BDEPEND="
+ app-arch/xz-utils
+ app-alternatives/lex
+ app-alternatives/yacc
+ dev-libs/cereal
+ dev-util/bpftool
+ || ( dev-util/xxd app-editors/vim-core )
+ test? (
+ ${RUST_DEPEND}
+ dev-lang/go
+ dev-util/pahole
+ )
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}/0.11.4-old-kernels.patch"
+ "${FILESDIR}/0.21.0-dont-compress-man.patch"
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="
+ ~BPF
+ ~BPF_EVENTS
+ ~BPF_JIT
+ ~BPF_SYSCALL
+ ~DEBUG_INFO_BTF
+ ~DEBUG_INFO_BTF_MODULES
+ ~FTRACE_SYSCALLS
+ ~HAVE_EBPF_JIT
+ "
+
+ check_extra_config
+
+ if use test; then
+ if ! linux_config_exists ; then
+ die "Unable to check your kernel for BTF support: tests cannot run."
+ elif ! linux_chkconfig_present DEBUG_INFO_BTF ; then
+ die "CONFIG_DEBUG_INFO_BTF is not set: tests cannot run."
+ fi
+ fi
+}
+
+pkg_setup() {
+ llvm-r1_pkg_setup
+ use test && rust_pkg_setup
+}
+
+# git-r3 overrides automatic SRC_URI unpacking
+src_unpack() {
+ default
+
+ if [[ ${PV} == *9999* ]] ; then
+ git-r3_src_unpack
+ fi
+}
+
+src_prepare() {
+ # create a usable version from git
+ if [[ ${PV} == *9999* ]] ; then
+ local rev=$(git branch --show-current | sed -e 's/* //g' -e 's/release\///g')-$(git rev-parse --short HEAD)
+ sed -i "/configure_file/i set (BPFTRACE_VERSION \"${rev}\")" cmake/Version.cmake || die
+ fi
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # suppress one remaining and benign ODR violation warning due to
+ # a generated libbpf header used by the tests, see:
+ # https://github.com/bpftrace/bpftrace/issues/4591
+ use test && append-flags -Wno-odr
+
+ local mycmakeargs=(
+ # DO dynamically link the bpftrace executable
+ -DSTATIC_LINKING=OFF
+ # DO NOT build the internal libs as shared
+ -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_TESTING=$(usex test)
+ # we use the pregenerated man page
+ -DENABLE_MAN=OFF
+ -DENABLE_SKB_OUTPUT=$(usex pcap)
+ -DENABLE_SYSTEMD=$(usex systemd)
+ # always use system libbpf
+ -DUSE_SYSTEM_LIBBPF=ON
+ )
+
+ # enable UBSAN only when enabled in the toolchain
+ if is-flagq -fsanitize=undefined; then
+ filter-flags -fsanitize=undefined
+ mycmakeargs+=( -DBUILD_UBSAN=ON )
+ fi
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ doman man/man8/*.?
+ gunzip "${WORKDIR}/man/man8/bpftrace.8.gz" || die
+ doman "${WORKDIR}/man/man8/bpftrace.8"
+}
diff --git a/dev-debug/bpftrace/bpftrace-0.26.1.ebuild b/dev-debug/bpftrace/bpftrace-0.26.1.ebuild
new file mode 100644
index 000000000000..726742c759d6
--- /dev/null
+++ b/dev-debug/bpftrace/bpftrace-0.26.1.ebuild
@@ -0,0 +1,160 @@
+# Copyright 2019-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {18..22} )
+RUST_MIN_VER="1.85.0"
+RUST_OPTIONAL=1
+
+inherit cmake flag-o-matic linux-info llvm-r2 rust
+
+DESCRIPTION="High-level tracing language for eBPF"
+HOMEPAGE="https://github.com/bpftrace/bpftrace"
+MY_PV="${PV//_/}"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/bpftrace/bpftrace"
+ EGIT_BRANCH="master"
+ inherit git-r3
+ # use a released man page for git
+ MAN_V="0.25.0"
+else
+ SRC_URI="https://github.com/bpftrace/bpftrace/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64"
+ # the man page version may trail the release
+ #MAN_V="0.25.0"
+fi
+
+SRC_URI+=" https://github.com/bpftrace/bpftrace/releases/download/v${MAN_V:-${PV}}/man.tar.xz -> bpftrace-${MAN_V:-${PV}}-man.tar.xz"
+
+S="${WORKDIR}/${PN}-${MY_PV:-${PV}}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+
+IUSE="pcap systemd test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/blazesym_c-0.1.1
+ >=dev-libs/libbpf-1.6:=[static-libs]
+ >=dev-util/bcc-0.25.0
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}=
+ llvm-core/llvm:${LLVM_SLOT}=[llvm_targets_BPF(+)]
+ ')
+ sys-libs/binutils-libs:=
+ virtual/libelf:=
+ systemd? ( sys-apps/systemd:= )
+ pcap? ( net-libs/libpcap:= )
+ virtual/zlib:=
+"
+DEPEND="
+ ${RDEPEND}
+ dev-libs/cereal:=
+ test? ( dev-cpp/gtest )
+"
+BDEPEND="
+ app-arch/xz-utils
+ app-alternatives/lex
+ app-alternatives/yacc
+ dev-libs/cereal
+ dev-util/bpftool
+ || ( dev-util/xxd app-editors/vim-core )
+ test? (
+ ${RUST_DEPEND}
+ dev-lang/go
+ dev-util/pahole
+ )
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}/0.11.4-old-kernels.patch"
+ "${FILESDIR}/0.21.0-dont-compress-man.patch"
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="
+ ~BPF
+ ~BPF_EVENTS
+ ~BPF_JIT
+ ~BPF_SYSCALL
+ ~DEBUG_INFO_BTF
+ ~DEBUG_INFO_BTF_MODULES
+ ~FTRACE_SYSCALLS
+ ~HAVE_EBPF_JIT
+ "
+
+ check_extra_config
+
+ if use test; then
+ if ! linux_config_exists ; then
+ die "Unable to check your kernel for BTF support: tests cannot run."
+ elif ! linux_chkconfig_present DEBUG_INFO_BTF ; then
+ die "CONFIG_DEBUG_INFO_BTF is not set: tests cannot run."
+ fi
+ fi
+}
+
+pkg_setup() {
+ llvm-r2_pkg_setup
+ use test && rust_pkg_setup
+}
+
+# git-r3 overrides automatic SRC_URI unpacking
+src_unpack() {
+ default
+
+ if [[ ${PV} == *9999* ]] ; then
+ git-r3_src_unpack
+ fi
+}
+
+src_prepare() {
+ # create a usable version from git
+ if [[ ${PV} == *9999* ]] ; then
+ local rev=$(git branch --show-current | sed -e 's/* //g' -e 's/release\///g')-$(git rev-parse --short HEAD)
+ sed -i "/configure_file/i set (BPFTRACE_VERSION \"${rev}\")" cmake/Version.cmake || die
+ fi
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # suppress one remaining and benign ODR violation warning due to
+ # a generated libbpf header used by the tests, see:
+ # https://github.com/bpftrace/bpftrace/issues/4591
+ use test && append-flags -Wno-odr
+
+ local mycmakeargs=(
+ # DO dynamically link the bpftrace executable
+ -DSTATIC_LINKING=OFF
+ # DO NOT build the internal libs as shared
+ -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_TESTING=$(usex test)
+ # we use the pregenerated man page
+ -DENABLE_MAN=OFF
+ -DENABLE_SKB_OUTPUT=$(usex pcap)
+ -DENABLE_SYSTEMD=$(usex systemd)
+ # always use system libbpf
+ -DUSE_SYSTEM_LIBBPF=ON
+ )
+
+ # enable UBSAN only when enabled in the toolchain
+ if is-flagq -fsanitize=undefined; then
+ filter-flags -fsanitize=undefined
+ mycmakeargs+=( -DBUILD_UBSAN=ON )
+ fi
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ doman man/man8/*.?
+ gunzip "${WORKDIR}/man/man8/bpftrace.8.gz" || die
+ doman "${WORKDIR}/man/man8/bpftrace.8"
+}
diff --git a/dev-debug/bpftrace/bpftrace-9999.ebuild b/dev-debug/bpftrace/bpftrace-9999.ebuild
new file mode 100644
index 000000000000..726742c759d6
--- /dev/null
+++ b/dev-debug/bpftrace/bpftrace-9999.ebuild
@@ -0,0 +1,160 @@
+# Copyright 2019-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {18..22} )
+RUST_MIN_VER="1.85.0"
+RUST_OPTIONAL=1
+
+inherit cmake flag-o-matic linux-info llvm-r2 rust
+
+DESCRIPTION="High-level tracing language for eBPF"
+HOMEPAGE="https://github.com/bpftrace/bpftrace"
+MY_PV="${PV//_/}"
+
+if [[ ${PV} == *9999* ]] ; then
+ EGIT_REPO_URI="https://github.com/bpftrace/bpftrace"
+ EGIT_BRANCH="master"
+ inherit git-r3
+ # use a released man page for git
+ MAN_V="0.25.0"
+else
+ SRC_URI="https://github.com/bpftrace/bpftrace/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64"
+ # the man page version may trail the release
+ #MAN_V="0.25.0"
+fi
+
+SRC_URI+=" https://github.com/bpftrace/bpftrace/releases/download/v${MAN_V:-${PV}}/man.tar.xz -> bpftrace-${MAN_V:-${PV}}-man.tar.xz"
+
+S="${WORKDIR}/${PN}-${MY_PV:-${PV}}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+
+IUSE="pcap systemd test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ >=dev-libs/blazesym_c-0.1.1
+ >=dev-libs/libbpf-1.6:=[static-libs]
+ >=dev-util/bcc-0.25.0
+ $(llvm_gen_dep '
+ llvm-core/clang:${LLVM_SLOT}=
+ llvm-core/llvm:${LLVM_SLOT}=[llvm_targets_BPF(+)]
+ ')
+ sys-libs/binutils-libs:=
+ virtual/libelf:=
+ systemd? ( sys-apps/systemd:= )
+ pcap? ( net-libs/libpcap:= )
+ virtual/zlib:=
+"
+DEPEND="
+ ${RDEPEND}
+ dev-libs/cereal:=
+ test? ( dev-cpp/gtest )
+"
+BDEPEND="
+ app-arch/xz-utils
+ app-alternatives/lex
+ app-alternatives/yacc
+ dev-libs/cereal
+ dev-util/bpftool
+ || ( dev-util/xxd app-editors/vim-core )
+ test? (
+ ${RUST_DEPEND}
+ dev-lang/go
+ dev-util/pahole
+ )
+ virtual/pkgconfig
+"
+
+PATCHES=(
+ "${FILESDIR}/0.11.4-old-kernels.patch"
+ "${FILESDIR}/0.21.0-dont-compress-man.patch"
+)
+
+pkg_pretend() {
+ local CONFIG_CHECK="
+ ~BPF
+ ~BPF_EVENTS
+ ~BPF_JIT
+ ~BPF_SYSCALL
+ ~DEBUG_INFO_BTF
+ ~DEBUG_INFO_BTF_MODULES
+ ~FTRACE_SYSCALLS
+ ~HAVE_EBPF_JIT
+ "
+
+ check_extra_config
+
+ if use test; then
+ if ! linux_config_exists ; then
+ die "Unable to check your kernel for BTF support: tests cannot run."
+ elif ! linux_chkconfig_present DEBUG_INFO_BTF ; then
+ die "CONFIG_DEBUG_INFO_BTF is not set: tests cannot run."
+ fi
+ fi
+}
+
+pkg_setup() {
+ llvm-r2_pkg_setup
+ use test && rust_pkg_setup
+}
+
+# git-r3 overrides automatic SRC_URI unpacking
+src_unpack() {
+ default
+
+ if [[ ${PV} == *9999* ]] ; then
+ git-r3_src_unpack
+ fi
+}
+
+src_prepare() {
+ # create a usable version from git
+ if [[ ${PV} == *9999* ]] ; then
+ local rev=$(git branch --show-current | sed -e 's/* //g' -e 's/release\///g')-$(git rev-parse --short HEAD)
+ sed -i "/configure_file/i set (BPFTRACE_VERSION \"${rev}\")" cmake/Version.cmake || die
+ fi
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # suppress one remaining and benign ODR violation warning due to
+ # a generated libbpf header used by the tests, see:
+ # https://github.com/bpftrace/bpftrace/issues/4591
+ use test && append-flags -Wno-odr
+
+ local mycmakeargs=(
+ # DO dynamically link the bpftrace executable
+ -DSTATIC_LINKING=OFF
+ # DO NOT build the internal libs as shared
+ -DBUILD_SHARED_LIBS=OFF
+ -DBUILD_TESTING=$(usex test)
+ # we use the pregenerated man page
+ -DENABLE_MAN=OFF
+ -DENABLE_SKB_OUTPUT=$(usex pcap)
+ -DENABLE_SYSTEMD=$(usex systemd)
+ # always use system libbpf
+ -DUSE_SYSTEM_LIBBPF=ON
+ )
+
+ # enable UBSAN only when enabled in the toolchain
+ if is-flagq -fsanitize=undefined; then
+ filter-flags -fsanitize=undefined
+ mycmakeargs+=( -DBUILD_UBSAN=ON )
+ fi
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+ doman man/man8/*.?
+ gunzip "${WORKDIR}/man/man8/bpftrace.8.gz" || die
+ doman "${WORKDIR}/man/man8/bpftrace.8"
+}
diff --git a/dev-debug/bpftrace/files/0.11.4-old-kernels.patch b/dev-debug/bpftrace/files/0.11.4-old-kernels.patch
new file mode 100644
index 000000000000..831de6487a84
--- /dev/null
+++ b/dev-debug/bpftrace/files/0.11.4-old-kernels.patch
@@ -0,0 +1,28 @@
+diff --git a/src/btf.h b/src/btf.h
+index 61579a3..4e9f9fc 100644
+--- a/src/btf.h
++++ b/src/btf.h
+@@ -2,6 +2,7 @@
+
+ #include "types.h"
+ #include <linux/types.h>
++#include <linux/version.h>
+ #include <map>
+ #include <regex>
+ #include <string>
+@@ -11,6 +12,15 @@
+ struct btf;
+ struct btf_type;
+
++#if LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0)
++/* this is required to build with 5.4 and earlier kernel headers */
++enum btf_func_linkage {
++ BTF_FUNC_STATIC = 0,
++ BTF_FUNC_GLOBAL = 1,
++ BTF_FUNC_EXTERN = 2,
++};
++#endif
++
+ namespace bpftrace {
+
+ class BTF
diff --git a/dev-debug/bpftrace/files/0.21.0-dont-compress-man.patch b/dev-debug/bpftrace/files/0.21.0-dont-compress-man.patch
new file mode 100644
index 000000000000..93bcfcf73e31
--- /dev/null
+++ b/dev-debug/bpftrace/files/0.21.0-dont-compress-man.patch
@@ -0,0 +1,47 @@
+diff --git a/man/adoc/CMakeLists.txt b/man/adoc/CMakeLists.txt
+index 1a81dee0..c93ccbd2 100644
+--- a/man/adoc/CMakeLists.txt
++++ b/man/adoc/CMakeLists.txt
+@@ -1,7 +1,5 @@
+-find_program(GZIP gzip REQUIRED)
+ find_program(ASCIIDOCTOR asciidoctor)
+ file(GLOB FILES *.adoc)
+-set(GZFILES "")
+ if(NOT "${ASCIIDOCTOR}" STREQUAL "ASCIIDOCTOR-NOTFOUND")
+ foreach(FIL ${FILES})
+ get_filename_component(NAME ${FIL} NAME_WE)
+@@ -12,14 +10,9 @@ if(NOT "${ASCIIDOCTOR}" STREQUAL "ASCIIDOCTOR-NOTFOUND")
+ COMMAND ${ASCIIDOCTOR} ${FIL} -b manpage -o - > ${MANPAGE_FILE}
+ DEPENDS ${FIL})
+
+- add_custom_command(OUTPUT ${GZ_MANPAGE_FILE}
+- COMMAND ${GZIP} -nc ${MANPAGE_FILE} > ${GZ_MANPAGE_FILE}
+- DEPENDS ${MANPAGE_FILE})
+-
+- list(APPEND GZFILES ${GZ_MANPAGE_FILE})
+ endforeach()
+- add_custom_target(adoc_man DEPENDS ${GZFILES})
+- install(FILES ${GZFILES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man8)
++ add_custom_target(adoc_man DEPENDS ${FILES})
++ install(FILES ${FILES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man8)
+ else()
+ message(WARNING "asciidoctor not found, building without bpftrace manpage")
+ add_custom_target(adoc_man)
+diff --git a/man/man8/CMakeLists.txt b/man/man8/CMakeLists.txt
+index 2a316cd9..2207cf80 100644
+--- a/man/man8/CMakeLists.txt
++++ b/man/man8/CMakeLists.txt
+@@ -1,12 +1,3 @@
+-find_program(GZIP gzip REQUIRED)
+ file(GLOB FILES *.8)
+-set(GZFILES "")
+-foreach(FIL ${FILES})
+- get_filename_component(NAME ${FIL} NAME)
+- add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.gz
+- COMMAND ${GZIP} -nc ${FIL} > ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.gz
+- DEPENDS ${FIL})
+- list(APPEND GZFILES "${CMAKE_CURRENT_BINARY_DIR}/${NAME}.gz")
+-endforeach()
+ add_custom_target(man_man DEPENDS ${GZFILES})
+-install(FILES ${GZFILES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man8)
++install(FILES ${FILES} DESTINATION ${CMAKE_INSTALL_MANDIR}/man8)
diff --git a/dev-debug/bpftrace/files/0.24.1-enable-ubsan.patch b/dev-debug/bpftrace/files/0.24.1-enable-ubsan.patch
new file mode 100644
index 000000000000..8e6cc1bb3053
--- /dev/null
+++ b/dev-debug/bpftrace/files/0.24.1-enable-ubsan.patch
@@ -0,0 +1,88 @@
+From: https://github.com/bpftrace/bpftrace/pull/4655
+
+From: =?UTF-8?q?Viktor=20Mal=C3=ADk?= <viktor.malik@gmail.com>
+Date: Thu, 25 Sep 2025 13:34:17 +0200
+Subject: [PATCH] CMake: Enable UBSan builds (#4655)
+
+Add new CMake option `BUILD_UBSAN` which will add `-fsanitize=undefined`
+to the build. This helps to identify undefined behavior.
+
+Signed-off-by: Viktor Malik <viktor.malik@gmail.com>
+---
+ CMakeLists.txt | 1 +
+ src/CMakeLists.txt | 13 +++++++++++++
+ src/aot/CMakeLists.txt | 4 ++++
+ tests/CMakeLists.txt | 5 +++++
+ 4 files changed, 23 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 898ec2f85560..5bb09a2e56be 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -15,6 +15,7 @@ set(HARDENED_STDLIB OFF CACHE BOOL "Enable hardened definitions for standard lib
+ set(STATIC_LINKING OFF CACHE BOOL "Build bpftrace as a statically linked executable")
+
+ set(BUILD_ASAN OFF CACHE BOOL "Build bpftrace with -fsanitize=address")
++set(BUILD_UBSAN OFF CACHE BOOL "Build bpftrace with -fsanitize=undefined")
+ set(ENABLE_MAN ON CACHE BOOL "Build man pages")
+ set(BUILD_TESTING ON CACHE BOOL "Build test suite")
+ set(ENABLE_TEST_VALIDATE_CODEGEN ON CACHE BOOL "Run LLVM IR validation tests")
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 0432e6106e6d..d5432c0995d3 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -2,6 +2,12 @@ if(HAVE_BFD_DISASM)
+ set(BFD_DISASM_SRC bfd-disasm.cpp)
+ endif()
+
++if (BUILD_UBSAN)
++ # This adds -fsanitize=undefined to all below compiler invocations, including
++ # subdirectories.
++ add_compile_options("-fsanitize=undefined")
++endif()
++
+ add_library(required_resources required_resources.cpp)
+ add_dependencies(required_resources parser)
+
+@@ -201,6 +207,13 @@ if (BUILD_ASAN)
+ target_link_options(bpftrace PUBLIC "-fsanitize=address")
+ endif()
+
++if (BUILD_UBSAN)
++ # We do not use add_link_options here since it doesn't work for some reason.
++ # Instead, just pass -fsanitize=undefined to the linker when linking the
++ # bpftrace target.
++ target_link_options(bpftrace PUBLIC "-fsanitize=undefined")
++endif()
++
+ if (STATIC_LINKING)
+ if(ANDROID)
+ target_link_libraries(libbpftrace "-Wl,-Bdynamic" "-ldl" "-lm" "-lz")
+diff --git a/src/aot/CMakeLists.txt b/src/aot/CMakeLists.txt
+index 1323bdacb6df..5267e4a1c19e 100644
+--- a/src/aot/CMakeLists.txt
++++ b/src/aot/CMakeLists.txt
+@@ -34,3 +34,7 @@ if(BUILD_ASAN)
+ target_compile_options(bpftrace-aotrt PUBLIC "-fsanitize=address")
+ target_link_options(bpftrace-aotrt PUBLIC "-fsanitize=address")
+ endif()
++
++if(BUILD_UBSAN)
++ target_link_options(bpftrace-aotrt PUBLIC "-fsanitize=undefined")
++endif()
+diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
+index b6002e8075ff..141b44d5a30e 100644
+--- a/tests/CMakeLists.txt
++++ b/tests/CMakeLists.txt
+@@ -94,6 +94,11 @@ if(BUILD_ASAN)
+ target_link_options(bpftrace_test PUBLIC "-fsanitize=address")
+ endif()
+
++if(BUILD_UBSAN)
++ target_compile_options(bpftrace_test PUBLIC "-fsanitize=undefined")
++ target_link_options(bpftrace_test PUBLIC "-fsanitize=undefined")
++endif()
++
+ # bpftrace tests require (at minimum) version 1.11.
+ # There's no great way to enforce a minimum version from cmake -- the cmake
+ # modules don't respect minimum requested version.
diff --git a/dev-debug/bpftrace/metadata.xml b/dev-debug/bpftrace/metadata.xml
new file mode 100644
index 000000000000..13c1ae7c4586
--- /dev/null
+++ b/dev-debug/bpftrace/metadata.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>holger@applied-asynchrony.com</email>
+ <name>Holger Hoffstätte</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>chutzpah@gentoo.org</email>
+ <name>Patrick McLean</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>dlan@gentoo.org</email>
+ <name>Yixun Lan</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <use>
+ <flag name="pcap">Enable skb_output using <pkg>net-libs/libpcap</pkg>
+ </flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/cgdb/Manifest b/dev-debug/cgdb/Manifest
new file mode 100644
index 000000000000..772ad27a5505
--- /dev/null
+++ b/dev-debug/cgdb/Manifest
@@ -0,0 +1 @@
+DIST cgdb-0.8.0.tar.gz 328281 BLAKE2B 60e577dd5f8363b91da33136a9ffd911581e9cea4cdc1d0fcd338e0a761a26921e6edf6298c619b8d0eb1486449843457b2c5370a395a8c49fed5382a60e63a2 SHA512 e2b653db472de2014402dae6d13953ab811526a47ad5d7a05e34cfba09f44d6fea6b19304b9205ff0e2ac9549ffa5818f4282d7c03293b6c0ca9d563f9ae89e1
diff --git a/dev-debug/cgdb/cgdb-0.8.0.ebuild b/dev-debug/cgdb/cgdb-0.8.0.ebuild
new file mode 100644
index 000000000000..f7e94fa4e4d3
--- /dev/null
+++ b/dev-debug/cgdb/cgdb-0.8.0.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/cgdb/cgdb.git"
+else
+ SRC_URI="https://github.com/cgdb/cgdb/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 arm ppc ppc64 x86"
+fi
+
+inherit autotools multilib-minimal
+
+DESCRIPTION="A curses front-end for GDB, the GNU debugger"
+HOMEPAGE="https://cgdb.github.io/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="test"
+# Tests are broken, need additional research to figure out the cause
+# Bug: https://bugs.gentoo.org/831899
+RESTRICT="test"
+
+DEPEND="
+ sys-libs/ncurses:=
+ sys-libs/readline:=
+"
+BDEPEND="
+ sys-devel/flex
+ test? (
+ dev-util/dejagnu
+ app-misc/dtach
+ )
+"
+RDEPEND="
+ ${DEPEND}
+ dev-debug/gdb
+"
+
+DOCS=( AUTHORS ChangeLog FAQ INSTALL NEWS README.md )
+
+PATCHES=(
+ "${FILESDIR}"/${P}-ar.patch
+ "${FILESDIR}"/${PN}-0.8.0-configure-c99.patch
+)
+
+src_prepare() {
+ default
+ AT_M4DIR="config" eautoreconf
+}
+
+multilib_src_configure() {
+ unset LEX
+ ECONF_SOURCE="${S}" econf
+}
+
+multilib_src_test() {
+ # Tests need an interactive shell, #654986
+
+ # real-time output of the log ;-)
+ touch "${T}/dtach-test.log" || die
+ tail -f "${T}/dtach-test.log" &
+ local tail_pid=${!}
+
+ nonfatal dtach -N "${T}/dtach.sock" \
+ bash -c 'emake check &> "${T}"/dtach-test.log; echo ${?} > "${T}"/dtach-test.out'
+
+ kill "${tail_pid}"
+ [[ -f ${T}/dtach-test.out ]] || die "Unable to run tests"
+ [[ $(<"${T}"/dtach-test.out) == 0 ]] || die "Tests failed"
+}
diff --git a/dev-debug/cgdb/cgdb-9999.ebuild b/dev-debug/cgdb/cgdb-9999.ebuild
new file mode 100644
index 000000000000..0567e31f4ac4
--- /dev/null
+++ b/dev-debug/cgdb/cgdb-9999.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+if [[ ${PV} = *9999* ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/cgdb/cgdb.git"
+else
+ SRC_URI="https://github.com/cgdb/cgdb/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86"
+fi
+
+inherit autotools multilib-minimal
+
+DESCRIPTION="A curses front-end for GDB, the GNU debugger"
+HOMEPAGE="https://cgdb.github.io/"
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="test"
+# Tests are broken, need additional research to figure out the cause
+# Bug: https://bugs.gentoo.org/831899
+RESTRICT="test"
+
+DEPEND="
+ sys-libs/ncurses:0=
+ sys-libs/readline:0="
+
+BDEPEND="
+ test? (
+ dev-util/dejagnu
+ app-misc/dtach
+ )"
+
+RDEPEND="
+ ${DEPEND}
+ dev-debug/gdb"
+
+DOCS=( AUTHORS ChangeLog FAQ INSTALL NEWS README.md )
+
+PATCHES=(
+ "${FILESDIR}"/${P}-ar.patch
+)
+
+src_prepare() {
+ default
+ AT_M4DIR="config" eautoreconf
+}
+
+multilib_src_test() {
+ # Tests need an interactive shell, #654986
+
+ # real-time output of the log ;-)
+ touch "${T}/dtach-test.log" || die
+ tail -f "${T}/dtach-test.log" &
+ local tail_pid=${!}
+
+ nonfatal dtach -N "${T}/dtach.sock" \
+ bash -c 'emake check &> "${T}"/dtach-test.log; echo ${?} > "${T}"/dtach-test.out'
+
+ kill "${tail_pid}"
+ [[ -f ${T}/dtach-test.out ]] || die "Unable to run tests"
+ [[ $(<"${T}"/dtach-test.out) == 0 ]] || die "Tests failed"
+}
+
+multilib_src_configure() {
+ ECONF_SOURCE="${S}" econf
+}
diff --git a/dev-debug/cgdb/files/cgdb-0.8.0-ar.patch b/dev-debug/cgdb/files/cgdb-0.8.0-ar.patch
new file mode 100644
index 000000000000..128c32ec238c
--- /dev/null
+++ b/dev-debug/cgdb/files/cgdb-0.8.0-ar.patch
@@ -0,0 +1,18 @@
+Bug: https://bugs.gentoo.org/724256
+Patch taken from https://github.com/cgdb/cgdb/pull/142
+--- a/configure.ac
++++ b/configure.ac
+@@ -13,6 +13,13 @@ AC_PROG_INSTALL
+ AC_PROG_RANLIB
+ AM_PROG_LEX
+ AC_PROG_YACC
++m4_ifndef([AC_PROG_AR],[dnl
++ AN_MAKEVAR([AR], [AC_PROG_AR])
++ AN_PROGRAM([ar], [AC_PROG_AR])
++ AC_DEFUN([AC_PROG_AR],
++ [AC_CHECK_TOOL(AR, ar, :)])
++])
++AC_PROG_AR
+
+ dnl determine if we are running in linux, cygwin, solaris, or freebsd
+ AC_CANONICAL_HOST
diff --git a/dev-debug/cgdb/files/cgdb-0.8.0-configure-c99.patch b/dev-debug/cgdb/files/cgdb-0.8.0-configure-c99.patch
new file mode 100644
index 000000000000..bd021476bf53
--- /dev/null
+++ b/dev-debug/cgdb/files/cgdb-0.8.0-configure-c99.patch
@@ -0,0 +1,23 @@
+https://bugs.gentoo.org/830222
+https://github.com/cgdb/cgdb/pull/338
+
+From 039dba0ec3ae2c4b2636418652a5c63f9ff86049 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Wed, 8 Mar 2023 11:29:06 +0100
+Subject: [PATCH] configure: Avoid implicit int in readline check
+
+Future compilers will not accept implicit ints by default, altering
+the outcome of the check without this change.
+
+Signed-off-by: Florian Weimer <fweimer@redhat.com>
+--- a/config/readline_check_version.m4
++++ b/config/readline_check_version.m4
+@@ -86,7 +86,7 @@ AC_CACHE_VAL(ac_cv_rl_version,
+ #include <stdlib.h>
+ #include <readline/readline.h>
+
+-main()
++int main(void)
+ {
+ FILE *fp;
+ fp = fopen("conftest.rlv", "w");
diff --git a/dev-debug/cgdb/files/cgdb-9999-ar.patch b/dev-debug/cgdb/files/cgdb-9999-ar.patch
new file mode 100644
index 000000000000..ed5f200b3260
--- /dev/null
+++ b/dev-debug/cgdb/files/cgdb-9999-ar.patch
@@ -0,0 +1,16 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -13,6 +13,13 @@ AC_PROG_INSTALL
+ AC_PROG_RANLIB
+ AM_PROG_LEX
+ AC_PROG_YACC
++m4_ifndef([AC_PROG_AR],[dnl
++ AN_MAKEVAR([AR], [AC_PROG_AR])
++ AN_PROGRAM([ar], [AC_PROG_AR])
++ AC_DEFUN([AC_PROG_AR],
++ [AC_CHECK_TOOL(AR, ar, :)])
++])
++AC_PROG_AR
+
+ dnl determine if we are running in linux, cygwin, solaris, or freebsd
+ AC_CANONICAL_HOST
diff --git a/dev-debug/cgdb/metadata.xml b/dev-debug/cgdb/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/dev-debug/cgdb/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/d-feet/Manifest b/dev-debug/d-feet/Manifest
new file mode 100644
index 000000000000..2b752579e2ae
--- /dev/null
+++ b/dev-debug/d-feet/Manifest
@@ -0,0 +1 @@
+DIST d-feet-0.3.16.tar.xz 237888 BLAKE2B b4773b781c53feb11889b49746e714a42a15a85daeb16dcd5235609fb6105c0b1a3ebeeb4a08830de9067f1c193702b31fcbfc67190eb2f901907b96acfcadbc SHA512 ff4db968cbd679e2065c614d538187fe3c56118b44638771ec9f7472bdba4a798dc682565f520a8680a8001ea39ce88555b07cda172e60f88eb6bdf1e00b5a6d
diff --git a/dev-debug/d-feet/d-feet-0.3.16-r1.ebuild b/dev-debug/d-feet/d-feet-0.3.16-r1.ebuild
new file mode 100644
index 000000000000..224b4efb77c2
--- /dev/null
+++ b/dev-debug/d-feet/d-feet-0.3.16-r1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit gnome2 meson python-single-r1 virtualx
+
+DESCRIPTION="D-Feet is a powerful D-Bus debugger"
+HOMEPAGE="https://wiki.gnome.org/Apps/DFeet"
+
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="amd64 ~riscv x86"
+
+IUSE="test +X"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="
+ ${PYTHON_DEPS}
+ >=x11-libs/gtk+-3.9.4:3[introspection]
+ >=dev-libs/gobject-introspection-1.82.0-r2:=
+"
+RDEPEND="
+ ${DEPEND}
+ >=dev-libs/glib-2.34:2
+ $(python_gen_cond_dep '
+ >=dev-python/pygobject-3.3.91:3[${PYTHON_USEDEP}]
+ ')
+ >=sys-apps/dbus-1
+ X? ( x11-libs/libwnck:3[introspection] )
+"
+BDEPEND="
+ dev-util/itstool
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.3.16-fix-meson-0.61.patch
+ "${FILESDIR}"/0001-Do-not-lint-coding-style-in-distro-testing.patch
+)
+
+src_configure() {
+ local emesonargs=(
+ $(meson_use test tests)
+ -Dpython="${EPYTHON}"
+ )
+ meson_src_configure
+}
+
+src_test() {
+ virtx meson_src_test
+}
+
+src_install() {
+ meson_src_install
+ python_optimize
+}
diff --git a/dev-debug/d-feet/files/0001-Do-not-lint-coding-style-in-distro-testing.patch b/dev-debug/d-feet/files/0001-Do-not-lint-coding-style-in-distro-testing.patch
new file mode 100644
index 000000000000..620e9cf400bb
--- /dev/null
+++ b/dev-debug/d-feet/files/0001-Do-not-lint-coding-style-in-distro-testing.patch
@@ -0,0 +1,30 @@
+From e1572f7c2e690411357457c76960e64ae9e8207a Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz@gentoo.org>
+Date: Fri, 20 Jun 2025 01:39:16 -0400
+Subject: [PATCH] Do not lint coding style in distro testing
+
+---
+ src/tests/meson.build | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+diff --git a/src/tests/meson.build b/src/tests/meson.build
+index 19f819b..0879981 100644
+--- a/src/tests/meson.build
++++ b/src/tests/meson.build
+@@ -18,13 +18,3 @@ test(
+ workdir: meson.current_source_dir(),
+ )
+
+-test(
+- 'check-code-style',
+- find_program('pycodestyle-3', 'pycodestyle', 'pep8'),
+- args: [
+- '--exclude=".svn,CVS,.bzr,.hg,.git,__pycache__,.\#*"',
+- '--max-line-length=99',
+- '--ignore=E123,E402,W504',
+- src_dir,
+- ],
+-)
+--
+2.49.0
+
diff --git a/dev-debug/d-feet/files/d-feet-0.3.16-fix-meson-0.61.patch b/dev-debug/d-feet/files/d-feet-0.3.16-fix-meson-0.61.patch
new file mode 100644
index 000000000000..064f94105882
--- /dev/null
+++ b/dev-debug/d-feet/files/d-feet-0.3.16-fix-meson-0.61.patch
@@ -0,0 +1,31 @@
+https://gitlab.gnome.org/GNOME/d-feet/-/merge_requests/32
+https://bugs.gentoo.org/831524
+
+From 05465d486afdba116dbc22fc22c1e6573aea4f22 Mon Sep 17 00:00:00 2001
+From: Jan Beich <jbeich@FreeBSD.org>
+Date: Mon, 24 Jan 2022 12:11:57 +0000
+Subject: [PATCH] meson: drop unused argument for i18n.merge_file()
+
+Ignored in Meson < 0.60.0, deprecated since 0.60.1 and fatal since 0.61.0.
+
+data/meson.build:15:0: ERROR: Function does not take positional arguments.
+data/meson.build:27:0: ERROR: Function does not take positional arguments.
+--- a/data/meson.build
++++ b/data/meson.build
+@@ -13,7 +13,6 @@ desktop_in = configure_file(
+ )
+
+ i18n.merge_file(
+- desktop,
+ type: 'desktop',
+ input: desktop_in,
+ output: '@BASENAME@',
+@@ -25,7 +24,6 @@ i18n.merge_file(
+ appdata = df_namespace + '.appdata.xml'
+
+ i18n.merge_file(
+- appdata,
+ input: appdata + '.in',
+ output: '@BASENAME@',
+ po_dir: po_dir,
+GitLab
diff --git a/dev-debug/d-feet/metadata.xml b/dev-debug/d-feet/metadata.xml
new file mode 100644
index 000000000000..f6b6cde5f785
--- /dev/null
+++ b/dev-debug/d-feet/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>gnome@gentoo.org</email>
+ <name>Gentoo GNOME Desktop</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/d-spy/Manifest b/dev-debug/d-spy/Manifest
new file mode 100644
index 000000000000..3c4dbcd78c67
--- /dev/null
+++ b/dev-debug/d-spy/Manifest
@@ -0,0 +1,2 @@
+DIST d-spy-48.0.tar.xz 219364 BLAKE2B b2df2027ce3767516bdd1ba9304c7b4f0e5883d04e26cfe94abc34c2ddb6292cca8fe313715e447b6b94f69316b96884578fac9891e5037acb7061f4df1f15da SHA512 aaea06f6ebdd93b3ab1fee8fd917600ae93aa90e35e0e8188eac614b10b043777021649e585150f973b5e0c079f1e94b10139758c6fe9e6d197f16192e1d44bd
+DIST d-spy-49.2.tar.xz 215988 BLAKE2B 2950f8887c945afa0ee6a4af8e7e934595a67862a9e5056b48b72076fedeec985abc97d68eec87929e117a42730fc3f62a33d869d6b473569bcc7e1ff428964e SHA512 379d7ff8539163cf9792b6c53747fd66540f6d12616b0f7ec977adab890de4362fbf77cdc8b4afeaeb0583cff1ae6f7621cda880ab05a2cde6b3abc372e9707d
diff --git a/dev-debug/d-spy/d-spy-48.0.ebuild b/dev-debug/d-spy/d-spy-48.0.ebuild
new file mode 100644
index 000000000000..0ba6cb0690ee
--- /dev/null
+++ b/dev-debug/d-spy/d-spy-48.0.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit gnome.org meson xdg
+
+DESCRIPTION="D-Spy is a simple tool to explore D-Bus connections"
+HOMEPAGE="https://apps.gnome.org/Dspy/"
+
+LICENSE="GPL-3+ LGPL-3+"
+SLOT="1"
+KEYWORDS="amd64 ~arm64"
+
+DEPEND="
+ >=dev-libs/glib-2.76:2
+ >=gui-libs/gtk-4.12:4
+ >=gui-libs/libadwaita-1.5:1
+"
+RDEPEND="
+ ${DEPEND}
+ >=sys-apps/dbus-1
+"
+BDEPEND="
+ dev-libs/appstream-glib
+ dev-util/desktop-file-utils
+ sys-devel/gettext
+ virtual/pkgconfig
+"
+
+src_configure() {
+ local emesonargs=(
+ -Dbuilder=false
+ )
+ meson_src_configure
+}
diff --git a/dev-debug/d-spy/d-spy-49.2.ebuild b/dev-debug/d-spy/d-spy-49.2.ebuild
new file mode 100644
index 000000000000..8cb6250c2433
--- /dev/null
+++ b/dev-debug/d-spy/d-spy-49.2.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit gnome.org meson xdg
+
+DESCRIPTION="D-Spy is a simple tool to explore D-Bus connections"
+HOMEPAGE="https://apps.gnome.org/Dspy/"
+
+LICENSE="GPL-3+ LGPL-3+"
+SLOT="1"
+KEYWORDS="~amd64 ~arm64"
+
+DEPEND="
+ >=dev-libs/glib-2.82:2
+ >=gui-libs/gtk-4.16:4
+ >=dev-libs/libdex-0.11
+ >=gui-libs/libadwaita-1.7:1
+"
+RDEPEND="
+ ${DEPEND}
+ >=sys-apps/dbus-1
+"
+BDEPEND="
+ dev-libs/appstream-glib
+ dev-util/desktop-file-utils
+ sys-devel/gettext
+ virtual/pkgconfig
+"
+
+src_configure() {
+ local emesonargs=(
+ -Dbuilder=false
+ )
+ meson_src_configure
+}
diff --git a/dev-debug/d-spy/metadata.xml b/dev-debug/d-spy/metadata.xml
new file mode 100644
index 000000000000..f6b6cde5f785
--- /dev/null
+++ b/dev-debug/d-spy/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>gnome@gentoo.org</email>
+ <name>Gentoo GNOME Desktop</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/ddd/Manifest b/dev-debug/ddd/Manifest
new file mode 100644
index 000000000000..365fb8f7a180
--- /dev/null
+++ b/dev-debug/ddd/Manifest
@@ -0,0 +1,2 @@
+DIST ddd-3.3.12.tar.gz 5687115 BLAKE2B 52c448eda46bfdc4f5720abda569a0c70f3680c3fdd543f6101c9af8c4c448496414c1c2a7be91590d9f14d0c8c2bb053a234d179bf900ca52df0ea8c2642131 SHA512 1249e4f5f25335f8f2c3616470f7a8f36262c00b8ac12b79f2b2806228de2831ebeb780fe09490e5e8b5b1ca108fe936ae70856f6a6ec02876fc75c7b4a7dbf3
+DIST ddd-3.4.1.tar.gz 5843945 BLAKE2B 14ec84250dc1a32998cd85d0eb303d4c4d53e027a7f49ca65b7cd65f2c30ea0e450ba41cc35d9050de4c7097f4703d1bb40d1402b5dfdecc5c22f86b2b8101ed SHA512 84dfa5dbbba1033a0fb4e60c6bfacd86f9d9b22f20ab02ada1c1a2abfdac18fe5ef8af25c9519638ae3b9a1d06f4518aec03afff9dbae35e8fd6aab8a6829bef
diff --git a/dev-debug/ddd/ddd-3.3.12-r5.ebuild b/dev-debug/ddd/ddd-3.3.12-r5.ebuild
new file mode 100644
index 000000000000..730e4ac6d261
--- /dev/null
+++ b/dev-debug/ddd/ddd-3.3.12-r5.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop flag-o-matic optfeature
+
+DESCRIPTION="Graphical front-end for command-line debuggers"
+HOMEPAGE="https://www.gnu.org/software/ddd"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3 LGPL-3 FDL-1.1"
+SLOT="0"
+KEYWORDS="~alpha amd64 ppc ppc64 ~sparc x86"
+IUSE="readline"
+
+RESTRICT="test"
+
+COMMON_DEPEND="
+ dev-debug/gdb
+ sys-libs/ncurses:=
+ x11-libs/libX11
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXpm
+ x11-libs/libXt
+ >=x11-libs/motif-2.3:0
+ ppc? ( dev-libs/elfutils )
+ ppc64? ( dev-libs/elfutils )
+ readline? ( sys-libs/readline:= )
+"
+DEPEND="${COMMON_DEPEND}
+ x11-base/xorg-proto
+"
+RDEPEND="${COMMON_DEPEND}
+ x11-apps/xfontsel
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-gcc44.patch"
+ "${FILESDIR}/${P}-gdb-disassembler-bug.patch"
+ "${FILESDIR}/${PN}-3.3.12-man.patch"
+ "${FILESDIR}/${PN}-3.3.12-tinfo.patch"
+ "${FILESDIR}/${PN}-3.3.12-gcc9.patch"
+ "${FILESDIR}/${PN}-3.3.12-parallel.patch"
+ "${FILESDIR}/${PN}-3.3.12-clang.patch"
+)
+
+DOCS=(
+ AUTHORS CREDITS INSTALL NEWS PROBLEMS README TIPS TODO
+ doc/ddd{-paper.ps,.pdf,-themes.pdf}
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ # -Werror=odr
+ # https://bugs.gentoo.org/858347
+ # https://savannah.gnu.org/bugs/?65456
+ filter-lto
+
+ econf \
+ $(use_with readline)
+}
+
+src_install() {
+ # Remove app defaults
+ rm -f "${S}"/ddd/Ddd || die
+
+ # Install ddd distribution
+ default
+
+ # Install application icon
+ doicon "${S}"/icons/ddd.xpm
+}
+
+pkg_postinst() {
+ optfeature "Data visualisation" sci-visualization/gnuplot
+ optfeature "Java debugging" virtual/jdk
+ optfeature "Bash debugging" app-shells/bashdb
+ optfeature "Perl debugging" dev-lang/perl
+ optfeature "Python debugging" dev-python/pydb
+ elog
+ elog "Important notice: if you encounter DDD crashes during visualization, you might"
+ elog "have hit bug #459324. Try switching to plotting in external window:"
+ elog "Select Edit|Preferences|Helpers and switch 'plot window' to 'external'"
+}
diff --git a/dev-debug/ddd/ddd-3.4.1.ebuild b/dev-debug/ddd/ddd-3.4.1.ebuild
new file mode 100644
index 000000000000..c7182039dedd
--- /dev/null
+++ b/dev-debug/ddd/ddd-3.4.1.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools desktop flag-o-matic optfeature
+
+DESCRIPTION="Graphical front-end for command-line debuggers"
+HOMEPAGE="https://www.gnu.org/software/ddd"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.gz"
+
+LICENSE="GPL-3 LGPL-3 FDL-1.1"
+SLOT="0"
+KEYWORDS="~alpha amd64 ppc ppc64 ~sparc x86"
+IUSE="readline"
+
+RESTRICT="test"
+
+COMMON_DEPEND="
+ dev-debug/gdb
+ media-libs/freetype:2
+ sys-libs/ncurses:=
+ x11-libs/libX11
+ x11-libs/libXaw
+ x11-libs/libXmu
+ x11-libs/libXpm
+ x11-libs/libXt
+ >=x11-libs/motif-2.3:0
+ ppc? ( dev-libs/elfutils )
+ ppc64? ( dev-libs/elfutils )
+ readline? ( sys-libs/readline:= )
+"
+DEPEND="${COMMON_DEPEND}
+ x11-base/xorg-proto
+"
+RDEPEND="${COMMON_DEPEND}
+ x11-apps/xfontsel
+"
+
+DOCS=(
+ README doc/ddd{.pdf,-themes.pdf}
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ # -Werror=odr
+ # https://bugs.gentoo.org/858347
+ # https://savannah.gnu.org/bugs/?65456
+ filter-lto
+
+ econf \
+ $(use_with readline)
+}
+
+src_install() {
+ # Remove app defaults
+ rm -f "${S}"/ddd/Ddd || die
+
+ # Install ddd distribution
+ default
+
+ # Install application icon
+ doicon "${S}"/icons/ddd.xpm
+}
+
+pkg_postinst() {
+ optfeature "Data visualisation" sci-visualization/gnuplot
+ optfeature "Java debugging" virtual/jdk
+ optfeature "Bash debugging" app-shells/bashdb
+ optfeature "Perl debugging" dev-lang/perl
+ optfeature "Python debugging" dev-python/pydb
+ elog
+ elog "Important notice: if you encounter DDD crashes during visualization, you might"
+ elog "have hit bug #459324. Try switching to plotting in external window:"
+ elog "Select Edit|Preferences|Helpers and switch 'plot window' to 'external'"
+}
diff --git a/dev-debug/ddd/files/ddd-3.3.12-clang.patch b/dev-debug/ddd/files/ddd-3.3.12-clang.patch
new file mode 100644
index 000000000000..a1f8da27b116
--- /dev/null
+++ b/dev-debug/ddd/files/ddd-3.3.12-clang.patch
@@ -0,0 +1,15 @@
+diff -ruN ddd-3.3.12/ddd/exit.C ddd-my/ddd/exit.C
+--- ddd-3.3.12/ddd/exit.C 2009-02-11 18:25:07.000000000 +0100
++++ ddd-my/ddd/exit.C 2020-09-27 03:23:14.713650981 +0200
+@@ -769,7 +769,11 @@
+
+ static XtAppContext xt_error_app_context = 0;
+
++#ifdef __clang__
++static void ddd_xt_error(String message = 0) _X_NORETURN
++#else
+ static void ddd_xt_error(String message = 0)
++#endif
+ {
+ ddd_has_crashed = true;
+
diff --git a/dev-debug/ddd/files/ddd-3.3.12-gcc44.patch b/dev-debug/ddd/files/ddd-3.3.12-gcc44.patch
new file mode 100644
index 000000000000..2464b2b4a9c4
--- /dev/null
+++ b/dev-debug/ddd/files/ddd-3.3.12-gcc44.patch
@@ -0,0 +1,10 @@
+--- ddd-3.3.12-orig/ddd/strclass.C
++++ ddd-3.3.12/ddd/strclass.C
+@@ -39,6 +39,7 @@
+ #include <limits.h>
+ #include <new>
+ #include <stdlib.h>
++#include <stdio.h>
+
+ void string::error(const char* msg) const
+ {
diff --git a/dev-debug/ddd/files/ddd-3.3.12-gcc9.patch b/dev-debug/ddd/files/ddd-3.3.12-gcc9.patch
new file mode 100644
index 000000000000..ce12a41c91d2
--- /dev/null
+++ b/dev-debug/ddd/files/ddd-3.3.12-gcc9.patch
@@ -0,0 +1,93 @@
+diff -ruN -x '*.am' ddd-3.3.12/ddd/strclass.h my/ddd/strclass.h
+--- ddd-3.3.12/ddd/strclass.h 2009-02-11 18:25:06.000000000 +0100
++++ my/ddd/strclass.h 2019-11-22 22:00:49.000267420 +0100
+@@ -543,7 +543,6 @@
+ bool OK() const;
+ };
+
+-
+ class string
+ {
+ friend class subString;
+@@ -811,9 +810,9 @@
+ const regex& sep);
+
+ friend string common_prefix(const string& x, const string& y,
+- int startpos = 0);
++ int startpos);
+ friend string common_suffix(const string& x, const string& y,
+- int startpos = -1);
++ int startpos);
+ friend string replicate(char c, int n);
+ friend string replicate(const string& y, int n);
+ friend string join(const string *src, int n, const string& sep);
+@@ -864,8 +863,8 @@
+ friend std::istream& operator>>(std::istream& s, string& x);
+
+ friend int readline(std::istream& s, string& x,
+- char terminator = '\n',
+- int discard_terminator = 1);
++ char terminator,
++ int discard_terminator);
+
+ // Status
+ unsigned int length() const;
+@@ -882,6 +881,58 @@
+ bool OK() const;
+ };
+
++inline void cat(const string&, const string&, string&);
++inline void cat(const string&, const subString&, string&);
++inline void cat(const string&, const constSubString&, string&);
++inline void cat(const string&, const char*, string&);
++inline void cat(const string&, char*, string&);
++inline void cat(const string&, char, string&);
++
++inline void cat(const subString&, const string&, string&);
++inline void cat(const subString&, const subString&, string&);
++inline void cat(const subString&, const char*, string&);
++inline void cat(const subString&, char*, string&);
++inline void cat(const subString&, char, string&);
++
++inline void cat(const char*, const string&, string&);
++inline void cat(const char*, const subString&, string&);
++inline void cat(const char*, const char*, string&);
++inline void cat(const char*, char*, string&);
++inline void cat(const char*, char, string&);
++
++inline void cat(char*, const string&, string&);
++inline void cat(char*, const subString&, string&);
++inline void cat(char*, const char*, string&);
++inline void cat(char*, char*, string&);
++inline void cat(char*, char, string&);
++
++inline void cat(char, const string&, string&);
++inline void cat(char, const subString&, string&);
++inline void cat(char, const char*, string&);
++inline void cat(char, char*, string&);
++inline void cat(char, char, string&);
++
++int split(const string& x, string *res, int maxn,
++ const string& sep);
++int split(const string& x, string *res, int maxn,
++ const regex& sep);
++
++string common_prefix(const string& x, const string& y,
++ int startpos = 0);
++string common_suffix(const string& x, const string& y,
++ int startpos = -1);
++string replicate(char c, int n);
++string replicate(const string& y, int n);
++string join(const string *src, int n, const string& sep);
++
++inline std::ostream& operator<<(std::ostream& s, const string& x);
++inline std::ostream& operator<<(std::ostream& s, const subString& x);
++std::istream& operator>>(std::istream& s, string& x);
++
++int readline(std::istream& s, string& x,
++ char terminator = '\n',
++ int discard_terminator = 1);
++
+ // Inject names manually to accomodate argument-dependent name lookup (ADL)
+ // (aka Koenig lookup). The rule is that friend declarations are visible
+ // when found through ADL because an argument of the call happens to be
diff --git a/dev-debug/ddd/files/ddd-3.3.12-gdb-disassembler-bug.patch b/dev-debug/ddd/files/ddd-3.3.12-gdb-disassembler-bug.patch
new file mode 100644
index 000000000000..738cda5946f9
--- /dev/null
+++ b/dev-debug/ddd/files/ddd-3.3.12-gdb-disassembler-bug.patch
@@ -0,0 +1,11 @@
+--- a/ddd/GDBAgent.C 2004-09-01 20:07:38.000000000 +0200
++++ b/ddd/GDBAgent.C 2010-06-15 14:16:34.000000000 +0200
+@@ -3078,7 +3078,7 @@
+ {
+ string end_( end );
+ normalize_address(end_);
+- cmd += ' ';
++ cmd += ',';
+ cmd += end_;
+ }
+ return cmd;
diff --git a/dev-debug/ddd/files/ddd-3.3.12-man.patch b/dev-debug/ddd/files/ddd-3.3.12-man.patch
new file mode 100644
index 000000000000..06f9deb806f0
--- /dev/null
+++ b/dev-debug/ddd/files/ddd-3.3.12-man.patch
@@ -0,0 +1,16 @@
+diff -ruN ddd-3.3.12/ddd/Makefile.am ddd-my/ddd/Makefile.am
+--- ddd-3.3.12/ddd/Makefile.am 2009-02-11 18:25:07.000000000 +0100
++++ ddd-my/ddd/Makefile.am 2012-11-06 01:48:46.363493473 +0100
+@@ -1371,10 +1371,8 @@
+ man_MANS = ddd.1
+
+ # `ddd.man' has 8-bit format, `ddd.1' has 7-bit format
+-ddd.1: ddd.man $(srcdir)/unumlaut.sed
+- -$(SED) -f $(srcdir)/unumlaut.sed ddd.man | $(DELETE_CR) > $@~ \
+- && $(MV) $@~ $@
+-
++ddd.1: ddd.man
++ iconv -f ISO8859-15 -t UTF-8 ddd.man > ddd.1
+
+
+ # -----------------------------------------------------------------------------
diff --git a/dev-debug/ddd/files/ddd-3.3.12-parallel.patch b/dev-debug/ddd/files/ddd-3.3.12-parallel.patch
new file mode 100644
index 000000000000..21624a2ab614
--- /dev/null
+++ b/dev-debug/ddd/files/ddd-3.3.12-parallel.patch
@@ -0,0 +1,15 @@
+diff -ruN -x strclass.h ddd-3.3.12/ddd/Makefile.am my/ddd/Makefile.am
+--- ddd-3.3.12/ddd/Makefile.am 2009-02-11 18:25:07.000000000 +0100
++++ my/ddd/Makefile.am 2019-11-22 22:49:26.212765331 +0100
+@@ -580,9 +580,8 @@
+
+ # Make sure needed headers are built before trying to compile these files
+ # (Assume ddd.C is the first source file to be built.)
+-ddd.o: version.h host.h root.h
+-resources.o: Ddd.ad.h
+-show.o: build.h
++# MM: AND WHY WOULD YOU ASSUME THAT??
++BUILT_SOURCES = version.h host.h root.h Ddd.ad.h build.h
+
+ # -----------------------------------------------------------------------------
+ # Local Libraries.
diff --git a/dev-debug/ddd/files/ddd-3.3.12-tinfo.patch b/dev-debug/ddd/files/ddd-3.3.12-tinfo.patch
new file mode 100644
index 000000000000..ab7df14ae9d9
--- /dev/null
+++ b/dev-debug/ddd/files/ddd-3.3.12-tinfo.patch
@@ -0,0 +1,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -360,7 +360,7 @@
+ dnl
+ _termlib="${ddd_termlib}"
+ if test "x${ddd_termlib}" = x; then
+- _termlib="mytinfo ncurses curses termcap terminfo termlib"
++ _termlib="mytinfo ncurses tinfo curses termcap terminfo termlib"
+ fi
+ _termlib_path=
+ if test x"${ddd_termlib_libraries_path}" != x; then
diff --git a/dev-debug/ddd/metadata.xml b/dev-debug/ddd/metadata.xml
new file mode 100644
index 000000000000..9e0d9ed37bef
--- /dev/null
+++ b/dev-debug/ddd/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <longdescription lang="en">
+ GNU DDD is a graphical front-end for command-line debuggers such as
+ GDB, DBX, WDB, Ladebug, JDB, XDB, the Perl debugger, the bash debugger,
+ or the Python debugger. Besides ``usual'' front-end features such as
+ viewing source texts, DDD has become famous through its interactive
+ graphical data display, where data structures are displayed as graphs.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/drgn/Manifest b/dev-debug/drgn/Manifest
new file mode 100644
index 000000000000..09d4a727cea4
--- /dev/null
+++ b/dev-debug/drgn/Manifest
@@ -0,0 +1,2 @@
+DIST drgn-0.0.33.tar.gz 1674341 BLAKE2B 3995dd5c4b0242bea63e1fe40a031ac117376287b323da24286700d455ce8bacfee56dc7fc7fb873ef67295f47ae93b7f2ff56483ddd5cbe30ccc83f9e9f32af SHA512 163a281af90320287914b5544adb05f1dd5b96d9f2478df82f70f8258f30814c03be673fa9db177297b5fa1223c9923c041209c68b3df6e34f2b63b14fd74301
+DIST drgn-0.1.0.tar.gz 1850058 BLAKE2B 1556b67c59b565a94874eb88fa5cf3d30326560c4b599e45b750f74715d96fa0e4ae3675378503ecb4ae81a0e2bd2f810ff3cc4a1ccf1e6d0049aa2deeea2df2 SHA512 de17207b7badfc685c1a4d9593f9cd9e330ae6d7bf4f80628bf2b5c9d5c2a309b88bd05c0d46837aa9bacc5f3bd35711ed9226fbcaef1b6e37b3bb1830c652ca
diff --git a/dev-debug/drgn/drgn-0.0.33.ebuild b/dev-debug/drgn/drgn-0.0.33.ebuild
new file mode 100644
index 000000000000..7391a8237363
--- /dev/null
+++ b/dev-debug/drgn/drgn-0.0.33.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 multiprocessing pypi toolchain-funcs
+
+DESCRIPTION="Programmable debugger"
+HOMEPAGE="
+ https://github.com/osandov/drgn
+ https://pypi.org/project/drgn/
+ https://drgn.readthedocs.io/en/latest/
+"
+
+LICENSE="LGPL-2.1+"
+# Note that as of 0.0.31 at least, the API+ABI of libdrgn is unstable.
+SLOT="0/${PV}"
+KEYWORDS="~amd64"
+IUSE="debuginfod lzma openmp"
+
+DEPEND="
+ >=dev-libs/elfutils-0.165[debuginfod?]
+ dev-libs/libkdumpfile:=
+ lzma? ( app-arch/xz-utils )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-libs/check )
+"
+
+distutils_enable_tests unittest
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+src_configure() {
+ tc-export AR CC OBJCOPY OBJDUMP PKG_CONFIG RANLIB STRIP
+
+ cat >> setup.cfg <<-EOF || die
+ [build_ext]
+ parallel = $(makeopts_jobs)
+ EOF
+
+ # setuptools calls autotools (!)
+ export CONFIGURE_FLAGS
+ CONFIGURE_FLAGS="--disable-dependency-tracking --disable-silent-rules"
+ CONFIGURE_FLAGS+=" --with-libkdumpfile"
+ CONFIGURE_FLAGS+=" --enable-libdrgn"
+ CONFIGURE_FLAGS+=" --enable-python-extension"
+ CONFIGURE_FLAGS+=" --disable-dlopen-debuginfod"
+ CONFIGURE_FLAGS+=" $(use_with debuginfod)"
+ CONFIGURE_FLAGS+=" $(use_with lzma)"
+ CONFIGURE_FLAGS+=" $(use_enable openmp)"
+ CONFIGURE_FLAGS+=" --build=${CBUILD}"
+ CONFIGURE_FLAGS+=" --host=${CHOST}"
+ CONFIGURE_FLAGS+=" --target=${CTARGET}"
+ distutils-r1_src_configure
+}
diff --git a/dev-debug/drgn/drgn-0.1.0.ebuild b/dev-debug/drgn/drgn-0.1.0.ebuild
new file mode 100644
index 000000000000..f43acbdec2a3
--- /dev/null
+++ b/dev-debug/drgn/drgn-0.1.0.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 multiprocessing pypi toolchain-funcs
+
+DESCRIPTION="Programmable debugger"
+HOMEPAGE="
+ https://github.com/osandov/drgn
+ https://pypi.org/project/drgn/
+ https://drgn.readthedocs.io/en/latest/
+"
+
+LICENSE="LGPL-2.1+"
+# Note that as of 0.0.31 at least, the API+ABI of libdrgn is unstable.
+SLOT="0/${PV}"
+KEYWORDS="~amd64"
+IUSE="debuginfod lzma openmp pcre"
+
+DEPEND="
+ >=dev-libs/elfutils-0.165[debuginfod?]
+ dev-libs/libkdumpfile:=
+ lzma? ( app-arch/xz-utils )
+ pcre? ( dev-libs/libpcre2 )
+"
+RDEPEND="${DEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ test? ( dev-libs/check )
+"
+
+distutils_enable_tests unittest
+
+pkg_pretend() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+src_configure() {
+ tc-export AR CC OBJCOPY OBJDUMP PKG_CONFIG RANLIB STRIP
+
+ cat >> setup.cfg <<-EOF || die
+ [build_ext]
+ parallel = $(makeopts_jobs)
+ EOF
+
+ # setuptools calls autotools (!)
+ export CONFIGURE_FLAGS
+ CONFIGURE_FLAGS="--disable-dependency-tracking --disable-silent-rules"
+ CONFIGURE_FLAGS+=" --with-libkdumpfile"
+ CONFIGURE_FLAGS+=" --enable-libdrgn"
+ CONFIGURE_FLAGS+=" --enable-python-extension"
+ CONFIGURE_FLAGS+=" --disable-dlopen-debuginfod"
+ CONFIGURE_FLAGS+=" $(use_with debuginfod)"
+ CONFIGURE_FLAGS+=" $(use_with lzma)"
+ CONFIGURE_FLAGS+=" $(use_enable openmp)"
+ CONFIGURE_FLAGS+=" $(use_with pcre pcre2)"
+ CONFIGURE_FLAGS+=" --build=${CBUILD}"
+ CONFIGURE_FLAGS+=" --host=${CHOST}"
+ CONFIGURE_FLAGS+=" --target=${CTARGET}"
+ distutils-r1_src_configure
+}
diff --git a/dev-debug/drgn/metadata.xml b/dev-debug/drgn/metadata.xml
new file mode 100644
index 000000000000..3deb6540954f
--- /dev/null
+++ b/dev-debug/drgn/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <use>
+ <flag name="debuginfod">Enable debuginfod support</flag>
+ <flag name="lzma">Support XZ-compressed debug information (MiniDebugInfo).</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/dtrace/Manifest b/dev-debug/dtrace/Manifest
new file mode 100644
index 000000000000..8ae8bc350f5a
--- /dev/null
+++ b/dev-debug/dtrace/Manifest
@@ -0,0 +1,2 @@
+DIST dtrace-2.0.6.tar.gz 1728356 BLAKE2B dbb28c97a91e6759517eb6840b93b3abc5df08d33b94bd70bd03e2ffb523469324daa1d067c150244ea94c9ffc8d31703e4963f0746fed540863a8fc7f6674ef SHA512 89f9c572c2aed56fb6161d4a98681ca151fd084a21d0de455eab26dca839dd7001633a09a37d08078fce311b23b4a1b7ba7aef41a070249fd4e3fc68e328997d
+DIST dtrace-2.0.7.tar.gz 1730617 BLAKE2B 971cadc74482368f1a51c89f8793f01ebf499fc3e1dc085b7e26642f157e8a58979082e9c3dd127b21443592f32d49ced4571d933392c0576650c9adc8bfb419 SHA512 5c49efde8a2bd4f4e79410bfebde07ac49415789a21351c077166d3c5e0f58a5153f8e391f7775cb9c6adb1bec30884dae2540c73ca2db25d56d30202e42f789
diff --git a/dev-debug/dtrace/dtrace-2.0.6.ebuild b/dev-debug/dtrace/dtrace-2.0.6.ebuild
new file mode 100644
index 000000000000..4c3fb6b82c29
--- /dev/null
+++ b/dev-debug/dtrace/dtrace-2.0.6.ebuild
@@ -0,0 +1,232 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo flag-o-matic linux-info multilib systemd toolchain-funcs udev
+
+DESCRIPTION="Dynamic BPF-based system-wide tracing tool"
+HOMEPAGE="https://github.com/oracle/dtrace https://wiki.gentoo.org/wiki/DTrace"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_BRANCH="devel"
+ EGIT_REPO_URI="https://github.com/oracle/dtrace"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/oracle/dtrace/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+ KEYWORDS="-* amd64 arm64"
+fi
+
+LICENSE="UPL-1.0"
+SLOT="0"
+IUSE="test-install valgrind"
+
+# TODO: can we make the wireshark dep conditional?
+DEPEND="
+ dev-libs/elfutils
+ dev-libs/libbpf
+ dev-libs/libpfm:=
+ net-analyzer/wireshark[dumpcap]
+ net-libs/libpcap
+ >=sys-fs/fuse-3.2.0:3=
+ >=sys-libs/binutils-libs-2.42:=
+ virtual/zlib:=
+"
+RDEPEND="
+ ${DEPEND}
+ !dev-debug/systemtap[dtrace-symlink(+)]
+ net-analyzer/wireshark
+ test-install? (
+ app-alternatives/bc
+ app-editors/vim-core
+ dev-build/make
+ dev-lang/perl
+ dev-util/perf
+ net-fs/nfs-utils
+ sys-apps/coreutils
+ sys-fs/xfsprogs
+ sys-process/time
+ virtual/jdk
+ )
+"
+BDEPEND="
+ dev-build/make
+ sys-apps/gawk
+ sys-devel/bison
+ >=sys-devel/bpf-toolchain-14.1.0
+ sys-devel/flex
+"
+DEPEND+=" valgrind? ( dev-debug/valgrind )"
+
+QA_PRESTRIPPED="
+ usr/.*/dtrace/testsuite/test/triggers/.*
+"
+QA_FLAGS_IGNORED="
+ usr/.*/dtrace/testsuite/test/triggers/.*
+"
+
+# TODO: report upstream (bug #938221) although it seems like it's
+# not relevant given it's a BPF object.
+QA_EXECSTACK="
+ usr/*/dtrace/bpf_dlib.*
+"
+
+pkg_pretend() {
+ # TODO: optional kernel patches
+
+ # Basics for debugging information, BPF
+ local CONFIG_CHECK="~BPF ~DEBUG_INFO_BTF ~KALLSYMS_ALL"
+
+ CONFIG_CHECK+=" ~CUSE"
+
+ # Tracing
+ CONFIG_CHECK+=" ~TRACING"
+ CONFIG_CHECK+=" ~UPROBES ~UPROBE_EVENTS"
+ CONFIG_CHECK+=" ~FTRACE ~FTRACE_SYSCALLS ~DYNAMIC_FTRACE ~FUNCTION_TRACER"
+ CONFIG_CHECK+=" ~FPROBE"
+ CONFIG_CHECK+=" ~BPF_KPROBE_OVERRIDE ~FUNCTION_ERROR_INJECTION"
+ # DTrace can fallback to kprobes for fbt but people often want them off
+ # for security and newer kernels work fine with BPF for that, so
+ # let's omit it. kprobes are slower and scale poorly.
+
+ # https://gcc.gnu.org/PR84052
+ CONFIG_CHECK+=" !GCC_PLUGIN_RANDSTRUCT"
+
+ if use test-install ; then
+ # See test/modules
+ CONFIG_CHECK+=" ~EXT4_FS ~ISO9660_FS ~NFS_FS ~RDS ~TUN"
+ fi
+
+ check_extra_config
+}
+
+pkg_setup() {
+ eval unset ${!LC_*} LANG
+}
+
+src_configure() {
+ if tc-is-cross-compiler; then
+ die "DTrace does not yet support cross-compilation."
+ fi
+
+ tc-export CC
+
+ # lld does this by default, so fix that, although lld fails anyway...
+ # 'LIBDTRACE_1.0' to symbol 'dtrace_provider_modules' failed: symbol not defined
+ append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
+ # mold and lld can't cope with some relocation types used, e.g.
+ # 'test-triggers--usdt-tst-forker-prov.o:(.SUNW_dof): unknown relocation: R_X86_64_GLOB_DAT'
+ tc-ld-force-bfd
+
+ # -fno-semantic-interposition seems to lead to a broken dtrace
+ # that can't actually obtain results from probes, even trivial examples
+ # just hang.
+ filter-flags -fno-semantic-interposition
+ # While it builds as of 2025-06-08, it's broken at runtime
+ # in the same way as -fno-semantic-interposition (hangs, no probes fire).
+ filter-lto
+
+ local confargs=(
+ # TODO: Maybe we should set the UNPRIV_UID to something? -3 is a bit... kludgy
+ --prefix="${EPREFIX}"/usr
+ --mandir="${EPREFIX}"/usr/share/man
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}
+ --with-systemd
+ HAVE_LIBCTF=yes
+ HAVE_BPFV3=yes
+ HAVE_VALGRIND=$(usex valgrind)
+ )
+
+ edo ./configure "${confargs[@]}"
+}
+
+src_compile() {
+ local myemakeargs=(
+ verbose=1
+ $(usev !test-install TRIGGERS='')
+ )
+
+ if use amd64 ; then
+ ! has_multilib_profile && myemakeargs+=( NATIVE_BITNESS_ONLY=1 )
+ fi
+
+ # -j1: https://github.com/oracle/dtrace/issues/82
+ emake -j1 "${myemakeargs[@]}"
+}
+
+src_test() {
+ # Needs root and is also very time-consuming
+ :;
+}
+
+src_install() {
+ emake DESTDIR="${D}" -j1 install $(usev test-install install-test)
+
+ # We want to strip neither the BPF libraries nor libdtrace.so itself
+ # as probes attach to some symbols that would get removed otherwise.
+ dostrip -x "/usr/$(get_libdir)"
+
+ # It's a binary (TODO: move it?)
+ docompress -x /usr/share/doc/${PF}/showUSDT
+
+ newinitd "${FILESDIR}"/dtprobed.init dtprobed
+}
+
+pkg_postinst() {
+ # We need a udev reload to pick up the CUSE device node rules.
+ udev_reload
+
+ if [[ -n ${REPLACING_VERSIONS} ]]; then
+ # TODO: Make this more intelligent wrt comparison
+ # One option for this is to detect when it's needed (DOF stash layout changes)
+ # and then e.g. sleep and restart for the user.
+ if systemd_is_booted ; then
+ einfo "Restart the DTrace 'dtprobed' service after upgrades once all dtraces are stopped with:"
+ einfo " systemctl try-restart dtprobed"
+ else
+ einfo "Restart the DTrace 'dtprobed' service after upgrades once all dtraces are stopped with:"
+ einfo " /etc/init.d/dtprobed restart"
+ fi
+ else
+ einfo "See https://wiki.gentoo.org/wiki/DTrace for getting started."
+
+ # We can't do magic for people with ROOT=.
+ if [[ -n ${ROOT} ]] ; then
+ einfo "Enable and start the DTrace 'dtprobed' service for systemd with:"
+ einfo " systemctl enable --now dtprobed"
+ einfo
+ einfo "Enable and start the DTrace 'dtprobed' service for OpenRC with:"
+ einfo " rc-update add dtprobed"
+ einfo " /etc/init.d/dtprobed start"
+ return
+ fi
+
+ # For first installs, we enable the service and start it.
+ #
+ # This is unusual, but the behaviour without dtprobed running
+ # is untested/unsupported. It's not a network service, it
+ # has no configuration, reads a single device node, and
+ # does all parsing within a seccomp jail. It also leads
+ # to hard-to-diagnose issues because USDT probes won't
+ # be registered and an application might have already
+ # started up which needs to be traced.
+ if systemd_is_booted ; then
+ ebegin "Enabling & starting DTrace 'dtprobed' service"
+ systemctl enable --now dtprobed
+ eend $?
+ else
+ ebegin "Enabling DTrace 'dtprobed' service"
+ rc-update add dtprobed
+ eend $?
+
+ ebegin "Starting DTrace 'dtprobed' service"
+ rc-service dtprobed start
+ eend $?
+ fi
+ fi
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/dev-debug/dtrace/dtrace-2.0.7.ebuild b/dev-debug/dtrace/dtrace-2.0.7.ebuild
new file mode 100644
index 000000000000..4c3fb6b82c29
--- /dev/null
+++ b/dev-debug/dtrace/dtrace-2.0.7.ebuild
@@ -0,0 +1,232 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo flag-o-matic linux-info multilib systemd toolchain-funcs udev
+
+DESCRIPTION="Dynamic BPF-based system-wide tracing tool"
+HOMEPAGE="https://github.com/oracle/dtrace https://wiki.gentoo.org/wiki/DTrace"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_BRANCH="devel"
+ EGIT_REPO_URI="https://github.com/oracle/dtrace"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/oracle/dtrace/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+ KEYWORDS="-* amd64 arm64"
+fi
+
+LICENSE="UPL-1.0"
+SLOT="0"
+IUSE="test-install valgrind"
+
+# TODO: can we make the wireshark dep conditional?
+DEPEND="
+ dev-libs/elfutils
+ dev-libs/libbpf
+ dev-libs/libpfm:=
+ net-analyzer/wireshark[dumpcap]
+ net-libs/libpcap
+ >=sys-fs/fuse-3.2.0:3=
+ >=sys-libs/binutils-libs-2.42:=
+ virtual/zlib:=
+"
+RDEPEND="
+ ${DEPEND}
+ !dev-debug/systemtap[dtrace-symlink(+)]
+ net-analyzer/wireshark
+ test-install? (
+ app-alternatives/bc
+ app-editors/vim-core
+ dev-build/make
+ dev-lang/perl
+ dev-util/perf
+ net-fs/nfs-utils
+ sys-apps/coreutils
+ sys-fs/xfsprogs
+ sys-process/time
+ virtual/jdk
+ )
+"
+BDEPEND="
+ dev-build/make
+ sys-apps/gawk
+ sys-devel/bison
+ >=sys-devel/bpf-toolchain-14.1.0
+ sys-devel/flex
+"
+DEPEND+=" valgrind? ( dev-debug/valgrind )"
+
+QA_PRESTRIPPED="
+ usr/.*/dtrace/testsuite/test/triggers/.*
+"
+QA_FLAGS_IGNORED="
+ usr/.*/dtrace/testsuite/test/triggers/.*
+"
+
+# TODO: report upstream (bug #938221) although it seems like it's
+# not relevant given it's a BPF object.
+QA_EXECSTACK="
+ usr/*/dtrace/bpf_dlib.*
+"
+
+pkg_pretend() {
+ # TODO: optional kernel patches
+
+ # Basics for debugging information, BPF
+ local CONFIG_CHECK="~BPF ~DEBUG_INFO_BTF ~KALLSYMS_ALL"
+
+ CONFIG_CHECK+=" ~CUSE"
+
+ # Tracing
+ CONFIG_CHECK+=" ~TRACING"
+ CONFIG_CHECK+=" ~UPROBES ~UPROBE_EVENTS"
+ CONFIG_CHECK+=" ~FTRACE ~FTRACE_SYSCALLS ~DYNAMIC_FTRACE ~FUNCTION_TRACER"
+ CONFIG_CHECK+=" ~FPROBE"
+ CONFIG_CHECK+=" ~BPF_KPROBE_OVERRIDE ~FUNCTION_ERROR_INJECTION"
+ # DTrace can fallback to kprobes for fbt but people often want them off
+ # for security and newer kernels work fine with BPF for that, so
+ # let's omit it. kprobes are slower and scale poorly.
+
+ # https://gcc.gnu.org/PR84052
+ CONFIG_CHECK+=" !GCC_PLUGIN_RANDSTRUCT"
+
+ if use test-install ; then
+ # See test/modules
+ CONFIG_CHECK+=" ~EXT4_FS ~ISO9660_FS ~NFS_FS ~RDS ~TUN"
+ fi
+
+ check_extra_config
+}
+
+pkg_setup() {
+ eval unset ${!LC_*} LANG
+}
+
+src_configure() {
+ if tc-is-cross-compiler; then
+ die "DTrace does not yet support cross-compilation."
+ fi
+
+ tc-export CC
+
+ # lld does this by default, so fix that, although lld fails anyway...
+ # 'LIBDTRACE_1.0' to symbol 'dtrace_provider_modules' failed: symbol not defined
+ append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
+ # mold and lld can't cope with some relocation types used, e.g.
+ # 'test-triggers--usdt-tst-forker-prov.o:(.SUNW_dof): unknown relocation: R_X86_64_GLOB_DAT'
+ tc-ld-force-bfd
+
+ # -fno-semantic-interposition seems to lead to a broken dtrace
+ # that can't actually obtain results from probes, even trivial examples
+ # just hang.
+ filter-flags -fno-semantic-interposition
+ # While it builds as of 2025-06-08, it's broken at runtime
+ # in the same way as -fno-semantic-interposition (hangs, no probes fire).
+ filter-lto
+
+ local confargs=(
+ # TODO: Maybe we should set the UNPRIV_UID to something? -3 is a bit... kludgy
+ --prefix="${EPREFIX}"/usr
+ --mandir="${EPREFIX}"/usr/share/man
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}
+ --with-systemd
+ HAVE_LIBCTF=yes
+ HAVE_BPFV3=yes
+ HAVE_VALGRIND=$(usex valgrind)
+ )
+
+ edo ./configure "${confargs[@]}"
+}
+
+src_compile() {
+ local myemakeargs=(
+ verbose=1
+ $(usev !test-install TRIGGERS='')
+ )
+
+ if use amd64 ; then
+ ! has_multilib_profile && myemakeargs+=( NATIVE_BITNESS_ONLY=1 )
+ fi
+
+ # -j1: https://github.com/oracle/dtrace/issues/82
+ emake -j1 "${myemakeargs[@]}"
+}
+
+src_test() {
+ # Needs root and is also very time-consuming
+ :;
+}
+
+src_install() {
+ emake DESTDIR="${D}" -j1 install $(usev test-install install-test)
+
+ # We want to strip neither the BPF libraries nor libdtrace.so itself
+ # as probes attach to some symbols that would get removed otherwise.
+ dostrip -x "/usr/$(get_libdir)"
+
+ # It's a binary (TODO: move it?)
+ docompress -x /usr/share/doc/${PF}/showUSDT
+
+ newinitd "${FILESDIR}"/dtprobed.init dtprobed
+}
+
+pkg_postinst() {
+ # We need a udev reload to pick up the CUSE device node rules.
+ udev_reload
+
+ if [[ -n ${REPLACING_VERSIONS} ]]; then
+ # TODO: Make this more intelligent wrt comparison
+ # One option for this is to detect when it's needed (DOF stash layout changes)
+ # and then e.g. sleep and restart for the user.
+ if systemd_is_booted ; then
+ einfo "Restart the DTrace 'dtprobed' service after upgrades once all dtraces are stopped with:"
+ einfo " systemctl try-restart dtprobed"
+ else
+ einfo "Restart the DTrace 'dtprobed' service after upgrades once all dtraces are stopped with:"
+ einfo " /etc/init.d/dtprobed restart"
+ fi
+ else
+ einfo "See https://wiki.gentoo.org/wiki/DTrace for getting started."
+
+ # We can't do magic for people with ROOT=.
+ if [[ -n ${ROOT} ]] ; then
+ einfo "Enable and start the DTrace 'dtprobed' service for systemd with:"
+ einfo " systemctl enable --now dtprobed"
+ einfo
+ einfo "Enable and start the DTrace 'dtprobed' service for OpenRC with:"
+ einfo " rc-update add dtprobed"
+ einfo " /etc/init.d/dtprobed start"
+ return
+ fi
+
+ # For first installs, we enable the service and start it.
+ #
+ # This is unusual, but the behaviour without dtprobed running
+ # is untested/unsupported. It's not a network service, it
+ # has no configuration, reads a single device node, and
+ # does all parsing within a seccomp jail. It also leads
+ # to hard-to-diagnose issues because USDT probes won't
+ # be registered and an application might have already
+ # started up which needs to be traced.
+ if systemd_is_booted ; then
+ ebegin "Enabling & starting DTrace 'dtprobed' service"
+ systemctl enable --now dtprobed
+ eend $?
+ else
+ ebegin "Enabling DTrace 'dtprobed' service"
+ rc-update add dtprobed
+ eend $?
+
+ ebegin "Starting DTrace 'dtprobed' service"
+ rc-service dtprobed start
+ eend $?
+ fi
+ fi
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/dev-debug/dtrace/dtrace-9999.ebuild b/dev-debug/dtrace/dtrace-9999.ebuild
new file mode 100644
index 000000000000..a048c509f0f0
--- /dev/null
+++ b/dev-debug/dtrace/dtrace-9999.ebuild
@@ -0,0 +1,233 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit edo flag-o-matic linux-info multilib systemd toolchain-funcs udev
+
+DESCRIPTION="Dynamic BPF-based system-wide tracing tool"
+HOMEPAGE="https://github.com/oracle/dtrace https://wiki.gentoo.org/wiki/DTrace"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_BRANCH="devel"
+ EGIT_REPO_URI="https://github.com/oracle/dtrace"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/oracle/dtrace/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+ KEYWORDS="-* ~amd64 ~arm64"
+fi
+
+LICENSE="UPL-1.0"
+SLOT="0"
+IUSE="test-install valgrind"
+
+# TODO: can we make the wireshark dep conditional?
+DEPEND="
+ dev-libs/elfutils
+ dev-libs/libbpf
+ dev-libs/libpfm:=
+ net-analyzer/wireshark[dumpcap]
+ net-libs/libpcap
+ >=sys-fs/fuse-3.2.0:3=
+ >=sys-libs/binutils-libs-2.42:=
+ virtual/zlib:=
+"
+RDEPEND="
+ ${DEPEND}
+ !dev-debug/systemtap[dtrace-symlink(+)]
+ net-analyzer/wireshark
+ test-install? (
+ app-alternatives/bc
+ app-editors/vim-core
+ dev-build/make
+ dev-lang/perl
+ dev-util/perf
+ net-fs/nfs-utils
+ sys-apps/coreutils
+ sys-fs/xfsprogs
+ sys-process/time
+ virtual/jdk
+ )
+"
+BDEPEND="
+ dev-build/make
+ sys-apps/gawk
+ sys-devel/bison
+ >=sys-devel/bpf-toolchain-14.1.0
+ sys-devel/flex
+"
+DEPEND+=" valgrind? ( dev-debug/valgrind )"
+
+QA_PRESTRIPPED="
+ usr/.*/dtrace/testsuite/test/triggers/.*
+"
+QA_FLAGS_IGNORED="
+ usr/.*/dtrace/testsuite/test/triggers/.*
+"
+
+# TODO: report upstream (bug #938221) although it seems like it's
+# not relevant given it's a BPF object.
+QA_EXECSTACK="
+ usr/*/dtrace/bpf_dlib.*
+"
+
+pkg_pretend() {
+ # TODO: optional kernel patches
+
+ # Basics for debugging information, BPF
+ local CONFIG_CHECK="~BPF ~DEBUG_INFO_BTF ~KALLSYMS_ALL"
+
+ CONFIG_CHECK+=" ~CUSE"
+
+ # Tracing
+ CONFIG_CHECK+=" ~TRACING"
+ CONFIG_CHECK+=" ~UPROBES ~UPROBE_EVENTS"
+ CONFIG_CHECK+=" ~FTRACE ~FTRACE_SYSCALLS ~DYNAMIC_FTRACE ~FUNCTION_TRACER"
+ CONFIG_CHECK+=" ~FPROBE"
+ CONFIG_CHECK+=" ~BPF_KPROBE_OVERRIDE ~FUNCTION_ERROR_INJECTION"
+ # DTrace can fallback to kprobes for fbt but people often want them off
+ # for security and newer kernels work fine with BPF for that, so
+ # let's omit it. kprobes are slower and scale poorly.
+
+ # https://gcc.gnu.org/PR84052
+ CONFIG_CHECK+=" !GCC_PLUGIN_RANDSTRUCT"
+
+ if use test-install ; then
+ # See test/modules
+ CONFIG_CHECK+=" ~EXT4_FS ~ISO9660_FS ~NFS_FS ~RDS ~TUN"
+ fi
+
+ check_extra_config
+}
+
+pkg_setup() {
+ eval unset ${!LC_*} LANG
+}
+
+src_configure() {
+ if tc-is-cross-compiler; then
+ die "DTrace does not yet support cross-compilation."
+ fi
+
+ tc-export CC
+
+ # lld does this by default, so fix that, although lld fails anyway...
+ # 'LIBDTRACE_1.0' to symbol 'dtrace_provider_modules' failed: symbol not defined
+ append-ldflags $(test-flags-CCLD -Wl,--undefined-version)
+ # mold and lld can't cope with some relocation types used, e.g.
+ # 'test-triggers--usdt-tst-forker-prov.o:(.SUNW_dof): unknown relocation: R_X86_64_GLOB_DAT'
+ tc-ld-force-bfd
+
+ # -fno-semantic-interposition seems to lead to a broken dtrace
+ # that can't actually obtain results from probes, even trivial examples
+ # just hang.
+ filter-flags -fno-semantic-interposition
+ # While it builds as of 2025-06-08, it's broken at runtime
+ # in the same way as -fno-semantic-interposition (hangs, no probes fire).
+ filter-lto
+
+ local confargs=(
+ --disable-dependency-tracking
+ # TODO: Maybe we should set the UNPRIV_UID to something? -3 is a bit... kludgy
+ --prefix="${EPREFIX}"/usr
+ --mandir="${EPREFIX}"/usr/share/man
+ --docdir="${EPREFIX}"/usr/share/doc/${PF}
+ --with-systemd
+ HAVE_LIBCTF=yes
+ HAVE_BPFV3=yes
+ HAVE_VALGRIND=$(usex valgrind)
+ )
+
+ edo ./configure "${confargs[@]}"
+}
+
+src_compile() {
+ local myemakeargs=(
+ verbose=1
+ $(usev !test-install TRIGGERS='')
+ )
+
+ if use amd64 ; then
+ ! has_multilib_profile && myemakeargs+=( NATIVE_BITNESS_ONLY=1 )
+ fi
+
+ # -j1: https://github.com/oracle/dtrace/issues/82
+ emake -j1 "${myemakeargs[@]}"
+}
+
+src_test() {
+ # Needs root and is also very time-consuming
+ :;
+}
+
+src_install() {
+ emake DESTDIR="${D}" -j1 install $(usev test-install install-test)
+
+ # We want to strip neither the BPF libraries nor libdtrace.so itself
+ # as probes attach to some symbols that would get removed otherwise.
+ dostrip -x "/usr/$(get_libdir)"
+
+ # It's a binary (TODO: move it?)
+ docompress -x /usr/share/doc/${PF}/showUSDT
+
+ newinitd "${FILESDIR}"/dtprobed.init dtprobed
+}
+
+pkg_postinst() {
+ # We need a udev reload to pick up the CUSE device node rules.
+ udev_reload
+
+ if [[ -n ${REPLACING_VERSIONS} ]]; then
+ # TODO: Make this more intelligent wrt comparison
+ # One option for this is to detect when it's needed (DOF stash layout changes)
+ # and then e.g. sleep and restart for the user.
+ if systemd_is_booted ; then
+ einfo "Restart the DTrace 'dtprobed' service after upgrades once all dtraces are stopped with:"
+ einfo " systemctl try-restart dtprobed"
+ else
+ einfo "Restart the DTrace 'dtprobed' service after upgrades once all dtraces are stopped with:"
+ einfo " /etc/init.d/dtprobed restart"
+ fi
+ else
+ einfo "See https://wiki.gentoo.org/wiki/DTrace for getting started."
+
+ # We can't do magic for people with ROOT=.
+ if [[ -n ${ROOT} ]] ; then
+ einfo "Enable and start the DTrace 'dtprobed' service for systemd with:"
+ einfo " systemctl enable --now dtprobed"
+ einfo
+ einfo "Enable and start the DTrace 'dtprobed' service for OpenRC with:"
+ einfo " rc-update add dtprobed"
+ einfo " /etc/init.d/dtprobed start"
+ return
+ fi
+
+ # For first installs, we enable the service and start it.
+ #
+ # This is unusual, but the behaviour without dtprobed running
+ # is untested/unsupported. It's not a network service, it
+ # has no configuration, reads a single device node, and
+ # does all parsing within a seccomp jail. It also leads
+ # to hard-to-diagnose issues because USDT probes won't
+ # be registered and an application might have already
+ # started up which needs to be traced.
+ if systemd_is_booted ; then
+ ebegin "Enabling & starting DTrace 'dtprobed' service"
+ systemctl enable --now dtprobed
+ eend $?
+ else
+ ebegin "Enabling DTrace 'dtprobed' service"
+ rc-update add dtprobed
+ eend $?
+
+ ebegin "Starting DTrace 'dtprobed' service"
+ rc-service dtprobed start
+ eend $?
+ fi
+ fi
+}
+
+pkg_postrm() {
+ udev_reload
+}
diff --git a/dev-debug/dtrace/files/dtprobed.init b/dev-debug/dtrace/files/dtprobed.init
new file mode 100644
index 000000000000..b3d039671e2f
--- /dev/null
+++ b/dev-debug/dtrace/files/dtprobed.init
@@ -0,0 +1,15 @@
+#!/sbin/openrc-run
+
+depend() {
+ need localmount
+ need bootmisc
+ after logger
+}
+
+start() {
+ start-stop-daemon --start --exec /usr/sbin/dtprobed
+}
+
+stop() {
+ start-stop-daemon --stop --exec /usr/sbin/dtprobed
+}
diff --git a/dev-debug/dtrace/metadata.xml b/dev-debug/dtrace/metadata.xml
new file mode 100644
index 000000000000..83d41390d149
--- /dev/null
+++ b/dev-debug/dtrace/metadata.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>arsen@gentoo.org</email>
+ <name>Arsen Arsenović</name>
+ </maintainer>
+ <use>
+ <flag name="test-install">
+ Install the testsuite for manual use. It is not suitable
+ for automatic execution within the ebuild because it
+ requires root privileges.
+
+ BTF must be available for the running kernel at build-time
+ with this flag.
+ </flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/gdb-dashboard/Manifest b/dev-debug/gdb-dashboard/Manifest
new file mode 100644
index 000000000000..a83981878a85
--- /dev/null
+++ b/dev-debug/gdb-dashboard/Manifest
@@ -0,0 +1 @@
+DIST gdb-dashboard-0.17.4.tar.gz 23332 BLAKE2B cf05fea4c3d722d1bafbc6ef4a26df88be555be6adf8dca313ef9b8b28cad533931d3d2da0cb2660c1233c3b3e744a518893698ecbb1e573e12812cebfc3e7c8 SHA512 9cce63be926d21aace0833b52b36266f115599fbbf426dcd7d8090a6861c1c9db26fe7d953bedcbec0b96b75c9b2b9af59666c0e80f5cdf55bd6d44523459dbd
diff --git a/dev-debug/gdb-dashboard/files/gdb-dashboard-0.17.4-fix-buffer-overflow.patch b/dev-debug/gdb-dashboard/files/gdb-dashboard-0.17.4-fix-buffer-overflow.patch
new file mode 100644
index 000000000000..d1ec1f375ae9
--- /dev/null
+++ b/dev-debug/gdb-dashboard/files/gdb-dashboard-0.17.4-fix-buffer-overflow.patch
@@ -0,0 +1,34 @@
+Ref: https://github.com/cyrus-and/gdb-dashboard/pull/342
+
+From b47be5e0563dec7d8d71bd5477d7c27bb1fda0c1 Mon Sep 17 00:00:00 2001
+From: Valentin Tunev <vlttnv@fastmail.com>
+Date: Wed, 5 Nov 2025 21:59:17 +0200
+Subject: [PATCH] Fix buffer overflow in get_term_size()
+
+Use an 8-byte buffer, unpack the first 4 bytes for rows/cols, and
+include SystemError in the except clause to cover additional terminal
+errors.
+---
+ .gdbinit | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/.gdbinit b/.gdbinit
+index 3af237b..654f27d 100644
+--- a/.gdbinit
++++ b/.gdbinit
+@@ -612,11 +612,11 @@ class Dashboard(gdb.Command):
+ else:
+ import termios
+ import fcntl
+- # first 2 shorts (4 byte) of struct winsize
+- raw = fcntl.ioctl(fd, termios.TIOCGWINSZ, ' ' * 4)
+- height, width = struct.unpack('hh', raw)
++ # struct winsize is 8 bytes, but we only need the first 2 shorts (rows, cols)
++ raw = fcntl.ioctl(fd, termios.TIOCGWINSZ, b'\0' * 8)
++ height, width = struct.unpack('hh', raw[:4])
+ return int(width), int(height)
+- except (ImportError, OSError):
++ except (ImportError, OSError, SystemError):
+ # this happens when no curses library is found on windows or when
+ # the terminal is not properly configured
+ return 80, 24 # hardcoded fallback value
diff --git a/dev-debug/gdb-dashboard/gdb-dashboard-0.17.4-r1.ebuild b/dev-debug/gdb-dashboard/gdb-dashboard-0.17.4-r1.ebuild
new file mode 100644
index 000000000000..de1ef87e757e
--- /dev/null
+++ b/dev-debug/gdb-dashboard/gdb-dashboard-0.17.4-r1.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2023-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit python-single-r1 optfeature wrapper
+
+DESCRIPTION="Modular visual interface for GDB in Python"
+HOMEPAGE="https://github.com/cyrus-and/gdb-dashboard"
+
+if [[ ${PV} == *9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/cyrus-and/gdb-dashboard"
+else
+ SRC_URI="https://github.com/cyrus-and/gdb-dashboard/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python]
+ ${PYTHON_DEPS}
+"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+PATCHES=( "${FILESDIR}"/${PN}-0.17.4-fix-buffer-overflow.patch )
+
+pkg_setup() {
+ python-single-r1_pkg_setup
+}
+
+src_install() {
+ insinto "/usr/share/${PN}"
+ newins .gdbinit "${PN}"
+
+ # install a convenient wrapper. disables any typical .gdbinit (-nh) to
+ # get a clean state without interference. -q to disable annoying
+ # copyright message at startup.
+ make_wrapper "$PN" "gdb -q -nh -iex 'source /usr/share/${PN}/${PN}'"
+
+ dodoc README.md
+}
+
+pkg_postinst() {
+ einfo "To use ${PN}:"
+ einfo " Either use the installed '${PN}' wrapper script directly."
+ einfo " Or put 'source /usr/share/${PN}/${PN}' in your .gdbinit file."
+ einfo ""
+
+ optfeature "syntax highlighting" "dev-python/pygments"
+}
diff --git a/dev-debug/gdb-dashboard/metadata.xml b/dev-debug/gdb-dashboard/metadata.xml
new file mode 100644
index 000000000000..18f5fb184b10
--- /dev/null
+++ b/dev-debug/gdb-dashboard/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>nrk@disroot.org</email>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/gdb/Manifest b/dev-debug/gdb/Manifest
new file mode 100644
index 000000000000..7ec59dcc8c08
--- /dev/null
+++ b/dev-debug/gdb/Manifest
@@ -0,0 +1,3 @@
+DIST gdb-16.3.tar.xz 24434444 BLAKE2B a75c8655b39580a7f6e0d85ef663f60932fbed9a92ade6d58a2e99bc8b1416b36f8410c66c23bdada83e221a65c1cdfdeb7bb7ae9a930c443557864a1769dbee SHA512 fffd6689c3405466a179670b04720dc825e4f210a761f63dd2b33027432f8cd5d1c059c431a5ec9e165eedd1901220b5329d73c522f9a444788888c731b29e9c
+DIST gdb-17.1.tar.xz 24663896 BLAKE2B 35de074a50c747e6ed42faee8a87b3898b57d33e9667c9001eaf8b54c8cce555f7b16642d1583c1b4aabb45fc5e5db8c33d9f5786351e736f2db2f90d28a07ed SHA512 f1a6751e439a2128fecf3eae8b57c1608a0dc7cfe79b4356a937874e5a42bb2df0aba36eb6a9452c41966908b9a59076c7cad9720f684688ab956b65080f1d7c
+DIST gdb-17.2.tar.xz 24658624 BLAKE2B 3c6c893e1d26d534918fb07b64f2e5b368825a64f888171f07443c5ebed456e7c26ed223d78bf304ee5f145c6f3c08c790c993c7b955d168e2fd8e656c6e1e9a SHA512 7794c5a185be7ed5e7ad1000c4ff7d8497c80425a1bc108aab8fd3dd8ecdde034e294dfd65b25c6b0dcd8ed2a240caf07293f3e73791b6cfc890d580d0af4581
diff --git a/dev-debug/gdb/files/gdb-8.3.1-verbose-build.patch b/dev-debug/gdb/files/gdb-8.3.1-verbose-build.patch
new file mode 100644
index 000000000000..06aa6084d2d2
--- /dev/null
+++ b/dev-debug/gdb/files/gdb-8.3.1-verbose-build.patch
@@ -0,0 +1,13 @@
+Enable verbose build. By default gdb ignores even --disable-silent-rules.
+Override verbosity back to non-silent.
+
+https://bugs.gentoo.org/695936
+--- a/gdb/silent-rules.mk
++++ b/gdb/silent-rules.mk
+@@ -1,5 +1,4 @@
+-# If V is undefined or V=0 is specified, use the silent/verbose/compact mode.
+-V ?= 0
++V ?= 1
+ ifeq ($(V),0)
+ ECHO_CXX = @echo " CXX $@";
+ ECHO_CXXLD = @echo " CXXLD $@";
diff --git a/dev-debug/gdb/gdb-16.3.ebuild b/dev-debug/gdb/gdb-16.3.ebuild
new file mode 100644
index 000000000000..fc32c360afa1
--- /dev/null
+++ b/dev-debug/gdb/gdb-16.3.ebuild
@@ -0,0 +1,349 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# See https://sourceware.org/gdb/wiki/DistroAdvice for general packaging
+# tips & notes.
+
+GUILE_COMPAT=( 2-2 3-0 )
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic guile-single linux-info python-single-r1 strip-linguas toolchain-funcs
+
+export CTARGET=${CTARGET:-${CHOST}}
+
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+ if [[ ${CATEGORY} == cross-* ]] ; then
+ export CTARGET=${CATEGORY#cross-}
+ fi
+fi
+
+is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
+
+case ${PV} in
+ 9999*)
+ # live git tree
+ EGIT_REPO_URI="
+ https://sourceware.org/git/binutils-gdb.git
+ https://git.sr.ht/~sourceware/binutils-gdb
+ https://gitlab.com/x86-binutils/binutils-gdb.git
+ "
+ inherit git-r3
+ SRC_URI=""
+ ;;
+ *.*.50_p2???????|*.*.90_p2???????)
+ # Weekly snapshots
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-weekly-${MY_PV}.tar.xz
+ https://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-weekly-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+
+ # e.g. 13.1.90_p20230325 is a snapshot on the stable branch, so it's fine
+ if [[ ${PV} == *.[123456789].9?_p2??????? ]] ; then
+ REGULAR_RELEASE=1
+ fi
+ ;;
+ *.*.9?)
+ # Prereleases
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+ ;;
+ *)
+ # Normal upstream release
+ SRC_URI="
+ mirror://gnu/gdb/${P}.tar.xz
+ https://sourceware.org/pub/gdb/releases/${P}.tar.xz
+ "
+
+ REGULAR_RELEASE=1
+esac
+
+PATCH_DEV=""
+PATCH_VER=""
+DESCRIPTION="GNU debugger"
+HOMEPAGE="https://sourceware.org/gdb/"
+SRC_URI="
+ ${SRC_URI}
+ ${PATCH_DEV:+https://distfiles.gentoo.org/pub/proj/toolchain/gdb/patches/${P}-patches-${PATCH_VER}.tar.xz}
+"
+
+LICENSE="GPL-3+ LGPL-2.1+"
+SLOT="0"
+IUSE="babeltrace cet +debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla xml xxhash zstd"
+if [[ -n ${REGULAR_RELEASE} ]] ; then
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
+fi
+REQUIRED_USE="
+ guile? ( ${GUILE_REQUIRED_USE} )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ rocm? ( multitarget )
+"
+RESTRICT="!test? ( test )"
+
+# <babeltrace-2: bug #951652
+RDEPEND="
+ dev-libs/mpfr:=
+ dev-libs/gmp:=
+ >=sys-libs/ncurses-5.2-r2:=
+ >=sys-libs/readline-7:=
+ virtual/zlib:=
+ babeltrace? ( dev-util/babeltrace:0/1 )
+ debuginfod? (
+ dev-libs/elfutils[debuginfod(-)]
+ )
+ lzma? ( app-arch/xz-utils )
+ python? ( ${PYTHON_DEPS} )
+ guile? ( ${GUILE_DEPS} )
+ xml? ( dev-libs/expat )
+ rocm? ( >=dev-libs/rocdbgapi-6.3 )
+ source-highlight? (
+ dev-util/source-highlight
+ )
+ xxhash? (
+ dev-libs/xxhash
+ )
+ zstd? ( app-arch/zstd:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ app-arch/xz-utils
+ sys-apps/texinfo
+ app-alternatives/yacc
+ nls? ( sys-devel/gettext )
+ source-highlight? ( virtual/pkgconfig )
+ test? ( dev-util/dejagnu )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ MIN # gnulib FP (bug #898688)
+)
+
+QA_PREBUILT="usr/share/gdb/guile/*"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-8.3.1-verbose-build.patch
+)
+
+pkg_setup() {
+ local CONFIG_CHECK
+
+ if [[ ${CHOST} == *-linux-* ]] ; then
+ if kernel_is -ge 6.11.3 ; then
+ # https://forums.gentoo.org/viewtopic-p-8846891.html
+ #
+ # Either CONFIG_PROC_MEM_ALWAYS_FORCE or CONFIG_PROC_MEM_FORCE_PTRACE
+ # should be okay, but not CONFIG_PROC_MEM_NO_FORCE.
+ CONFIG_CHECK+="
+ ~!PROC_MEM_NO_FORCE
+ "
+ fi
+ fi
+
+ linux-info_pkg_setup
+
+ use guile && guile-single_pkg_setup
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ use guile && guile_bump_sources
+
+ strip-linguas -u bfd/po opcodes/po
+
+ # Avoid using ancient termcap from host on Prefix systems
+ sed -i -e 's/termcap tinfow/tinfow/g' \
+ gdb/configure{.ac,} || die
+}
+
+gdb_branding() {
+ printf "Gentoo ${PV} "
+
+ if ! use vanilla && [[ -n ${PATCH_VER} ]] ; then
+ printf "p${PATCH_VER}"
+ else
+ printf "vanilla"
+ fi
+
+ [[ -n ${EGIT_COMMIT} ]] && printf " ${EGIT_COMMIT}"
+}
+
+src_configure() {
+ strip-unsupported-flags
+
+ # See https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html
+ # Avoid really confusing logs from subconfigure spam, makes logs far
+ # more legible.
+ MAKEOPTS="--output-sync=line ${MAKEOPTS}"
+
+ local myconf=(
+ # portage's econf() does not detect presence of --d-d-t
+ # because it greps only top-level ./configure. But not
+ # libiberty's or gdb's configure.
+ --disable-dependency-tracking
+ --disable-silent-rules
+
+ --with-pkgversion="$(gdb_branding)"
+ --with-bugurl='https://bugs.gentoo.org/'
+ --disable-werror
+ # Disable modules that are in a combined binutils/gdb tree. bug #490566
+ --disable-{binutils,etc,gas,gold,gprof,gprofng,ld}
+
+ $(use_with babeltrace)
+ $(use_with debuginfod)
+
+ $(use_enable test unit-tests)
+
+ # Allow user to opt into CET for host libraries.
+ # Ideally we would like automagic-or-disabled here.
+ # But the check does not quite work on i686: bug #760926.
+ $(use_enable cet)
+
+ # Helps when cross-compiling. Not to be confused with --with-sysroot.
+ --with-build-sysroot="${ESYSROOT}"
+ )
+
+ is_cross && myconf+=(
+ --with-sysroot="\${prefix}/${CTARGET}"
+ --includedir="\${prefix}/include/${CTARGET}"
+ --with-gdb-datadir="\${datadir}/gdb/${CTARGET}"
+ )
+
+ # gdbserver only works for native targets (CHOST==CTARGET).
+ # it also doesn't support all targets, so rather than duplicate
+ # the target list (which changes between versions), use the
+ # "auto" value when things are turned on, which is triggered
+ # whenever no --enable or --disable is given
+ if is_cross || use !server ; then
+ myconf+=( --disable-gdbserver )
+ fi
+
+ myconf+=(
+ --enable-64-bit-bfd
+ --disable-install-libbfd
+ --disable-install-libiberty
+ --enable-obsolete
+ # This only disables building in the readline subdir.
+ # For gdb itself, it'll use the system version.
+ --disable-readline
+ --with-system-readline
+ # This only disables building in the zlib subdir.
+ # For gdb itself, it'll use the system version.
+ --without-zlib
+ --with-system-zlib
+ --with-separate-debug-dir="${EPREFIX}"/usr/lib/debug
+ --with-amd-dbgapi=$(usex rocm)
+ $(use_with xml expat)
+ $(use_with lzma)
+ $(use_enable nls)
+ $(use_enable sim)
+ $(use_enable source-highlight)
+ $(use multitarget && echo --enable-targets=all)
+ $(use_with python python "${EPYTHON}")
+ $(use_with xxhash)
+ $(use_with guile)
+ $(use_with zstd)
+
+ # Find libraries using the toolchain sysroot rather than the configured
+ # prefix. Needed when cross-compiling.
+ #
+ # Check which libraries to apply this to with:
+ # "${S}"/gdb/configure --help | grep without-lib | sort
+ --without-lib{babeltrace,expat,gmp,iconv,ipt,lzma,mpfr,xxhash}-prefix
+ )
+
+ # source-highlight is detected with pkg-config: bug #716558
+ export ac_cv_path_pkg_config_prog_path="$(tc-getPKG_CONFIG)"
+
+ export CC_FOR_BUILD="$(tc-getBUILD_CC)"
+
+ # ensure proper compiler is detected for Clang builds: bug #831202
+ export GCC_FOR_TARGET="${CC_FOR_TARGET:-$(tc-getCC)}"
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # Run the unittests (nabbed invocation from Fedora's spec file) at least
+ emake -k -C gdb run GDBFLAGS='-batch -ex "maintenance selftest"'
+
+ # Too many failures
+ # In fact, gdb's test suite needs some work to get passing.
+ # See e.g. https://sourceware.org/gdb/wiki/TestingGDB.
+ # As of 11.2, on amd64: "# of unexpected failures 8600"
+ # Also, ia64 kernel crashes when gdb testsuite is running.
+ #emake -k check
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ find "${ED}"/usr -name libiberty.a -delete || die
+
+ # Delete translations that conflict with binutils-libs. bug #528088
+ # Note: Should figure out how to store these in an internal gdb dir.
+ if use nls ; then
+ find "${ED}" \
+ -regextype posix-extended -regex '.*/(bfd|opcodes)[.]g?mo$' \
+ -delete || die
+ fi
+
+ # Don't install docs when building a cross-gdb
+ if [[ ${CTARGET} != ${CHOST} ]] ; then
+ rm -rf "${ED}"/usr/share/{doc,info,locale} || die
+ local f
+ for f in "${ED}"/usr/share/man/*/* ; do
+ if [[ ${f##*/} != ${CTARGET}-* ]] ; then
+ mv "${f}" "${f%/*}/${CTARGET}-${f##*/}" || die
+ fi
+ done
+ return 0
+ fi
+
+ # Install it by hand for now:
+ # https://sourceware.org/ml/gdb-patches/2011-12/msg00915.html
+ # Only install if it exists due to the twisted behavior (see
+ # notes in src_configure above).
+ [[ -e gdbserver/gdbreplay ]] && dobin gdbserver/gdbreplay
+
+ docinto gdb
+ dodoc gdb/CONTRIBUTE gdb/README gdb/MAINTAINERS \
+ gdb/NEWS gdb/PROBLEMS
+ docinto sim
+ dodoc sim/{MAINTAINERS,README-HACKING}
+
+ if use server ; then
+ docinto gdbserver
+ dodoc gdbserver/README
+ fi
+
+ # Remove shared info pages
+ rm -f "${ED}"/usr/share/info/{annotate,bfd,configure,ctf-spec,standards}.info*
+
+ use guile && guile_unstrip_ccache
+
+ if use python ; then
+ python_optimize "${ED}"/usr/share/gdb/python/gdb
+ fi
+}
+
+pkg_postinst() {
+ # Portage doesn't unmerge files in /etc
+ rm -vf "${EROOT}"/etc/skel/.gdbinit
+
+ if use prefix && [[ ${CHOST} == *-darwin* ]] ; then
+ ewarn "gdb is unable to get a mach task port when installed by Prefix"
+ ewarn "Portage, unprivileged. To make gdb fully functional you'll"
+ ewarn "have to perform the following steps:"
+ ewarn " % sudo chgrp procmod ${EPREFIX}/usr/bin/gdb"
+ ewarn " % sudo chmod g+s ${EPREFIX}/usr/bin/gdb"
+ fi
+}
diff --git a/dev-debug/gdb/gdb-17.1.ebuild b/dev-debug/gdb/gdb-17.1.ebuild
new file mode 100644
index 000000000000..e634b4f5812e
--- /dev/null
+++ b/dev-debug/gdb/gdb-17.1.ebuild
@@ -0,0 +1,354 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# See https://sourceware.org/gdb/wiki/DistroAdvice for general packaging
+# tips & notes.
+
+GUILE_COMPAT=( 2-2 3-0 )
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic guile-single linux-info python-single-r1 strip-linguas toolchain-funcs
+
+export CTARGET=${CTARGET:-${CHOST}}
+
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+ if [[ ${CATEGORY} == cross-* ]] ; then
+ export CTARGET=${CATEGORY#cross-}
+ fi
+fi
+
+is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
+
+case ${PV} in
+ 9999*)
+ # live git tree
+ EGIT_REPO_URI="
+ https://sourceware.org/git/binutils-gdb.git
+ https://git.sr.ht/~sourceware/binutils-gdb
+ https://gitlab.com/x86-binutils/binutils-gdb.git
+ "
+ inherit git-r3
+ SRC_URI=""
+ ;;
+ *.*.50_p2???????|*.*.90_p2???????)
+ # Weekly snapshots
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-weekly-${MY_PV}.tar.xz
+ https://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-weekly-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+
+ # e.g. 13.1.90_p20230325 is a snapshot on the stable branch, so it's fine
+ if [[ ${PV} == *.[123456789].9?_p2??????? ]] ; then
+ REGULAR_RELEASE=1
+ fi
+ ;;
+ *.*.9?)
+ # Prereleases
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+ ;;
+ *)
+ # Normal upstream release
+ SRC_URI="
+ mirror://gnu/gdb/${P}.tar.xz
+ https://sourceware.org/pub/gdb/releases/${P}.tar.xz
+ "
+
+ REGULAR_RELEASE=1
+esac
+
+PATCH_DEV=""
+PATCH_VER=""
+DESCRIPTION="GNU debugger"
+HOMEPAGE="https://sourceware.org/gdb/"
+SRC_URI="
+ ${SRC_URI}
+ ${PATCH_DEV:+https://distfiles.gentoo.org/pub/proj/toolchain/gdb/patches/${P}-patches-${PATCH_VER}.tar.xz}
+"
+
+LICENSE="GPL-3+ LGPL-2.1+"
+SLOT="0"
+IUSE="babeltrace cet +debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla +xml xxhash zstd"
+if [[ -n ${REGULAR_RELEASE} ]] ; then
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~x64-macos ~x64-solaris"
+fi
+REQUIRED_USE="
+ guile? ( ${GUILE_REQUIRED_USE} )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ rocm? ( multitarget )
+"
+RESTRICT="!test? ( test )"
+
+# <babeltrace-2: bug #951652
+RDEPEND="
+ dev-libs/mpfr:=
+ dev-libs/gmp:=
+ >=sys-libs/ncurses-5.2-r2:=
+ >=sys-libs/readline-7:=
+ virtual/zlib:=
+ babeltrace? ( dev-util/babeltrace:0/1 )
+ debuginfod? (
+ dev-libs/elfutils[debuginfod(-)]
+ )
+ lzma? ( app-arch/xz-utils )
+ python? ( ${PYTHON_DEPS} )
+ guile? ( ${GUILE_DEPS} )
+ xml? ( dev-libs/expat )
+ rocm? ( >=dev-libs/rocdbgapi-6.3 )
+ source-highlight? (
+ dev-util/source-highlight
+ )
+ xxhash? (
+ dev-libs/xxhash
+ )
+ zstd? ( app-arch/zstd:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ app-arch/xz-utils
+ sys-apps/texinfo
+ app-alternatives/yacc
+ nls? ( sys-devel/gettext )
+ source-highlight? ( virtual/pkgconfig )
+ test? ( dev-util/dejagnu )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ MIN # gnulib FP (bug #898688)
+)
+
+QA_PREBUILT="usr/share/gdb/guile/*"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-8.3.1-verbose-build.patch
+)
+
+pkg_setup() {
+ local CONFIG_CHECK
+
+ if [[ ${CHOST} == *-linux-* ]] ; then
+ if kernel_is -ge 6.11.3 ; then
+ # https://forums.gentoo.org/viewtopic-p-8846891.html
+ # See also PR31520.
+ #
+ # Either CONFIG_PROC_MEM_ALWAYS_FORCE or CONFIG_PROC_MEM_FORCE_PTRACE
+ # should be okay, but not CONFIG_PROC_MEM_NO_FORCE.
+ CONFIG_CHECK+="
+ ~!PROC_MEM_NO_FORCE
+ "
+ fi
+ fi
+
+ linux-info_pkg_setup
+
+ use guile && guile-single_pkg_setup
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ use guile && guile_bump_sources
+
+ strip-linguas -u bfd/po opcodes/po
+
+ # Avoid using ancient termcap from host on Prefix systems
+ sed -i -e 's/termcap tinfow/tinfow/g' \
+ gdb/configure{.ac,} || die
+}
+
+gdb_branding() {
+ printf "Gentoo ${PV} "
+
+ if ! use vanilla && [[ -n ${PATCH_VER} ]] ; then
+ printf "p${PATCH_VER}"
+ else
+ printf "vanilla"
+ fi
+
+ [[ -n ${EGIT_COMMIT} ]] && printf " ${EGIT_COMMIT}"
+}
+
+src_configure() {
+ strip-unsupported-flags
+
+ # See https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html
+ # Avoid really confusing logs from subconfigure spam, makes logs far
+ # more legible.
+ MAKEOPTS="--output-sync=line ${MAKEOPTS}"
+
+ local myconf=(
+ # portage's econf() does not detect presence of --d-d-t
+ # because it greps only top-level ./configure. But not
+ # libiberty's or gdb's configure.
+ --disable-dependency-tracking
+ --disable-silent-rules
+
+ --with-pkgversion="$(gdb_branding)"
+ --with-bugurl='https://bugs.gentoo.org/'
+ --disable-werror
+ # Disable modules that are in a combined binutils/gdb tree. bug #490566
+ --disable-{binutils,etc,gas,gold,gprof,gprofng,ld}
+
+ $(use_with babeltrace)
+ $(use_with debuginfod)
+
+ $(use_enable test unit-tests)
+
+ # Allow user to opt into CET for host libraries.
+ # Ideally we would like automagic-or-disabled here.
+ # But the check does not quite work on i686: bug #760926.
+ $(use_enable cet)
+
+ # Helps when cross-compiling. Not to be confused with --with-sysroot.
+ --with-build-sysroot="${ESYSROOT}"
+ )
+
+ is_cross && myconf+=(
+ --with-sysroot="\${prefix}/${CTARGET}"
+ --includedir="\${prefix}/include/${CTARGET}"
+ --with-gdb-datadir="\${datadir}/gdb/${CTARGET}"
+ )
+
+ # gdbserver only works for native targets (CHOST==CTARGET).
+ # it also doesn't support all targets, so rather than duplicate
+ # the target list (which changes between versions), use the
+ # "auto" value when things are turned on, which is triggered
+ # whenever no --enable or --disable is given
+ if is_cross || use !server ; then
+ myconf+=( --disable-gdbserver )
+ fi
+
+ myconf+=(
+ --enable-64-bit-bfd
+ --disable-install-libbfd
+ --disable-install-libiberty
+ --enable-obsolete
+ # This only disables building in the readline subdir.
+ # For gdb itself, it'll use the system version.
+ --disable-readline
+ --with-system-readline
+ # This only disables building in the zlib subdir.
+ # For gdb itself, it'll use the system version.
+ --without-zlib
+ --with-system-zlib
+ --with-separate-debug-dir="${EPREFIX}"/usr/lib/debug
+ --with-amd-dbgapi=$(usex rocm)
+ $(use_with xml expat)
+ $(use_with lzma)
+ $(use_enable nls)
+ $(use_enable sim)
+ $(use_enable source-highlight)
+ $(use multitarget && echo --enable-targets=all)
+ $(use_with python python "${EPYTHON}")
+ $(use_with xxhash)
+ $(use_with guile)
+ $(use_with zstd)
+
+ # Find libraries using the toolchain sysroot rather than the configured
+ # prefix. Needed when cross-compiling.
+ #
+ # Check which libraries to apply this to with:
+ # "${S}"/gdb/configure --help | grep without-lib | sort
+ --without-lib{babeltrace,expat,gmp,iconv,ipt,lzma,mpfr,xxhash}-prefix
+ )
+
+ # source-highlight is detected with pkg-config: bug #716558
+ export ac_cv_path_pkg_config_prog_path="$(tc-getPKG_CONFIG)"
+
+ export CC_FOR_BUILD="$(tc-getBUILD_CC)"
+
+ # ensure proper compiler is detected for Clang builds: bug #831202
+ export GCC_FOR_TARGET="${CC_FOR_TARGET:-$(tc-getCC)}"
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # Run the unittests (nabbed invocation from Fedora's spec file) at least
+ emake -k -C gdb run GDBFLAGS='-batch -ex "maintenance selftest"'
+
+ # Too many failures
+ # In fact, gdb's test suite needs some work to get passing.
+ # See e.g. https://sourceware.org/gdb/wiki/TestingGDB.
+ # As of 11.2, on amd64: "# of unexpected failures 8600"
+ # Also, ia64 kernel crashes when gdb testsuite is running.
+ #emake -k check
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ find "${ED}"/usr -name libiberty.a -delete || die
+
+ # Delete translations that conflict with binutils-libs. bug #528088
+ # Note: Should figure out how to store these in an internal gdb dir.
+ if use nls ; then
+ find "${ED}" \
+ -regextype posix-extended -regex '.*/(bfd|opcodes)[.]g?mo$' \
+ -delete || die
+ fi
+
+ # Don't install docs when building a cross-gdb
+ if [[ ${CTARGET} != ${CHOST} ]] ; then
+ rm -rf "${ED}"/usr/share/{doc,info,locale} || die
+ local f
+ for f in "${ED}"/usr/share/man/*/* ; do
+ if [[ ${f##*/} != ${CTARGET}-* ]] ; then
+ mv "${f}" "${f%/*}/${CTARGET}-${f##*/}" || die
+ fi
+ done
+ return 0
+ fi
+
+ # Install it by hand for now:
+ # https://sourceware.org/ml/gdb-patches/2011-12/msg00915.html
+ # Only install if it exists due to the twisted behavior (see
+ # notes in src_configure above).
+ [[ -e gdbserver/gdbreplay ]] && dobin gdbserver/gdbreplay
+
+ docinto gdb
+ dodoc gdb/CONTRIBUTE gdb/README gdb/MAINTAINERS \
+ gdb/NEWS gdb/PROBLEMS
+ docinto sim
+ dodoc sim/{MAINTAINERS,README-HACKING}
+
+ if use server ; then
+ docinto gdbserver
+ dodoc gdbserver/README
+ fi
+
+ # Remove shared info pages
+ rm -f "${ED}"/usr/share/info/{annotate,bfd,configure,ctf-spec,standards}.info*
+
+ use guile && guile_unstrip_ccache
+
+ if use python ; then
+ python_optimize "${ED}"/usr/share/gdb/python/gdb
+ fi
+
+ if use kernel_Hurd ; then
+ mv "${ED}"/usr/bin/gcore "${ED}"/usr/bin/gcore.gdb || die
+ fi
+}
+
+pkg_postinst() {
+ # Portage doesn't unmerge files in /etc
+ rm -vf "${EROOT}"/etc/skel/.gdbinit
+
+ if use prefix && [[ ${CHOST} == *-darwin* ]] ; then
+ ewarn "gdb is unable to get a mach task port when installed by Prefix"
+ ewarn "Portage, unprivileged. To make gdb fully functional you'll"
+ ewarn "have to perform the following steps:"
+ ewarn " % sudo chgrp procmod ${EPREFIX}/usr/bin/gdb"
+ ewarn " % sudo chmod g+s ${EPREFIX}/usr/bin/gdb"
+ fi
+}
diff --git a/dev-debug/gdb/gdb-17.2.ebuild b/dev-debug/gdb/gdb-17.2.ebuild
new file mode 100644
index 000000000000..74d14782e7fd
--- /dev/null
+++ b/dev-debug/gdb/gdb-17.2.ebuild
@@ -0,0 +1,354 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# See https://sourceware.org/gdb/wiki/DistroAdvice for general packaging
+# tips & notes.
+
+GUILE_COMPAT=( 2-2 3-0 )
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic guile-single linux-info python-single-r1 strip-linguas toolchain-funcs
+
+export CTARGET=${CTARGET:-${CHOST}}
+
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+ if [[ ${CATEGORY} == cross-* ]] ; then
+ export CTARGET=${CATEGORY#cross-}
+ fi
+fi
+
+is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
+
+case ${PV} in
+ 9999*)
+ # live git tree
+ EGIT_REPO_URI="
+ https://sourceware.org/git/binutils-gdb.git
+ https://git.sr.ht/~sourceware/binutils-gdb
+ https://gitlab.com/x86-binutils/binutils-gdb.git
+ "
+ inherit git-r3
+ SRC_URI=""
+ ;;
+ *.*.50_p2???????|*.*.90_p2???????)
+ # Weekly snapshots
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-weekly-${MY_PV}.tar.xz
+ https://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-weekly-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+
+ # e.g. 13.1.90_p20230325 is a snapshot on the stable branch, so it's fine
+ if [[ ${PV} == *.[123456789].9?_p2??????? ]] ; then
+ REGULAR_RELEASE=1
+ fi
+ ;;
+ *.*.9?)
+ # Prereleases
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+ ;;
+ *)
+ # Normal upstream release
+ SRC_URI="
+ mirror://gnu/gdb/${P}.tar.xz
+ https://sourceware.org/pub/gdb/releases/${P}.tar.xz
+ "
+
+ REGULAR_RELEASE=1
+esac
+
+PATCH_DEV=""
+PATCH_VER=""
+DESCRIPTION="GNU debugger"
+HOMEPAGE="https://sourceware.org/gdb/"
+SRC_URI="
+ ${SRC_URI}
+ ${PATCH_DEV:+https://distfiles.gentoo.org/pub/proj/toolchain/gdb/patches/${P}-patches-${PATCH_VER}.tar.xz}
+"
+
+LICENSE="GPL-3+ LGPL-2.1+"
+SLOT="0"
+IUSE="babeltrace cet +debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla +xml xxhash zstd"
+if [[ -n ${REGULAR_RELEASE} ]] ; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+fi
+REQUIRED_USE="
+ guile? ( ${GUILE_REQUIRED_USE} )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ rocm? ( multitarget )
+"
+RESTRICT="!test? ( test )"
+
+# <babeltrace-2: bug #951652
+RDEPEND="
+ dev-libs/mpfr:=
+ dev-libs/gmp:=
+ >=sys-libs/ncurses-5.2-r2:=
+ >=sys-libs/readline-7:=
+ virtual/zlib:=
+ babeltrace? ( dev-util/babeltrace:0/1 )
+ debuginfod? (
+ dev-libs/elfutils[debuginfod(-)]
+ )
+ lzma? ( app-arch/xz-utils )
+ python? ( ${PYTHON_DEPS} )
+ guile? ( ${GUILE_DEPS} )
+ xml? ( dev-libs/expat )
+ rocm? ( >=dev-libs/rocdbgapi-6.3 )
+ source-highlight? (
+ dev-util/source-highlight
+ )
+ xxhash? (
+ dev-libs/xxhash
+ )
+ zstd? ( app-arch/zstd:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ app-arch/xz-utils
+ sys-apps/texinfo
+ app-alternatives/yacc
+ nls? ( sys-devel/gettext )
+ source-highlight? ( virtual/pkgconfig )
+ test? ( dev-util/dejagnu )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ MIN # gnulib FP (bug #898688)
+)
+
+QA_PREBUILT="usr/share/gdb/guile/*"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-8.3.1-verbose-build.patch
+)
+
+pkg_setup() {
+ local CONFIG_CHECK
+
+ if [[ ${CHOST} == *-linux-* ]] ; then
+ if kernel_is -ge 6.11.3 ; then
+ # https://forums.gentoo.org/viewtopic-p-8846891.html
+ # See also PR31520.
+ #
+ # Either CONFIG_PROC_MEM_ALWAYS_FORCE or CONFIG_PROC_MEM_FORCE_PTRACE
+ # should be okay, but not CONFIG_PROC_MEM_NO_FORCE.
+ CONFIG_CHECK+="
+ ~!PROC_MEM_NO_FORCE
+ "
+ fi
+ fi
+
+ linux-info_pkg_setup
+
+ use guile && guile-single_pkg_setup
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ use guile && guile_bump_sources
+
+ strip-linguas -u bfd/po opcodes/po
+
+ # Avoid using ancient termcap from host on Prefix systems
+ sed -i -e 's/termcap tinfow/tinfow/g' \
+ gdb/configure{.ac,} || die
+}
+
+gdb_branding() {
+ printf "Gentoo ${PV} "
+
+ if ! use vanilla && [[ -n ${PATCH_VER} ]] ; then
+ printf "p${PATCH_VER}"
+ else
+ printf "vanilla"
+ fi
+
+ [[ -n ${EGIT_COMMIT} ]] && printf " ${EGIT_COMMIT}"
+}
+
+src_configure() {
+ strip-unsupported-flags
+
+ # See https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html
+ # Avoid really confusing logs from subconfigure spam, makes logs far
+ # more legible.
+ MAKEOPTS="--output-sync=line ${MAKEOPTS}"
+
+ local myconf=(
+ # portage's econf() does not detect presence of --d-d-t
+ # because it greps only top-level ./configure. But not
+ # libiberty's or gdb's configure.
+ --disable-dependency-tracking
+ --disable-silent-rules
+
+ --with-pkgversion="$(gdb_branding)"
+ --with-bugurl='https://bugs.gentoo.org/'
+ --disable-werror
+ # Disable modules that are in a combined binutils/gdb tree. bug #490566
+ --disable-{binutils,etc,gas,gold,gprof,gprofng,ld}
+
+ $(use_with babeltrace)
+ $(use_with debuginfod)
+
+ $(use_enable test unit-tests)
+
+ # Allow user to opt into CET for host libraries.
+ # Ideally we would like automagic-or-disabled here.
+ # But the check does not quite work on i686: bug #760926.
+ $(use_enable cet)
+
+ # Helps when cross-compiling. Not to be confused with --with-sysroot.
+ --with-build-sysroot="${ESYSROOT}"
+ )
+
+ is_cross && myconf+=(
+ --with-sysroot="\${prefix}/${CTARGET}"
+ --includedir="\${prefix}/include/${CTARGET}"
+ --with-gdb-datadir="\${datadir}/gdb/${CTARGET}"
+ )
+
+ # gdbserver only works for native targets (CHOST==CTARGET).
+ # it also doesn't support all targets, so rather than duplicate
+ # the target list (which changes between versions), use the
+ # "auto" value when things are turned on, which is triggered
+ # whenever no --enable or --disable is given
+ if is_cross || use !server ; then
+ myconf+=( --disable-gdbserver )
+ fi
+
+ myconf+=(
+ --enable-64-bit-bfd
+ --disable-install-libbfd
+ --disable-install-libiberty
+ --enable-obsolete
+ # This only disables building in the readline subdir.
+ # For gdb itself, it'll use the system version.
+ --disable-readline
+ --with-system-readline
+ # This only disables building in the zlib subdir.
+ # For gdb itself, it'll use the system version.
+ --without-zlib
+ --with-system-zlib
+ --with-separate-debug-dir="${EPREFIX}"/usr/lib/debug
+ --with-amd-dbgapi=$(usex rocm)
+ $(use_with xml expat)
+ $(use_with lzma)
+ $(use_enable nls)
+ $(use_enable sim)
+ $(use_enable source-highlight)
+ $(use multitarget && echo --enable-targets=all)
+ $(use_with python python "${EPYTHON}")
+ $(use_with xxhash)
+ $(use_with guile)
+ $(use_with zstd)
+
+ # Find libraries using the toolchain sysroot rather than the configured
+ # prefix. Needed when cross-compiling.
+ #
+ # Check which libraries to apply this to with:
+ # "${S}"/gdb/configure --help | grep without-lib | sort
+ --without-lib{babeltrace,expat,gmp,iconv,ipt,lzma,mpfr,xxhash}-prefix
+ )
+
+ # source-highlight is detected with pkg-config: bug #716558
+ export ac_cv_path_pkg_config_prog_path="$(tc-getPKG_CONFIG)"
+
+ export CC_FOR_BUILD="$(tc-getBUILD_CC)"
+
+ # ensure proper compiler is detected for Clang builds: bug #831202
+ export GCC_FOR_TARGET="${CC_FOR_TARGET:-$(tc-getCC)}"
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # Run the unittests (nabbed invocation from Fedora's spec file) at least
+ emake -k -C gdb run GDBFLAGS='-batch -ex "maintenance selftest"'
+
+ # Too many failures
+ # In fact, gdb's test suite needs some work to get passing.
+ # See e.g. https://sourceware.org/gdb/wiki/TestingGDB.
+ # As of 11.2, on amd64: "# of unexpected failures 8600"
+ # Also, ia64 kernel crashes when gdb testsuite is running.
+ #emake -k check
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ find "${ED}"/usr -name libiberty.a -delete || die
+
+ # Delete translations that conflict with binutils-libs. bug #528088
+ # Note: Should figure out how to store these in an internal gdb dir.
+ if use nls ; then
+ find "${ED}" \
+ -regextype posix-extended -regex '.*/(bfd|opcodes)[.]g?mo$' \
+ -delete || die
+ fi
+
+ # Don't install docs when building a cross-gdb
+ if [[ ${CTARGET} != ${CHOST} ]] ; then
+ rm -rf "${ED}"/usr/share/{doc,info,locale} || die
+ local f
+ for f in "${ED}"/usr/share/man/*/* ; do
+ if [[ ${f##*/} != ${CTARGET}-* ]] ; then
+ mv "${f}" "${f%/*}/${CTARGET}-${f##*/}" || die
+ fi
+ done
+ return 0
+ fi
+
+ # Install it by hand for now:
+ # https://sourceware.org/ml/gdb-patches/2011-12/msg00915.html
+ # Only install if it exists due to the twisted behavior (see
+ # notes in src_configure above).
+ [[ -e gdbserver/gdbreplay ]] && dobin gdbserver/gdbreplay
+
+ docinto gdb
+ dodoc gdb/CONTRIBUTE gdb/README gdb/MAINTAINERS \
+ gdb/NEWS gdb/PROBLEMS
+ docinto sim
+ dodoc sim/{MAINTAINERS,README-HACKING}
+
+ if use server ; then
+ docinto gdbserver
+ dodoc gdbserver/README
+ fi
+
+ # Remove shared info pages
+ rm -f "${ED}"/usr/share/info/{annotate,bfd,configure,ctf-spec,standards}.info*
+
+ use guile && guile_unstrip_ccache
+
+ if use python ; then
+ python_optimize "${ED}"/usr/share/gdb/python/gdb
+ fi
+
+ if use kernel_Hurd ; then
+ mv "${ED}"/usr/bin/gcore "${ED}"/usr/bin/gcore.gdb || die
+ fi
+}
+
+pkg_postinst() {
+ # Portage doesn't unmerge files in /etc
+ rm -vf "${EROOT}"/etc/skel/.gdbinit
+
+ if use prefix && [[ ${CHOST} == *-darwin* ]] ; then
+ ewarn "gdb is unable to get a mach task port when installed by Prefix"
+ ewarn "Portage, unprivileged. To make gdb fully functional you'll"
+ ewarn "have to perform the following steps:"
+ ewarn " % sudo chgrp procmod ${EPREFIX}/usr/bin/gdb"
+ ewarn " % sudo chmod g+s ${EPREFIX}/usr/bin/gdb"
+ fi
+}
diff --git a/dev-debug/gdb/gdb-9999.ebuild b/dev-debug/gdb/gdb-9999.ebuild
new file mode 100644
index 000000000000..e584bcc141c6
--- /dev/null
+++ b/dev-debug/gdb/gdb-9999.ebuild
@@ -0,0 +1,351 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# See https://sourceware.org/gdb/wiki/DistroAdvice for general packaging
+# tips & notes.
+
+GUILE_COMPAT=( 2-2 3-0 )
+PYTHON_COMPAT=( python3_{13..14} )
+inherit flag-o-matic guile-single linux-info python-single-r1 strip-linguas toolchain-funcs
+
+export CTARGET=${CTARGET:-${CHOST}}
+
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+ if [[ ${CATEGORY} == cross-* ]] ; then
+ export CTARGET=${CATEGORY#cross-}
+ fi
+fi
+
+is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
+
+case ${PV} in
+ 9999*)
+ # live git tree
+ EGIT_REPO_URI="
+ https://sourceware.org/git/binutils-gdb.git
+ https://git.sr.ht/~sourceware/binutils-gdb
+ https://gitlab.com/x86-binutils/binutils-gdb.git
+ "
+ inherit git-r3
+ SRC_URI=""
+ ;;
+ *.*.50_p2???????|*.*.90_p2???????)
+ # Weekly snapshots
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-weekly-${MY_PV}.tar.xz
+ https://sourceware.org/pub/gdb/snapshots/current/gdb-weekly-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-weekly-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+
+ # e.g. 13.1.90_p20230325 is a snapshot on the stable branch, so it's fine
+ if [[ ${PV} == *.[123456789].9?_p2??????? ]] ; then
+ REGULAR_RELEASE=1
+ fi
+ ;;
+ *.*.9?)
+ # Prereleases
+ MY_PV="${PV/_p/.}"
+ SRC_URI="
+ https://sourceware.org/pub/gdb/snapshots/branch/gdb-${MY_PV}.tar.xz
+ https://distfiles.gentoo.org/pub/proj/toolchain/gdb/snapshots/gdb-${MY_PV}.tar.xz
+ "
+ S="${WORKDIR}/${PN}-${MY_PV}"
+ ;;
+ *)
+ # Normal upstream release
+ SRC_URI="
+ mirror://gnu/gdb/${P}.tar.xz
+ https://sourceware.org/pub/gdb/releases/${P}.tar.xz
+ "
+
+ REGULAR_RELEASE=1
+esac
+
+PATCH_DEV=""
+PATCH_VER=""
+DESCRIPTION="GNU debugger"
+HOMEPAGE="https://sourceware.org/gdb/"
+SRC_URI="
+ ${SRC_URI}
+ ${PATCH_DEV:+https://distfiles.gentoo.org/pub/proj/toolchain/gdb/patches/${P}-patches-${PATCH_VER}.tar.xz}
+"
+
+LICENSE="GPL-3+ LGPL-2.1+"
+SLOT="0"
+IUSE="cet +debuginfod guile lzma multitarget nls +python rocm +server sim source-highlight test vanilla +xml xxhash zstd"
+if [[ -n ${REGULAR_RELEASE} ]] ; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos ~x64-solaris"
+fi
+REQUIRED_USE="
+ guile? ( ${GUILE_REQUIRED_USE} )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ rocm? ( multitarget )
+"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-libs/mpfr:=
+ dev-libs/gmp:=
+ >=sys-libs/ncurses-5.2-r2:=
+ >=sys-libs/readline-7:=
+ virtual/zlib:=
+ debuginfod? (
+ dev-libs/elfutils[debuginfod(-)]
+ )
+ lzma? ( app-arch/xz-utils )
+ python? ( ${PYTHON_DEPS} )
+ guile? ( ${GUILE_DEPS} )
+ xml? ( dev-libs/expat )
+ rocm? ( >=dev-libs/rocdbgapi-6.3 )
+ source-highlight? (
+ dev-util/source-highlight
+ )
+ xxhash? (
+ dev-libs/xxhash
+ )
+ zstd? ( app-arch/zstd:= )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ app-arch/xz-utils
+ sys-apps/texinfo
+ app-alternatives/yacc
+ nls? ( sys-devel/gettext )
+ source-highlight? ( virtual/pkgconfig )
+ test? ( dev-util/dejagnu )
+"
+
+QA_CONFIG_IMPL_DECL_SKIP=(
+ MIN # gnulib FP (bug #898688)
+)
+
+QA_PREBUILT="usr/share/gdb/guile/*"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-8.3.1-verbose-build.patch
+)
+
+pkg_setup() {
+ local CONFIG_CHECK
+
+ if [[ ${CHOST} == *-linux-* ]] ; then
+ if kernel_is -ge 6.11.3 ; then
+ # https://forums.gentoo.org/viewtopic-p-8846891.html
+ # See also PR31520.
+ #
+ # Either CONFIG_PROC_MEM_ALWAYS_FORCE or CONFIG_PROC_MEM_FORCE_PTRACE
+ # should be okay, but not CONFIG_PROC_MEM_NO_FORCE.
+ CONFIG_CHECK+="
+ ~!PROC_MEM_NO_FORCE
+ "
+ fi
+ fi
+
+ linux-info_pkg_setup
+
+ use guile && guile-single_pkg_setup
+ use python && python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ default
+
+ use guile && guile_bump_sources
+
+ strip-linguas -u bfd/po opcodes/po
+
+ # Avoid using ancient termcap from host on Prefix systems
+ sed -i -e 's/termcap tinfow/tinfow/g' \
+ gdb/configure{.ac,} || die
+}
+
+gdb_branding() {
+ printf "Gentoo ${PV} "
+
+ if ! use vanilla && [[ -n ${PATCH_VER} ]] ; then
+ printf "p${PATCH_VER}"
+ else
+ printf "vanilla"
+ fi
+
+ [[ -n ${EGIT_COMMIT} ]] && printf " ${EGIT_COMMIT}"
+}
+
+src_configure() {
+ strip-unsupported-flags
+
+ # See https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html
+ # Avoid really confusing logs from subconfigure spam, makes logs far
+ # more legible.
+ MAKEOPTS="--output-sync=line ${MAKEOPTS}"
+
+ local myconf=(
+ # portage's econf() does not detect presence of --d-d-t
+ # because it greps only top-level ./configure. But not
+ # libiberty's or gdb's configure.
+ --disable-dependency-tracking
+ --disable-silent-rules
+
+ --with-pkgversion="$(gdb_branding)"
+ --with-bugurl='https://bugs.gentoo.org/'
+ --disable-werror
+ # Disable modules that are in a combined binutils/gdb tree. bug #490566
+ --disable-{binutils,etc,gas,gold,gprof,gprofng,ld}
+
+ $(use_with debuginfod)
+
+ $(use_enable test unit-tests)
+
+ # Allow user to opt into CET for host libraries.
+ # Ideally we would like automagic-or-disabled here.
+ # But the check does not quite work on i686: bug #760926.
+ $(use_enable cet)
+
+ # Helps when cross-compiling. Not to be confused with --with-sysroot.
+ --with-build-sysroot="${ESYSROOT}"
+ )
+
+ is_cross && myconf+=(
+ --with-sysroot="\${prefix}/${CTARGET}"
+ --includedir="\${prefix}/include/${CTARGET}"
+ --with-gdb-datadir="\${datadir}/gdb/${CTARGET}"
+ )
+
+ # gdbserver only works for native targets (CHOST==CTARGET).
+ # it also doesn't support all targets, so rather than duplicate
+ # the target list (which changes between versions), use the
+ # "auto" value when things are turned on, which is triggered
+ # whenever no --enable or --disable is given
+ if is_cross || use !server ; then
+ myconf+=( --disable-gdbserver )
+ fi
+
+ myconf+=(
+ --enable-64-bit-bfd
+ --disable-install-libbfd
+ --disable-install-libiberty
+ --enable-obsolete
+ # This only disables building in the readline subdir.
+ # For gdb itself, it'll use the system version.
+ --disable-readline
+ --with-system-readline
+ # This only disables building in the zlib subdir.
+ # For gdb itself, it'll use the system version.
+ --without-zlib
+ --with-system-zlib
+ --with-separate-debug-dir="${EPREFIX}"/usr/lib/debug
+ --with-amd-dbgapi=$(usex rocm)
+ $(use_with xml expat)
+ $(use_with lzma)
+ $(use_enable nls)
+ $(use_enable sim)
+ $(use_enable source-highlight)
+ $(use multitarget && echo --enable-targets=all)
+ $(use_with python python "${EPYTHON}")
+ $(use_with xxhash)
+ $(use_with guile)
+ $(use_with zstd)
+
+ # Find libraries using the toolchain sysroot rather than the configured
+ # prefix. Needed when cross-compiling.
+ #
+ # Check which libraries to apply this to with:
+ # "${S}"/gdb/configure --help | grep without-lib | sort
+ --without-lib{expat,gmp,iconv,ipt,lzma,mpfr,xxhash}-prefix
+ )
+
+ # source-highlight is detected with pkg-config: bug #716558
+ export ac_cv_path_pkg_config_prog_path="$(tc-getPKG_CONFIG)"
+
+ export CC_FOR_BUILD="$(tc-getBUILD_CC)"
+
+ # ensure proper compiler is detected for Clang builds: bug #831202
+ export GCC_FOR_TARGET="${CC_FOR_TARGET:-$(tc-getCC)}"
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # Run the unittests (nabbed invocation from Fedora's spec file) at least
+ emake -k -C gdb run GDBFLAGS='-batch -ex "maintenance selftest"'
+
+ # Too many failures
+ # In fact, gdb's test suite needs some work to get passing.
+ # See e.g. https://sourceware.org/gdb/wiki/TestingGDB.
+ # As of 11.2, on amd64: "# of unexpected failures 8600"
+ # Also, ia64 kernel crashes when gdb testsuite is running.
+ #emake -k check
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ find "${ED}"/usr -name libiberty.a -delete || die
+
+ # Delete translations that conflict with binutils-libs. bug #528088
+ # Note: Should figure out how to store these in an internal gdb dir.
+ if use nls ; then
+ find "${ED}" \
+ -regextype posix-extended -regex '.*/(bfd|opcodes)[.]g?mo$' \
+ -delete || die
+ fi
+
+ # Don't install docs when building a cross-gdb
+ if [[ ${CTARGET} != ${CHOST} ]] ; then
+ rm -rf "${ED}"/usr/share/{doc,info,locale} || die
+ local f
+ for f in "${ED}"/usr/share/man/*/* ; do
+ if [[ ${f##*/} != ${CTARGET}-* ]] ; then
+ mv "${f}" "${f%/*}/${CTARGET}-${f##*/}" || die
+ fi
+ done
+ return 0
+ fi
+
+ # Install it by hand for now:
+ # https://sourceware.org/ml/gdb-patches/2011-12/msg00915.html
+ # Only install if it exists due to the twisted behavior (see
+ # notes in src_configure above).
+ [[ -e gdbserver/gdbreplay ]] && dobin gdbserver/gdbreplay
+
+ docinto gdb
+ dodoc gdb/CONTRIBUTE gdb/README gdb/MAINTAINERS \
+ gdb/NEWS gdb/PROBLEMS
+ docinto sim
+ dodoc sim/{MAINTAINERS,README-HACKING}
+
+ if use server ; then
+ docinto gdbserver
+ dodoc gdbserver/README
+ fi
+
+ # Remove shared info pages
+ rm -f "${ED}"/usr/share/info/{annotate,bfd,configure,ctf-spec,standards}.info*
+
+ use guile && guile_unstrip_ccache
+
+ if use python ; then
+ python_optimize "${ED}"/usr/share/gdb/python/gdb
+ fi
+
+ if use kernel_Hurd ; then
+ mv "${ED}"/usr/bin/gcore "${ED}"/usr/bin/gcore.gdb || die
+ fi
+}
+
+pkg_postinst() {
+ # Portage doesn't unmerge files in /etc
+ rm -vf "${EROOT}"/etc/skel/.gdbinit
+
+ if use prefix && [[ ${CHOST} == *-darwin* ]] ; then
+ ewarn "gdb is unable to get a mach task port when installed by Prefix"
+ ewarn "Portage, unprivileged. To make gdb fully functional you'll"
+ ewarn "have to perform the following steps:"
+ ewarn " % sudo chgrp procmod ${EPREFIX}/usr/bin/gdb"
+ ewarn " % sudo chmod g+s ${EPREFIX}/usr/bin/gdb"
+ fi
+}
diff --git a/dev-debug/gdb/metadata.xml b/dev-debug/gdb/metadata.xml
new file mode 100644
index 000000000000..e9a6045cd6b0
--- /dev/null
+++ b/dev-debug/gdb/metadata.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>toolchain@gentoo.org</email>
+ <name>Gentoo Toolchain Project</name>
+ </maintainer>
+ <use>
+ <flag name="babeltrace">Enable <pkg>dev-util/babeltrace</pkg> support</flag>
+ <flag name="cet">Enable Intel Control-flow Enforcement Technology.</flag>
+ <flag name="lzma">Support lzma compression in ELF debug info</flag>
+ <flag name="multitarget">Support all known targets in one gdb binary</flag>
+ <flag name="python">Enable support for the new internal scripting language, as well as extended pretty printers</flag>
+ <flag name="rocm">Enable support for AMD GPU debugging via <pkg>dev-libs/rocdbgapi</pkg>
+ </flag>
+ <flag name="server">Install the "gdbserver" program (useful for embedded/remote targets)</flag>
+ <flag name="sim">Build gdb's simulators for various hardware platforms. See https://sourceware.org/gdb/wiki/Sim.</flag>
+ <flag name="source-highlight">Enable listing highlighting via <pkg>dev-util/source-highlight</pkg>
+ </flag>
+ <flag name="xml">Support parsing XML data files needed (at least) for cpu features, memory maps, and syscall tracing</flag>
+ <flag name="xxhash">Use <pkg>dev-libs/xxhash</pkg> to speed up internal hashing.</flag>
+ <flag name="debuginfod">Enable debuginfod support via <pkg>dev-libs/elfutils</pkg> libdebuginfod</flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:gnu:gdb</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/gdbgui/Manifest b/dev-debug/gdbgui/Manifest
new file mode 100644
index 000000000000..8fdaa2185b33
--- /dev/null
+++ b/dev-debug/gdbgui/Manifest
@@ -0,0 +1,3 @@
+DIST gdbgui-0.15.2.0.gh.tar.gz 4950845 BLAKE2B ffdce1923aead7d5cf202aa6954bbedcfa55cb27351b7635dd9636a8b398e4d9d8baa1c59789ba47e80ae581fa6510cae2017d0639cc7f9137d8ce5e0324172b SHA512 b1aef477f87b04016f594fe38581b646a0179bf9fd2441c6af3a534a817fc0b43a89f22016e252dffca775ab2b6a4e9cd7962f6f347be9295aee0af798a033b3
+DIST gdbgui-0.15.2.0.tar.gz 1292007 BLAKE2B 32adaef906d0fa94de76d7009c3a0c37e9596403b8a10b3b75b798627141627d7d7196399d61b4252512c6707a2ac8ec71958bb22432155ef8d11b3681aa89c2 SHA512 e678494efe6ef3a1e65dc167b0620cffd219a9fa3c2dcf5c127229042bb9e0f3a7ccba0cbf5c70689bb4ec1ec3f3c36be75a2b6024ea615758928205e584ecb8
+DIST gdbgui-0.15.3.0.tar.gz 1292210 BLAKE2B 76b0ac41025955e4af96a4cd45ef66247085aa233102f997fbbb513c8123c5308d8df1eeb22eaf8b7661b1aa04496437a3a32f7146cc47c4ecee9020f41bf6fe SHA512 b07723db7d777982c91baebf8c9d382bbaca99cb779a4a1392cbcc8ec5ee4563a8679ee7c41baa4e698f902c463edc3c5f47a4c61aa045ed02ae99a122d59968
diff --git a/dev-debug/gdbgui/gdbgui-0.15.2.0-r1.ebuild b/dev-debug/gdbgui/gdbgui-0.15.2.0-r1.ebuild
new file mode 100644
index 000000000000..d736efdd8373
--- /dev/null
+++ b/dev-debug/gdbgui/gdbgui-0.15.2.0-r1.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="Browser-based frontend to gdb"
+HOMEPAGE="https://www.gdbgui.com/ https://github.com/cs01/gdbgui"
+SRC_URI="https://github.com/cs01/gdbgui/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ dev-python/bidict[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/flask-compress[${PYTHON_USEDEP}]
+ dev-python/flask-socketio[${PYTHON_USEDEP}]
+ dev-python/pygdbmi[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/python-engineio[${PYTHON_USEDEP}]
+"
+
+RDEPEND="${DEPEND}"
+
+distutils_enable_tests pytest
diff --git a/dev-debug/gdbgui/gdbgui-0.15.2.0.ebuild b/dev-debug/gdbgui/gdbgui-0.15.2.0.ebuild
new file mode 100644
index 000000000000..ecdfbbb0ebb5
--- /dev/null
+++ b/dev-debug/gdbgui/gdbgui-0.15.2.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Browser-based frontend to gdb"
+HOMEPAGE="https://www.gdbgui.com/ https://github.com/cs01/gdbgui"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ dev-python/bidict[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/flask-compress[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/python-engineio[${PYTHON_USEDEP}]
+"
+
+RDEPEND="${DEPEND}"
diff --git a/dev-debug/gdbgui/gdbgui-0.15.3.0.ebuild b/dev-debug/gdbgui/gdbgui-0.15.3.0.ebuild
new file mode 100644
index 000000000000..ecdfbbb0ebb5
--- /dev/null
+++ b/dev-debug/gdbgui/gdbgui-0.15.3.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Browser-based frontend to gdb"
+HOMEPAGE="https://www.gdbgui.com/ https://github.com/cs01/gdbgui"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+ dev-python/bidict[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/flask-compress[${PYTHON_USEDEP}]
+ dev-python/pygments[${PYTHON_USEDEP}]
+ dev-python/python-engineio[${PYTHON_USEDEP}]
+"
+
+RDEPEND="${DEPEND}"
diff --git a/dev-debug/gdbgui/metadata.xml b/dev-debug/gdbgui/metadata.xml
new file mode 100644
index 000000000000..6e8632a248e2
--- /dev/null
+++ b/dev-debug/gdbgui/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>stkw0@disroot.org</email>
+ <name>David Roman</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/gef/Manifest b/dev-debug/gef/Manifest
new file mode 100644
index 000000000000..5437980b1ac4
--- /dev/null
+++ b/dev-debug/gef/Manifest
@@ -0,0 +1,3 @@
+DIST gef-2023.08.tar.gz 230347 BLAKE2B b9b8fed1bdf81fa870583921c4bdd6df2d98112748c939da48acae7e636ec6e22dc751d8ed75e52e72ff0aa04835720293f0e82e99ff614c447f2a614c76e48a SHA512 d3a26826b991db7e8d475da945b16933ce046dd64381f5df60ea0fe310d0325f39b05142de5f75abbbd5693c93ad70ff25e982d0ff3526a6fe66fd7526a359c5
+DIST gef-2025.01.tar.gz 246677 BLAKE2B a607d882ed62efa4da7a60d594852a9bc2f6d6583bd7049fd6db616e71fcfb1caf9a7fd9be261b604257740974cbd1ce7ce1b11c061006a22e85dac57e7011db SHA512 0a028c0457b6b35a78ab4e8030010d586bb38bf8968ff1b4bf67d7f0bacedb78f3627699674f50217154f9254fac0ec5d65922845af3da0f72fed7b9bfc2ad8d
+DIST gef-2026.01.tar.gz 247419 BLAKE2B 5dffee69689aaa988dc35e56809f1a7775e872f12c20d047de9ee4f5b5bf1146c567549080e65cf98ae7310a1735263fdf525fd930099f694dc57f001c3660d0 SHA512 20e1bd398b1bc0345a7a637fe058a0aaee9f4c2b5a65ce67f3774d9fcf4a5c865f43fbe1ff9cb2d5e04091d025dded43e08f88b5333211084616955a3fc5eac6
diff --git a/dev-debug/gef/gef-2023.08.ebuild b/dev-debug/gef/gef-2023.08.ebuild
new file mode 100644
index 000000000000..f1e8b847ea11
--- /dev/null
+++ b/dev-debug/gef/gef-2023.08.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material
+"
+
+inherit python-single-r1 docs wrapper
+
+DESCRIPTION="GDB Enhanced Features for exploit devs & reversers"
+HOMEPAGE="https://github.com/hugsy/gef"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/hugsy/gef"
+else
+ SRC_URI="https://github.com/hugsy/gef/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 ~arm ~arm64 ~ppc ~ppc64 x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="test"
+# Seem to hang right now?
+RESTRICT="!test? ( test ) test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ dev-util/ropper[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-libs/capstone[python,${PYTHON_USEDEP}]
+ dev-libs/keystone[python,${PYTHON_USEDEP}]
+ dev-python/pylint[${PYTHON_USEDEP}]
+ dev-util/unicorn[python,${PYTHON_USEDEP}]
+ ')"
+
+BDEPEND="
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ ')
+ )"
+
+DOCS=( README.md )
+
+src_prepare() {
+ default
+
+ sed -i -e '/pylint/d' tests/requirements.txt || die
+}
+
+src_compile() {
+ # Tries to compile tests
+ :
+
+ docs_compile
+}
+
+src_install() {
+ insinto "/usr/share/${PN}"
+ doins -r *.py
+
+ python_optimize "${ED}/usr/share/${PN}"
+
+ make_wrapper "gdb-gef" \
+ "gdb -x \"/usr/share/${PN}/gef.py\"" || die
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ einfo "\nUsage:"
+ einfo " ~$ gdb-gef <program>\n"
+}
diff --git a/dev-debug/gef/gef-2025.01.ebuild b/dev-debug/gef/gef-2025.01.ebuild
new file mode 100644
index 000000000000..0ad1e35635be
--- /dev/null
+++ b/dev-debug/gef/gef-2025.01.ebuild
@@ -0,0 +1,83 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material
+"
+
+inherit python-single-r1 docs wrapper
+
+DESCRIPTION="GDB Enhanced Features for exploit devs & reversers"
+HOMEPAGE="https://github.com/hugsy/gef"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/hugsy/gef"
+else
+ SRC_URI="https://github.com/hugsy/gef/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 ~arm64 x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="test"
+# Seem to hang right now?
+RESTRICT="!test? ( test ) test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-util/ropper[${PYTHON_SINGLE_USEDEP}]
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-libs/capstone[python,${PYTHON_USEDEP}]
+ dev-libs/keystone[python,${PYTHON_USEDEP}]
+ dev-python/pylint[${PYTHON_USEDEP}]
+ dev-python/rpyc[${PYTHON_USEDEP}]
+ dev-util/unicorn[python,${PYTHON_USEDEP}]
+ ')"
+
+BDEPEND="
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ ')
+ )"
+
+DOCS=( README.md )
+
+src_prepare() {
+ default
+
+ sed -i -e '/pylint/d' tests/requirements.txt || die
+}
+
+src_compile() {
+ # Tries to compile tests
+ :
+
+ docs_compile
+}
+
+src_install() {
+ insinto "/usr/share/${PN}"
+ doins -r *.py
+
+ python_optimize "${ED}/usr/share/${PN}"
+
+ make_wrapper "gdb-gef" \
+ "gdb -x \"/usr/share/${PN}/gef.py\"" || die
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ einfo "\nUsage:"
+ einfo " ~$ gdb-gef <program>\n"
+}
diff --git a/dev-debug/gef/gef-2026.01.ebuild b/dev-debug/gef/gef-2026.01.ebuild
new file mode 100644
index 000000000000..3026e6c21870
--- /dev/null
+++ b/dev-debug/gef/gef-2026.01.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material
+"
+
+inherit python-single-r1 docs wrapper
+
+DESCRIPTION="GDB Enhanced Features for exploit devs & reversers"
+HOMEPAGE="https://github.com/hugsy/gef"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/hugsy/gef"
+else
+ SRC_URI="https://github.com/hugsy/gef/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 ~arm64 x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+# Needs network access and possibly privileges
+RESTRICT="test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-util/ropper[${PYTHON_SINGLE_USEDEP}]
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-libs/capstone[python,${PYTHON_USEDEP}]
+ dev-libs/keystone[python,${PYTHON_USEDEP}]
+ dev-python/pylint[${PYTHON_USEDEP}]
+ dev-python/rpyc[${PYTHON_USEDEP}]
+ dev-util/unicorn[python,${PYTHON_USEDEP}]
+ ')
+"
+
+DOCS=( README.md )
+
+src_prepare() {
+ default
+
+ sed -i -e '/pylint/d' tests/requirements.txt || die
+}
+
+src_compile() {
+ # Tries to compile tests
+ :
+
+ docs_compile
+}
+
+src_install() {
+ insinto "/usr/share/${PN}"
+ doins -r *.py
+
+ python_optimize "${ED}/usr/share/${PN}"
+
+ make_wrapper "gdb-gef" \
+ "gdb -x \"/usr/share/${PN}/gef.py\"" || die
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ einfo "\nUsage:"
+ einfo " ~$ gdb-gef <program>\n"
+}
diff --git a/dev-debug/gef/gef-9999.ebuild b/dev-debug/gef/gef-9999.ebuild
new file mode 100644
index 000000000000..e6f8121a7c7a
--- /dev/null
+++ b/dev-debug/gef/gef-9999.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material
+"
+
+inherit python-single-r1 docs wrapper
+
+DESCRIPTION="GDB Enhanced Features for exploit devs & reversers"
+HOMEPAGE="https://github.com/hugsy/gef"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/hugsy/gef"
+else
+ SRC_URI="https://github.com/hugsy/gef/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+# Needs network access and possibly privileges
+RESTRICT="test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-util/ropper[${PYTHON_SINGLE_USEDEP}]
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-libs/capstone[python,${PYTHON_USEDEP}]
+ dev-libs/keystone[python,${PYTHON_USEDEP}]
+ dev-python/pylint[${PYTHON_USEDEP}]
+ dev-python/rpyc[${PYTHON_USEDEP}]
+ dev-util/unicorn[python,${PYTHON_USEDEP}]
+ ')
+"
+
+DOCS=( README.md )
+
+src_prepare() {
+ default
+
+ sed -i -e '/pylint/d' tests/requirements.txt || die
+}
+
+src_compile() {
+ # Tries to compile tests
+ :
+
+ docs_compile
+}
+
+src_install() {
+ insinto "/usr/share/${PN}"
+ doins -r *.py
+
+ python_optimize "${ED}/usr/share/${PN}"
+
+ make_wrapper "gdb-gef" \
+ "gdb -x \"/usr/share/${PN}/gef.py\"" || die
+
+ einstalldocs
+}
+
+pkg_postinst() {
+ einfo "\nUsage:"
+ einfo " ~$ gdb-gef <program>\n"
+}
diff --git a/dev-debug/gef/metadata.xml b/dev-debug/gef/metadata.xml
new file mode 100644
index 000000000000..99e980ca8334
--- /dev/null
+++ b/dev-debug/gef/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <longdescription>
+ GEF is a set of commands for x86/64, ARM, MIPS, PowerPC and SPARC to
+ assist exploit developers and reverse-engineers when using old school
+ GDB. It provides additional features to GDB using the Python API to
+ assist during the process of dynamic analysis and exploit development.
+ Application developers will also benefit from it, as GEF lifts a great
+ part of regular GDB obscurity, avoiding repeating traditional commands,
+ or bringing out the relevant information from the debugging runtime.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/gfxreconstruct/Manifest b/dev-debug/gfxreconstruct/Manifest
new file mode 100644
index 000000000000..e990b269f393
--- /dev/null
+++ b/dev-debug/gfxreconstruct/Manifest
@@ -0,0 +1,2 @@
+DIST SPIRV-Reflect-1.4.341.0.tar.gz 348384 BLAKE2B 1fc461f02a3e35b610cae0b2e41cfc8b0938a13d5c1fe62d2e3a53d3822cf7bc94d3d3a5cda3ba3707ecc9aa34415b351f1ac25f92922e63378a2822e766fb68 SHA512 ee8abc9958af8887300eece7dbcf11ed4bf79d9ee281318e6794f093a988438736e0da642d61b975912475cc3a0b13fe8cd17d3a6b0fcfff653c9831f5d86ba0
+DIST gfxreconstruct-1.4.341.0.tar.gz 50763927 BLAKE2B b532535012088bb043f1098886bd30ce1e3345515e217a77a05229f98b36678703ed9773169cf7cfa0f09f4694635c69532127df86649cd3e19daa2b6768ec4f SHA512 0efb51431b8ae40e723d06ff3ab6a2505094dc88104a0f2da42f4c1e301dbdd929398e7183a996b7b31854f45506ea636cec40f9fa883aafbe8d8b0b493716aa
diff --git a/dev-debug/gfxreconstruct/files/1.3.313.0-use-system-vulkan.patch b/dev-debug/gfxreconstruct/files/1.3.313.0-use-system-vulkan.patch
new file mode 100644
index 000000000000..419ec4134ebe
--- /dev/null
+++ b/dev-debug/gfxreconstruct/files/1.3.313.0-use-system-vulkan.patch
@@ -0,0 +1,38 @@
+From 900940f63432dac21b397150031355c7511032a4 Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Thu, 15 May 2025 23:28:26 -0400
+Subject: [PATCH] Use system Vulkan Headers instead of embedded ones.
+
+---
+ cmake/FindVulkanVersion.cmake | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git ./cmake/FindVulkanVersion.cmake ./cmake/FindVulkanVersion.cmake
+index 3821c2c8..f7744813 100644
+--- ./cmake/FindVulkanVersion.cmake
++++ ./cmake/FindVulkanVersion.cmake
+@@ -13,9 +13,7 @@ set(FIND_VULKAN_DIR ${CMAKE_CURRENT_LIST_DIR})
+ find_file (VULKAN_HEADER
+ vulkan_core.h
+ HINTS
+- external/Vulkan-Headers/include/vulkan
+- ${FIND_VULKAN_DIR}/../external/Vulkan-Headers/include/vulkan
+- ${FIND_VULKAN_DIR}/../../external/Vulkan-Headers/include/vulkan
++ /usr/include/vulkan/
+ NO_DEFAULT_PATH
+ NO_CMAKE_FIND_ROOT_PATH
+ )
+@@ -28,9 +26,7 @@ else()
+ find_file(VULKAN_HEADER
+ vulkan.h
+ HINTS
+- external/Vulkan-Headers/include/vulkan
+- ${FIND_VULKAN_DIR}/../external/Vulkan-Headers/include/vulkan
+- ${FIND_VULKAN_DIR}/../../external/Vulkan-Headers/include/vulkan
++ /usr/include/vulkan/
+ NO_DEFAULT_PATH
+ NO_CMAKE_FIND_ROOT_PATH
+ )
+--
+2.49.0
+
diff --git a/dev-debug/gfxreconstruct/gfxreconstruct-1.4.341.0.ebuild b/dev-debug/gfxreconstruct/gfxreconstruct-1.4.341.0.ebuild
new file mode 100644
index 000000000000..00f8000090bd
--- /dev/null
+++ b/dev-debug/gfxreconstruct/gfxreconstruct-1.4.341.0.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit cmake
+
+if [[ ${PV} == 9999* ]]; then
+ EGIT_REPO_URI="https://github.com/LunarG/gfxreconstruct.git"
+ EGIT_SUBMODULES=( external/{Vulkan-Headers,SPIRV-Headers,SPIRV-Reflect} )
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/LunarG/${PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/KhronosGroup/SPIRV-Reflect/archive/vulkan-sdk-${PV}.tar.gz -> SPIRV-Reflect-${PV}.tar.gz
+ "
+ KEYWORDS="~amd64"
+ S="${WORKDIR}"/${PN}-vulkan-sdk-${PV}
+fi
+
+DESCRIPTION="Graphics API Capture and Replay Tools"
+HOMEPAGE="https://github.com/LunarG/gfxreconstruct"
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="wayland X"
+
+RDEPEND="
+ app-arch/lz4:=
+ app-arch/zstd:=
+ virtual/zlib:=
+
+ media-libs/vulkan-loader[wayland?,X?]
+ wayland? ( dev-libs/wayland )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxcb
+ x11-libs/xcb-util-keysyms
+ )
+"
+DEPEND="${RDEPEND}
+ X? ( x11-libs/libXrandr )
+"
+if [[ ${PV} != 9999* ]]; then
+ DEPEND+="
+ ~dev-util/spirv-headers-${PV}
+ ~dev-util/vulkan-headers-${PV}
+ "
+ PATCHES=(
+ "${FILESDIR}"/1.3.313.0-use-system-vulkan.patch
+ )
+fi
+
+src_unpack() {
+ if [[ ${PV} == 9999* ]]; then
+ git-r3_src_unpack
+ else
+ default
+ rmdir "${S}"/external/SPIRV-Reflect || die
+ mv "${WORKDIR}"/SPIRV-Reflect-vulkan-sdk-${PV} "${S}"/external/SPIRV-Reflect || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_SKIP_RPATH=ON
+ -DBUILD_WERROR=OFF
+ -DBUILD_WSI_DISPLAY_SUPPORT=ON
+ -DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
+ -DBUILD_WSI_XCB_SUPPORT=$(usex X)
+ -DBUILD_WSI_XLIB_SUPPORT=$(usex X)
+ -DGFXRECON_ENABLE_OPENXR=OFF
+ )
+ cmake_src_configure
+}
diff --git a/dev-debug/gfxreconstruct/gfxreconstruct-9999.ebuild b/dev-debug/gfxreconstruct/gfxreconstruct-9999.ebuild
new file mode 100644
index 000000000000..00f8000090bd
--- /dev/null
+++ b/dev-debug/gfxreconstruct/gfxreconstruct-9999.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+inherit cmake
+
+if [[ ${PV} == 9999* ]]; then
+ EGIT_REPO_URI="https://github.com/LunarG/gfxreconstruct.git"
+ EGIT_SUBMODULES=( external/{Vulkan-Headers,SPIRV-Headers,SPIRV-Reflect} )
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/LunarG/${PN}/archive/vulkan-sdk-${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/KhronosGroup/SPIRV-Reflect/archive/vulkan-sdk-${PV}.tar.gz -> SPIRV-Reflect-${PV}.tar.gz
+ "
+ KEYWORDS="~amd64"
+ S="${WORKDIR}"/${PN}-vulkan-sdk-${PV}
+fi
+
+DESCRIPTION="Graphics API Capture and Replay Tools"
+HOMEPAGE="https://github.com/LunarG/gfxreconstruct"
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="wayland X"
+
+RDEPEND="
+ app-arch/lz4:=
+ app-arch/zstd:=
+ virtual/zlib:=
+
+ media-libs/vulkan-loader[wayland?,X?]
+ wayland? ( dev-libs/wayland )
+ X? (
+ x11-libs/libX11
+ x11-libs/libxcb
+ x11-libs/xcb-util-keysyms
+ )
+"
+DEPEND="${RDEPEND}
+ X? ( x11-libs/libXrandr )
+"
+if [[ ${PV} != 9999* ]]; then
+ DEPEND+="
+ ~dev-util/spirv-headers-${PV}
+ ~dev-util/vulkan-headers-${PV}
+ "
+ PATCHES=(
+ "${FILESDIR}"/1.3.313.0-use-system-vulkan.patch
+ )
+fi
+
+src_unpack() {
+ if [[ ${PV} == 9999* ]]; then
+ git-r3_src_unpack
+ else
+ default
+ rmdir "${S}"/external/SPIRV-Reflect || die
+ mv "${WORKDIR}"/SPIRV-Reflect-vulkan-sdk-${PV} "${S}"/external/SPIRV-Reflect || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DCMAKE_SKIP_RPATH=ON
+ -DBUILD_WERROR=OFF
+ -DBUILD_WSI_DISPLAY_SUPPORT=ON
+ -DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
+ -DBUILD_WSI_XCB_SUPPORT=$(usex X)
+ -DBUILD_WSI_XLIB_SUPPORT=$(usex X)
+ -DGFXRECON_ENABLE_OPENXR=OFF
+ )
+ cmake_src_configure
+}
diff --git a/dev-debug/gfxreconstruct/metadata.xml b/dev-debug/gfxreconstruct/metadata.xml
new file mode 100644
index 000000000000..811825f90a16
--- /dev/null
+++ b/dev-debug/gfxreconstruct/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>vulkan@gentoo.org</email>
+ <name>Vulkan Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/gprofng-gui/Manifest b/dev-debug/gprofng-gui/Manifest
new file mode 100644
index 000000000000..831e13c32afe
--- /dev/null
+++ b/dev-debug/gprofng-gui/Manifest
@@ -0,0 +1,3 @@
+DIST gprofng-gui-2.0.tar.gz 1297153 BLAKE2B 0a0c921a2ba1e81cdec3cba5fbe66ae8079fcce3f3fcad2ad792e2758ca218bd667dd9722d32e25027d9eb1b6ddb3897c94098db07f24915928347c4ff804b19 SHA512 2e27eb3632de6a81c9301bea740a1bda288d0c74a788a59cc44cd3c3a172a45e7be8bacb7ffe454924f707728b38bfb539998a41a8ef0b363039d7d6fcc6ac0a
+DIST gprofng-gui-2.1.tar.gz 1323092 BLAKE2B b7618272f9798e2b4798b5c234d4ed323b086bae086f8df86407c129598db881ad5c87262a4f8093b22708e444db31421d157e2b1aff216adcca5a06713935a2 SHA512 c9351933594a9af06fadb7771a74fbec44a5d5a44672267f857c654ce871ca0b542cd5cfc287cdeed2b25f962696fa4b302c0733326cdf4d13ee4e13ed4f32ac
+DIST gprofng-gui-2.2.tar.gz 1323156 BLAKE2B 102168c2ffc2f5c0b034d7047ba072c0df6000aa9e3f42fc5f6604f2f083f51bfc12d3ea41e10fb316cbb3cdac811730425a517ad3c01bb309bc57817bbd9e5d SHA512 3cb90479dbc30724d4b779ec9b070d39e5cb571dafe3a455a3cd3f323497dac43d3a6a275363940ee75e7e906671398e51a86dfffda9b7e6a73b888acb54c782
diff --git a/dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild b/dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild
new file mode 100644
index 000000000000..562dab19b40b
--- /dev/null
+++ b/dev-debug/gprofng-gui/gprofng-gui-2.0.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-pkg-2 xdg
+
+DESCRIPTION="Full-fledged graphical interface to operate gprofng"
+HOMEPAGE="https://www.gnu.org/software/gprofng-gui/"
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://git.savannah.gnu.org/git/gprofng-gui.git"
+ inherit autotools git-r3
+else
+ SRC_URI="mirror://gnu/gprofng-gui/${P}.tar.gz"
+ S="${WORKDIR}/${P}"
+
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+
+DEPEND=">=virtual/jdk-1.8:*"
+RDEPEND="
+ sys-devel/binutils:*[gprofng(-)]
+ >=virtual/jre-1.8:*
+"
+
+src_prepare() {
+ default
+
+ [[ ${PV} == 9999 ]] && eautoreconf
+
+ java-pkg-2_src_prepare
+}
diff --git a/dev-debug/gprofng-gui/gprofng-gui-2.1.ebuild b/dev-debug/gprofng-gui/gprofng-gui-2.1.ebuild
new file mode 100644
index 000000000000..984f2988c01c
--- /dev/null
+++ b/dev-debug/gprofng-gui/gprofng-gui-2.1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-pkg-2 xdg
+
+DESCRIPTION="Full-fledged graphical interface to operate gprofng"
+HOMEPAGE="https://www.gnu.org/software/gprofng-gui/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://git.savannah.gnu.org/git/gprofng-gui.git"
+ inherit autotools git-r3
+else
+ SRC_URI="mirror://gnu/gprofng-gui/${P}.tar.gz"
+ S="${WORKDIR}/${P}"
+
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+
+DEPEND=">=virtual/jdk-1.8:*"
+RDEPEND="
+ sys-devel/binutils:*[gprofng(-)]
+ >=virtual/jre-1.8:*
+"
+
+src_prepare() {
+ default
+
+ mkdir "${WORKDIR}"/build || die
+
+ [[ ${PV} == 9999 ]] && eautoreconf
+
+ java-pkg-2_src_prepare
+}
+
+src_configure() {
+ cd "${WORKDIR}"/build || die
+ ECONF_SOURCE="${S}" econf
+}
+
+src_compile() {
+ emake -C "${WORKDIR}"/build
+}
+
+src_install() {
+ einstalldocs
+ emake -C "${WORKDIR}"/build DESTDIR="${D}" install
+}
diff --git a/dev-debug/gprofng-gui/gprofng-gui-2.2.ebuild b/dev-debug/gprofng-gui/gprofng-gui-2.2.ebuild
new file mode 100644
index 000000000000..984f2988c01c
--- /dev/null
+++ b/dev-debug/gprofng-gui/gprofng-gui-2.2.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-pkg-2 xdg
+
+DESCRIPTION="Full-fledged graphical interface to operate gprofng"
+HOMEPAGE="https://www.gnu.org/software/gprofng-gui/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://git.savannah.gnu.org/git/gprofng-gui.git"
+ inherit autotools git-r3
+else
+ SRC_URI="mirror://gnu/gprofng-gui/${P}.tar.gz"
+ S="${WORKDIR}/${P}"
+
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+
+DEPEND=">=virtual/jdk-1.8:*"
+RDEPEND="
+ sys-devel/binutils:*[gprofng(-)]
+ >=virtual/jre-1.8:*
+"
+
+src_prepare() {
+ default
+
+ mkdir "${WORKDIR}"/build || die
+
+ [[ ${PV} == 9999 ]] && eautoreconf
+
+ java-pkg-2_src_prepare
+}
+
+src_configure() {
+ cd "${WORKDIR}"/build || die
+ ECONF_SOURCE="${S}" econf
+}
+
+src_compile() {
+ emake -C "${WORKDIR}"/build
+}
+
+src_install() {
+ einstalldocs
+ emake -C "${WORKDIR}"/build DESTDIR="${D}" install
+}
diff --git a/dev-debug/gprofng-gui/gprofng-gui-9999.ebuild b/dev-debug/gprofng-gui/gprofng-gui-9999.ebuild
new file mode 100644
index 000000000000..984f2988c01c
--- /dev/null
+++ b/dev-debug/gprofng-gui/gprofng-gui-9999.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2024-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit java-pkg-2 xdg
+
+DESCRIPTION="Full-fledged graphical interface to operate gprofng"
+HOMEPAGE="https://www.gnu.org/software/gprofng-gui/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://git.savannah.gnu.org/git/gprofng-gui.git"
+ inherit autotools git-r3
+else
+ SRC_URI="mirror://gnu/gprofng-gui/${P}.tar.gz"
+ S="${WORKDIR}/${P}"
+
+ KEYWORDS="~amd64"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+
+DEPEND=">=virtual/jdk-1.8:*"
+RDEPEND="
+ sys-devel/binutils:*[gprofng(-)]
+ >=virtual/jre-1.8:*
+"
+
+src_prepare() {
+ default
+
+ mkdir "${WORKDIR}"/build || die
+
+ [[ ${PV} == 9999 ]] && eautoreconf
+
+ java-pkg-2_src_prepare
+}
+
+src_configure() {
+ cd "${WORKDIR}"/build || die
+ ECONF_SOURCE="${S}" econf
+}
+
+src_compile() {
+ emake -C "${WORKDIR}"/build
+}
+
+src_install() {
+ einstalldocs
+ emake -C "${WORKDIR}"/build DESTDIR="${D}" install
+}
diff --git a/dev-debug/gprofng-gui/metadata.xml b/dev-debug/gprofng-gui/metadata.xml
new file mode 100644
index 000000000000..0853793ec926
--- /dev/null
+++ b/dev-debug/gprofng-gui/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>toolchain@gentoo.org</email>
+ <name>Gentoo Toolchain Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/hotspot/Manifest b/dev-debug/hotspot/Manifest
new file mode 100644
index 000000000000..fdd2f6fb1bc0
--- /dev/null
+++ b/dev-debug/hotspot/Manifest
@@ -0,0 +1,4 @@
+DIST PrefixTickLabels-7cd6d5a04cf3747cc9327efdbcbf43620efaa0c1.gh.tar.gz 21553 BLAKE2B c804b6a573db0015fea032c4e1497d19e70a6d1fac85e980a8a9467bb773b583be0e4ffcc92802083760c56541fc17f3f5ed698f34913e49451a064768a4ad7f SHA512 d0f9d5f1e4b597f55d612bdcb9c870f0a490a5c66cb72e10bb1e73278be3f33bfb0a9c4ba0f4dfd3973f030814b594f9225f9d49a190de176961aa7677287d6f
+DIST hotspot-1.6.0.gh.tar.gz 4108062 BLAKE2B fa60d3cee1f2551b97ec7806d0f05de95ba50f533a8528488a3bb6ed026ae2702761d006139bdf300becd9f4846851f5bd2f5935d76054593e5f7a746896df73 SHA512 ddd252ae828dd5086f67b074078eecb3bdff44be9b614eec72b15dbfb0fdab574fadd8d0f32136f1f8f92ed3359ef5194236f3c9bbb3beb0eb93d509ca146a0f
+DIST hotspot-b61451d827dd23e35c5f611e3626226a119dfa48.gh.tar.gz 4103942 BLAKE2B 0ccdc66f1bde032c981d49807a659589ac51023f747afc462a75c27594cc806e67b3ec9525e0236da568c1ecf8f1d4fefcbd539ed5577f9a23850b20a478671b SHA512 e77111fe9213b24aca6070eb21ea1e608dd30472bf72d6433a5e72f2d8e17926bee169aa70820776dbcb966e610fef43f0091db98443e929a2fb1437956f7300
+DIST perfparser-65472541f74da213583535c8bb4fea831e875109.gh.tar.gz 3312538 BLAKE2B d2443e60c93047d7f5714d56ed24e5d3f94ace7cef152a6ea70539f8c0e0eb720297635da122715cd07f7efacbed9010951d368f1fc94142a5ebd130ea39377e SHA512 7ee0ec21dfdc201618921d1878c19c32cafecb268ecf45b513048730d8c34202fd28b531ec938ef13666d7b5dd83b75b68f33a607a6e016fcd8759af980bb223
diff --git a/dev-debug/hotspot/files/hotspot-odr.patch b/dev-debug/hotspot/files/hotspot-odr.patch
new file mode 100644
index 000000000000..75f11ad1b698
--- /dev/null
+++ b/dev-debug/hotspot/files/hotspot-odr.patch
@@ -0,0 +1,234 @@
+--- a/src/models/disassemblymodel.cpp
++++ b/src/models/disassemblymodel.cpp
+@@ -240,7 +240,7 @@ QModelIndex DisassemblyModel::indexForFileLine(const Data::FileLine& fileLine) c
+ return index(bestMatch, 0);
+ }
+
+-void DisassemblyModel::find(const QString& search, Direction direction, int current)
++void DisassemblyModel::find(const QString& search, SearchDirection direction, int current)
+ {
+ auto searchFunc = [&search](const DisassemblyOutput::DisassemblyLine& line) {
+ return line.disassembly.indexOf(search, 0, Qt::CaseInsensitive) != -1;
+--- a/src/models/disassemblymodel.h
++++ b/src/models/disassemblymodel.h
+@@ -20,7 +20,7 @@ class Definition;
+ class Repository;
+ }
+
+-enum class Direction;
++enum class SearchDirection;
+
+ class DisassemblyModel : public QAbstractTableModel
+ {
+@@ -76,7 +76,7 @@ signals:
+
+ public slots:
+ void updateHighlighting(int line);
+- void find(const QString& search, Direction direction, int offset);
++ void find(const QString& search, SearchDirection direction, int offset);
+ void scrollToLine(const QString& lineNumber);
+
+ private:
+--- a/src/models/search.h
++++ b/src/models/search.h
+@@ -10,7 +10,7 @@
+ #include <algorithm>
+ #include <iterator>
+
+-enum class Direction
++enum class SearchDirection
+ {
+ Forward,
+ Backward
+@@ -45,7 +45,7 @@ int search_helper(const it begin, const it end, const it current, SearchFunc sea
+ }
+
+ template<typename it, typename SearchFunc, typename EndReached>
+-int search(const it begin, const it end, int current, Direction direction, SearchFunc searchFunc, EndReached endReached)
++int search(const it begin, const it end, int current, SearchDirection direction, SearchFunc searchFunc, EndReached endReached)
+ {
+ if (begin == end)
+ return -1;
+@@ -54,7 +54,7 @@ int search(const it begin, const it end, int current, Direction direction, Searc
+ current = std::clamp(current, 0, static_cast<int>(size) - 1);
+ const auto currentIt = begin + current;
+
+- if (direction == Direction::Forward) {
++ if (direction == SearchDirection::Forward) {
+ return search_helper(begin, end, std::next(currentIt), searchFunc, endReached);
+ }
+
+--- a/src/models/sourcecodemodel.cpp
++++ b/src/models/sourcecodemodel.cpp
+@@ -258,7 +258,7 @@ void SourceCodeModel::setSysroot(const QString& sysroot)
+ m_sysroot = sysroot;
+ }
+
+-void SourceCodeModel::find(const QString& search, Direction direction, int current)
++void SourceCodeModel::find(const QString& search, SearchDirection direction, int current)
+ {
+ auto searchFunc = [&search](const QString& line) { return line.indexOf(search, 0, Qt::CaseInsensitive) != -1; };
+
+--- a/src/models/sourcecodemodel.h
++++ b/src/models/sourcecodemodel.h
+@@ -20,7 +20,7 @@ class Repository;
+ class Definition;
+ }
+
+-enum class Direction;
++enum class SearchDirection;
+
+ Q_DECLARE_METATYPE(QTextLine)
+
+@@ -73,7 +73,7 @@ public slots:
+ void updateHighlighting(int line);
+ void setSysroot(const QString& sysroot);
+
+- void find(const QString& search, Direction direction, int current);
++ void find(const QString& search, SearchDirection direction, int current);
+ void scrollToLine(const QString& lineNumber);
+
+ private:
+--- a/src/resultsdisassemblypage.cpp
++++ b/src/resultsdisassemblypage.cpp
+@@ -407,12 +407,12 @@ ResultsDisassemblyPage::ResultsDisassemblyPage(CostContextMenu* costContextMenu,
+
+ auto searchNext = [model, edit, additionalRows, searchResultIndex] {
+ const auto offset = searchResultIndex->isValid() ? searchResultIndex->row() - additionalRows : 0;
+- model->find(edit->text(), Direction::Forward, offset);
++ model->find(edit->text(), SearchDirection::Forward, offset);
+ };
+
+ auto searchPrev = [model, edit, additionalRows, searchResultIndex] {
+ const auto offset = searchResultIndex->isValid() ? searchResultIndex->row() - additionalRows : 0;
+- model->find(edit->text(), Direction::Backward, offset);
++ model->find(edit->text(), SearchDirection::Backward, offset);
+ };
+
+ auto findNextAction = KStandardAction::findNext(this, searchNext, actions);
+--- a/tests/modeltests/tst_models.cpp
++++ b/tests/modeltests/tst_models.cpp
+@@ -514,7 +514,7 @@ private slots:
+ // check if search works in general
+ QSignalSpy searchSpy(&model, &SourceCodeModel::resultFound);
+ for (int i = 0; i < 5; i++) {
+- model.find(QStringLiteral("Line 5"), Direction::Forward, i);
++ model.find(QStringLiteral("Line 5"), SearchDirection::Forward, i);
+ auto result = searchSpy.takeFirst();
+ QCOMPARE(result.at(0).value<QModelIndex>(), model.index(3, SourceCodeModel::SourceCodeColumn));
+ }
+@@ -522,21 +522,21 @@ private slots:
+ // Check wrap around
+ for (int i = 1; i < 4; i++) {
+ QSignalSpy endReached(&model, &SourceCodeModel::searchEndReached);
+- model.find(QStringLiteral("Line 3"), Direction::Forward, i);
++ model.find(QStringLiteral("Line 3"), SearchDirection::Forward, i);
+ QCOMPARE(endReached.size(), 1);
+ }
+
+ // check if no result found works
+ searchSpy.clear();
+ for (int i = 0; i < 5; i++) {
+- model.find(QStringLiteral("Line 8"), Direction::Forward, i);
++ model.find(QStringLiteral("Line 8"), SearchDirection::Forward, i);
+ auto result = searchSpy.takeFirst();
+ QCOMPARE(result.at(0).value<QModelIndex>().isValid(), false);
+ }
+
+ // test backward search
+ for (int i = 4; i > 0; i--) {
+- model.find(QStringLiteral("Line 7"), Direction::Backward, i);
++ model.find(QStringLiteral("Line 7"), SearchDirection::Backward, i);
+ auto result = searchSpy.takeFirst();
+ QCOMPARE(result.at(0).value<QModelIndex>(), model.index(5, SourceCodeModel::SourceCodeColumn));
+ }
+@@ -544,14 +544,14 @@ private slots:
+ // Check wrap around
+ for (int i = 4; i > 0; i--) {
+ QSignalSpy endReached(&model, &SourceCodeModel::searchEndReached);
+- model.find(QStringLiteral("Line 7"), Direction::Backward, i);
++ model.find(QStringLiteral("Line 7"), SearchDirection::Backward, i);
+ QCOMPARE(endReached.size(), 1);
+ }
+
+ // check if no result found works
+ searchSpy.clear();
+ for (int i = 0; i < 5; i++) {
+- model.find(QStringLiteral("Line 8"), Direction::Backward, i);
++ model.find(QStringLiteral("Line 8"), SearchDirection::Backward, i);
+ auto result = searchSpy.takeFirst();
+ QCOMPARE(result.at(0).value<QModelIndex>().isValid(), false);
+ }
+--- a/tests/modeltests/tst_search.cpp
++++ b/tests/modeltests/tst_search.cpp
+@@ -24,9 +24,9 @@ private slots:
+ const std::array<int, 0> testArray = {};
+
+ QCOMPARE(
+- search(testArray.cbegin(), testArray.cend(), 0, Direction::Forward, [](int) { return false; }, [] {}), -1);
++ search(testArray.cbegin(), testArray.cend(), 0, SearchDirection::Forward, [](int) { return false; }, [] {}), -1);
+ QCOMPARE(
+- search(testArray.cbegin(), testArray.cend(), 0, Direction::Backward, [](int) { return false; }, [] {}), -1);
++ search(testArray.cbegin(), testArray.cend(), 0, SearchDirection::Backward, [](int) { return false; }, [] {}), -1);
+ }
+ void testSearch()
+ {
+@@ -35,11 +35,11 @@ private slots:
+ int maxOffset = testArray.size() - 1;
+ for (int offset = 0; offset < maxOffset; offset++) {
+ QCOMPARE(search(
+- testArray.cbegin(), testArray.cend(), offset, Direction::Forward,
++ testArray.cbegin(), testArray.cend(), offset, SearchDirection::Forward,
+ [](int num) { return num == 2; }, [] {}),
+ 1);
+ QCOMPARE(search(
+- testArray.cbegin(), testArray.cend(), offset, Direction::Backward,
++ testArray.cbegin(), testArray.cend(), offset, SearchDirection::Backward,
+ [](int num) { return num == 2; }, [] {}),
+ 1);
+ }
+@@ -51,7 +51,7 @@ private slots:
+ {
+ bool endReached = false;
+ QCOMPARE(search(
+- testArray.cbegin(), testArray.cend(), 1, Direction::Forward, [](int i) { return i == 1; },
++ testArray.cbegin(), testArray.cend(), 1, SearchDirection::Forward, [](int i) { return i == 1; },
+ [&endReached] { endReached = true; }),
+ 0);
+ QCOMPARE(endReached, true);
+@@ -60,7 +60,7 @@ private slots:
+ {
+ bool endReached = false;
+ QCOMPARE(search(
+- testArray.cbegin(), testArray.cend(), 1, Direction::Backward, [](int i) { return i == 4; },
++ testArray.cbegin(), testArray.cend(), 1, SearchDirection::Backward, [](int i) { return i == 4; },
+ [&endReached] { endReached = true; }),
+ 3);
+ QCOMPARE(endReached, true);
+@@ -73,7 +73,7 @@ private slots:
+
+ for (int i = 0; i < 2; i++) {
+ QCOMPARE(search(
+- testArray.cbegin(), testArray.cend(), 0, Direction::Forward, [](int) { return true; }, [] {}),
++ testArray.cbegin(), testArray.cend(), 0, SearchDirection::Forward, [](int) { return true; }, [] {}),
+ -1);
+ }
+ }
+@@ -83,7 +83,7 @@ private slots:
+ const std::array<int, 1> testArray = {0};
+
+ QCOMPARE(search(
+- testArray.cbegin(), testArray.cend(), 1, Direction::Forward, [](int i) { return i == 0; }, [] {}),
++ testArray.cbegin(), testArray.cend(), 1, SearchDirection::Forward, [](int i) { return i == 0; }, [] {}),
+ 0);
+ }
+
+@@ -93,7 +93,7 @@ private slots:
+
+ for (std::size_t i = 0; i < testArray.size(); i++) {
+ QCOMPARE(search(
+- testArray.cbegin() + 1, testArray.cbegin() + 3, i, Direction::Forward,
++ testArray.cbegin() + 1, testArray.cbegin() + 3, i, SearchDirection::Forward,
+ [](int i) { return i == 0; }, [] {}),
+ -1);
+ }
diff --git a/dev-debug/hotspot/hotspot-1.5.1_p20250907-r1.ebuild b/dev-debug/hotspot/hotspot-1.5.1_p20250907-r1.ebuild
new file mode 100644
index 000000000000..b5ff51ae0faa
--- /dev/null
+++ b/dev-debug/hotspot/hotspot-1.5.1_p20250907-r1.ebuild
@@ -0,0 +1,126 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+QTMIN=6.8.1
+KFMIN=6.18.0
+
+inherit ecm xdg
+
+DESCRIPTION="Linux perf GUI for performance analysis"
+HOMEPAGE="https://github.com/KDAB/hotspot"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/KDAB/hotspot"
+ inherit git-r3
+elif [[ ${PV} == *_p* ]] ; then
+ HOTSPOT_COMMIT="b61451d827dd23e35c5f611e3626226a119dfa48"
+ PERFPARSER_COMMIT="65472541f74da213583535c8bb4fea831e875109"
+ PREFIXTICKLABELS_COMMIT="7cd6d5a04cf3747cc9327efdbcbf43620efaa0c1"
+ SRC_URI="
+ https://github.com/KDAB/hotspot/archive/${HOTSPOT_COMMIT}.tar.gz
+ -> ${PN}-${HOTSPOT_COMMIT}.gh.tar.gz
+ https://github.com/KDAB/perfparser/archive/${PERFPARSER_COMMIT}.tar.gz
+ -> perfparser-${PERFPARSER_COMMIT}.gh.tar.gz
+ https://github.com/koenpoppe/PrefixTickLabels/archive/${PREFIXTICKLABELS_COMMIT}.tar.gz
+ -> PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz
+ "
+ S="${WORKDIR}"/${PN}-${HOTSPOT_COMMIT}
+else
+ SRC_URI="
+ https://github.com/KDAB/hotspot/releases/download/v${PV}/${PN}-v${PV}.tar.gz
+ https://github.com/KDAB/hotspot/releases/download/v${PV}/${PN}-perfparser-v${PV}.tar.gz
+ -> ${PN}-v${PV}-perfparser.tar.gz
+ https://github.com/KDAB/hotspot/releases/download/v${PV}/${PN}-PrefixTickLabels-v${PV}.tar.gz
+ -> ${PN}-v${PV}-PrefixTickLabels.tar.gz
+ "
+ S="${WORKDIR}"/${PN}
+fi
+
+# hotspot itself is GPL-2 or GPL-3
+# bundled perfparser is GPL-3
+# bundled PrefixTickLabels is GPL-3
+LICENSE="|| ( GPL-2 GPL-3 ) GPL-3"
+SLOT="0"
+IUSE="debuginfod"
+if [[ ${PV} != 9999 ]] ; then
+ KEYWORDS="~amd64"
+fi
+
+DEPEND="
+ app-arch/zstd:=
+ dev-libs/elfutils[debuginfod?]
+ dev-libs/qcustomplot
+ >=dev-qt/qtbase-${QTMIN}:6=[network,widgets]
+ >=dev-qt/qtsvg-${QTMIN}:6
+ gui-libs/kddockwidgets:=
+ >=kde-frameworks/karchive-${KFMIN}:6
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/ki18n-${KFMIN}:6
+ >=kde-frameworks/kiconthemes-${KFMIN}:6
+ >=kde-frameworks/kio-${KFMIN}:6
+ >=kde-frameworks/kitemviews-${KFMIN}:6
+ >=kde-frameworks/kitemmodels-${KFMIN}:6
+ >=kde-frameworks/knotifications-${KFMIN}:6
+ >=kde-frameworks/kparts-${KFMIN}:6
+ >=kde-frameworks/kwindowsystem-${KFMIN}:6
+ >=kde-frameworks/solid-${KFMIN}:6
+ >=kde-frameworks/syntax-highlighting-${KFMIN}:6
+ >=kde-frameworks/threadweaver-${KFMIN}:6
+ media-gfx/kgraphviewer
+ sys-devel/gettext
+"
+RDEPEND="
+ ${DEPEND}
+ dev-util/perf
+ sys-devel/binutils:*
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-odr.patch
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif [[ ${PV} == *_p* ]] ; then
+ unpack ${PN}-${HOTSPOT_COMMIT}.gh.tar.gz
+ tar -xf "${DISTDIR}"/perfparser-${PERFPARSER_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/perfparser || die
+ tar -xf "${DISTDIR}"/PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/PrefixTickLabels || die
+ else
+ unpack ${PN}-v${PV}.tar.gz
+ tar -xf "${DISTDIR}"/${PN}-v${PV}-perfparser.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/perfparser || die
+ tar -xf "${DISTDIR}"/${PN}-v${PV}-PrefixTickLabels.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/PrefixTickLabels || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DQT6_BUILD=true
+ )
+
+ if ! use debuginfod; then
+ mycmakeargs+=(
+ -DHAVE_DWFL_GET_DEBUGINFOD_CLIENT_SYMBOL="no"
+ -DHAVE_DEBUGINFOD_SET_USER_DATA="no"
+ )
+ fi
+
+ ecm_src_configure
+}
+
+src_test() {
+ CMAKE_SKIP_TESTS=(
+ # Complains about {d,rustc}_demangle missing, but may fail
+ # for other reasons too.
+ tst_perfparser
+ )
+
+ ecm_src_test
+}
diff --git a/dev-debug/hotspot/hotspot-1.6.0.ebuild b/dev-debug/hotspot/hotspot-1.6.0.ebuild
new file mode 100644
index 000000000000..41d986efdb47
--- /dev/null
+++ b/dev-debug/hotspot/hotspot-1.6.0.ebuild
@@ -0,0 +1,127 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+QTMIN=6.8.1
+KFMIN=6.18.0
+
+inherit ecm xdg
+
+DESCRIPTION="Linux perf GUI for performance analysis"
+HOMEPAGE="https://github.com/KDAB/hotspot"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/KDAB/hotspot"
+ inherit git-r3
+elif [[ ${PV} == *_p* ]] ; then
+ HOTSPOT_COMMIT="b61451d827dd23e35c5f611e3626226a119dfa48"
+ PERFPARSER_COMMIT="65472541f74da213583535c8bb4fea831e875109"
+ PREFIXTICKLABELS_COMMIT="7cd6d5a04cf3747cc9327efdbcbf43620efaa0c1"
+ SRC_URI="
+ https://github.com/KDAB/hotspot/archive/${HOTSPOT_COMMIT}.tar.gz
+ -> ${PN}-${HOTSPOT_COMMIT}.gh.tar.gz
+ https://github.com/KDAB/perfparser/archive/${PERFPARSER_COMMIT}.tar.gz
+ -> perfparser-${PERFPARSER_COMMIT}.gh.tar.gz
+ https://github.com/koenpoppe/PrefixTickLabels/archive/${PREFIXTICKLABELS_COMMIT}.tar.gz
+ -> PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz
+ "
+ S="${WORKDIR}"/${PN}-${HOTSPOT_COMMIT}
+else
+ PERFPARSER_COMMIT="65472541f74da213583535c8bb4fea831e875109"
+ PREFIXTICKLABELS_COMMIT="7cd6d5a04cf3747cc9327efdbcbf43620efaa0c1"
+ SRC_URI="
+ https://github.com/KDAB/hotspot/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz
+ https://github.com/KDAB/perfparser/archive/${PERFPARSER_COMMIT}.tar.gz
+ -> perfparser-${PERFPARSER_COMMIT}.gh.tar.gz
+ https://github.com/koenpoppe/PrefixTickLabels/archive/${PREFIXTICKLABELS_COMMIT}.tar.gz
+ -> PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz
+ "
+fi
+
+# hotspot itself is GPL-2 or GPL-3
+# bundled perfparser is GPL-3
+# bundled PrefixTickLabels is GPL-3
+LICENSE="|| ( GPL-2 GPL-3 ) GPL-3"
+SLOT="0"
+IUSE="debuginfod"
+if [[ ${PV} != 9999 ]] ; then
+ KEYWORDS="~amd64"
+fi
+
+DEPEND="
+ app-arch/zstd:=
+ dev-libs/elfutils[debuginfod?]
+ dev-libs/qcustomplot
+ >=dev-qt/qtbase-${QTMIN}:6=[network,widgets]
+ >=dev-qt/qtsvg-${QTMIN}:6
+ gui-libs/kddockwidgets:=
+ >=kde-frameworks/karchive-${KFMIN}:6
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/ki18n-${KFMIN}:6
+ >=kde-frameworks/kiconthemes-${KFMIN}:6
+ >=kde-frameworks/kio-${KFMIN}:6
+ >=kde-frameworks/kitemviews-${KFMIN}:6
+ >=kde-frameworks/kitemmodels-${KFMIN}:6
+ >=kde-frameworks/knotifications-${KFMIN}:6
+ >=kde-frameworks/kparts-${KFMIN}:6
+ >=kde-frameworks/kwindowsystem-${KFMIN}:6
+ >=kde-frameworks/solid-${KFMIN}:6
+ >=kde-frameworks/syntax-highlighting-${KFMIN}:6
+ >=kde-frameworks/threadweaver-${KFMIN}:6
+ media-gfx/kgraphviewer
+ sys-devel/gettext
+"
+RDEPEND="
+ ${DEPEND}
+ dev-util/perf
+ sys-devel/binutils:*
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-odr.patch
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif [[ ${PV} == *_p* ]] ; then
+ unpack ${PN}-${HOTSPOT_COMMIT}.gh.tar.gz
+ tar -xf "${DISTDIR}"/perfparser-${PERFPARSER_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/perfparser || die
+ tar -xf "${DISTDIR}"/PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/PrefixTickLabels || die
+ else
+ unpack ${P}.gh.tar.gz
+ tar -xf "${DISTDIR}"/perfparser-${PERFPARSER_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/perfparser || die
+ tar -xf "${DISTDIR}"/PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/PrefixTickLabels || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DQT6_BUILD=true
+ )
+
+ if ! use debuginfod; then
+ mycmakeargs+=(
+ -DHAVE_DWFL_GET_DEBUGINFOD_CLIENT_SYMBOL="no"
+ -DHAVE_DEBUGINFOD_SET_USER_DATA="no"
+ )
+ fi
+
+ ecm_src_configure
+}
+
+src_test() {
+ CMAKE_SKIP_TESTS=(
+ # Complains about {d,rustc}_demangle missing, but may fail
+ # for other reasons too.
+ tst_perfparser
+ )
+
+ ecm_src_test
+}
diff --git a/dev-debug/hotspot/hotspot-9999.ebuild b/dev-debug/hotspot/hotspot-9999.ebuild
new file mode 100644
index 000000000000..41d986efdb47
--- /dev/null
+++ b/dev-debug/hotspot/hotspot-9999.ebuild
@@ -0,0 +1,127 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+QTMIN=6.8.1
+KFMIN=6.18.0
+
+inherit ecm xdg
+
+DESCRIPTION="Linux perf GUI for performance analysis"
+HOMEPAGE="https://github.com/KDAB/hotspot"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/KDAB/hotspot"
+ inherit git-r3
+elif [[ ${PV} == *_p* ]] ; then
+ HOTSPOT_COMMIT="b61451d827dd23e35c5f611e3626226a119dfa48"
+ PERFPARSER_COMMIT="65472541f74da213583535c8bb4fea831e875109"
+ PREFIXTICKLABELS_COMMIT="7cd6d5a04cf3747cc9327efdbcbf43620efaa0c1"
+ SRC_URI="
+ https://github.com/KDAB/hotspot/archive/${HOTSPOT_COMMIT}.tar.gz
+ -> ${PN}-${HOTSPOT_COMMIT}.gh.tar.gz
+ https://github.com/KDAB/perfparser/archive/${PERFPARSER_COMMIT}.tar.gz
+ -> perfparser-${PERFPARSER_COMMIT}.gh.tar.gz
+ https://github.com/koenpoppe/PrefixTickLabels/archive/${PREFIXTICKLABELS_COMMIT}.tar.gz
+ -> PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz
+ "
+ S="${WORKDIR}"/${PN}-${HOTSPOT_COMMIT}
+else
+ PERFPARSER_COMMIT="65472541f74da213583535c8bb4fea831e875109"
+ PREFIXTICKLABELS_COMMIT="7cd6d5a04cf3747cc9327efdbcbf43620efaa0c1"
+ SRC_URI="
+ https://github.com/KDAB/hotspot/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz
+ https://github.com/KDAB/perfparser/archive/${PERFPARSER_COMMIT}.tar.gz
+ -> perfparser-${PERFPARSER_COMMIT}.gh.tar.gz
+ https://github.com/koenpoppe/PrefixTickLabels/archive/${PREFIXTICKLABELS_COMMIT}.tar.gz
+ -> PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz
+ "
+fi
+
+# hotspot itself is GPL-2 or GPL-3
+# bundled perfparser is GPL-3
+# bundled PrefixTickLabels is GPL-3
+LICENSE="|| ( GPL-2 GPL-3 ) GPL-3"
+SLOT="0"
+IUSE="debuginfod"
+if [[ ${PV} != 9999 ]] ; then
+ KEYWORDS="~amd64"
+fi
+
+DEPEND="
+ app-arch/zstd:=
+ dev-libs/elfutils[debuginfod?]
+ dev-libs/qcustomplot
+ >=dev-qt/qtbase-${QTMIN}:6=[network,widgets]
+ >=dev-qt/qtsvg-${QTMIN}:6
+ gui-libs/kddockwidgets:=
+ >=kde-frameworks/karchive-${KFMIN}:6
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/ki18n-${KFMIN}:6
+ >=kde-frameworks/kiconthemes-${KFMIN}:6
+ >=kde-frameworks/kio-${KFMIN}:6
+ >=kde-frameworks/kitemviews-${KFMIN}:6
+ >=kde-frameworks/kitemmodels-${KFMIN}:6
+ >=kde-frameworks/knotifications-${KFMIN}:6
+ >=kde-frameworks/kparts-${KFMIN}:6
+ >=kde-frameworks/kwindowsystem-${KFMIN}:6
+ >=kde-frameworks/solid-${KFMIN}:6
+ >=kde-frameworks/syntax-highlighting-${KFMIN}:6
+ >=kde-frameworks/threadweaver-${KFMIN}:6
+ media-gfx/kgraphviewer
+ sys-devel/gettext
+"
+RDEPEND="
+ ${DEPEND}
+ dev-util/perf
+ sys-devel/binutils:*
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-odr.patch
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif [[ ${PV} == *_p* ]] ; then
+ unpack ${PN}-${HOTSPOT_COMMIT}.gh.tar.gz
+ tar -xf "${DISTDIR}"/perfparser-${PERFPARSER_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/perfparser || die
+ tar -xf "${DISTDIR}"/PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/PrefixTickLabels || die
+ else
+ unpack ${P}.gh.tar.gz
+ tar -xf "${DISTDIR}"/perfparser-${PERFPARSER_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/perfparser || die
+ tar -xf "${DISTDIR}"/PrefixTickLabels-${PREFIXTICKLABELS_COMMIT}.gh.tar.gz --strip-components=1 \
+ -C "${S}"/3rdparty/PrefixTickLabels || die
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DQT6_BUILD=true
+ )
+
+ if ! use debuginfod; then
+ mycmakeargs+=(
+ -DHAVE_DWFL_GET_DEBUGINFOD_CLIENT_SYMBOL="no"
+ -DHAVE_DEBUGINFOD_SET_USER_DATA="no"
+ )
+ fi
+
+ ecm_src_configure
+}
+
+src_test() {
+ CMAKE_SKIP_TESTS=(
+ # Complains about {d,rustc}_demangle missing, but may fail
+ # for other reasons too.
+ tst_perfparser
+ )
+
+ ecm_src_test
+}
diff --git a/dev-debug/hotspot/metadata.xml b/dev-debug/hotspot/metadata.xml
new file mode 100644
index 000000000000..f8814792a86f
--- /dev/null
+++ b/dev-debug/hotspot/metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <use>
+ <flag name="debuginfod">Enable debuginfod support via <pkg>dev-libs/elfutils</pkg> libdebuginfod</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/kdbg/Manifest b/dev-debug/kdbg/Manifest
new file mode 100644
index 000000000000..656196b14f1f
--- /dev/null
+++ b/dev-debug/kdbg/Manifest
@@ -0,0 +1,3 @@
+DIST kdbg-3.1.0_p20250406-patchset.tar.xz 3812 BLAKE2B bbdc08408b9ff123dcd3e283f8862e541031646e4a303dbe0c311571282ddf6a7d580fb68637def3685d779f598c7ea2b4f5b280963629bd964c0ae408e0ddd6 SHA512 6cce46cb257cedb31c13fa556ec6c5ca0ba558ac1fb21e29be99996011c8077e3563bb39e0895c84c66e3246d871a51a6cdc3157c9cda9f06569090add3e53be
+DIST kdbg-3.1.0_p20250406.tar.gz 454669 BLAKE2B c4aafba0df4841d972dc3c48d8ac0cfaa4ea9dd4a689105fb4f93ed82595b0a058d798b42243ac9475125855fa2130587ba0e2dd9f5cf9c40c699b85f6bdb9d6 SHA512 57bb250251c43e83fc1897c3798cb8ae740e2b549014cdc54d44fb9775bff7ab786acfddfc5b0f159b9d22c39b84793236fbf6db712c00df8f8938b196a56454
+DIST kdbg-3.2.0.gh.tar.gz 439388 BLAKE2B 6d43397806a275f259cfa12cedd34b9c280ab0b5c1b44e62ac69cc32684ad308b0de1823c6fbae7a8ba8706078093c00e9d7151b822acce92ae0497b4d0bb708 SHA512 ef86103bb52721ab3e35a8de99a24987f68bbae8f0b714e6c6274124ad6d9b17e61e81ed0f13589516b33796d43a0c4209eac2cd0a8eb89a71eeb1f1d3a61a41
diff --git a/dev-debug/kdbg/kdbg-3.1.0_p20250406-r1.ebuild b/dev-debug/kdbg/kdbg-3.1.0_p20250406-r1.ebuild
new file mode 100644
index 000000000000..7a00440c5b6c
--- /dev/null
+++ b/dev-debug/kdbg/kdbg-3.1.0_p20250406-r1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+COMMIT="78450aec94de5c2c5e07f9a448f454ebe39e4fc0"
+PATCHSET="${P}-patchset.tar.xz"
+ECM_HANDBOOK="true"
+KFMIN=6.9.0
+QTMIN=6.8.1
+inherit ecm xdg
+
+DESCRIPTION="Graphical debugger interface"
+HOMEPAGE="https://www.kdbg.org/"
+SRC_URI="https://github.com/j6t/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz
+ https://dev.gentoo.org/~asturm/distfiles/${PATCHSET}"
+S="${WORKDIR}/${PN}-${COMMIT}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+
+DEPEND="
+ >=dev-qt/qt5compat-${QTMIN}:6
+ >=dev-qt/qtbase-${QTMIN}:6[gui,widgets]
+ >=kde-frameworks/kconfig-${KFMIN}:6
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/ki18n-${KFMIN}:6
+ >=kde-frameworks/kiconthemes-${KFMIN}:6
+ >=kde-frameworks/kwidgetsaddons-${KFMIN}:6
+ >=kde-frameworks/kwindowsystem-${KFMIN}:6[X]
+ >=kde-frameworks/kxmlgui-${KFMIN}:6
+"
+RDEPEND="${DEPEND}
+ !${CATEGORY}/${PN}:5
+ dev-debug/gdb
+"
+
+# Patchset containing queued up upstream MRs, in order:
+# https://github.com/j6t/kdbg/pull/48 (only partially picked)
+# https://github.com/j6t/kdbg/commit/2e5de789 (Switch to KX11Extras)
+# https://github.com/j6t/kdbg/pull/49 (Cast to QChar)
+# https://github.com/j6t/kdbg/pull/50
+PATCHES=( "${WORKDIR}"/${PATCHSET/.tar.xz/} )
+
+src_prepare() {
+ ecm_src_prepare
+ # TODO: raising ECM leads to many more deprecations erroring out:
+ sed -e "/^find_package(ECM/ s/\${KF_MIN_VERSION} //" -i CMakeLists.txt || die
+ if ! use handbook; then
+ cmake_run_in kdbg cmake_comment_add_subdirectory doc
+ fi
+}
diff --git a/dev-debug/kdbg/kdbg-3.1.0_p20250406.ebuild b/dev-debug/kdbg/kdbg-3.1.0_p20250406.ebuild
new file mode 100644
index 000000000000..74303154d897
--- /dev/null
+++ b/dev-debug/kdbg/kdbg-3.1.0_p20250406.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+COMMIT="78450aec94de5c2c5e07f9a448f454ebe39e4fc0"
+PATCHSET="${P}-patchset.tar.xz"
+ECM_HANDBOOK="true"
+KFMIN=6.9.0
+QTMIN=6.8.1
+inherit ecm xdg
+
+DESCRIPTION="Graphical debugger interface"
+HOMEPAGE="https://www.kdbg.org/"
+SRC_URI="https://github.com/j6t/${PN}/archive/${COMMIT}.tar.gz -> ${P}.tar.gz
+ https://dev.gentoo.org/~asturm/distfiles/${PATCHSET}"
+S="${WORKDIR}/${PN}-${COMMIT}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+
+DEPEND="
+ >=dev-qt/qtbase-${QTMIN}:6[gui,widgets]
+ >=kde-frameworks/kconfig-${KFMIN}:6
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/ki18n-${KFMIN}:6
+ >=kde-frameworks/kiconthemes-${KFMIN}:6
+ >=kde-frameworks/kwidgetsaddons-${KFMIN}:6
+ >=kde-frameworks/kwindowsystem-${KFMIN}:6[X]
+ >=kde-frameworks/kxmlgui-${KFMIN}:6
+"
+RDEPEND="${DEPEND}
+ !${CATEGORY}/${PN}:5
+ dev-debug/gdb
+"
+
+# Patchset containing queued up upstream MRs, in order:
+# https://github.com/j6t/kdbg/pull/48 (only partially picked)
+# https://github.com/j6t/kdbg/commit/2e5de789 (Switch to KX11Extras)
+# https://github.com/j6t/kdbg/pull/49 (Cast to QChar)
+# https://github.com/j6t/kdbg/pull/50
+PATCHES=( "${WORKDIR}"/${PATCHSET/.tar.xz/} )
+
+src_prepare() {
+ ecm_src_prepare
+ # TODO: raising ECM leads to many more deprecations erroring out:
+ sed -e "/^find_package(ECM/ s/\${KF_MIN_VERSION} //" -i CMakeLists.txt || die
+ if ! use handbook; then
+ cmake_run_in kdbg cmake_comment_add_subdirectory doc
+ fi
+}
diff --git a/dev-debug/kdbg/kdbg-3.2.0.ebuild b/dev-debug/kdbg/kdbg-3.2.0.ebuild
new file mode 100644
index 000000000000..08c1a4cdbd42
--- /dev/null
+++ b/dev-debug/kdbg/kdbg-3.2.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="true"
+KFMIN=6.9.0
+QTMIN=6.8.1
+inherit ecm xdg
+
+DESCRIPTION="Graphical debugger interface"
+HOMEPAGE="https://www.kdbg.org/"
+SRC_URI="https://github.com/j6t/${PN}/archive/refs/tags/${P}.tar.gz -> ${P}.gh.tar.gz"
+S="${WORKDIR}/${PN}-${P}"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~riscv ~x86"
+
+DEPEND="
+ >=dev-qt/qt5compat-${QTMIN}:6
+ >=dev-qt/qtbase-${QTMIN}:6[gui,widgets]
+ >=kde-frameworks/kconfig-${KFMIN}:6
+ >=kde-frameworks/kconfigwidgets-${KFMIN}:6
+ >=kde-frameworks/kcoreaddons-${KFMIN}:6
+ >=kde-frameworks/ki18n-${KFMIN}:6
+ >=kde-frameworks/kiconthemes-${KFMIN}:6
+ >=kde-frameworks/kwidgetsaddons-${KFMIN}:6
+ >=kde-frameworks/kwindowsystem-${KFMIN}:6[X]
+ >=kde-frameworks/kxmlgui-${KFMIN}:6
+"
+RDEPEND="${DEPEND}
+ !${CATEGORY}/${PN}:5
+ dev-debug/gdb
+"
+
+src_prepare() {
+ ecm_src_prepare
+ if ! use handbook; then
+ cmake_run_in kdbg cmake_comment_add_subdirectory doc
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DBUILD_FOR_KDE_VERSION=6
+ )
+ ecm_src_configure
+}
diff --git a/dev-debug/kdbg/metadata.xml b/dev-debug/kdbg/metadata.xml
new file mode 100644
index 000000000000..02ffb2bf11fe
--- /dev/null
+++ b/dev-debug/kdbg/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>kde@gentoo.org</email>
+ <name>Gentoo KDE Project</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/leaktracer/Manifest b/dev-debug/leaktracer/Manifest
new file mode 100644
index 000000000000..f48add3e2c81
--- /dev/null
+++ b/dev-debug/leaktracer/Manifest
@@ -0,0 +1 @@
+DIST leaktracer-2.4-gentoo_p2.tbz2 11957 BLAKE2B 0af20e7a43c88a16027e859779924ef3fc86af5fb8324a96721f190db4ef59d78681ea4b91ef9843ed467541c9ca3a9b1618339174fdc1901a13b5221acc5479 SHA512 12f348564933c8cf372208f846bb21b175f041e7687811e9c6ce8062e7f285b9d2395e7853a20df11d9b0d5b8fff89efc76ccbac9f8b7c0bc4fd4ea25d476718
diff --git a/dev-debug/leaktracer/leaktracer-2.4-r3.ebuild b/dev-debug/leaktracer/leaktracer-2.4-r3.ebuild
new file mode 100644
index 000000000000..e0ba6140a682
--- /dev/null
+++ b/dev-debug/leaktracer/leaktracer-2.4-r3.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit toolchain-funcs
+
+# Upstream-package has no version in it's name.
+# We therefore repackage it directly, together with the patches.
+PATCH_LEVEL="2"
+
+DESCRIPTION="Trace and analyze memory leaks in C++ programs"
+HOMEPAGE="https://andreasen.org/LeakTracer/"
+SRC_URI="mirror://gentoo/${P}-gentoo_p${PATCH_LEVEL}.tbz2"
+
+LICENSE="public-domain"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+
+DEPEND="dev-lang/perl
+ dev-debug/gdb"
+RDEPEND="${DEPEND}"
+
+# leaktracer is being realized using LD_PRELOAD and segfaults
+# when being run in the sandbox and the library is _not_ in
+# /usr/$(get_libdir) which is not possible before installation
+RESTRICT="test"
+
+src_prepare() {
+ eapply -p1 "${WORKDIR}/patches/01_all_gcc-cflags.patch"
+ eapply -p0 "${WORKDIR}/patches/05_all_libdir.patch"
+ eapply -p1 "${WORKDIR}/patches/15_all_printf.patch"
+
+ sed -i \
+ -e "s|%LIBDIR%|$(get_libdir)|" \
+ LeakCheck || die "sed for setting lib path failed"
+
+ eapply_user
+}
+
+src_compile() {
+ emake CXX="$(tc-getCXX)"
+}
+
+src_install() {
+ dobin LeakCheck leak-analyze
+ dolib.so LeakTracer.so
+ dodoc README test.cc
+ docinto html
+ dodoc README.html
+}
+
+pkg_postinst() {
+ elog "To use LeakTracer, run LeakCheck my_prog and then leak-analyze my_prog leak.out"
+ elog "Please refer to README file for more info."
+}
diff --git a/dev-debug/leaktracer/metadata.xml b/dev-debug/leaktracer/metadata.xml
new file mode 100644
index 000000000000..5f33304011d5
--- /dev/null
+++ b/dev-debug/leaktracer/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/lldb-mi/Manifest b/dev-debug/lldb-mi/Manifest
new file mode 100644
index 000000000000..aad3f02c3a69
--- /dev/null
+++ b/dev-debug/lldb-mi/Manifest
@@ -0,0 +1 @@
+DIST lldb-mi-0.0.1.tar.gz 190715 BLAKE2B c658f8a6943d0cc165dbdc5f4acb38081d0b1fc4a213795cb948a934be6558ad3dfb38a1d20611b60d9396aba23337f665839615c26a5029ddf48c977a12add8 SHA512 33488d254cd294f7f565f2c571ed399d63189f26f1d0567bf3a0a8a44bbb20a9e0690b190d3409a8678ecf237e33ff4dacd1c80ea671a3931b50ab91d690b147
diff --git a/dev-debug/lldb-mi/files/lldb-mi-0.0.1-find_packages_GTest.patch b/dev-debug/lldb-mi/files/lldb-mi-0.0.1-find_packages_GTest.patch
new file mode 100644
index 000000000000..7d18c7f71220
--- /dev/null
+++ b/dev-debug/lldb-mi/files/lldb-mi-0.0.1-find_packages_GTest.patch
@@ -0,0 +1,40 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+Subject: [PATCH] CMake: use system gtest instead of fetching it
+
+diff --git a/test/unittests/CMakeLists.txt b/test/unittests/CMakeLists.txt
+index 4d07cdb..976b8e5 100644
+--- a/test/unittests/CMakeLists.txt
++++ b/test/unittests/CMakeLists.txt
+@@ -1,10 +1,7 @@
+ cmake_minimum_required(VERSION 3.11)
+
+-include(FetchContent)
+-FetchContent_Declare(gtest
+- QUIET
+- URL https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip
+-)
++enable_testing()
++find_package(GTest REQUIRED)
+
+ # Prevent overriding the parent project's linker settings, for Windows.
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+@@ -15,10 +12,6 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ add_compile_options("-Wno-error=covered-switch-default")
+ endif()
+
+-FetchContent_MakeAvailable(gtest)
+-
+-include(GoogleTest)
+-
+ include_directories(../../src)
+
+ set(UNITTESTS_ROOT ${CMAKE_CURRENT_LIST_DIR})
+@@ -39,7 +32,7 @@ function(add_lldb_mi_test NAME TEST)
+ endforeach(SRC)
+
+ add_executable(${NAME} ${TEST} ${SOURCES_RELATIVE})
+- target_link_libraries(${NAME} gtest_main)
++ target_link_libraries(${NAME} GTest::gtest GTest::gtest_main)
+ set_target_properties(${NAME} PROPERTIES FOLDER "unittests")
+
+ gtest_discover_tests(${NAME})
diff --git a/dev-debug/lldb-mi/lldb-mi-0.0.1.ebuild b/dev-debug/lldb-mi/lldb-mi-0.0.1.ebuild
new file mode 100644
index 000000000000..8a59d6fe7cd5
--- /dev/null
+++ b/dev-debug/lldb-mi/lldb-mi-0.0.1.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {16..23} )
+
+inherit cmake llvm-r2
+
+DESCRIPTION="LLDB Machine Interface Driver"
+HOMEPAGE="https://github.com/lldb-tools/lldb-mi"
+
+if [[ ${PV} = 9999* ]]; then
+ EGIT_REPO_URI="https://github.com/lldb-tools/lldb-mi.git"
+ EGIT_BRANCH="main"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/lldb-tools/lldb-mi/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
+ "
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="Apache-2.0-with-LLVM-exceptions"
+SLOT="0"
+
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ llvm-core/lldb:=
+ $(llvm_gen_dep '
+ llvm-core/llvm:${LLVM_SLOT}
+ ')
+"
+DEPEND="${RDEPEND}
+ test? (
+ dev-cpp/gtest
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.0.1-find_packages_GTest.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ -DINCLUDE_TESTS="$(usex test)"
+ )
+ cmake_src_configure
+}
diff --git a/dev-debug/lldb-mi/lldb-mi-9999.ebuild b/dev-debug/lldb-mi/lldb-mi-9999.ebuild
new file mode 100644
index 000000000000..8a59d6fe7cd5
--- /dev/null
+++ b/dev-debug/lldb-mi/lldb-mi-9999.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2024-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LLVM_COMPAT=( {16..23} )
+
+inherit cmake llvm-r2
+
+DESCRIPTION="LLDB Machine Interface Driver"
+HOMEPAGE="https://github.com/lldb-tools/lldb-mi"
+
+if [[ ${PV} = 9999* ]]; then
+ EGIT_REPO_URI="https://github.com/lldb-tools/lldb-mi.git"
+ EGIT_BRANCH="main"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/lldb-tools/lldb-mi/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz
+ "
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="Apache-2.0-with-LLVM-exceptions"
+SLOT="0"
+
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ llvm-core/lldb:=
+ $(llvm_gen_dep '
+ llvm-core/llvm:${LLVM_SLOT}
+ ')
+"
+DEPEND="${RDEPEND}
+ test? (
+ dev-cpp/gtest
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-0.0.1-find_packages_GTest.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ -DINCLUDE_TESTS="$(usex test)"
+ )
+ cmake_src_configure
+}
diff --git a/dev-debug/lldb-mi/metadata.xml b/dev-debug/lldb-mi/metadata.xml
new file mode 100644
index 000000000000..d77a9a5a9acf
--- /dev/null
+++ b/dev-debug/lldb-mi/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>negril.nx+gentoo@gmail.com</email>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/ltrace/Manifest b/dev-debug/ltrace/Manifest
new file mode 100644
index 000000000000..4ba9c741a472
--- /dev/null
+++ b/dev-debug/ltrace/Manifest
@@ -0,0 +1,2 @@
+DIST ltrace-0.7.91_pre20221216.tar.bz2 288077 BLAKE2B cadc2ac551a96dfa95aee0d0eb251d8f41a8631350ba3be3f67d0cb10774a3db6abbd42481d24febdfcb0d565107e66b4de0056a85a7954bb050adb8e8fa5b4a SHA512 993c247797551b4fbb202c04f9af08063c8641946825b17d1f32c4647c606ece803a6b049c4afa3046c798add161ab58f01d90106f3b6029a223af03bca27a99
+DIST ltrace-0.8.1.tar.bz2 296963 BLAKE2B 4fb938f3511668f836f7f9cd3d3ab88b9e46a749bce9f506609c1ebfced552c71f868272766be7d902c0151eba55061d6aa9f5c88b0f40cf040cc6f4a43d9ce6 SHA512 68fdf10abb3c9534987cb4fcf2531502f8376c56299d56908406ba903fa63af2e0a82c3b902ed0cd47e4985154155a4e9387a11ada066515de26486301dddbaf
diff --git a/dev-debug/ltrace/files/ltrace-0.7.3-CXX-for-tests.patch b/dev-debug/ltrace/files/ltrace-0.7.3-CXX-for-tests.patch
new file mode 100644
index 000000000000..06db36c46818
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.3-CXX-for-tests.patch
@@ -0,0 +1,11 @@
+Testsuite uses CXX to trace mangled symbols.
+--- a/configure.ac
++++ b/configure.ac
+@@ -53,6 +53,7 @@ AC_SUBST(HOST_CPU)
+
+ # Checks for programs.
+ AC_PROG_CC
++AC_PROG_CXX
+ LT_INIT
+ # libtool-2: LT_INIT()
+ AM_INIT_AUTOMAKE([foreign no-exeext dist-bzip2])
diff --git a/dev-debug/ltrace/files/ltrace-0.7.3-alpha-protos.patch b/dev-debug/ltrace/files/ltrace-0.7.3-alpha-protos.patch
new file mode 100644
index 000000000000..7ff573272963
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.3-alpha-protos.patch
@@ -0,0 +1,12 @@
+Fix build failure on alpha:
+ plt.c:32:12: error: dereferencing pointer to incomplete type ‘struct library_symbol’
+ return sym->enter_addr;
+ ^
+--- a/sysdeps/linux-gnu/alpha/plt.c 2012-11-10 13:43:55.000000000 +0100
++++ b/sysdeps/linux-gnu/alpha/plt.c 2016-06-27 23:21:28.000000000 +0200
+@@ -23,0 +24 @@
++#include "library.h"
+--- a/sysdeps/linux-gnu/alpha/trace.c 2016-06-27 23:30:08.000000000 +0200
++++ b/sysdeps/linux-gnu/alpha/trace.c 2016-06-27 23:25:20.000000000 +0200
+@@ -29,0 +30 @@
++#include "backend.h"
diff --git a/dev-debug/ltrace/files/ltrace-0.7.3-ia64-pid_t.patch b/dev-debug/ltrace/files/ltrace-0.7.3-ia64-pid_t.patch
new file mode 100644
index 000000000000..c466ce17e02d
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.3-ia64-pid_t.patch
@@ -0,0 +1,6 @@
+--- a/sysdeps/linux-gnu/ia64/breakpoint.c
++++ b/sysdeps/linux-gnu/ia64/breakpoint.c
+@@ -26,2 +26,3 @@
+ #include <sys/ptrace.h>
++#include <sys/types.h> /* pid_t */
+ #include <string.h>
diff --git a/dev-debug/ltrace/files/ltrace-0.7.3-ia64.patch b/dev-debug/ltrace/files/ltrace-0.7.3-ia64.patch
new file mode 100644
index 000000000000..4fb1c4eba734
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.3-ia64.patch
@@ -0,0 +1,39 @@
+Fix build fauilure on ia64.
+
+Build fails due to bitrot: some definitions
+moved off from <sys/pthrace.h> to <asm/ptrace.h>
+(similar to other arches).
+
+fetch.c:39:26: error: field 'regs' has incomplete type
+ struct pt_all_user_regs regs;
+ ^~~~
+fetch.c:209:25: warning: 'struct ia64_fpreg' declared inside parameter list will not be visible outside of this definition or declaration
+ fpreg_to_double (struct ia64_fpreg *fp) {
+ ^~~~~~~~~~
+fetch.c: In function 'fpreg_to_double':
+fetch.c:211:45: error: dereferencing pointer to incomplete type 'struct ia64_fpreg'
+ asm ("ldf.fill %0=%1" : "=f"(result) : "m"(*fp));
+ ^~~
+
+diff --git a/sysdeps/linux-gnu/ia64/fetch.c b/sysdeps/linux-gnu/ia64/fetch.c
+index 54dc5b8..b3b9a9a 100644
+--- a/sysdeps/linux-gnu/ia64/fetch.c
++++ b/sysdeps/linux-gnu/ia64/fetch.c
+@@ -134,9 +134,4 @@ allocate_reg(struct fetch_context *ctx, struct Process *proc,
+ return 0;
+
+- /* This would normally be brought over from asm/ptrace.h, but
+- * when we do, we get namespace conflicts between asm/fpu.h
+- * and libunwind. */
+- enum { PT_AUR_BSP = 17 };
+-
+ union cfm_t cfm = { .value = ctx->regs.cfm };
+ unsigned long *bsp = (unsigned long *)ctx->regs.ar[PT_AUR_BSP];
+diff --git a/sysdeps/linux-gnu/ia64/ptrace.h b/sysdeps/linux-gnu/ia64/ptrace.h
+index ef63b4f..8b131f1 100644
+--- a/sysdeps/linux-gnu/ia64/ptrace.h
++++ b/sysdeps/linux-gnu/ia64/ptrace.h
+@@ -20,2 +20,3 @@
+
+ #include <sys/ptrace.h>
++#include <asm/ptrace.h>
diff --git a/dev-debug/ltrace/files/ltrace-0.7.3-musl-host.patch b/dev-debug/ltrace/files/ltrace-0.7.3-musl-host.patch
new file mode 100644
index 000000000000..7729449d0604
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.3-musl-host.patch
@@ -0,0 +1,11 @@
+https://bugs.gentoo.org/713428
+--- a/configure.ac
++++ b/configure.ac
+@@ -33,6 +33,7 @@ AC_CANONICAL_HOST
+
+ case "${host_os}" in
+ linux-gnu*) HOST_OS="linux-gnu" ;;
++ linux-musl*) HOST_OS="linux-gnu" ;;
+ linux-uclibc*) HOST_OS="linux-gnu" ;;
+ *) AC_MSG_ERROR([unkown host-os ${host_os}]) ;;
+ esac
diff --git a/dev-debug/ltrace/files/ltrace-0.7.3-print-test-pie.patch b/dev-debug/ltrace/files/ltrace-0.7.3-print-test-pie.patch
new file mode 100644
index 000000000000..5e46135add3e
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.3-print-test-pie.patch
@@ -0,0 +1,15 @@
+--- a/testsuite/ltrace.minor/print-instruction-pointer.exp
++++ b/testsuite/ltrace.minor/print-instruction-pointer.exp
+@@ -32,6 +32,12 @@ catch "exec sh -c {objdump -d $objdir/$subdir/$binfile | sed -n '/^\[0-9a-fA-F\]
+ catch "exec sh -c {echo \"$output\" | sed -n '2p'| awk -F' ' '{print \$1}'|awk -F: '{print \$1}'}" addr1
+ catch "exec sh -c {echo \"$output\" | sed -n '5p'| awk -F' ' '{print \$1}'|awk -F: '{print \$1}'}" addr2
+
++# Pick at most last 3 digits:
++# PIE binaries randomize address on page level.
++# Let's assume page size is no bigger than 4096 (3 hex digits)
++set addr1 [string range $addr1 3 end]
++set addr2 [string range $addr2 3 end]
++
+ verbose "addr1 = $addr1"
+ verbose "addr2 = $addr2"
+ # Verify the output by checking numbers of print in main.ltrace.
diff --git a/dev-debug/ltrace/files/ltrace-0.7.91-debian-patchset-6.4.patch b/dev-debug/ltrace/files/ltrace-0.7.91-debian-patchset-6.4.patch
new file mode 100644
index 000000000000..1f3bb5ec6a21
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.91-debian-patchset-6.4.patch
@@ -0,0 +1,77 @@
+Patches imported from the Debian patch set 6.4 for ltrace-0.7.3:
+ - 01-avoid-libstdc++ (adapted to account for the absence of configure),
+ - 03-alpha-debug.h
+ - 05-sparc-ftbfs
+ - 06-unexpected-breakpoint
+The other two have since been merged upstream.
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -126,6 +126,15 @@
+ libstdcxx_LIBS=""])
+ AC_SUBST(libstdcxx_LIBS)
+
++if test "x$liberty_LIBS" != "x"
++then
++ libsupcxx_LIBS=""
++ libstdcxx_LIBS=""
++elif test "x$libsupcxx_LIBS" != "x"
++then
++ libstdcxx_LIBS=""
++fi
++
+
+ dnl Check security_get_boolean_active availability.
+ AC_CHECK_HEADERS(selinux/selinux.h)
+--- a/handle_event.c
++++ b/handle_event.c
+@@ -740,9 +740,12 @@
+
+ if ((sbp = address2bpstruct(leader, brk_addr)) != NULL)
+ breakpoint_on_hit(sbp, event->proc);
+- else if (event->proc->state != STATE_IGNORED)
++ else if (event->proc->state != STATE_IGNORED) {
+ output_line(event->proc,
+ "unexpected breakpoint at %p", brk_addr);
++ continue_process(event->proc->pid);
++ return;
++ }
+
+ /* breakpoint_on_hit may delete its own breakpoint, so we have
+ * to look it up again. */
+--- a/sysdeps/linux-gnu/alpha/trace.c
++++ b/sysdeps/linux-gnu/alpha/trace.c
+@@ -29,7 +29,6 @@
+
+ #include "proc.h"
+ #include "common.h"
+-#include "debug.h"
+
+ #if (!defined(PTRACE_PEEKUSER) && defined(PTRACE_PEEKUSR))
+ # define PTRACE_PEEKUSER PTRACE_PEEKUSR
+--- a/sysdeps/linux-gnu/sparc/plt.c
++++ b/sysdeps/linux-gnu/sparc/plt.c
+@@ -19,8 +19,9 @@
+ */
+
+ #include <gelf.h>
++
+ #include "proc.h"
+-#include "common.h"
++#include "library.h"
+
+ GElf_Addr
+ arch_plt_sym_val(struct ltelf *lte, size_t ndx, GElf_Rela * rela) {
+--- a/sysdeps/linux-gnu/sparc/trace.c
++++ b/sysdeps/linux-gnu/sparc/trace.c
+@@ -26,8 +26,10 @@
+ #include <sys/wait.h>
+ #include <signal.h>
+ #include <string.h>
++
+ #include "ptrace.h"
+ #include "proc.h"
++#include "backend.h"
+ #include "common.h"
+
+ void
diff --git a/dev-debug/ltrace/files/ltrace-0.7.91-pid_t.patch b/dev-debug/ltrace/files/ltrace-0.7.91-pid_t.patch
new file mode 100644
index 000000000000..06075006b2e1
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.91-pid_t.patch
@@ -0,0 +1,10 @@
+--- a/proc.h
++++ b/proc.h
+@@ -27,6 +27,7 @@
+
+ #include <sys/time.h>
+ #include <stdint.h>
++#include <unistd.h> /* pid_t */
+
+ #if defined(HAVE_LIBDW)
+ # include <elfutils/libdwfl.h>
diff --git a/dev-debug/ltrace/files/ltrace-0.7.91-test-glibc-2.33.patch b/dev-debug/ltrace/files/ltrace-0.7.91-test-glibc-2.33.patch
new file mode 100644
index 000000000000..b78d4580b050
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.91-test-glibc-2.33.patch
@@ -0,0 +1,11 @@
+--- a/testsuite/ltrace.main/system_calls.exp
++++ b/testsuite/ltrace.main/system_calls.exp
+@@ -133,7 +133,7 @@
+ { {^write$} == 1 }
+ { {^unlink(at)?$} >= 2 }
+ { {^open(at)?$} == 1 }
+- { {^(new|f)?stat(64)?$} >= 1 }
++ { {^(new)?stat|fstatat64|newfstatat$} >= 1 }
+ { {^close$} == 1 }
+ { {^getcwd$} == 1 }
+ { {^chdir$} == 1 }
diff --git a/dev-debug/ltrace/files/ltrace-0.7.91-tuple-tests.patch b/dev-debug/ltrace/files/ltrace-0.7.91-tuple-tests.patch
new file mode 100644
index 000000000000..c7c997d5545e
--- /dev/null
+++ b/dev-debug/ltrace/files/ltrace-0.7.91-tuple-tests.patch
@@ -0,0 +1,11 @@
+--- a/testsuite/Makefile.am
++++ b/testsuite/Makefile.am
+@@ -42,6 +42,8 @@
+ echo set elfutils_LD_LIBRARY_PATH '"$(elfutils_LD_LIBRARY_PATH)"' >> $@
+ echo set libunwind_LD_LIBRARY_PATH '"$(libunwind_LD_LIBRARY_PATH)"' >> $@
+ echo set PREFIX '"$(prefix)"' >> $@
++ echo set CC_FOR_TARGET '"$(CC)"' >> $@
++ echo set CXX_FOR_TARGET '"$(CXX)"' >> $@
+
+ CLEANFILES = *.o *.so *.log *.sum *.ltrace site.bak setval.tmp site.exp env.exp
+
diff --git a/dev-debug/ltrace/ltrace-0.7.91_pre20221216-r1.ebuild b/dev-debug/ltrace/ltrace-0.7.91_pre20221216-r1.ebuild
new file mode 100644
index 000000000000..3320d0f4b602
--- /dev/null
+++ b/dev-debug/ltrace/ltrace-0.7.91_pre20221216-r1.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+EGIT_COMMIT="5cffc0d2134f697fbac8627ec5b5f0085cd47c8a"
+
+DESCRIPTION="trace library calls made at runtime"
+HOMEPAGE="https://gitlab.com/cespedes/ltrace"
+SRC_URI="https://gitlab.com/cespedes/${PN}/-/archive/${EGIT_COMMIT}.tar.bz2 -> ${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~mips ppc ~ppc64 ~sparc x86"
+IUSE="debug elfutils selinux test unwind"
+
+REQUIRED_USE="?? ( elfutils unwind )"
+
+RDEPEND="virtual/libelf:=
+ elfutils? ( dev-libs/elfutils )
+ selinux? ( sys-libs/libselinux )
+ unwind? ( sys-libs/libunwind:= )"
+DEPEND="${RDEPEND}
+ sys-libs/binutils-libs
+ test? ( dev-util/dejagnu )"
+
+# Effectively abandoned upstream. Extremely sensitive to the sandbox, versions
+# of core libraries, kernel security settings...
+RESTRICT="test"
+
+S=${WORKDIR}/${PN}-${EGIT_COMMIT}
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.7.91-debian-patchset-6.4.patch
+ "${FILESDIR}"/${PN}-0.7.3-CXX-for-tests.patch
+ "${FILESDIR}"/${PN}-0.7.3-alpha-protos.patch
+ "${FILESDIR}"/${PN}-0.7.3-ia64.patch
+ "${FILESDIR}"/${PN}-0.7.3-ia64-pid_t.patch
+ "${FILESDIR}"/${PN}-0.7.3-musl-host.patch
+ "${FILESDIR}"/${PN}-0.7.3-print-test-pie.patch
+ "${FILESDIR}"/${PN}-0.7.91-pid_t.patch
+ "${FILESDIR}"/${PN}-0.7.91-test-glibc-2.33.patch
+ "${FILESDIR}"/${PN}-0.7.91-tuple-tests.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i '/^dist_doc_DATA/d' Makefile.am || die
+ eautoreconf
+}
+
+src_configure() {
+ ac_cv_header_selinux_selinux_h=$(usex selinux) \
+ ac_cv_lib_selinux_security_get_boolean_active=$(usex selinux) \
+ econf \
+ --disable-werror \
+ $(use_enable debug) \
+ $(use_with elfutils) \
+ $(use_with unwind libunwind)
+}
diff --git a/dev-debug/ltrace/ltrace-0.8.1.ebuild b/dev-debug/ltrace/ltrace-0.8.1.ebuild
new file mode 100644
index 000000000000..ef3efbf598f0
--- /dev/null
+++ b/dev-debug/ltrace/ltrace-0.8.1.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools
+
+DESCRIPTION="trace library calls made at runtime"
+HOMEPAGE="https://gitlab.com/cespedes/ltrace"
+SRC_URI="https://gitlab.com/cespedes/${PN}/-/archive/${PV}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha amd64 ~arm ~mips ppc ~ppc64 ~sparc x86"
+IUSE="debug elfutils selinux test unwind"
+
+REQUIRED_USE="?? ( elfutils unwind )"
+
+RDEPEND="virtual/libelf:=
+ elfutils? ( dev-libs/elfutils )
+ selinux? ( sys-libs/libselinux )
+ unwind? ( sys-libs/libunwind:= )"
+DEPEND="${RDEPEND}
+ sys-libs/binutils-libs
+ test? ( dev-util/dejagnu )"
+
+# Effectively abandoned upstream. Extremely sensitive to the sandbox, versions
+# of core libraries, kernel security settings...
+RESTRICT="test"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.7.91-debian-patchset-6.4.patch
+ "${FILESDIR}"/${PN}-0.7.3-CXX-for-tests.patch
+ "${FILESDIR}"/${PN}-0.7.3-alpha-protos.patch
+ "${FILESDIR}"/${PN}-0.7.3-ia64.patch
+ "${FILESDIR}"/${PN}-0.7.3-ia64-pid_t.patch
+ "${FILESDIR}"/${PN}-0.7.3-musl-host.patch
+ "${FILESDIR}"/${PN}-0.7.3-print-test-pie.patch
+ "${FILESDIR}"/${PN}-0.7.91-pid_t.patch
+ "${FILESDIR}"/${PN}-0.7.91-tuple-tests.patch
+)
+
+src_prepare() {
+ default
+
+ sed -i '/^dist_doc_DATA/d' Makefile.am || die
+ eautoreconf
+}
+
+src_configure() {
+ ac_cv_header_selinux_selinux_h=$(usex selinux) \
+ ac_cv_lib_selinux_security_get_boolean_active=$(usex selinux) \
+ econf \
+ --disable-werror \
+ $(use_enable debug) \
+ $(use_with elfutils) \
+ $(use_with unwind libunwind)
+}
diff --git a/dev-debug/ltrace/metadata.xml b/dev-debug/ltrace/metadata.xml
new file mode 100644
index 000000000000..16b809002c10
--- /dev/null
+++ b/dev-debug/ltrace/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <use>
+ <flag name="elfutils">Use libdwfl from <pkg>dev-libs/elfutils</pkg> for frame unwinding support</flag>
+ <flag name="unwind">Use <pkg>sys-libs/libunwind</pkg> for frame unwinding support</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/metadata.xml b/dev-debug/metadata.xml
new file mode 100644
index 000000000000..1fa12a74d214
--- /dev/null
+++ b/dev-debug/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE catmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
+<catmetadata>
+ <longdescription lang="en">
+ Debuggers and debugging-related tools.
+ </longdescription>
+ <longdescription lang="de">
+ Debugger und Werkzeuge zur Fehlersuche.
+ </longdescription>
+ <longdescription lang="pl">
+ Debugery i narzędzia związane z debugowaniem.
+ </longdescription>
+</catmetadata>
diff --git a/dev-debug/peda/Manifest b/dev-debug/peda/Manifest
new file mode 100644
index 000000000000..91865e140d1d
--- /dev/null
+++ b/dev-debug/peda/Manifest
@@ -0,0 +1 @@
+DIST peda-1.2.tar.gz 65331 BLAKE2B 6942b99d714eb1114167b80ba202d86f6dee52cd47c8047b4cb78d4a91f45e1594521440a3318a968e35c5dc56a616393c0837d6f9db5ba41505641a385fb573 SHA512 e69844b8c3a51af96096d97ebfa4a67ac8ff16e4a9e0edb64bbb5e946b1ebeaa56260663718b90145f4191cc25762f3e351a8de92bf9b56f9f1d11389c563c43
diff --git a/dev-debug/peda/files/peda-1.2-gdb_logging.patch b/dev-debug/peda/files/peda-1.2-gdb_logging.patch
new file mode 100644
index 000000000000..8abee7df38a4
--- /dev/null
+++ b/dev-debug/peda/files/peda-1.2-gdb_logging.patch
@@ -0,0 +1,48 @@
+From baaecddc58db23db1b0d85651090b743ddf7899a Mon Sep 17 00:00:00 2001
+From: Nikolaos Chatzikonstantinou <nchatz314@gmail.com>
+Date: Thu, 8 Feb 2024 03:51:51 -0500
+Subject: [PATCH] remove deprecated notice
+Upstream: https://github.com/longld/peda/pull/176
+
+From GDB 12.1+, `set logging on|off` is deprecated, and a notice is
+given. See
+<https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=blob_plain;f=gdb/NEWS;hb=gdb-12.1-release>.
+This patch fixes the issue for the newer gdb versions.
+--- a/peda.py
++++ b/peda.py
+@@ -108,22 +108,22 @@ def execute_redirect(self, gdb_command, silent=False):
+ else:
+ logfd = tmpfile()
+ logname = logfd.name
+- gdb.execute('set logging off') # prevent nested call
++ gdb.execute('set logging enabled off') # prevent nested call
+ gdb.execute('set height 0') # disable paging
+ gdb.execute('set logging file %s' % logname)
+ gdb.execute('set logging overwrite on')
+ gdb.execute('set logging redirect on')
+- gdb.execute('set logging on')
++ gdb.execute('set logging enabled on')
+ try:
+ gdb.execute(gdb_command)
+ gdb.flush()
+- gdb.execute('set logging off')
++ gdb.execute('set logging enabled off')
+ if not silent:
+ logfd.flush()
+ result = logfd.read()
+ logfd.close()
+ except Exception as e:
+- gdb.execute('set logging off') #to be sure
++ gdb.execute('set logging enabled off') #to be sure
+ if config.Option.get("debug") == "on":
+ msg('Exception (%s): %s' % (gdb_command, e), "red")
+ traceback.print_exc()
+@@ -6112,7 +6112,7 @@ def complete(self, text, word):
+ # handle SIGINT / Ctrl-C
+ def sigint_handler(signal, frame):
+ warning_msg("Got Ctrl+C / SIGINT!")
+- gdb.execute("set logging off")
++ gdb.execute("set logging enabled off")
+ peda.restore_user_command("all")
+ raise KeyboardInterrupt
+ signal.signal(signal.SIGINT, sigint_handler)
diff --git a/dev-debug/peda/files/peda-1.2-python3_14.patch b/dev-debug/peda/files/peda-1.2-python3_14.patch
new file mode 100644
index 000000000000..5c1b6a9c2d9e
--- /dev/null
+++ b/dev-debug/peda/files/peda-1.2-python3_14.patch
@@ -0,0 +1,438 @@
+From 8a7985f971b255931ea38ea83bbe736ec07f2e45 Mon Sep 17 00:00:00 2001
+From: punixcorn <ohyunwoods663@gmail.com>
+Date: Thu, 4 Jul 2024 04:05:44 +0000
+Subject: [PATCH 1/6] SyntaxWarning: invalid escape sequence #177 fixed
+Upstream: https://github.com/longld/peda/pull/179
+
+--- a/peda.py
++++ b/peda.py
+@@ -18,7 +18,6 @@
+ import signal
+ import traceback
+ import codecs
+-
+ # point to absolute path of peda.py
+ PEDAFILE = os.path.abspath(os.path.expanduser(__file__))
+ if os.path.islink(PEDAFILE):
+@@ -26,7 +25,7 @@
+ sys.path.insert(0, os.path.dirname(PEDAFILE) + "/lib/")
+
+ # Use six library to provide Python 2/3 compatibility
+-import six
++#import six
+ from six.moves import range
+ from six.moves import input
+ try:
+@@ -35,7 +34,6 @@
+ import pickle
+
+
+-
+ from skeleton import *
+ from shellcode import *
+ from utils import *
+@@ -148,10 +146,10 @@ def parse_and_eval(self, exp):
+ if "$"+r not in exp and "e"+r not in exp and "r"+r not in exp:
+ exp = exp.replace(r, "$%s" % r)
+
+- p = re.compile("(.*)\[(.*)\]") # DWORD PTR [esi+eax*1]
++ p = re.compile(r"(.*)\[(.*)\]") # DWORD PTR [esi+eax*1]
+ matches = p.search(exp)
+ if not matches:
+- p = re.compile("(.*).s:(0x.*)") # DWORD PTR ds:0xdeadbeef
++ p = re.compile(r"(.*).s:(0x.*)") # DWORD PTR ds:0xdeadbeef
+ matches = p.search(exp)
+
+ if matches:
+@@ -370,12 +368,12 @@ def getfile(self):
+ result = None
+ out = self.execute_redirect('info files')
+ if out and '"' in out:
+- p = re.compile(".*exec file:\s*`(.*)'")
++ p = re.compile(r".*exec file:\s*`(.*)'")
+ m = p.search(out)
+ if m:
+ result = m.group(1)
+ else: # stripped file, get symbol file
+- p = re.compile("Symbols from \"([^\"]*)")
++ p = re.compile(r"Symbols from \"([^\"]*)")
+ m = p.search(out)
+ if m:
+ result = m.group(1)
+@@ -547,11 +545,11 @@ def get_breakpoint(self, num):
+
+ lines = out.splitlines()[1:]
+ # breakpoint regex
+- p = re.compile("^(\d*)\s*(.*breakpoint)\s*(keep|del)\s*(y|n)\s*(0x[^ ]*)\s*(.*)")
++ p = re.compile(r"^(\d*)\s*(.*breakpoint)\s*(keep|del)\s*(y|n)\s*(0x[^ ]*)\s*(.*)")
+ m = p.match(lines[0])
+ if not m:
+ # catchpoint/watchpoint regex
+- p = re.compile("^(\d*)\s*(.*point)\s*(keep|del)\s*(y|n)\s*(.*)")
++ p = re.compile(r"^(\d*)\s*(.*point)\s*(keep|del)\s*(y|n)\s*(.*)")
+ m = p.match(lines[0])
+ if not m:
+ return None
+@@ -564,7 +562,7 @@ def get_breakpoint(self, num):
+ disp = True if disp == "keep" else False
+ enb = True if enb == "y" else False
+ addr = to_int(addr)
+- m = re.match("in.*at(.*:\d*)", what)
++ m = re.match(r"in.*at(.*:\d*)", what)
+ if m:
+ what = m.group(1)
+ else:
+@@ -593,7 +591,7 @@ def get_breakpoints(self):
+
+ bplist = []
+ for line in out.splitlines():
+- m = re.match("^(\d*).*", line)
++ m = re.match(r"^(\d*).*", line)
+ if m and to_int(m.group(1)):
+ bplist += [to_int(m.group(1))]
+
+@@ -625,7 +623,7 @@ def save_breakpoints(self, filename):
+ try:
+ fd = open(filename, "w")
+ for (num, type, disp, enb, addr, what, commands) in bplist:
+- m = re.match("(.*)point", type)
++ m = re.match(r"(.*)point", type)
+ if m:
+ cmd = m.group(1).split()[-1]
+ else:
+@@ -786,7 +784,7 @@ def prev_inst(self, address, count=1):
+ if len(lines) > count and "(bad)" not in " ".join(lines):
+ for line in lines[-count-1:-1]:
+ (addr, code) = line.split(":", 1)
+- addr = re.search("(0x[^ ]*)", addr).group(1)
++ addr = re.search(r"(0x[^ ]*)", addr).group(1)
+ result += [(to_int(addr), code)]
+ return result
+ return None
+@@ -807,7 +805,7 @@ def current_inst(self, address):
+ return None
+
+ (addr, code) = out.split(":", 1)
+- addr = re.search("(0x[^ ]*)", addr).group(1)
++ addr = re.search(r"(0x[^ ]*)", addr).group(1)
+ addr = to_int(addr)
+ code = code.strip()
+
+@@ -833,7 +831,7 @@ def next_inst(self, address, count=1):
+ lines = code.strip().splitlines()
+ for i in range(1, count+1):
+ (addr, code) = lines[i].split(":", 1)
+- addr = re.search("(0x[^ ]*)", addr).group(1)
++ addr = re.search(r"(0x[^ ]*)", addr).group(1)
+ result += [(to_int(addr), code)]
+ return result
+
+@@ -913,9 +911,9 @@ def xrefs(self, search="", filename=None):
+ out = self.execute_redirect("x/i 0x%x" % addr)
+ if out:
+ line = out
+- p = re.compile("\s*(0x[^ ]*).*?:\s*([^ ]*)\s*(.*)")
++ p = re.compile(r"\s*(0x[^ ]*).*?:\s*([^ ]*)\s*(.*)")
+ else:
+- p = re.compile("(.*?)\s*<.*?>\s*([^ ]*)\s*(.*)")
++ p = re.compile(r"(.*?)\s*<.*?>\s*([^ ]*)\s*(.*)")
+
+ m = p.search(line)
+ if m:
+@@ -934,7 +932,7 @@ def _get_function_args_32(self, code, argc=None):
+ """
+ if not argc:
+ argc = 0
+- p = re.compile(".*mov.*\[esp(.*)\],")
++ p = re.compile(r".*mov.*\[esp(.*)\],")
+ matches = p.findall(code)
+ if matches:
+ l = len(matches)
+@@ -966,11 +964,11 @@ def _get_function_args_64(self, code, argc=None):
+
+ # just retrieve max 6 args
+ arg_order = ["rdi", "rsi", "rdx", "rcx", "r8", "r9"]
+- p = re.compile(":\s*([^ ]*)\s*(.*),")
++ p = re.compile(r":\s*([^ ]*)\s*(.*),")
+ matches = p.findall(code)
+ regs = [r for (_, r) in matches]
+ p = re.compile(("di|si|dx|cx|r8|r9"))
+- m = p.findall(" ".join(regs))
++ m = p.findall(r" ".join(regs))
+ m = list(set(m)) # uniqify
+ argc = 0
+ if "si" in m and "di" not in m: # dirty fix
+@@ -1106,14 +1104,14 @@ def stepuntil(self, inst, mapname=None, depth=None):
+ current_instruction = "End of execution"
+ break
+
+- p = re.compile(".*?(0x[^ :]*)")
++ p = re.compile(r".*?(0x[^ :]*)")
+ addr = p.search(current_instruction).group(1)
+ addr = to_int(addr)
+ if addr is None:
+ break
+
+- #p = re.compile(".*?:\s*([^ ]*)")
+- p = re.compile(".*?:\s*(.*)")
++ #p = re.compile(r".*?:\s*([^ ]*)")
++ p = re.compile(r".*?:\s*(.*)")
+ code = p.match(current_instruction).group(1)
+ found = 0
+ for i in inst.replace(",", " ").split():
+@@ -1220,10 +1218,10 @@ def eval_target(self, inst):
+ inst = inst.strip()
+ opcode = inst.split(":\t")[-1].split()[0]
+ # this regex includes x86_64 RIP relateive address reference
+- p = re.compile(".*?:\s*[^ ]*\s*(.* PTR ).*(0x[^ ]*)")
++ p = re.compile(r".*?:\s*[^ ]*\s*(.* PTR ).*(0x[^ ]*)")
+ m = p.search(inst)
+ if not m:
+- p = re.compile(".*?:\s.*\s(0x[^ ]*|\w+)")
++ p = re.compile(r".*?:\s.*\s(0x[^ ]*|\w+)")
+ m = p.search(inst)
+ if m:
+ target = m.group(1)
+@@ -1232,7 +1230,7 @@ def eval_target(self, inst):
+ target = None
+ else:
+ if "]" in m.group(2): # e.g DWORD PTR [ebx+0xc]
+- p = re.compile(".*?:\s*[^ ]*\s*(.* PTR ).*\[(.*)\]")
++ p = re.compile(r".*?:\s*[^ ]*\s*(.* PTR ).*\[(.*)\]")
+ m = p.search(inst)
+ target = self.parse_and_eval("%s[%s]" % (m.group(1), m.group(2).strip()))
+
+@@ -1427,7 +1425,7 @@ def _get_offline_maps():
+ def _get_allmaps_osx(pid, remote=False):
+ maps = []
+ #_DATA 00007fff77975000-00007fff77976000 [ 4K] rw-/rw- SM=COW /usr/lib/system/libremovefile.dylib
+- pattern = re.compile("([^\n]*)\s* ([0-9a-f][^-\s]*)-([^\s]*) \[.*\]\s([^/]*).* (.*)")
++ pattern = re.compile(r"([^\n]*)\s* ([0-9a-f][^-\s]*)-([^\s]*) \[.*\]\s([^/]*).* (.*)")
+
+ if remote: # remote target, not yet supported
+ return maps
+@@ -1452,7 +1450,7 @@ def _get_allmaps_freebsd(pid, remote=False):
+ maps = []
+ mpath = "/proc/%s/map" % pid
+ # 0x8048000 0x8049000 1 0 0xc36afdd0 r-x 1 0 0x1000 COW NC vnode /path/to/file NCH -1
+- pattern = re.compile("0x([0-9a-f]*) 0x([0-9a-f]*)(?: [^ ]*){3} ([rwx-]*)(?: [^ ]*){6} ([^ ]*)")
++ pattern = re.compile(r"0x([0-9a-f]*) 0x([0-9a-f]*)(?: [^ ]*){3} ([rwx-]*)(?: [^ ]*){6} ([^ ]*)")
+
+ if remote: # remote target, not yet supported
+ return maps
+@@ -1479,7 +1477,7 @@ def _get_allmaps_linux(pid, remote=False):
+ maps = []
+ mpath = "/proc/%s/maps" % pid
+ #00400000-0040b000 r-xp 00000000 08:02 538840 /path/to/file
+- pattern = re.compile("([0-9a-f]*)-([0-9a-f]*) ([rwxps-]*)(?: [^ ]*){3} *(.*)")
++ pattern = re.compile(r"([0-9a-f]*)-([0-9a-f]*) ([rwxps-]*)(?: [^ ]*){3} *(.*)")
+
+ if remote: # remote target
+ tmp = tmpfile()
+@@ -2093,7 +2091,7 @@ def examine_data(value, bits=32):
+ if value >= start and value < end:
+ if type == "code":
+ out = self.get_disasm(value)
+- p = re.compile(".*?0x[^ ]*?\s(.*)")
++ p = re.compile(r".*?0x[^ ]*?\s(.*)")
+ m = p.search(out)
+ result = (to_hex(value), "code", m.group(1))
+ else: # rodata address
+@@ -2111,7 +2109,7 @@ def examine_data(value, bits=32):
+ out = examine_data(value, bits)
+ result = (to_hex(value), "rodata", out.split(":", 1)[1].strip())
+ else:
+- p = re.compile(".*?0x[^ ]*?\s(.*)")
++ p = re.compile(r".*?0x[^ ]*?\s(.*)")
+ m = p.search(out)
+ result = (to_hex(value), "code", m.group(1))
+
+@@ -2211,7 +2209,7 @@ def elfentry(self):
+ - entry address (Int)
+ """
+ out = self.execute_redirect("info files")
+- p = re.compile("Entry point: ([^\s]*)")
++ p = re.compile(r"Entry point: ([^\s]*)")
+ if out:
+ m = p.search(out)
+ if m:
+@@ -2239,7 +2237,7 @@ def elfheader(self, name=None):
+ if not out:
+ return {}
+
+- p = re.compile("\s*(0x[^-]*)->(0x[^ ]*) at (0x[^:]*):\s*([^ ]*)\s*(.*)")
++ p = re.compile(r"\s*(0x[^-]*)->(0x[^ ]*) at (0x[^:]*):\s*([^ ]*)\s*(.*)")
+ matches = p.findall(out)
+
+ for (start, end, offset, hname, attr) in matches:
+@@ -2313,7 +2311,7 @@ def elfsymbols(self, pattern=None):
+ symname += "@plt"
+ out = self.execute_redirect("info functions %s" % symname)
+ if not out: continue
+- m = re.findall(".*(0x[^ ]*)\s*%s" % re.escape(symname), out)
++ m = re.findall(r".*(0x[^ ]*)\s*%s" % re.escape(symname), out)
+ for addr in m:
+ addr = to_int(addr)
+ if self.is_address(addr, binmap):
+@@ -2390,7 +2388,7 @@ def main_entry(self):
+ if refs:
+ inst = self.prev_inst(refs[0][0])
+ if inst:
+- addr = re.search(".*(0x.*)", inst[0][1])
++ addr = re.search(r".*(0x.*)", inst[0][1])
+ if addr:
+ return to_int(addr.group(1))
+ return None
+@@ -2413,7 +2411,7 @@ def readelf_header(self, filename, name=None):
+ out = execute_external_command("%s -W -S %s" % (config.READELF, filename))
+ if not out:
+ return {}
+- p = re.compile(".*\[.*\] (\.[^ ]*) [^0-9]* ([^ ]*) [^ ]* ([^ ]*)(.*)")
++ p = re.compile(r".*\[.*\] (\.[^ ]*) [^0-9]* ([^ ]*) [^ ]* ([^ ]*)(.*)")
+ matches = p.findall(out)
+ if not matches:
+ return result
+@@ -2471,7 +2469,7 @@ def _elfheader_solib_all():
+ if not out:
+ return None
+
+- p = re.compile("[^\n]*\s*(0x[^ ]*) - (0x[^ ]*) is (\.[^ ]*) in (.*)")
++ p = re.compile(r"[^\n]*\s*(0x[^ ]*) - (0x[^ ]*) is (\.[^ ]*) in (.*)")
+ soheaders = p.findall(out)
+
+ result = []
+@@ -2678,7 +2676,7 @@ def decode_hex_escape(str_):
+ blen = gadget[-1][0] - gadget[0][0] + 1
+ bytes = v[:2*blen]
+ asmcode_rs = "; ".join([c for _, c in gadget])
+- if re.search(re.escape(asmcode).replace("\ ",".*").replace("\?",".*"), asmcode_rs)\
++ if re.search(re.escape(asmcode).replace(r"\ ",".*").replace(r"\?",".*"), asmcode_rs)\
+ and a not in result:
+ result[a] = (bytes, asmcode_rs)
+ result = list(result.items())
+@@ -2688,7 +2686,7 @@ def decode_hex_escape(str_):
+ asmcode = self.execute_redirect("disassemble 0x%x, 0x%x" % (a, a+(len(v)//2)))
+ if asmcode:
+ asmcode = "\n".join(asmcode.splitlines()[1:-1])
+- matches = re.findall(".*:([^\n]*)", asmcode)
++ matches = re.findall(r".*:([^\n]*)", asmcode)
+ result += [(a, (v, ";".join(matches).strip()))]
+
+ return result
+@@ -2829,7 +2827,7 @@ def search_jmpcall(self, start, end, regname=None):
+ if regname is None:
+ regname = ""
+ regname = regname.lower()
+- pattern = re.compile(b'|'.join(JMPCALL).replace(b' ', b'\ '))
++ pattern = re.compile(r'|'.join(JMPCALL).replace(r' ', r'\ '))
+ mem = self.dumpmem(start, end)
+ found = pattern.finditer(mem)
+ (arch, bits) = self.getarch()
+@@ -3411,7 +3409,7 @@ def xprint(self, *arg):
+ """
+ text = ""
+ exp = " ".join(list(arg))
+- m = re.search(".*\[(.*)\]|.*?s:(0x[^ ]*)", exp)
++ m = re.search(r".*\[(.*)\]|.*?s:(0x[^ ]*)", exp)
+ if m:
+ addr = peda.parse_and_eval(m.group(1))
+ if to_int(addr):
+@@ -3516,7 +3514,7 @@ def procinfo(self, *arg):
+ fdlist = os.listdir("/proc/%d/fd" % pid)
+ for fd in fdlist:
+ rpath = os.readlink("/proc/%d/fd/%s" % (pid, fd))
+- sock = re.search("socket:\[(.*)\]", rpath)
++ sock = re.search(r"socket:\[(.*)\]", rpath)
+ if sock:
+ spath = execute_external_command("netstat -aen | grep %s" % sock.group(1))
+ if spath:
+@@ -3526,11 +3524,11 @@ def procinfo(self, *arg):
+ # uid/gid, pid, ppid
+ info["pid"] = pid
+ status = open("/proc/%d/status" % pid).read()
+- ppid = re.search("PPid:\s*([^\s]*)", status).group(1)
++ ppid = re.search(r"PPid:\s*([^\s]*)", status).group(1)
+ info["ppid"] = to_int(ppid) if ppid else -1
+- uid = re.search("Uid:\s*([^\n]*)", status).group(1)
++ uid = re.search(r"Uid:\s*([^\n]*)", status).group(1)
+ info["uid"] = [to_int(id) for id in uid.split()]
+- gid = re.search("Gid:\s*([^\n]*)", status).group(1)
++ gid = re.search(r"Gid:\s*([^\n]*)", status).group(1)
+ info["gid"] = [to_int(id) for id in gid.split()]
+
+ for opt in options:
+@@ -4122,7 +4120,7 @@ def traceinst(self, *arg):
+ prev_depth = peda.backtrace_depth(peda.getreg("sp"))
+ logfd = open(logname, "w")
+
+- p = re.compile(".*?:\s*[^ ]*\s*([^,]*),(.*)")
++ p = re.compile(r".*?:\s*[^ ]*\s*([^,]*),(.*)")
+ while count:
+ result = peda.stepuntil(",".join(instlist), mapname, prev_depth)
+ if result is None:
+@@ -4134,7 +4132,7 @@ def traceinst(self, *arg):
+
+ # special case for JUMP inst
+ prev_code = ""
+- if re.search("j[^m]", code.split(":\t")[-1].split()[0]):
++ if re.search(r"j[^m]", code.split(":\t")[-1].split()[0]):
+ prev_insts = peda.prev_inst(peda.getreg("pc"))
+ if prev_insts:
+ prev_code = "0x%x:%s" % prev_insts[0]
+@@ -4143,7 +4141,7 @@ def traceinst(self, *arg):
+ text = "%s%s%s" % (" "*(prev_depth-1), " dep:%02d " % (prev_depth-1), code.strip())
+ msg(text, teefd=logfd)
+
+- if re.search("call", code.split(":\t")[-1].split()[0]):
++ if re.search(r"call", code.split(":\t")[-1].split()[0]):
+ args = peda.get_function_args()
+ if args:
+ for (i, a) in enumerate(args):
+
+From 6b185589187a4ca7271be518780cfddbabb36b27 Mon Sep 17 00:00:00 2001
+From: potato <103060805+punixcorn@users.noreply.github.com>
+Date: Sun, 7 Jul 2024 16:34:42 +0000
+Subject: [PATCH 5/6] fix invalid escape sequence errors
+
+in lib/utils.py and lib/nasm.py
+--- a/lib/nasm.py
++++ b/lib/nasm.py
+@@ -82,7 +82,7 @@ def nasm2shellcode(asmcode):
+ return ""
+
+ shellcode = []
+- pattern = re.compile("([0-9A-F]{8})\s*([^\s]*)\s*(.*)")
++ pattern = re.compile(r"([0-9A-F]{8})\s*([^\s]*)\s*(.*)")
+
+ matches = pattern.findall(asmcode)
+ for line in asmcode.splitlines():
+--- a/lib/utils.py
++++ b/lib/utils.py
+@@ -523,7 +523,7 @@ def format_disasm_code(code, nearby=None):
+ result += line + "\n"
+ else:
+ color = style = None
+- m = re.search(".*(0x[^ ]*).*:\s*([^ ]*)", line)
++ m = re.search(r".*(0x[^ ]*).*:\s*([^ ]*)", line)
+ if not m: # failed to parse
+ result += line + "\n"
+ continue
+@@ -540,7 +540,7 @@ def format_disasm_code(code, nearby=None):
+ break
+
+ prefix = line.split(":\t")[0]
+- addr = re.search("(0x[^\s]*)", prefix)
++ addr = re.search(r"(0x[^\s]*)", prefix)
+ if addr:
+ addr = to_int(addr.group(1))
+ else:
+@@ -589,7 +589,7 @@ def cyclic_pattern_charset(charset_type=None):
+ charset[2] = "sn()" + charset[2]
+
+ if charset_type == 2: # maximum type
+- charset += ['!"#$%&\()*+,-./:;<=>?@[]^_{|}~'] # string.punctuation
++ charset += [r'!"#$%&\()*+,-./:;<=>?@[]^_{|}~'] # string.punctuation
+
+ mixed_charset = mixed = ''
+ k = 0
+
diff --git a/dev-debug/peda/metadata.xml b/dev-debug/peda/metadata.xml
new file mode 100644
index 000000000000..5984318cfe25
--- /dev/null
+++ b/dev-debug/peda/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/peda/peda-1.2-r1.ebuild b/dev-debug/peda/peda-1.2-r1.ebuild
new file mode 100644
index 000000000000..745417c6dfd7
--- /dev/null
+++ b/dev-debug/peda/peda-1.2-r1.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit python-single-r1 wrapper
+
+DESCRIPTION="Python Exploit Development Assistance for GDB"
+HOMEPAGE="https://github.com/longld/peda"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/longld/peda"
+else
+ SRC_URI="https://github.com/longld/peda/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 x86"
+fi
+
+LICENSE="CC-BY-NC-SA-3.0"
+SLOT="0"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ ')
+"
+
+PATCHES=(
+ "${FILESDIR}/${P}-gdb_logging.patch"
+ "${FILESDIR}/${P}-python3_14.patch"
+)
+
+src_prepare() {
+ default
+
+ # File was remove in upstream patch ${P}-python3_14.patch. To keep the
+ # patch file size low, we remove this file directly instead via the patch.
+ rm lib/six.py || die
+}
+
+src_install() {
+ insinto /usr/share/${PN}
+ doins -r lib/ *.py
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ make_wrapper "gdb-peda" \
+ "gdb -x \"${EPREFIX}/usr/share/${PN}/peda.py\"" || die
+
+ dodoc README{,.md}
+}
+
+pkg_postinst() {
+ einfo "\nUsage:"
+ einfo " ~$ gdb-peda <program>\n"
+}
diff --git a/dev-debug/peda/peda-9999.ebuild b/dev-debug/peda/peda-9999.ebuild
new file mode 100644
index 000000000000..25cd9d7b3489
--- /dev/null
+++ b/dev-debug/peda/peda-9999.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit python-single-r1 wrapper
+
+DESCRIPTION="Python Exploit Development Assistance for GDB"
+HOMEPAGE="https://github.com/longld/peda"
+
+if [[ ${PV} == "9999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/longld/peda"
+else
+ SRC_URI="https://github.com/longld/peda/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="CC-BY-NC-SA-3.0"
+SLOT="0"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+ ${PYTHON_DEPS}
+ $(python_gen_cond_dep '
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ ')
+"
+
+src_install() {
+ insinto /usr/share/${PN}
+ doins -r lib/ *.py
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ make_wrapper "gdb-peda" \
+ "gdb -x \"${EPREFIX}/usr/share/${PN}/peda.py\"" || die
+
+ dodoc README{,.md}
+}
+
+pkg_postinst() {
+ einfo "\nUsage:"
+ einfo " ~$ gdb-peda <program>\n"
+}
diff --git a/dev-debug/pwndbg/Manifest b/dev-debug/pwndbg/Manifest
new file mode 100644
index 000000000000..eb71fbcd948a
--- /dev/null
+++ b/dev-debug/pwndbg/Manifest
@@ -0,0 +1,4 @@
+DIST pwndbg-20250418.tar.gz 9022280 BLAKE2B 8cc3cede9abc024e485737c0c38c525456e489eb12beb908bf9bd44fbb33ed1b27a206237452b7bc741fc569a61874cc134725f90fd04d6e46723704a9fb466e SHA512 34afa5ee756f405f662f494d47a0cc324ad193f9083ef371c9946681ec58e0ce6c1a5097b3f3b88ab58beb7941317e9a6a0dc0ee643834fc90ccac2f07576de7
+DIST pwndbg-20250530.tar.gz 11924779 BLAKE2B ad372272008d3227c4ba6668745532602242ecfb0359bc10368cc55e8a9d443d923c39e3130f615b9d80c2d8a18e40837965d02dcf034f583f5ce54e398aa6b4 SHA512 10bb330f8a5c15eb82ab1f4767dd67146fa8dfe2b8b1f62190f46cdc54fbe1109d9e987c4f7848ea3e9844c1be6cb78f9e74e1ca59d1620b802d0a1d789bd290
+DIST pwndbg-20251010.tar.gz 24007425 BLAKE2B 7213c974d9219dbac7222bff60b5ba92f7c49be57844deda47ad0ef316c1e11516d0f5facf0596d8cabb6ccd409f0f95ba024f7fa218f965eae206913794fa28 SHA512 21ae4b9538cb0109d6a7ce3269deec6436e6316459fd31cf025f5d23167155c0171a9a5007feea95123df8375dc13c9c70e2b79029c561353566e31b16e4a351
+DIST pwndbg-20251020.tar.gz 24013152 BLAKE2B 50de4937ee7f13330d76f110b84853445c8600e0b5da78be581341c00c6e22f05738e3490b6d91d5bf2e8d91d37b47fd1812dde402c717e8e7833dda4d583390 SHA512 0c3137962e6df4e67601e72443bf67a9bb9400cad0ece0736ccf06394b4080c3c27f5755cb63a1e46d8be9504f0a62aa9c15c831817c2f6046fea0e880c68b6f
diff --git a/dev-debug/pwndbg/files/pwndbg-20250418-no-docs.patch b/dev-debug/pwndbg/files/pwndbg-20250418-no-docs.patch
new file mode 100644
index 000000000000..c456c1384818
--- /dev/null
+++ b/dev-debug/pwndbg/files/pwndbg-20250418-no-docs.patch
@@ -0,0 +1,22 @@
+commit 73685a31c372d44ea90f44cdddeea23d135f1c67
+Author: Mario Haustein <mario.haustein@hrz.tu-chemnitz.de>
+Date: Sun May 11 16:25:56 2025 +0200
+Upstream: https://github.com/pwndbg/pwndbg/pull/2973
+Bug: https://bugs.gentoo.org/954386
+
+ Don't install `docs/` directory into site packages directory
+
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -126,9 +126,11 @@ builtins-ignorelist = [
+
+ [tool.hatch.build.targets.sdist]
+ include = ["pwndbg"]
++exclude = ["docs"]
+
+ [tool.hatch.build.targets.wheel]
+ include = ["pwndbg"]
++exclude = ["docs"]
+
+ [build-system]
+ requires = ["hatchling"]
diff --git a/dev-debug/pwndbg/metadata.xml b/dev-debug/pwndbg/metadata.xml
new file mode 100644
index 000000000000..63265e38136e
--- /dev/null
+++ b/dev-debug/pwndbg/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>mario.haustein@hrz.tu-chemnitz.de</email>
+ <name>Mario Haustein</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>sam@gentoo.org</email>
+ <name>Sam James</name>
+ </maintainer>
+ <longdescription>
+ pwndbg is a GDB plug-in that makes debugging with GDB suck less, with a
+ focus on features needed by low-level software developers, hardware
+ hackers, reverse-engineers and exploit developers.
+ </longdescription>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/pwndbg/pwndbg-20250418-r1.ebuild b/dev-debug/pwndbg/pwndbg-20250418-r1.ebuild
new file mode 100644
index 000000000000..6d1a95f91eef
--- /dev/null
+++ b/dev-debug/pwndbg/pwndbg-20250418-r1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+DISTUTILS_SINGLE_IMPL=1
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 wrapper
+
+DESCRIPTION="A GDB plug-in that makes debugging with GDB suck less"
+HOMEPAGE="https://github.com/pwndbg/pwndbg"
+
+if [[ ${PV} == "99999999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pwndbg/pwndbg"
+else
+ MY_PV="${PV:0:4}.${PV:4:2}.${PV:6:2}"
+ SRC_URI="https://github.com/pwndbg/pwndbg/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="amd64 ~arm64 x86"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ ~dev-python/gdb-pt-dump-0.0.0_p20240401[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-libs/capstone-5.0.3[python,${PYTHON_USEDEP}]
+ >=dev-python/psutil-5.9.8[${PYTHON_USEDEP}]
+ >=dev-python/pycparser-2.22[${PYTHON_USEDEP}]
+ >=dev-python/pyelftools-0.29[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.18.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.32.3[${PYTHON_USEDEP}]
+ >=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
+ >=dev-util/pwntools-4.14.0[${PYTHON_USEDEP}]
+ >=dev-util/ROPgadget-7.3[${PYTHON_USEDEP}]
+ >=dev-util/unicorn-2.1.3[python,${PYTHON_USEDEP}]
+ ')
+"
+
+# Tests are architectur-specific (precompiled binaries)
+RESTRICT="test"
+
+PATCHES=(
+ "${FILESDIR}/${P}-no-docs.patch"
+)
+
+src_install() {
+ distutils-r1_src_install
+
+ insinto /usr/share/${PN}
+ doins gdbinit.py
+
+ # Signal pwndbg not to create it's own python venv (Bug #918705).
+ # See: https://github.com/pwndbg/pwndbg/commit/139b7542cd9567eaff32bd713df971b6ac5b81de
+ touch "${ED}/usr/share/${PN}/.skip-venv" || die
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ make_wrapper "pwndbg" \
+ "gdb -x \"${EPREFIX}/usr/share/${PN}/gdbinit.py\"" || die
+
+ dodoc {README,DEVELOPING,FEATURES}.md
+ dodoc -r docs
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ einfo "\nUsage:"
+ einfo " ~$ pwndbg <program>"
+ ewarn "\nWARNING!!!"
+ ewarn "Some pwndbg commands only works with libc debug symbols.\n"
+ ewarn "See also:"
+ ewarn " * https://github.com/pentoo/pentoo-overlay/issues/521#issuecomment-548975884"
+ ewarn " * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html"
+ ewarn " * https://wiki.gentoo.org/wiki/Debugging"
+ fi
+}
diff --git a/dev-debug/pwndbg/pwndbg-20250530-r3.ebuild b/dev-debug/pwndbg/pwndbg-20250530-r3.ebuild
new file mode 100644
index 000000000000..b2cfef919c06
--- /dev/null
+++ b/dev-debug/pwndbg/pwndbg-20250530-r3.ebuild
@@ -0,0 +1,81 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+DISTUTILS_SINGLE_IMPL=1
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1 wrapper
+
+DESCRIPTION="A GDB plug-in that makes debugging with GDB suck less"
+HOMEPAGE="https://github.com/pwndbg/pwndbg"
+
+if [[ ${PV} == "99999999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pwndbg/pwndbg"
+else
+ MY_PV="${PV:0:4}.${PV:4:2}.${PV:6:2}"
+ SRC_URI="https://github.com/pwndbg/pwndbg/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ ~dev-python/gdb-pt-dump-0.0.0_p20240401[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ ~dev-libs/capstone-6.0.0_alpha4[python,${PYTHON_USEDEP}]
+ >=dev-python/psutil-6.1.1[${PYTHON_USEDEP}]
+ >=dev-python/pycparser-2.22[${PYTHON_USEDEP}]
+ >=dev-python/pyelftools-0.29[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.18.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.32.3[${PYTHON_USEDEP}]
+ >=dev-python/rich-13.7.1[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.12.0[${PYTHON_USEDEP}]
+ >=dev-util/pwntools-4.14.0[${PYTHON_USEDEP}]
+ >=dev-util/ROPgadget-7.3[${PYTHON_USEDEP}]
+ >=dev-util/unicorn-2.1.3[python,${PYTHON_USEDEP}]
+ ')
+"
+
+# Tests are architectur-specific (precompiled binaries)
+RESTRICT="test"
+
+src_install() {
+ distutils-r1_src_install
+
+ insinto /usr/share/${PN}
+ doins gdbinit.py
+
+ # Signal pwndbg not to create it's own python venv (Bug #918705).
+ # See: https://github.com/pwndbg/pwndbg/commit/139b7542cd9567eaff32bd713df971b6ac5b81de
+ touch "${ED}/usr/share/${PN}/.skip-venv" || die
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ make_wrapper "pwndbg" \
+ "gdb -x \"${EPREFIX}/usr/share/${PN}/gdbinit.py\"" || die
+
+ dodoc README.md
+ dodoc -r docs
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ einfo "\nUsage:"
+ einfo " ~$ pwndbg <program>"
+ ewarn "\nWARNING!!!"
+ ewarn "Some pwndbg commands only works with libc debug symbols.\n"
+ ewarn "See also:"
+ ewarn " * https://github.com/pentoo/pentoo-overlay/issues/521#issuecomment-548975884"
+ ewarn " * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html"
+ ewarn " * https://wiki.gentoo.org/wiki/Debugging"
+ fi
+}
diff --git a/dev-debug/pwndbg/pwndbg-20251010-r3.ebuild b/dev-debug/pwndbg/pwndbg-20251010-r3.ebuild
new file mode 100644
index 000000000000..2767f63e6fdc
--- /dev/null
+++ b/dev-debug/pwndbg/pwndbg-20251010-r3.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+DISTUTILS_SINGLE_IMPL=1
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A GDB plug-in that makes debugging with GDB suck less"
+HOMEPAGE="https://github.com/pwndbg/pwndbg"
+
+if [[ ${PV} == "99999999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pwndbg/pwndbg"
+else
+ MY_PV="${PV:0:4}.${PV:4:2}.${PV:6:2}"
+ SRC_URI="https://github.com/pwndbg/pwndbg/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ ~dev-python/gdb-pt-dump-0.0.0_p20240401[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-libs/capstone-6.0.0_alpha5[python,${PYTHON_USEDEP}]
+ >=dev-python/psutil-7.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pycparser-2.23[${PYTHON_USEDEP}]
+ >=dev-python/pyelftools-0.32[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.19.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.32.5[${PYTHON_USEDEP}]
+ >=dev-python/rich-14.1.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.15.0[${PYTHON_USEDEP}]
+ >=dev-util/pwntools-4.14.1[${PYTHON_USEDEP}]
+ >=dev-util/ROPgadget-7.6[${PYTHON_USEDEP}]
+ >=dev-util/unicorn-2.1.4[python,${PYTHON_USEDEP}]
+ ')
+"
+
+# Tests are architectur-specific (precompiled binaries)
+RESTRICT="test"
+
+src_install() {
+ distutils-r1_src_install
+
+ insinto /usr/share/${PN}
+ doins gdbinit.py
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ dodoc README.md
+ dodoc -r docs
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ einfo "\nUsage:"
+ einfo " ~$ pwndbg <program>"
+ ewarn "\nWARNING!!!"
+ ewarn "Some pwndbg commands only works with libc debug symbols.\n"
+ ewarn "See also:"
+ ewarn " * https://github.com/pentoo/pentoo-overlay/issues/521#issuecomment-548975884"
+ ewarn " * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html"
+ ewarn " * https://wiki.gentoo.org/wiki/Debugging"
+ fi
+}
diff --git a/dev-debug/pwndbg/pwndbg-20251020-r3.ebuild b/dev-debug/pwndbg/pwndbg-20251020-r3.ebuild
new file mode 100644
index 000000000000..2767f63e6fdc
--- /dev/null
+++ b/dev-debug/pwndbg/pwndbg-20251020-r3.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+DISTUTILS_SINGLE_IMPL=1
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A GDB plug-in that makes debugging with GDB suck less"
+HOMEPAGE="https://github.com/pwndbg/pwndbg"
+
+if [[ ${PV} == "99999999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pwndbg/pwndbg"
+else
+ MY_PV="${PV:0:4}.${PV:4:2}.${PV:6:2}"
+ SRC_URI="https://github.com/pwndbg/pwndbg/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ ~dev-python/gdb-pt-dump-0.0.0_p20240401[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-libs/capstone-6.0.0_alpha5[python,${PYTHON_USEDEP}]
+ >=dev-python/psutil-7.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pycparser-2.23[${PYTHON_USEDEP}]
+ >=dev-python/pyelftools-0.32[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.19.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.32.5[${PYTHON_USEDEP}]
+ >=dev-python/rich-14.1.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.15.0[${PYTHON_USEDEP}]
+ >=dev-util/pwntools-4.14.1[${PYTHON_USEDEP}]
+ >=dev-util/ROPgadget-7.6[${PYTHON_USEDEP}]
+ >=dev-util/unicorn-2.1.4[python,${PYTHON_USEDEP}]
+ ')
+"
+
+# Tests are architectur-specific (precompiled binaries)
+RESTRICT="test"
+
+src_install() {
+ distutils-r1_src_install
+
+ insinto /usr/share/${PN}
+ doins gdbinit.py
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ dodoc README.md
+ dodoc -r docs
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ einfo "\nUsage:"
+ einfo " ~$ pwndbg <program>"
+ ewarn "\nWARNING!!!"
+ ewarn "Some pwndbg commands only works with libc debug symbols.\n"
+ ewarn "See also:"
+ ewarn " * https://github.com/pentoo/pentoo-overlay/issues/521#issuecomment-548975884"
+ ewarn " * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html"
+ ewarn " * https://wiki.gentoo.org/wiki/Debugging"
+ fi
+}
diff --git a/dev-debug/pwndbg/pwndbg-99999999.ebuild b/dev-debug/pwndbg/pwndbg-99999999.ebuild
new file mode 100644
index 000000000000..2767f63e6fdc
--- /dev/null
+++ b/dev-debug/pwndbg/pwndbg-99999999.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+DISTUTILS_SINGLE_IMPL=1
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit distutils-r1
+
+DESCRIPTION="A GDB plug-in that makes debugging with GDB suck less"
+HOMEPAGE="https://github.com/pwndbg/pwndbg"
+
+if [[ ${PV} == "99999999" ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/pwndbg/pwndbg"
+else
+ MY_PV="${PV:0:4}.${PV:4:2}.${PV:6:2}"
+ SRC_URI="https://github.com/pwndbg/pwndbg/archive/${MY_PV}.tar.gz -> ${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+ S="${WORKDIR}/${PN}-${MY_PV}"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+
+RDEPEND="
+ dev-debug/gdb[python,${PYTHON_SINGLE_USEDEP}]
+ ~dev-python/gdb-pt-dump-0.0.0_p20240401[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-libs/capstone-6.0.0_alpha5[python,${PYTHON_USEDEP}]
+ >=dev-python/psutil-7.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pycparser-2.23[${PYTHON_USEDEP}]
+ >=dev-python/pyelftools-0.32[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.19.2[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.32.5[${PYTHON_USEDEP}]
+ >=dev-python/rich-14.1.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.15.0[${PYTHON_USEDEP}]
+ >=dev-util/pwntools-4.14.1[${PYTHON_USEDEP}]
+ >=dev-util/ROPgadget-7.6[${PYTHON_USEDEP}]
+ >=dev-util/unicorn-2.1.4[python,${PYTHON_USEDEP}]
+ ')
+"
+
+# Tests are architectur-specific (precompiled binaries)
+RESTRICT="test"
+
+src_install() {
+ distutils-r1_src_install
+
+ insinto /usr/share/${PN}
+ doins gdbinit.py
+
+ python_optimize "${ED}"/usr/share/${PN}
+
+ dodoc README.md
+ dodoc -r docs
+}
+
+pkg_postinst() {
+ if [[ -z "${REPLACING_VERSIONS}" ]]; then
+ einfo "\nUsage:"
+ einfo " ~$ pwndbg <program>"
+ ewarn "\nWARNING!!!"
+ ewarn "Some pwndbg commands only works with libc debug symbols.\n"
+ ewarn "See also:"
+ ewarn " * https://github.com/pentoo/pentoo-overlay/issues/521#issuecomment-548975884"
+ ewarn " * https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html"
+ ewarn " * https://wiki.gentoo.org/wiki/Debugging"
+ fi
+}
diff --git a/dev-debug/rr/Manifest b/dev-debug/rr/Manifest
new file mode 100644
index 000000000000..6358f318d756
--- /dev/null
+++ b/dev-debug/rr/Manifest
@@ -0,0 +1 @@
+DIST mozilla-rr-5.9.0.tar.gz 1801696 BLAKE2B b87d0a33201a513a692e8deb20ada38f235ce7a3e41dd806d0dba9a1a73f2c3dbf71d7f95b7cb0b284c7e38a4a19ea58f9ddef31d2e9b92efc686b24a8e551e7 SHA512 796d9b0b64e3993dfc14cf488e5e598b1de4828da415b1f97435598d62c1c133fc268d7838601275a00f59f05bf53d0bb796380418f4cb6cdfdda2c50207f996
diff --git a/dev-debug/rr/files/rr-5.7.0-no-force-lto.patch b/dev-debug/rr/files/rr-5.7.0-no-force-lto.patch
new file mode 100644
index 000000000000..f9665f435f4c
--- /dev/null
+++ b/dev-debug/rr/files/rr-5.7.0-no-force-lto.patch
@@ -0,0 +1,23 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -118,7 +118,6 @@ if(LOWERCASE_CMAKE_BUILD_TYPE STREQUAL "debug")
+ set(RR_FLAGS "${RR_FLAGS_DEBUG} -g3 ")
+ elseif(LOWERCASE_CMAKE_BUILD_TYPE STREQUAL "release")
+ # CMake itself will add optimization flags
+- set(RR_FLAGS "${RR_FLAGS_RELEASE} -g3 -flto")
+ endif()
+
+ set(LINKER_FLAGS "")
+@@ -675,12 +674,6 @@ endif()
+
+ # Add -flto option to linking step if release
+ if(LOWERCASE_CMAKE_BUILD_TYPE STREQUAL "release")
+- CHECK_C_COMPILER_FLAG("-flto=auto" SUPPORTS_LTO_AUTO)
+- if(SUPPORTS_LTO_AUTO)
+- set(RR_MAIN_LINKER_FLAGS "${RR_MAIN_LINKER_FLAGS} -flto=auto")
+- else()
+- set(RR_MAIN_LINKER_FLAGS "${RR_MAIN_LINKER_FLAGS} -flto")
+- endif()
+ endif()
+
+ if(LIBRT)
diff --git a/dev-debug/rr/files/rr-5.9.0-glibc-2.42-termio.patch b/dev-debug/rr/files/rr-5.9.0-glibc-2.42-termio.patch
new file mode 100644
index 000000000000..adad86158e98
--- /dev/null
+++ b/dev-debug/rr/files/rr-5.9.0-glibc-2.42-termio.patch
@@ -0,0 +1,20 @@
+https://github.com/rr-debugger/rr/commit/6251648873b9e1ed23536beebbaa5d6fead3d5be
+
+From 6251648873b9e1ed23536beebbaa5d6fead3d5be Mon Sep 17 00:00:00 2001
+From: Robert O'Callahan <robert@ocallahan.org>
+Date: Tue, 29 Jul 2025 23:05:21 +1200
+Subject: [PATCH] Stop checking struct sizes against glibc `termio` since that
+ has been removed.
+
+Resolves #3995.
+--- a/src/kernel_abi.h
++++ b/src/kernel_abi.h
+@@ -750,7 +750,6 @@ struct BaseArch : public wordsize,
+ unsigned char c_line;
+ unsigned char c_cc[8];
+ };
+- RR_VERIFY_TYPE(termio);
+
+ struct seccomp_notif_sizes {
+ uint16_t seccomp_notif;
+
diff --git a/dev-debug/rr/files/rr-5.9.0-zen-workaround-service.patch b/dev-debug/rr/files/rr-5.9.0-zen-workaround-service.patch
new file mode 100644
index 000000000000..b0b90a317092
--- /dev/null
+++ b/dev-debug/rr/files/rr-5.9.0-zen-workaround-service.patch
@@ -0,0 +1,14 @@
+We install zen_workaround.py as rr-zen_workaround.py.
+--- a/scripts/zen_workaround.service
++++ b/scripts/zen_workaround.service
+@@ -15,8 +15,8 @@
+ Description = Startup script for rr zen workaround
+
+ [Service]
+-# Step to actually run `zen_workaround.py`.
+-ExecStart =+/usr/share/zen_workaround/zen_workaround.py
++# Step to actually run `rr-zen_workaround.py`.
++ExecStart =+rr-zen_workaround.py
+
+ # Only run this once, report it as "(active)" even after we've exited.
+ Type = oneshot
diff --git a/dev-debug/rr/metadata.xml b/dev-debug/rr/metadata.xml
new file mode 100644
index 000000000000..e460adeab06d
--- /dev/null
+++ b/dev-debug/rr/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>toolchain@gentoo.org</email>
+ <name>Gentoo Toolchain Project</name>
+ </maintainer>
+ <maintainer type="person">
+ <email>lu_zero@gentoo.org</email>
+ <name>Luca Barbato</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/rr/rr-5.9.0-r1.ebuild b/dev-debug/rr/rr-5.9.0-r1.ebuild
new file mode 100644
index 000000000000..eb1d270295ca
--- /dev/null
+++ b/dev-debug/rr/rr-5.9.0-r1.ebuild
@@ -0,0 +1,112 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+CMAKE_BUILD_TYPE=Release
+
+inherit cmake linux-info python-single-r1 systemd
+
+DESCRIPTION="Record and Replay Framework"
+HOMEPAGE="https://rr-project.org/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/rr-debugger/rr"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/rr-debugger/${PN}/archive/${PV}.tar.gz -> mozilla-${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+fi
+
+# rr itself is MIT and BSD-2, but there's various bits under third-party too.
+LICENSE="MIT BSD-2 GPL-2 ZLIB"
+SLOT="0"
+IUSE="multilib test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="
+ ${PYTHON_DEPS}
+ app-arch/zstd:=
+ dev-libs/capnproto:=
+ virtual/zlib:=
+"
+RDEPEND="
+ ${DEPEND}
+ dev-debug/gdb[xml]
+"
+# Add all the deps needed only at build/test time.
+DEPEND+="
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ ')
+ dev-debug/gdb[xml]
+ )"
+
+QA_FLAGS_IGNORED="
+ usr/lib.*/rr/librrpage.so
+ usr/lib.*/rr/librrpage_32.so
+"
+
+RESTRICT="test" # toolchain and kernel version dependent
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-5.7.0-no-force-lto.patch
+ "${FILESDIR}"/${PN}-5.9.0-zen-workaround-service.patch
+ "${FILESDIR}"/${PN}-5.9.0-glibc-2.42-termio.patch
+)
+
+pkg_setup() {
+ if use kernel_linux; then
+ CONFIG_CHECK="SECCOMP"
+
+ if use amd64 ; then
+ CONFIG_CHECK+=" ~X86_MSR"
+ WARNING_X86_MSR="X86_MSR is needed for rr-zen_workaround.py (AMD Zen CPUs)"
+ fi
+
+ linux-info_pkg_setup
+ fi
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -i 's:-Werror::' CMakeLists.txt || die # bug #609192
+}
+
+src_test() {
+ if has usersandbox ${FEATURES} ; then
+ ewarn "Test suite fails under FEATURES=usersandbox (bug #632394). Skipping."
+ return 0
+ fi
+
+ cmake_src_test
+}
+
+src_configure() {
+ local mycmakeargs=(
+ # TODO: Could wire up bpf but USE=bpf feels wrong for that
+ # as only introduced in 5.9.0 (e7d9e8fd023461feb01f5d2c7936fcf07df8ce05) which
+ # says it's not "suitable for wide use at this point".
+ -DBUILD_TESTS=$(usex test)
+ -Ddisable32bit=$(usex !multilib) # bug #636786
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ # Upstream's CMake avoids stripping librrpreload at least, and
+ # Fedora avoids stripping all libraries. Treat it like Valgrind
+ # and play it safe.
+ dostrip -x "/usr/$(get_libdir)/rr"
+
+ python_fix_shebang "${ED}"/usr/bin/rr-collect-symbols.py
+ python_newscript scripts/zen_workaround.py rr-zen_workaround.py
+ systemd_newunit scripts/zen_workaround.service rr-zen_workaround.service
+}
diff --git a/dev-debug/rr/rr-9999.ebuild b/dev-debug/rr/rr-9999.ebuild
new file mode 100644
index 000000000000..da4d43687437
--- /dev/null
+++ b/dev-debug/rr/rr-9999.ebuild
@@ -0,0 +1,111 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+CMAKE_BUILD_TYPE=Release
+
+inherit cmake linux-info python-single-r1 systemd
+
+DESCRIPTION="Record and Replay Framework"
+HOMEPAGE="https://rr-project.org/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/rr-debugger/rr"
+ inherit git-r3
+else
+ SRC_URI="https://github.com/rr-debugger/${PN}/archive/${PV}.tar.gz -> mozilla-${P}.tar.gz"
+ KEYWORDS="~amd64 ~arm64 ~x86"
+fi
+
+# rr itself is MIT and BSD-2, but there's various bits under third-party too.
+LICENSE="MIT BSD-2 GPL-2 ZLIB"
+SLOT="0"
+IUSE="multilib test"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="
+ ${PYTHON_DEPS}
+ app-arch/zstd:=
+ dev-libs/capnproto:=
+ virtual/zlib:=
+"
+RDEPEND="
+ ${DEPEND}
+ dev-debug/gdb[xml]
+"
+# Add all the deps needed only at build/test time.
+DEPEND+="
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ ')
+ dev-debug/gdb[xml]
+ )"
+
+QA_FLAGS_IGNORED="
+ usr/lib.*/rr/librrpage.so
+ usr/lib.*/rr/librrpage_32.so
+"
+
+RESTRICT="test" # toolchain and kernel version dependent
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-5.7.0-no-force-lto.patch
+ "${FILESDIR}"/${PN}-5.9.0-zen-workaround-service.patch
+)
+
+pkg_setup() {
+ if use kernel_linux; then
+ CONFIG_CHECK="SECCOMP"
+
+ if use amd64 ; then
+ CONFIG_CHECK+=" ~X86_MSR"
+ WARNING_X86_MSR="X86_MSR is needed for rr-zen_workaround.py (AMD Zen CPUs)"
+ fi
+
+ linux-info_pkg_setup
+ fi
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ cmake_src_prepare
+
+ sed -i 's:-Werror::' CMakeLists.txt || die # bug #609192
+}
+
+src_test() {
+ if has usersandbox ${FEATURES} ; then
+ ewarn "Test suite fails under FEATURES=usersandbox (bug #632394). Skipping."
+ return 0
+ fi
+
+ cmake_src_test
+}
+
+src_configure() {
+ local mycmakeargs=(
+ # TODO: Could wire up bpf but USE=bpf feels wrong for that
+ # as only introduced in 5.9.0 (e7d9e8fd023461feb01f5d2c7936fcf07df8ce05) which
+ # says it's not "suitable for wide use at this point".
+ -DBUILD_TESTS=$(usex test)
+ -Ddisable32bit=$(usex !multilib) # bug #636786
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ # Upstream's CMake avoids stripping librrpreload at least, and
+ # Fedora avoids stripping all libraries. Treat it like Valgrind
+ # and play it safe.
+ dostrip -x "/usr/$(get_libdir)/rr"
+
+ python_fix_shebang "${ED}"/usr/bin/rr-collect-symbols.py
+ python_newscript scripts/zen_workaround.py rr-zen_workaround.py
+ systemd_newunit scripts/zen_workaround.service rr-zen_workaround.service
+}
diff --git a/dev-debug/scap-driver/Manifest b/dev-debug/scap-driver/Manifest
new file mode 100644
index 000000000000..84c27ad4f85d
--- /dev/null
+++ b/dev-debug/scap-driver/Manifest
@@ -0,0 +1 @@
+DIST falcosecurity-libs-0.20.0.tar.gz 4545190 BLAKE2B 93a074ab6451c16c7ad58498ac580f0476339e7dee65112e56142307f79966c43b69c71234a784aff03f47ec2e37e838e797beb4b36e9c105db88cf32cad135e SHA512 b5ef481bda92a29b7b409baee25dabd0b766e4bbcac762740635f99b36cd823a6d98f541817fd03b1a86a1385d3fe24888b33b84dc3486cd9f8d00e5384eb705
diff --git a/dev-debug/scap-driver/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch b/dev-debug/scap-driver/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch
new file mode 100644
index 000000000000..f0c16d176d12
--- /dev/null
+++ b/dev-debug/scap-driver/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch
@@ -0,0 +1,39 @@
+Patch from:
+https://github.com/falcosecurity/libs/commit/7f01ec89c565fcb45ade833b1312ae69637bc4ec
+
+From: Federico Di Pierro <nierro92@gmail.com>
+Date: Fri, 28 Mar 2025 08:35:23 +0100
+Subject: [PATCH] fix(driver): fix driver and bpf makefile for linux 6.13.
+
+Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
+---
+ driver/Makefile.in | 2 +-
+ driver/bpf/Makefile | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/driver/Makefile.in b/driver/Makefile.in
+index 7b1fdc2dba..ec60103d0d 100644
+--- a/driver/Makefile.in
++++ b/driver/Makefile.in
+@@ -29,7 +29,7 @@ install: all
+
+ else
+
+-KERNELDIR ?= $(CURDIR)
++KERNELDIR ?= $(realpath $(objtree))
+ #
+ # Get the path of the module sources
+ #
+diff --git a/driver/bpf/Makefile b/driver/bpf/Makefile
+index 58d1b11165..c94647c608 100644
+--- a/driver/bpf/Makefile
++++ b/driver/bpf/Makefile
+@@ -28,7 +28,7 @@ clean:
+
+ else
+
+-KERNELDIR ?= $(CURDIR)
++KERNELDIR ?= $(realpath $(objtree))
+ #
+ # Get the path of the module sources
+ #
diff --git a/dev-debug/scap-driver/files/libs-0.20.0-properly-use-LD.patch b/dev-debug/scap-driver/files/libs-0.20.0-properly-use-LD.patch
new file mode 100644
index 000000000000..79aad2c91cf9
--- /dev/null
+++ b/dev-debug/scap-driver/files/libs-0.20.0-properly-use-LD.patch
@@ -0,0 +1,24 @@
+Properly use an injected LD for linking. This is necessary for kernels
+built with clang & LTO, otherwise the configuration tests fall back to
+using ld.bfd and fail to build with: "ld: unrecognised emulation mode: llvm".
+Bug: https://bugs.gentoo.org/968857
+
+--- libs-0.20.0/driver/configure/Makefile.inc.in
++++ libs-0.20.0/driver/configure/Makefile.inc.in
+@@ -3,7 +3,7 @@ MODULE_MAKEFILE_DIR := $(shell dirname $
+ # Run the module build.sh (wrapper for make) script with an empty environment,
+ # but pass PATH, KERNELDIR and eventually (if set) CC and KBUILD_MODPOST_WARN.
+ # The latter ones are used by driverkit build templates.
+-HAS_@CONFIGURE_MODULE@ := $(shell env -i CC="$(CC)" KBUILD_MODPOST_WARN="$(KBUILD_MODPOST_WARN)" PATH="$(PATH)" KERNELDIR="$(KERNELDIR)" sh $(MODULE_MAKEFILE_DIR)/build.sh ; echo $$?)
++HAS_@CONFIGURE_MODULE@ := $(shell env -i CC="$(CC)" LD="$(LD)" KBUILD_MODPOST_WARN="$(KBUILD_MODPOST_WARN)" PATH="$(PATH)" KERNELDIR="$(KERNELDIR)" sh $(MODULE_MAKEFILE_DIR)/build.sh ; echo $$?)
+
+ ifeq ($(HAS_@CONFIGURE_MODULE@),0)
+ $(info [configure-kmod] Setting HAS_@CONFIGURE_MODULE@ flag)
+--- libs-0.20.0/driver/configure/build.sh
++++ libs-0.20.0/driver/configure/build.sh
+@@ -10,4 +10,4 @@
+ SCRIPT=$(readlink -f "$0")
+ SCRIPT_DIR=$(dirname ${SCRIPT})
+
+-make CC="${CC}" -C ${SCRIPT_DIR} > ${SCRIPT_DIR}/build.log 2>&1
++make CC="${CC}" "${LD}" -C ${SCRIPT_DIR} > ${SCRIPT_DIR}/build.log 2>&1
diff --git a/dev-debug/scap-driver/metadata.xml b/dev-debug/scap-driver/metadata.xml
new file mode 100644
index 000000000000..f76957f1a8a7
--- /dev/null
+++ b/dev-debug/scap-driver/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>holger@applied-asynchrony.com</email>
+ <name>Holger Hoffstätte</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/scap-driver/scap-driver-0.20.0.ebuild b/dev-debug/scap-driver/scap-driver-0.20.0.ebuild
new file mode 100644
index 000000000000..444172b824d1
--- /dev/null
+++ b/dev-debug/scap-driver/scap-driver-0.20.0.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake linux-mod-r1
+
+DESCRIPTION="Kernel module for dev-debug/sysdig"
+HOMEPAGE="https://www.sysdig.com/"
+SRC_URI="https://github.com/falcosecurity/libs/archive/${PV}.tar.gz -> falcosecurity-libs-${PV}.tar.gz"
+S="${WORKDIR}/libs-${PV}"
+
+LICENSE="Apache-2.0 GPL-2 MIT"
+SLOT="0"
+KEYWORDS="amd64 ~arm64 ~x86"
+
+BDEPEND="
+ dev-libs/uthash
+ virtual/zlib:=
+ virtual/libelf:=
+"
+
+CONFIG_CHECK="HAVE_SYSCALL_TRACEPOINTS ~TRACEPOINTS"
+
+# We need to specify the driver version manually since we do not use a git tree.
+# This version can be found as git tag on the same commit as the libs version.
+DRIVER_VERSION="8.0.0+driver"
+
+PATCHES=(
+ "${FILESDIR}"/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch
+ "${FILESDIR}"/libs-0.20.0-properly-use-LD.patch
+)
+
+src_configure() {
+ local mycmakeargs=(
+ # we will use linux-mod, so in order to make it through the cmake setup
+ # just pretend to use bundled deps and then override only what we need.
+ -DUSE_BUNDLED_DEPS=ON
+ -DUSE_BUNDLED_LIBELF=OFF
+ -DUSE_BUNDLED_UTHASH=OFF
+ -DUSE_BUNDLED_ZLIB=OFF
+ -DCREATE_TEST_TARGETS=OFF
+ -DDRIVER_VERSION="${DRIVER_VERSION}"
+ )
+
+ cmake_src_configure
+}
+
+src_compile() {
+ local modlist=( scap=:"${BUILD_DIR}"/driver/src )
+ local modargs=( KERNELDIR="${KV_OUT_DIR}" )
+
+ linux-mod-r1_src_compile
+}
diff --git a/dev-debug/strace/Manifest b/dev-debug/strace/Manifest
new file mode 100644
index 000000000000..412bec54bd26
--- /dev/null
+++ b/dev-debug/strace/Manifest
@@ -0,0 +1,4 @@
+DIST strace-6.19.tar.xz 2743524 BLAKE2B f46ff7788bfebef06af467cac1554fa2bfdb44397f635f04bd039ad6cf8b2339eece99a4d9cbfa2c747eb243a750e6efa446d550a83a2746c178e6a4857270db SHA512 d8088eef80f8007e0cae0e0a342cd171447cade8e2433f55b2592b33c704e4dcb5016c00104e536e858cf7d5ea5d2e4320073a2691b0bfb1a7ff87d932fac197
+DIST strace-6.19.tar.xz.asc 833 BLAKE2B e79d60b763e813d09cf1062b62edaa3be8c4b012d2d6b5c80b4b3de6fa97fd5d47ab6ff25ab232534d3dafddd709e63d7ca2eb6a140b4e95b48e753e66e23834 SHA512 953bd7819692d39f3fc71cc98600c4fdf3aa1ea4ba847a0d6d66cf5f83825e2f5e3424b172d62b91505ee80d85a732f226356692f02cc25f4c6905d0a6ee5990
+DIST strace-7.0.tar.xz 2764808 BLAKE2B dbf95b95742e274350955fc5e59f6c3f05ca8e029e5ecdd823dbe5ae4a1c8a971d115838e122d6a3d05cd7e017f7c6891776ce26821370ac9adc1e90bc8fd9fc SHA512 52a2d1a32caf622cdd7bb471b9e215bbb1ed33c9dd2afc1bb2d4bc69b68c01e6850223753ec7fbade33d33537268632a30cd15ffad37c7eb63e803e47a2fe020
+DIST strace-7.0.tar.xz.asc 833 BLAKE2B 048782b2235f9f3007b3cef2565e794cefa58fdb0d5e576e38692f442e1c5656599beb7130fb6010a83c46bad90a7f5a6085966877a91a214f1b8ff28c326d90 SHA512 c003187bf2f6f068de200af2e23000998edd07cc10774d88b2d659419d08464b997b5ad141e858adcf47f236decdddd2e7cf1d0e383e5586b8c8bee280c2dc17
diff --git a/dev-debug/strace/files/strace-6.5-static.patch b/dev-debug/strace/files/strace-6.5-static.patch
new file mode 100644
index 000000000000..67e4b05ca856
--- /dev/null
+++ b/dev-debug/strace/files/strace-6.5-static.patch
@@ -0,0 +1,178 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -54,6 +54,15 @@ AC_SUBST([STRACE_MANPAGE_DATE], [strace_manpage_date])
+ AC_DEFINE([SLM_MANPAGE_DATE], "[slm_manpage_date]", [Date])
+ AC_SUBST([SLM_MANPAGE_DATE], [slm_manpage_date])
+
++AC_ARG_ENABLE([static],
++ [AS_HELP_STRING([--enable-static],
++ [link strace statically])],
++ [], [enable_static=no])
++if test "$enable_static" = "yes"; then
++ # Add -pthread since strace wants -lrt for timer_create, and -lrt uses -lpthread.
++ LDFLAGS="$LDFLAGS -pthread -static"
++fi
++
+ AC_C_BIGENDIAN
+
+ dnl arch-specific default for --enable-gcc-Werror
+--- a/m4/st_libdw.m4
++++ b/m4/st_libdw.m4
+@@ -8,7 +8,6 @@
+ AC_DEFUN([st_ARG_LIBDW], [dnl
+
+ : ${libdw_CPPFLAGS=}
+-: ${libdw_CFLAGS=}
+ : ${libdw_LDFLAGS=}
+ : ${libdw_LIBS=}
+
+@@ -34,48 +33,14 @@ AC_DEFUN([st_LIBDW], [dnl
+ have_libdw=
+
+ AS_IF([test "x$with_libdw" != xno && test "x$use_unwinder" = x],
+- [saved_CPPFLAGS="$CPPFLAGS"
+- saved_CFLAGS="$CFLAGS"
+- CPPFLAGS="$CPPFLAGS $libdw_CPPFLAGS"
+- CFLAGS="$CFLAGS $libdw_CFLAGS"
+-
+- AC_CHECK_HEADERS([elfutils/libdwfl.h],
+- [AC_CHECK_LIB([dw], [dwfl_linux_proc_attach],
+- [libdw_LIBS="-ldw $libdw_LIBS"
+- AC_CACHE_CHECK([for elfutils version],
+- [st_cv_ELFUTILS_VERSION],
+- [[st_cv_ELFUTILS_VERSION="$(echo _ELFUTILS_VERSION |
+- $CPP $CPPFLAGS -P -imacros elfutils/version.h - |
+- grep '^[0-9]')"
+- test -n "$st_cv_ELFUTILS_VERSION" ||
+- st_cv_ELFUTILS_VERSION=0
+- ]]
+- )
+- AS_IF([test "$st_cv_ELFUTILS_VERSION" -ge 164],
+- [have_libdw=yes],
+- [AS_IF([test "x$with_libdw" = xyes],
+- [AC_MSG_ERROR([elfutils version >= 164 is required for stack tracing support])],
+- [AC_MSG_WARN([elfutils version >= 164 is required for stack tracing support])]
+- )
+- ]
+- )
+- ],
+- [AS_IF([test "x$with_libdw" = xyes],
+- [AC_MSG_FAILURE([failed to find dwfl_linux_proc_attach in libdw])],
+- )
+- ],
+- [$libdw_LDFLAGS $libdw_LIBS]
+- )
+- ],
+- [AS_IF([test "x$with_libdw" = xyes],
+- [AC_MSG_FAILURE([failed to find elfutils/libdwfl.h])]
+- )
+- ]
+- )
+-
+- CFLAGS="$saved_CFLAGS"
+- CPPFLAGS="$saved_CPPFLAGS"
+- ]
++ [if test "$enable_static" = "yes"; then
++ PKG_CHECK_MODULES_STATIC([LIBDW], [libdw >= 0.164])
++ else
++ PKG_CHECK_MODULES([LIBDW], [libdw >= 0.164])
++ fi
++ have_libdw=yes
++ libdw_CPPFLAGS="$LIBDW_CFLAGS"
++ libdw_LIBS="$LIBDW_LIBS"]
+ )
+
+ AS_IF([test "x$have_libdw" = xyes],
+@@ -84,7 +49,6 @@ AS_IF([test "x$have_libdw" = xyes],
+ [Whether to use libdw for stack tracing]
+ )
+ AC_SUBST(libdw_CPPFLAGS)
+- AC_SUBST(libdw_CFLAGS)
+ AC_SUBST(libdw_LDFLAGS)
+ AC_SUBST(libdw_LIBS)
+ ]
+--- a/m4/st_libunwind.m4
++++ b/m4/st_libunwind.m4
+@@ -28,64 +28,14 @@ AC_ARG_WITH([libunwind],
+ AC_DEFUN([st_LIBUNWIND], [dnl
+
+ AS_IF([test "x$with_libunwind" != xno && test "x$use_unwinder" = x],
+- [saved_CPPFLAGS="$CPPFLAGS"
+- CPPFLAGS="$CPPFLAGS $libunwind_CPPFLAGS"
+-
+- AC_CHECK_HEADERS([libunwind-ptrace.h],
+- [saved_LDFLAGS="$LDFLAGS"
+- LDFLAGS="$LDFLAGS $libunwind_LDFLAGS"
+-
+- AC_CHECK_LIB([unwind], [backtrace],
+- [libunwind_LIBS="-lunwind $libunwind_LIBS"
+-
+- AC_MSG_CHECKING([for unw_create_addr_space in libunwind-generic])
+- saved_LIBS="$LIBS"
+- LIBS="-lunwind-generic $libunwind_LIBS $LIBS"
+-
+- AC_LINK_IFELSE(
+- [AC_LANG_PROGRAM([[#include <libunwind-ptrace.h>]],
+- [[return !unw_create_addr_space(0, 0)]])
+- ],
+- [AC_MSG_RESULT([yes])
+- libunwind_LIBS="-lunwind-generic $libunwind_LIBS"
+-
+- AC_CHECK_LIB([unwind-ptrace], [_UPT_create],
+- [libunwind_LIBS="-lunwind-ptrace $libunwind_LIBS"
+- use_unwinder=libunwind
+- ],
+- [if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find _UPT_create in libunwind-ptrace])
+- fi
+- ],
+- [$libunwind_LIBS]
+- )
+- ],
+- [AC_MSG_RESULT([no])
+- if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find unw_create_addr_space in libunwind-generic])
+- fi
+- ]
+- )
+-
+- LIBS="$saved_LIBS"
+- ],
+- [if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find libunwind])
+- fi
+- ],
+- [$libunwind_LIBS]
+- )
+-
+- LDFLAGS="$saved_LDFLAGS"
+- ],
+- [if test "x$with_libunwind" != xcheck; then
+- AC_MSG_FAILURE([failed to find libunwind-ptrace.h])
+- fi
+- ]
+- )
+-
+- CPPFLAGS="$saved_CPPFLAGS"
+- ]
++ [if test "$enable_static" = "yes"; then
++ PKG_CHECK_MODULES_STATIC([LIBUNWIND], [libunwind libunwind-generic libunwind-ptrace])
++ else
++ PKG_CHECK_MODULES([LIBUNWIND], [libunwind libunwind-generic libunwind-ptrace])
++ fi
++ use_unwinder="libunwind"
++ libunwind_CPPFLAGS="$LIBUNWIND_CFLAGS"
++ libunwind_LIBS="$LIBUNWIND_LIBS"]
+ )
+
+ if test "x$use_unwinder" = xlibunwind; then
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -417,7 +417,6 @@ libstrace_a_SOURCES += unwind.c unwind.h
+ if USE_LIBDW
+ libstrace_a_SOURCES += unwind-libdw.c
+ strace_CPPFLAGS += $(libdw_CPPFLAGS)
+-strace_CFLAGS += $(libdw_CFLAGS)
+ strace_LDFLAGS += $(libdw_LDFLAGS)
+ strace_LDADD += $(libdw_LIBS)
+ endif
diff --git a/dev-debug/strace/metadata.xml b/dev-debug/strace/metadata.xml
new file mode 100644
index 000000000000..a85d95d23552
--- /dev/null
+++ b/dev-debug/strace/metadata.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>base-system@gentoo.org</email>
+ <name>Gentoo Base System</name>
+ </maintainer>
+ <use>
+ <flag name="aio">
+ Enable <pkg>dev-libs/libaio</pkg> support for tracing Asynchronous I/O operations
+ </flag>
+ <flag name="elfutils">
+ Enable stack backtraces (-k flag) via <pkg>dev-libs/elfutils</pkg>
+ </flag>
+ <flag name="ncurses">
+ Make color support available via <pkg>sys-libs/ncurses</pkg>.
+ At runtime, if enabled, defaults to 'auto', but can be
+ disabled with --color never.
+ </flag>
+ <flag name="unwind">
+ Enable stack backtraces (-k flag) via <pkg>sys-libs/libunwind</pkg>
+ </flag>
+ </use>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:strace_project:strace</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/strace/strace-6.19.ebuild b/dev-debug/strace/strace-6.19.ebuild
new file mode 100644
index 000000000000..559d09c1bc4e
--- /dev/null
+++ b/dev-debug/strace/strace-6.19.ebuild
@@ -0,0 +1,120 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools edo flag-o-matic toolchain-funcs verify-sig
+
+DESCRIPTION="Useful diagnostic, instructional, and debugging tool"
+HOMEPAGE="https://strace.io/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/strace/strace.git"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz
+ verify-sig? ( https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz.asc )
+ "
+ KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+fi
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/strace.asc
+
+LICENSE="LGPL-2.1+ test? ( GPL-2+ )"
+SLOT="0"
+IUSE="aio perl selinux static test unwind elfutils"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="?? ( unwind elfutils )"
+
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( >=sec-keys/openpgp-keys-strace-20251130 )
+"
+LIB_DEPEND="
+ unwind? ( sys-libs/libunwind[static-libs(+)] )
+ elfutils? ( dev-libs/elfutils[static-libs(+)] )
+ selinux? ( sys-libs/libselinux[static-libs(+)] )
+"
+# strace only uses the header from libaio to decode structs
+DEPEND="
+ static? ( ${LIB_DEPEND} )
+ aio? ( >=dev-libs/libaio-0.3.106 )
+"
+RDEPEND="
+ !static? ( ${LIB_DEPEND//\[static-libs(+)]} )
+ perl? ( dev-lang/perl )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.5-static.patch"
+)
+
+src_prepare() {
+ default
+
+ if [[ ! -e configure ]] ; then
+ # git generation
+ sed /autoreconf/d -i bootstrap || die
+ edo ./bootstrap
+ [[ ! -e CREDITS ]] && cp CREDITS{.in,}
+ fi
+
+ eautoreconf
+
+ # Stub out the -k test since it's known to be flaky. bug #545812
+ sed -i '1iexit 77' tests*/strace-k.test || die
+}
+
+src_configure() {
+ # Set up the default build settings, and then use the names strace expects.
+ tc-export_build_env BUILD_{CC,CPP}
+ local v bv
+ for v in CC CPP {C,CPP,LD}FLAGS ; do
+ bv="BUILD_${v}"
+ export "${v}_FOR_BUILD=${!bv}"
+ done
+
+ filter-lfs-flags # configure handles this sanely
+
+ export ac_cv_header_libaio_h=$(usex aio)
+ use elibc_musl && export ac_cv_header_stdc=no
+
+ local myeconfargs=(
+ --disable-gcc-Werror
+
+ # Don't require mpers support on non-multilib systems. #649560
+ --enable-mpers=check
+
+ # We don't want to pin to exact linux-headers versions (bug #950309)
+ --enable-bundled=yes
+
+ $(use_enable static)
+ $(use_with unwind libunwind)
+ $(use_with elfutils libdw)
+ $(use_with selinux libselinux)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ if has usersandbox ${FEATURES} ; then
+ # bug #643044
+ ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..."
+ return 0
+ fi
+
+ default
+}
+
+src_install() {
+ default
+
+ if use perl ; then
+ exeinto /usr/bin
+ doexe src/strace-graph
+ fi
+
+ dodoc CREDITS
+}
diff --git a/dev-debug/strace/strace-7.0-r1.ebuild b/dev-debug/strace/strace-7.0-r1.ebuild
new file mode 100644
index 000000000000..81359e48de5f
--- /dev/null
+++ b/dev-debug/strace/strace-7.0-r1.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools edo flag-o-matic toolchain-funcs verify-sig
+
+DESCRIPTION="Useful diagnostic, instructional, and debugging tool"
+HOMEPAGE="https://strace.io/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/strace/strace.git"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz
+ verify-sig? ( https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz.asc )
+ "
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/strace.asc
+
+LICENSE="LGPL-2.1+ test? ( GPL-2+ )"
+SLOT="0"
+IUSE="aio ncurses perl selinux static test unwind elfutils"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="?? ( unwind elfutils )"
+
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( >=sec-keys/openpgp-keys-strace-20251130 )
+"
+STATIC_DEPEND="
+ elfutils? ( dev-libs/elfutils[static-libs(+)] )
+ ncurses? ( sys-libs/ncurses[static-libs(+)] )
+ selinux? ( sys-libs/libselinux[static-libs(+)] )
+ unwind? ( sys-libs/libunwind[static-libs(+)] )
+"
+LIB_DEPEND="
+ elfutils? ( dev-libs/elfutils )
+ ncurses? ( sys-libs/ncurses:= )
+ selinux? ( sys-libs/libselinux )
+ unwind? ( sys-libs/libunwind:= )
+"
+# strace only uses the header from libaio to decode structs
+DEPEND="
+ static? ( ${STATIC_DEPEND} )
+ !static? ( ${LIB_DEPEND} )
+ aio? ( >=dev-libs/libaio-0.3.106 )
+"
+RDEPEND="
+ !static? ( ${LIB_DEPEND} )
+ perl? ( dev-lang/perl )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.5-static.patch"
+)
+
+src_prepare() {
+ default
+
+ if [[ ! -e configure ]] ; then
+ # git generation
+ sed /autoreconf/d -i bootstrap || die
+ edo ./bootstrap
+ [[ ! -e CREDITS ]] && cp CREDITS{.in,}
+ fi
+
+ eautoreconf
+
+ # Stub out the -k test since it's known to be flaky. bug #545812
+ sed -i '1iexit 77' tests*/strace-k.test || die
+}
+
+src_configure() {
+ # Set up the default build settings, and then use the names strace expects.
+ tc-export_build_env BUILD_{CC,CPP}
+ local v bv
+ for v in CC CPP {C,CPP,LD}FLAGS ; do
+ bv="BUILD_${v}"
+ export "${v}_FOR_BUILD=${!bv}"
+ done
+
+ filter-lfs-flags # configure handles this sanely
+
+ export ac_cv_header_libaio_h=$(usex aio)
+ export ac_cv_header_termcap_h=$(usex ncurses)
+ use elibc_musl && export ac_cv_header_stdc=no
+
+ local myeconfargs=(
+ --disable-gcc-Werror
+
+ # Don't require mpers support on non-multilib systems. #649560
+ --enable-mpers=check
+
+ # We don't want to pin to exact linux-headers versions (bug #950309)
+ --enable-bundled=yes
+
+ $(use_enable static)
+ $(use_with unwind libunwind)
+ $(use_with elfutils libdw)
+ $(use_with selinux libselinux)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ if has usersandbox ${FEATURES} ; then
+ # bug #643044
+ ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..."
+ return 0
+ fi
+
+ default
+}
+
+src_install() {
+ default
+
+ if use perl ; then
+ exeinto /usr/bin
+ doexe src/strace-graph
+ fi
+
+ dodoc CREDITS
+}
diff --git a/dev-debug/strace/strace-9999.ebuild b/dev-debug/strace/strace-9999.ebuild
new file mode 100644
index 000000000000..81359e48de5f
--- /dev/null
+++ b/dev-debug/strace/strace-9999.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools edo flag-o-matic toolchain-funcs verify-sig
+
+DESCRIPTION="Useful diagnostic, instructional, and debugging tool"
+HOMEPAGE="https://strace.io/"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://github.com/strace/strace.git"
+ inherit git-r3
+else
+ SRC_URI="
+ https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz
+ verify-sig? ( https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.xz.asc )
+ "
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/strace.asc
+
+LICENSE="LGPL-2.1+ test? ( GPL-2+ )"
+SLOT="0"
+IUSE="aio ncurses perl selinux static test unwind elfutils"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="?? ( unwind elfutils )"
+
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( >=sec-keys/openpgp-keys-strace-20251130 )
+"
+STATIC_DEPEND="
+ elfutils? ( dev-libs/elfutils[static-libs(+)] )
+ ncurses? ( sys-libs/ncurses[static-libs(+)] )
+ selinux? ( sys-libs/libselinux[static-libs(+)] )
+ unwind? ( sys-libs/libunwind[static-libs(+)] )
+"
+LIB_DEPEND="
+ elfutils? ( dev-libs/elfutils )
+ ncurses? ( sys-libs/ncurses:= )
+ selinux? ( sys-libs/libselinux )
+ unwind? ( sys-libs/libunwind:= )
+"
+# strace only uses the header from libaio to decode structs
+DEPEND="
+ static? ( ${STATIC_DEPEND} )
+ !static? ( ${LIB_DEPEND} )
+ aio? ( >=dev-libs/libaio-0.3.106 )
+"
+RDEPEND="
+ !static? ( ${LIB_DEPEND} )
+ perl? ( dev-lang/perl )
+"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-6.5-static.patch"
+)
+
+src_prepare() {
+ default
+
+ if [[ ! -e configure ]] ; then
+ # git generation
+ sed /autoreconf/d -i bootstrap || die
+ edo ./bootstrap
+ [[ ! -e CREDITS ]] && cp CREDITS{.in,}
+ fi
+
+ eautoreconf
+
+ # Stub out the -k test since it's known to be flaky. bug #545812
+ sed -i '1iexit 77' tests*/strace-k.test || die
+}
+
+src_configure() {
+ # Set up the default build settings, and then use the names strace expects.
+ tc-export_build_env BUILD_{CC,CPP}
+ local v bv
+ for v in CC CPP {C,CPP,LD}FLAGS ; do
+ bv="BUILD_${v}"
+ export "${v}_FOR_BUILD=${!bv}"
+ done
+
+ filter-lfs-flags # configure handles this sanely
+
+ export ac_cv_header_libaio_h=$(usex aio)
+ export ac_cv_header_termcap_h=$(usex ncurses)
+ use elibc_musl && export ac_cv_header_stdc=no
+
+ local myeconfargs=(
+ --disable-gcc-Werror
+
+ # Don't require mpers support on non-multilib systems. #649560
+ --enable-mpers=check
+
+ # We don't want to pin to exact linux-headers versions (bug #950309)
+ --enable-bundled=yes
+
+ $(use_enable static)
+ $(use_with unwind libunwind)
+ $(use_with elfutils libdw)
+ $(use_with selinux libselinux)
+ )
+
+ econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ if has usersandbox ${FEATURES} ; then
+ # bug #643044
+ ewarn "Test suite is known to fail with FEATURES=usersandbox -- skipping ..."
+ return 0
+ fi
+
+ default
+}
+
+src_install() {
+ default
+
+ if use perl ; then
+ exeinto /usr/bin
+ doexe src/strace-graph
+ fi
+
+ dodoc CREDITS
+}
diff --git a/dev-debug/sysdig/Manifest b/dev-debug/sysdig/Manifest
new file mode 100644
index 000000000000..8c80b43fae88
--- /dev/null
+++ b/dev-debug/sysdig/Manifest
@@ -0,0 +1,2 @@
+DIST falcosecurity-libs-0.20.0.tar.gz 4545190 BLAKE2B 93a074ab6451c16c7ad58498ac580f0476339e7dee65112e56142307f79966c43b69c71234a784aff03f47ec2e37e838e797beb4b36e9c105db88cf32cad135e SHA512 b5ef481bda92a29b7b409baee25dabd0b766e4bbcac762740635f99b36cd823a6d98f541817fd03b1a86a1385d3fe24888b33b84dc3486cd9f8d00e5384eb705
+DIST sysdig-0.40.1.tar.gz 68296332 BLAKE2B 17ed9154d1e955dc18700ab764f0fce11461bea9b6970e8661761269d4f0bbb786ddd8a4cc4c806121a52d0d486080fc231f2447dc69d26d41fa582c1dabda41 SHA512 a50372192ea8708d19ede0550659a2f7ea6b535b419d649ae9b52e32f9c71576f0a3e3ab85dcc8d23f792dff078f15eca1435a1e402e3d98aba7eefc1920989e
diff --git a/dev-debug/sysdig/files/0.38.1-scap-loader.patch b/dev-debug/sysdig/files/0.38.1-scap-loader.patch
new file mode 100644
index 000000000000..1f350948b37a
--- /dev/null
+++ b/dev-debug/sysdig/files/0.38.1-scap-loader.patch
@@ -0,0 +1,32 @@
+
+Sanitize the scap loader script to not attempt driver downloads or compilation
+by default, which would not work anyway as sysdig does not host prebuilt modules
+for Gentoo.
+
+Signed-off-by: Holger Hoffstätte <holger@applied-asynchrony.com>
+
+--- sysdig-0.38.0/scripts/scap-driver-loader.in~ 2024-06-17 11:14:55.000000000 +0200
++++ sysdig-0.38.0/scripts/scap-driver-loader.in 2024-06-17 11:14:55.000000000 +0200
+@@ -662,8 +662,8 @@ print_usage() {
+ echo "Options:"
+ echo " --help show brief help"
+ echo " --clean try to remove an already present driver installation"
+- echo " --compile try to compile the driver locally (default true)"
+- echo " --download try to download a prebuilt driver (default true)"
++ echo " --compile try to compile the driver locally (default false)"
++ echo " --download try to download a prebuilt driver (default false)"
+ echo " --source-only skip execution and allow sourcing in another script"
+ echo ""
+ echo "Environment variables:"
+@@ -770,11 +770,6 @@ while test $# -gt 0; do
+ esac
+ done
+
+-if [ -z "$has_opts" ]; then
+- ENABLE_COMPILE="yes"
+- ENABLE_DOWNLOAD="yes"
+-fi
+-
+ if [ -z "$source_only" ]; then
+ echo "* Running scap-driver-loader for: driver version=${DRIVER_VERSION}, arch=${ARCH}, kernel release=${KERNEL_RELEASE}, kernel version=${KERNEL_VERSION}"
+
diff --git a/dev-debug/sysdig/files/libs-0.20.0-fix-INET6_ADDRSTRLEN-buffer-size.patch b/dev-debug/sysdig/files/libs-0.20.0-fix-INET6_ADDRSTRLEN-buffer-size.patch
new file mode 100644
index 000000000000..f2ea81289e0f
--- /dev/null
+++ b/dev-debug/sysdig/files/libs-0.20.0-fix-INET6_ADDRSTRLEN-buffer-size.patch
@@ -0,0 +1,54 @@
+Backported patch from: https://github.com/falcosecurity/libs/pull/2574
+
+glibc-2.42 added __inet_ntop_chk fortification, which started to fail:
+
+*** buffer overflow detected ***: terminated
+Program received signal SIGABRT, Aborted.
+0x00007ffff629b0dc in __pthread_kill_implementation () from /lib64/libc.so.6
+(gdb) bt
+#0 0x00007ffff629b0dc in __pthread_kill_implementation () from /lib64/libc.so.6
+#1 0x00007ffff6242572 in raise () from /lib64/libc.so.6
+#2 0x00007ffff6229f3b in abort () from /lib64/libc.so.6
+#3 0x00007ffff622b148 in __libc_message_impl.cold () from /lib64/libc.so.6
+#4 0x00007ffff6327337 in __fortify_fail () from /lib64/libc.so.6
+#5 0x00007ffff6326c92 in __chk_fail () from /lib64/libc.so.6
+#6 0x00007ffff6327a62 in __inet_ntop_chk () from /lib64/libc.so.6
+#7 0x000055555569da3d in inet_ntop (__af=10, __src=0x555555ee0800, __dst=0x7fffffff4f90 "\260P\377\377\377\177", __dst_size=100) at /usr/include/bits/inet-fortified.h:36
+#8 ipv6tuple_to_string[abi:cxx11](ipv6tuple*, bool) (tuple=0x555555ee0800, resolve=false) at /tmp/portage/dev-debug/sysdig-0.40.1/work/libs-0.20.0/userspace/libsinsp/utils.cpp:1110
+
+Pass a target buffer size appropriate for IPv addresses.
+
+--- libs-0.20.0/userspace/libsinsp/utils.cpp
++++ libs-0.20.0-new/userspace/libsinsp/utils.cpp
+@@ -1089,13 +1089,13 @@ std::string ipv4tuple_to_string(ipv4tupl
+ }
+
+ std::string ipv6serveraddr_to_string(ipv6serverinfo* addr, bool resolve) {
+- char address[100];
+- char buf[200];
++ char address[INET6_ADDRSTRLEN];
+
+- if(NULL == inet_ntop(AF_INET6, addr->m_ip.m_b, address, 100)) {
++ if(NULL == inet_ntop(AF_INET6, addr->m_ip.m_b, address, INET6_ADDRSTRLEN)) {
+ return std::string();
+ }
+
++ char buf[200];
+ snprintf(buf,
+ 200,
+ "%s:%s",
+@@ -1107,12 +1107,12 @@ std::string ipv6serveraddr_to_string(ipv
+
+ std::string ipv6tuple_to_string(ipv6tuple* tuple, bool resolve) {
+ char source_address[INET6_ADDRSTRLEN];
+- if(NULL == inet_ntop(AF_INET6, tuple->m_fields.m_sip.m_b, source_address, 100)) {
++ if(NULL == inet_ntop(AF_INET6, tuple->m_fields.m_sip.m_b, source_address, INET6_ADDRSTRLEN)) {
+ return std::string();
+ }
+
+ char destination_address[INET6_ADDRSTRLEN];
+- if(NULL == inet_ntop(AF_INET6, tuple->m_fields.m_dip.m_b, destination_address, 100)) {
++ if(NULL == inet_ntop(AF_INET6, tuple->m_fields.m_dip.m_b, destination_address, INET6_ADDRSTRLEN)) {
+ return std::string();
+ }
+
diff --git a/dev-debug/sysdig/files/libs-0.20.0-fix-buffer-overrun-reading-sockets-from-procfs.patch b/dev-debug/sysdig/files/libs-0.20.0-fix-buffer-overrun-reading-sockets-from-procfs.patch
new file mode 100644
index 000000000000..238cd12ac540
--- /dev/null
+++ b/dev-debug/sysdig/files/libs-0.20.0-fix-buffer-overrun-reading-sockets-from-procfs.patch
@@ -0,0 +1,35 @@
+Patch from:
+https://github.com/falcosecurity/libs/commit/de3f4cac9233682eae63c63377c82efb649679f5
+
+From de3f4cac9233682eae63c63377c82efb649679f5 Mon Sep 17 00:00:00 2001
+From: Shane Lawrence <shane@lawrence.dev>
+Date: Thu, 20 Feb 2025 14:55:41 +0000
+Subject: [PATCH] Fix buffer overrun reading sockets from procfs.
+
+Signed-off-by: Shane Lawrence <shane@lawrence.dev>
+---
+ userspace/libscap/linux/scap_fds.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/userspace/libscap/linux/scap_fds.c b/userspace/libscap/linux/scap_fds.c
+index f98ac3f32f..73e99ca428 100644
+--- a/userspace/libscap/linux/scap_fds.c
++++ b/userspace/libscap/linux/scap_fds.c
+@@ -766,7 +766,7 @@ int32_t scap_fd_read_ipv4_sockets_from_proc_fs(const char *dir,
+ break;
+ }
+
+- while(*scan_pos == ' ' && scan_pos < scan_end) {
++ while(scan_pos < scan_end && *scan_pos == ' ') {
+ scan_pos++;
+ }
+
+@@ -974,7 +974,7 @@ int32_t scap_fd_read_ipv6_sockets_from_proc_fs(char *dir,
+ break;
+ }
+
+- while(*scan_pos == ' ' && scan_pos < scan_end) {
++ while(scan_pos < scan_end && *scan_pos == ' ') {
+ scan_pos++;
+ }
+
diff --git a/dev-debug/sysdig/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch b/dev-debug/sysdig/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch
new file mode 100644
index 000000000000..f0c16d176d12
--- /dev/null
+++ b/dev-debug/sysdig/files/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch
@@ -0,0 +1,39 @@
+Patch from:
+https://github.com/falcosecurity/libs/commit/7f01ec89c565fcb45ade833b1312ae69637bc4ec
+
+From: Federico Di Pierro <nierro92@gmail.com>
+Date: Fri, 28 Mar 2025 08:35:23 +0100
+Subject: [PATCH] fix(driver): fix driver and bpf makefile for linux 6.13.
+
+Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
+---
+ driver/Makefile.in | 2 +-
+ driver/bpf/Makefile | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/driver/Makefile.in b/driver/Makefile.in
+index 7b1fdc2dba..ec60103d0d 100644
+--- a/driver/Makefile.in
++++ b/driver/Makefile.in
+@@ -29,7 +29,7 @@ install: all
+
+ else
+
+-KERNELDIR ?= $(CURDIR)
++KERNELDIR ?= $(realpath $(objtree))
+ #
+ # Get the path of the module sources
+ #
+diff --git a/driver/bpf/Makefile b/driver/bpf/Makefile
+index 58d1b11165..c94647c608 100644
+--- a/driver/bpf/Makefile
++++ b/driver/bpf/Makefile
+@@ -28,7 +28,7 @@ clean:
+
+ else
+
+-KERNELDIR ?= $(CURDIR)
++KERNELDIR ?= $(realpath $(objtree))
+ #
+ # Get the path of the module sources
+ #
diff --git a/dev-debug/sysdig/metadata.xml b/dev-debug/sysdig/metadata.xml
new file mode 100644
index 000000000000..8c8cf93b9e02
--- /dev/null
+++ b/dev-debug/sysdig/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person" proxied="yes">
+ <email>holger@applied-asynchrony.com</email>
+ <name>Holger Hoffstätte</name>
+ </maintainer>
+ <maintainer type="project" proxied="proxy">
+ <email>proxy-maint@gentoo.org</email>
+ <name>Proxy Maintainers</name>
+ </maintainer>
+ <use>
+ <flag name="bpf">Enable the BPF probe as alternative event source
+ to <pkg>dev-debug/scap-driver</pkg>.</flag>
+ <flag name="modules">Build kernel modules needed for tracing local
+ events. Disable this only if you intend to use sysdig purely
+ to work with dumpfiles.</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/sysdig/sysdig-0.40.1-r1.ebuild b/dev-debug/sysdig/sysdig-0.40.1-r1.ebuild
new file mode 100644
index 000000000000..aefc4494bab5
--- /dev/null
+++ b/dev-debug/sysdig/sysdig-0.40.1-r1.ebuild
@@ -0,0 +1,172 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+LUA_COMPAT=( lua5-{1,3,4} luajit )
+
+inherit bash-completion-r1 cmake flag-o-matic linux-info lua-single
+
+DESCRIPTION="A system exploration and troubleshooting tool"
+HOMEPAGE="https://www.sysdig.com/"
+
+# The version of falcosecurity-libs required by sysdig as source tree
+LIBS_VERSION="0.20.0"
+LIBS="falcosecurity-libs-${LIBS_VERSION}"
+
+SRC_URI="https://github.com/draios/sysdig/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/falcosecurity/libs/archive/${LIBS_VERSION}.tar.gz -> ${LIBS}.tar.gz"
+
+# The driver version as found in cmake/modules/driver.cmake or alternatively
+# as git tag on the $LIBS_VERSION of falcosecurity-libs.
+DRIVER_VERSION="8.0.0+driver"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 ~x86"
+IUSE="bpf +modules"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+
+RDEPEND="${LUA_DEPS}
+ dev-cpp/abseil-cpp:=
+ dev-cpp/tbb:=
+ dev-cpp/yaml-cpp:=
+ dev-libs/jsoncpp:=
+ dev-libs/libb64:=
+ bpf? ( >=dev-libs/libbpf-1.1:= )
+ dev-libs/protobuf:=
+ dev-libs/re2:=
+ dev-libs/uthash
+ net-libs/grpc:=
+ net-misc/curl
+ sys-libs/ncurses:=
+ virtual/zlib:=
+ virtual/libelf:="
+
+DEPEND="${RDEPEND}
+ dev-cpp/nlohmann_json
+ dev-cpp/valijson
+ virtual/os-headers"
+
+BDEPEND="bpf? (
+ dev-util/bpftool
+ llvm-core/clang:*[llvm_targets_BPF]
+ )"
+
+# pin the driver to the falcosecurity-libs version
+PDEPEND="modules? ( =dev-debug/scap-driver-${LIBS_VERSION}* )"
+
+PATCHES=(
+ "${FILESDIR}/0.38.1-scap-loader.patch"
+)
+
+pkg_pretend() {
+ if use bpf; then
+ local CONFIG_CHECK="
+ ~BPF
+ ~BPF_EVENTS
+ ~BPF_JIT
+ ~BPF_SYSCALL
+ ~FTRACE_SYSCALLS
+ ~HAVE_EBPF_JIT
+ "
+ check_extra_config
+ fi
+}
+
+src_prepare() {
+ # manually apply patches to falcosecurity-libs
+ pushd "${WORKDIR}/libs-${LIBS_VERSION}"
+ eapply "${FILESDIR}/libs-0.20.0-fix-buffer-overrun-reading-sockets-from-procfs.patch" || die
+ eapply "${FILESDIR}/libs-0.20.0-fix-driver-and-bpf-makefile-for-kernel-6.13.patch" || die
+ eapply "${FILESDIR}/libs-0.20.0-fix-INET6_ADDRSTRLEN-buffer-size.patch" || die
+ popd
+
+ # do not build with debugging info
+ sed -i -e 's/-ggdb//g' CMakeLists.txt "${WORKDIR}"/libs-${LIBS_VERSION}/cmake/modules/CompilerFlags.cmake || die
+
+ # fix the driver version
+ sed -i -e 's/0.0.0-local/${DRIVER_VERSION}/g' cmake/modules/driver.cmake || die
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ # known problems with strict aliasing:
+ # https://github.com/falcosecurity/libs/issues/1964
+ append-flags -fno-strict-aliasing
+
+ local mycmakeargs=(
+ # do not build the kernel driver
+ -DBUILD_DRIVER=OFF
+ -DENABLE_DKMS=OFF
+
+ # disable all test targets
+ -DCREATE_TEST_TARGETS=OFF
+
+ # libscap examples are not installed or really useful
+ -DBUILD_LIBSCAP_EXAMPLES=OFF
+
+ # do not build internal libs as shared
+ -DBUILD_SHARED_LIBS=OFF
+
+ # build modern BPF probe depending on USE
+ -DBUILD_SYSDIG_MODERN_BPF=$(usex bpf)
+
+ # set driver location/version
+ -DDRIVER_SOURCE_DIR="${WORKDIR}"/libs-${LIBS_VERSION}/driver
+ -DDRIVER_VERSION=${DRIVER_VERSION}
+
+ # point sysdig to the libs tree
+ -DUSE_BUNDLED_FALCOSECURITY_LIBS=ON
+ -DFALCOSECURITY_LIBS_SOURCE_DIR="${WORKDIR}"/libs-${LIBS_VERSION}
+
+ # explicitly set sysdig version - required for some reason
+ -DSYSDIG_VERSION=${PV}
+
+ # do not use bundled dependencies for sysdig
+ -DUSE_BUNDLED_DEPS=OFF
+
+ # do not use bundled dependencies for falcosecurity-libs
+ -DUSE_BUNDLED_B64=OFF
+ -DUSE_BUNDLED_JSONCPP=OFF
+ -DUSE_BUNDLED_RE2=OFF
+ -DUSE_BUNDLED_TBB=OFF
+ -DUSE_BUNDLED_VALIJSON=OFF
+
+ # set valijson include path to prevent downloading
+ -DVALIJSON_INCLUDE="${ESYSROOT}"/usr/include
+
+ # enable chisels
+ -DWITH_CHISEL=ON
+ )
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ # remove driver headers
+ rm -r "${ED}"/usr/src || die
+
+ # remove libscap/libsinsp headers & libs (see #938187)
+ rm -r "${ED}"/usr/include/sysdig || die
+ rm -r "${ED}"/usr/$(get_libdir) || die
+
+ # move bashcomp to the proper location
+ dobashcomp "${ED}"/usr/etc/bash_completion.d/sysdig || die
+ rm -r "${ED}"/usr/etc || die
+}
+
+pkg_postinst() {
+ if use bpf; then
+ elog
+ elog "You have enabled the 'modern BPF' probe."
+ elog "This eBPF-based event source is an alternative to the traditional"
+ elog "scap kernel module."
+ elog
+ elog "To use it, start sysdig/csysdig with '--modern-bpf'."
+ elog
+ fi
+}
diff --git a/dev-debug/systemtap/Manifest b/dev-debug/systemtap/Manifest
new file mode 100644
index 000000000000..a2051e8f85e7
--- /dev/null
+++ b/dev-debug/systemtap/Manifest
@@ -0,0 +1,3 @@
+DIST systemtap-5.3.tar.gz 6604029 BLAKE2B 063a73f41bbcc3a23ea2d98ff5e3562a87aea0c78fc915f223d59a32dc763fabdf324fe820aa0e969728eeeb8cd0264fd7e3dcc7ac5d81d005aa9c81e19ea604 SHA512 b252cd00a7ddab53f19d30129834b205ce8e90ccc5422444c1d188b765c122da712f5ca73092c425aef7430888c75ebfebbe3bfd87d6df8761338a1135abda89
+DIST systemtap-5.4.tar.gz 6615758 BLAKE2B b2c3add6afcdd824d8253ee5e83837983519ffff69ff76c75abdefa64ae93128dc030b4632fe585e3b099edd635f22b6325811e704655ce57b3d460ced583af7 SHA512 5869fe3735e44be65ba7895a46b4ea66fcdcc21ed2ab0673c62d822730553837f816d82fd78eeca4bfe6f17fdeaa12eb2f94c0b0b7ebb8c495c961f0b6935785
+DIST systemtap-5.4.tar.gz.asc 228 BLAKE2B 7153476f92199eef753cd85343a4ef8fed449eacf1708c8429fa0e0511bbac959c41a5b50690837810d14b7938c87326b70e0ab6fd321af25d2b86f9c7cbd8a9 SHA512 63da7b5e8a71c942af05c0d1b18a6f99f79403c6e1f5424382067ba27c75da7bebe02df501b1c7bb602d6cb98857fe02d15fb72535a33885acbd332c8e1508ea
diff --git a/dev-debug/systemtap/files/systemtap-3.1-ia64.patch b/dev-debug/systemtap/files/systemtap-3.1-ia64.patch
new file mode 100644
index 000000000000..832bfc1a47f9
--- /dev/null
+++ b/dev-debug/systemtap/files/systemtap-3.1-ia64.patch
@@ -0,0 +1,33 @@
+Workaround build failure on ia64
+
+Avoid 'o' constraint to allow gcc to select register operand.
+That way instruction selector can satisfy all constraints
+for PROBE2 macro.
+
+Reported-by: Émeric Maschino
+Bug: https://bugs.gentoo.org/510134
+--- a/cache.cxx
++++ b/cache.cxx
+@@ -8,2 +8,10 @@
+
++#ifdef __ia64__
++// Default is: nor
++// We disable 'o' because gcc fails to select register
++// constraint for second instruction in 'add_script_to_cache'
++// https://bugs.gentoo.org/510134
++# define STAP_SDT_ARG_CONSTRAINT nr
++#endif
++
+ #include "config.h"
+--- a/staprun/mainloop.c
++++ b/staprun/mainloop.c
+@@ -1 +1,9 @@
++#ifdef __ia64__
++// Default is: nor
++// We disable 'o' because gcc fails to select register
++// constraint for second instruction in 'add_script_to_cache'
++// https://bugs.gentoo.org/510134
++# define STAP_SDT_ARG_CONSTRAINT nr
++#endif
++
+ /* -*- linux-c -*-
diff --git a/dev-debug/systemtap/metadata.xml b/dev-debug/systemtap/metadata.xml
new file mode 100644
index 000000000000..c113517f235c
--- /dev/null
+++ b/dev-debug/systemtap/metadata.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>swegener@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="debuginfod">Enable debuginfod support via <pkg>dev-libs/elfutils</pkg> libdebuginfod</flag>
+ <flag name="dtrace-symlink">
+ Provide /usr/bin/dtrace symlink pointing to /usr/bin/stap-dtrace.
+ This prevents coinstallation with <pkg>dev-debug/dtrace</pkg>.
+ </flag>
+ <flag name="libvirt">Support probing of libvirt domains.</flag>
+ </use>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/systemtap/systemtap-5.3-r1.ebuild b/dev-debug/systemtap/systemtap-5.3-r1.ebuild
new file mode 100644
index 000000000000..2216988c3879
--- /dev/null
+++ b/dev-debug/systemtap/systemtap-5.3-r1.ebuild
@@ -0,0 +1,163 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+
+inherit autotools flag-o-matic linux-info python-single-r1 toolchain-funcs
+
+DESCRIPTION="Linux trace/probe tool"
+HOMEPAGE="https://sourceware.org/systemtap/ https://sourceware.org/systemtap/wiki"
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://sourceware.org/git/systemtap.git"
+ inherit git-r3
+else
+ SRC_URI="https://sourceware.org/ftp/${PN}/releases/${P}.tar.gz"
+ KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="debuginfod dtrace-symlink libvirt selinux sqlite +ssl test zeroconf"
+
+CDEPEND="
+ ${PYTHON_DEPS}
+
+ dev-libs/boost:=
+ >=dev-libs/elfutils-0.142[debuginfod?]
+ dev-libs/json-c:=
+ sys-libs/ncurses:=
+ sys-libs/readline:=
+
+ libvirt? ( >=app-emulation/libvirt-1.0.2 )
+ selinux? ( sys-libs/libselinux )
+ sqlite? ( dev-db/sqlite:3 )
+ ssl? (
+ dev-libs/nspr
+ dev-libs/nss
+ )
+ zeroconf? ( net-dns/avahi )
+"
+DEPEND="
+ ${CDEPEND}
+ app-alternatives/cpio
+ app-text/xmlto
+ >=sys-devel/gettext-0.18.2
+
+ libvirt? ( dev-libs/libxml2:= )
+"
+RDEPEND="
+ ${CDEPEND}
+ acct-group/stapdev
+ acct-group/stapsys
+ acct-group/stapusr
+"
+# which: https://sourceware.org/PR32106
+BDEPEND="
+ $(python_gen_cond_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
+ test? (
+ dev-util/dejagnu
+ || (
+ net-analyzer/netcat
+ net-analyzer/openbsd-netcat
+ )
+ sys-apps/which
+ )
+"
+
+CONFIG_CHECK="~KPROBES ~RELAY ~DEBUG_FS"
+ERROR_KPROBES="${PN} requires support for KProbes Instrumentation (KPROBES) - this can be enabled in 'Instrumentation Support -> Kprobes'."
+ERROR_RELAY="${PN} works with support for user space relay support (RELAY) - this can be enabled in 'General setup -> Kernel->user space relay support (formerly relayfs)'."
+ERROR_DEBUG_FS="${PN} works best with support for Debug Filesystem (DEBUG_FS) - this can be enabled in 'Kernel hacking -> Debug Filesystem'."
+
+DOCS="AUTHORS HACKING NEWS README"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+# bug #935333, bug #923597, and so on; needs work to get passing on Gentoo.
+RESTRICT="!test? ( test ) test"
+PATCHES=(
+ "${FILESDIR}/${PN}-3.1-ia64.patch"
+)
+
+pkg_setup() {
+ linux-info_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ python_fix_shebang .
+
+ sed -i \
+ -e 's#$(INSTALL_DATA) $(srcdir)/stap-exporter.options "$(DESTDIR)$(sysconfdir)/sysconfig/stap-exporter"##g' \
+ stap-exporter/Makefile.am || die "Failed to modify stap-exporter Makefile.am"
+ sed -i \
+ -e '\#^EnvironmentFile=-/etc/sysconfig/stap-exporter#d' \
+ -e 's#$PORT $KEEPALIVE $SCRIPTS $OPTIONS#--port 9900 --keepalive 300#g' \
+ stap-exporter/stap-exporter.service || die "Failed to adapt stap-exporter.service"
+
+ default
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ --cache-file="${S}"/config.cache
+ --disable-docs
+ --disable-grapher
+ --disable-refdocs
+ --disable-server
+ --disable-Werror
+ # Our toolchain sets this for us already and adding in
+ # -D_FORTIFY_SOURCE=2 breaks builds w/ no optimisation.
+ # This option (at least as of 4.5) doesn't pass -fno* etc,
+ # it just doesn't _add_ options, which is good. If it changes
+ # to actually pass -fno-stack-protector and friends, we'll
+ # need to change course. Forcing =2 also has problems for
+ # setting it to 3.
+ # bug #794667.
+ --disable-ssp
+ --enable-pie
+ --with-python3
+ --without-java
+ --without-openssl
+ --without-python2-probes
+ --without-rpm
+ $(use_enable libvirt virt)
+ $(use_enable sqlite)
+ $(use_with debuginfod)
+ $(use_with zeroconf avahi)
+ $(use_with ssl nss)
+ $(use_with selinux)
+ )
+
+ # Use bash because of bashisms with brace expansion in Makefile.am
+ # https://sourceware.org/PR32105
+ CONFIG_SHELL="${BROOT}"/bin/bash PYTHON3="${PYTHON}" econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ # TODO: Install tests like dev-debug/dtrace[test-install] and
+ # e.g. Fedora does.
+ (
+ strip-flags
+ filter-flags '-fcf-protection=*'
+ filter-flags '-fdiagnostics-color=*' '-fdiagnostics-urls=*'
+ filter-flags '-g*'
+ filter-lto
+ tc-ld-force-bfd
+ emake -Onone -k check CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}"
+ )
+}
+
+src_install() {
+ default
+ rm -rf "${D}/$(python_get_sitedir)"/*.egg-info || die
+ python_optimize
+
+ # Avoid file collision with dev-debug/dtrace
+ mv "${ED}"/usr/bin/dtrace "${ED}"/usr/bin/stap-dtrace || die
+
+ if use dtrace-symlink ; then
+ dosym stap-dtrace /usr/bin/dtrace
+ fi
+}
diff --git a/dev-debug/systemtap/systemtap-5.4.ebuild b/dev-debug/systemtap/systemtap-5.4.ebuild
new file mode 100644
index 000000000000..780eaba05d9f
--- /dev/null
+++ b/dev-debug/systemtap/systemtap-5.4.ebuild
@@ -0,0 +1,173 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/fche.asc
+inherit autotools flag-o-matic linux-info python-single-r1 toolchain-funcs
+
+DESCRIPTION="Linux trace/probe tool"
+HOMEPAGE="https://sourceware.org/systemtap/ https://sourceware.org/systemtap/wiki"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://sourceware.org/git/systemtap.git"
+ inherit git-r3
+else
+ inherit verify-sig
+ SRC_URI="
+ https://sourceware.org/ftp/${PN}/releases/${P}.tar.gz
+ verify-sig? ( https://sourceware.org/ftp/${PN}/releases/${P}.tar.gz.asc )
+ "
+
+ KEYWORDS="~alpha amd64 arm arm64 ~loong ~mips ppc ppc64 ~riscv ~s390 ~sparc x86"
+
+ BDEPEND="verify-sig? ( sec-keys/openpgp-keys-fche )"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="debuginfod dtrace-symlink libvirt selinux sqlite +ssl test zeroconf"
+
+CDEPEND="
+ ${PYTHON_DEPS}
+
+ dev-libs/boost:=
+ >=dev-libs/elfutils-0.142[debuginfod?]
+ dev-libs/json-c:=
+ sys-libs/ncurses:=
+ sys-libs/readline:=
+
+ libvirt? ( >=app-emulation/libvirt-1.0.2 )
+ selinux? ( sys-libs/libselinux )
+ sqlite? ( dev-db/sqlite:3 )
+ ssl? (
+ dev-libs/nspr
+ dev-libs/nss
+ )
+ zeroconf? ( net-dns/avahi )
+"
+DEPEND="
+ ${CDEPEND}
+ app-alternatives/cpio
+ app-text/xmlto
+ >=sys-devel/gettext-0.18.2
+
+ libvirt? ( dev-libs/libxml2:= )
+"
+RDEPEND="
+ ${CDEPEND}
+ acct-group/stapdev
+ acct-group/stapsys
+ acct-group/stapusr
+"
+# which: https://sourceware.org/PR32106
+BDEPEND+="
+ $(python_gen_cond_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
+ test? (
+ dev-util/dejagnu
+ || (
+ net-analyzer/netcat
+ net-analyzer/openbsd-netcat
+ )
+ sys-apps/which
+ )
+"
+
+CONFIG_CHECK="~KPROBES ~RELAY ~DEBUG_FS"
+ERROR_KPROBES="${PN} requires support for KProbes Instrumentation (KPROBES) - this can be enabled in 'Instrumentation Support -> Kprobes'."
+ERROR_RELAY="${PN} works with support for user space relay support (RELAY) - this can be enabled in 'General setup -> Kernel->user space relay support (formerly relayfs)'."
+ERROR_DEBUG_FS="${PN} works best with support for Debug Filesystem (DEBUG_FS) - this can be enabled in 'Kernel hacking -> Debug Filesystem'."
+
+DOCS="AUTHORS HACKING NEWS README"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+# bug #935333, bug #923597, and so on; needs work to get passing on Gentoo.
+RESTRICT="!test? ( test ) test"
+PATCHES=(
+ "${FILESDIR}/${PN}-3.1-ia64.patch"
+)
+
+pkg_setup() {
+ linux-info_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ python_fix_shebang .
+
+ sed -i \
+ -e 's#$(INSTALL_DATA) $(srcdir)/stap-exporter.options "$(DESTDIR)$(sysconfdir)/sysconfig/stap-exporter"##g' \
+ stap-exporter/Makefile.am || die "Failed to modify stap-exporter Makefile.am"
+ sed -i \
+ -e '\#^EnvironmentFile=-/etc/sysconfig/stap-exporter#d' \
+ -e 's#$PORT $KEEPALIVE $SCRIPTS $OPTIONS#--port 9900 --keepalive 300#g' \
+ stap-exporter/stap-exporter.service || die "Failed to adapt stap-exporter.service"
+
+ default
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ --cache-file="${S}"/config.cache
+ --disable-docs
+ --disable-grapher
+ --disable-refdocs
+ --disable-server
+ --disable-Werror
+ # Our toolchain sets this for us already and adding in
+ # -D_FORTIFY_SOURCE=2 breaks builds w/ no optimisation.
+ # This option (at least as of 4.5) doesn't pass -fno* etc,
+ # it just doesn't _add_ options, which is good. If it changes
+ # to actually pass -fno-stack-protector and friends, we'll
+ # need to change course. Forcing =2 also has problems for
+ # setting it to 3.
+ # bug #794667.
+ --disable-ssp
+ --enable-pie
+ --with-python3
+ --without-java
+ --without-openssl
+ --without-python2-probes
+ --without-rpm
+ $(use_enable libvirt virt)
+ $(use_enable sqlite)
+ $(use_with debuginfod)
+ $(use_with zeroconf avahi)
+ $(use_with ssl nss)
+ $(use_with selinux)
+ )
+
+ # Use bash because of bashisms with brace expansion in Makefile.am
+ # https://sourceware.org/PR32105
+ CONFIG_SHELL="${BROOT}"/bin/bash PYTHON3="${PYTHON}" econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ # TODO: Install tests like dev-debug/dtrace[test-install] and
+ # e.g. Fedora does.
+ (
+ strip-flags
+ filter-flags '-fcf-protection=*'
+ filter-flags '-fdiagnostics-color=*' '-fdiagnostics-urls=*'
+ filter-flags '-g*'
+ filter-lto
+ tc-ld-force-bfd
+ emake -Onone -k check CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}"
+ )
+}
+
+src_install() {
+ default
+ rm -rf "${D}/$(python_get_sitedir)"/*.egg-info || die
+ python_optimize
+
+ # Avoid file collision with dev-debug/dtrace
+ mv "${ED}"/usr/bin/dtrace "${ED}"/usr/bin/stap-dtrace || die
+ mv "${ED}"/usr/share/man/man1/dtrace.1 "${ED}"/usr/share/man/man1/stap-dtrace.1 || die
+
+ if use dtrace-symlink ; then
+ dosym stap-dtrace /usr/bin/dtrace
+ newman - dtrace.1 <<<".so stap-dtrace.1"
+ fi
+}
diff --git a/dev-debug/systemtap/systemtap-9999.ebuild b/dev-debug/systemtap/systemtap-9999.ebuild
new file mode 100644
index 000000000000..105c374669c6
--- /dev/null
+++ b/dev-debug/systemtap/systemtap-9999.ebuild
@@ -0,0 +1,173 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{13..14} )
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/fche.asc
+inherit autotools flag-o-matic linux-info python-single-r1 toolchain-funcs
+
+DESCRIPTION="Linux trace/probe tool"
+HOMEPAGE="https://sourceware.org/systemtap/ https://sourceware.org/systemtap/wiki"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://sourceware.org/git/systemtap.git"
+ inherit git-r3
+else
+ inherit verify-sig
+ SRC_URI="
+ https://sourceware.org/ftp/${PN}/releases/${P}.tar.gz
+ verify-sig? ( https://sourceware.org/ftp/${PN}/releases/${P}.tar.gz.asc )
+ "
+
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+ BDEPEND="verify-sig? ( sec-keys/openpgp-keys-fche )"
+fi
+
+LICENSE="GPL-2"
+SLOT="0"
+IUSE="debuginfod dtrace-symlink libvirt selinux sqlite +ssl test zeroconf"
+
+CDEPEND="
+ ${PYTHON_DEPS}
+
+ dev-libs/boost:=
+ >=dev-libs/elfutils-0.142[debuginfod?]
+ dev-libs/json-c:=
+ sys-libs/ncurses:=
+ sys-libs/readline:=
+
+ libvirt? ( >=app-emulation/libvirt-1.0.2 )
+ selinux? ( sys-libs/libselinux )
+ sqlite? ( dev-db/sqlite:3 )
+ ssl? (
+ dev-libs/nspr
+ dev-libs/nss
+ )
+ zeroconf? ( net-dns/avahi )
+"
+DEPEND="
+ ${CDEPEND}
+ app-alternatives/cpio
+ app-text/xmlto
+ >=sys-devel/gettext-0.18.2
+
+ libvirt? ( dev-libs/libxml2:= )
+"
+RDEPEND="
+ ${CDEPEND}
+ acct-group/stapdev
+ acct-group/stapsys
+ acct-group/stapusr
+"
+# which: https://sourceware.org/PR32106
+BDEPEND+="
+ $(python_gen_cond_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
+ test? (
+ dev-util/dejagnu
+ || (
+ net-analyzer/netcat
+ net-analyzer/openbsd-netcat
+ )
+ sys-apps/which
+ )
+"
+
+CONFIG_CHECK="~KPROBES ~RELAY ~DEBUG_FS"
+ERROR_KPROBES="${PN} requires support for KProbes Instrumentation (KPROBES) - this can be enabled in 'Instrumentation Support -> Kprobes'."
+ERROR_RELAY="${PN} works with support for user space relay support (RELAY) - this can be enabled in 'General setup -> Kernel->user space relay support (formerly relayfs)'."
+ERROR_DEBUG_FS="${PN} works best with support for Debug Filesystem (DEBUG_FS) - this can be enabled in 'Kernel hacking -> Debug Filesystem'."
+
+DOCS="AUTHORS HACKING NEWS README"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+# bug #935333, bug #923597, and so on; needs work to get passing on Gentoo.
+RESTRICT="!test? ( test ) test"
+PATCHES=(
+ "${FILESDIR}/${PN}-3.1-ia64.patch"
+)
+
+pkg_setup() {
+ linux-info_pkg_setup
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ python_fix_shebang .
+
+ sed -i \
+ -e 's#$(INSTALL_DATA) $(srcdir)/stap-exporter.options "$(DESTDIR)$(sysconfdir)/sysconfig/stap-exporter"##g' \
+ stap-exporter/Makefile.am || die "Failed to modify stap-exporter Makefile.am"
+ sed -i \
+ -e '\#^EnvironmentFile=-/etc/sysconfig/stap-exporter#d' \
+ -e 's#$PORT $KEEPALIVE $SCRIPTS $OPTIONS#--port 9900 --keepalive 300#g' \
+ stap-exporter/stap-exporter.service || die "Failed to adapt stap-exporter.service"
+
+ default
+ eautoreconf
+}
+
+src_configure() {
+ local myeconfargs=(
+ --cache-file="${S}"/config.cache
+ --disable-docs
+ --disable-grapher
+ --disable-refdocs
+ --disable-server
+ --disable-Werror
+ # Our toolchain sets this for us already and adding in
+ # -D_FORTIFY_SOURCE=2 breaks builds w/ no optimisation.
+ # This option (at least as of 4.5) doesn't pass -fno* etc,
+ # it just doesn't _add_ options, which is good. If it changes
+ # to actually pass -fno-stack-protector and friends, we'll
+ # need to change course. Forcing =2 also has problems for
+ # setting it to 3.
+ # bug #794667.
+ --disable-ssp
+ --enable-pie
+ --with-python3
+ --without-java
+ --without-openssl
+ --without-python2-probes
+ --without-rpm
+ $(use_enable libvirt virt)
+ $(use_enable sqlite)
+ $(use_with debuginfod)
+ $(use_with zeroconf avahi)
+ $(use_with ssl nss)
+ $(use_with selinux)
+ )
+
+ # Use bash because of bashisms with brace expansion in Makefile.am
+ # https://sourceware.org/PR32105
+ CONFIG_SHELL="${BROOT}"/bin/bash PYTHON3="${PYTHON}" econf "${myeconfargs[@]}"
+}
+
+src_test() {
+ # TODO: Install tests like dev-debug/dtrace[test-install] and
+ # e.g. Fedora does.
+ (
+ strip-flags
+ filter-flags '-fcf-protection=*'
+ filter-flags '-fdiagnostics-color=*' '-fdiagnostics-urls=*'
+ filter-flags '-g*'
+ filter-lto
+ tc-ld-force-bfd
+ emake -Onone -k check CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}"
+ )
+}
+
+src_install() {
+ default
+ rm -rf "${D}/$(python_get_sitedir)"/*.egg-info || die
+ python_optimize
+
+ # Avoid file collision with dev-debug/dtrace
+ mv "${ED}"/usr/bin/dtrace "${ED}"/usr/bin/stap-dtrace || die
+ mv "${ED}"/usr/share/man/man1/dtrace.1 "${ED}"/usr/share/man/man1/stap-dtrace.1 || die
+
+ if use dtrace-symlink ; then
+ dosym stap-dtrace /usr/bin/dtrace
+ newman - dtrace.1 <<<".so stap-dtrace.1"
+ fi
+}
diff --git a/dev-debug/ugdb/Manifest b/dev-debug/ugdb/Manifest
new file mode 100644
index 000000000000..88aefcfe9ad1
--- /dev/null
+++ b/dev-debug/ugdb/Manifest
@@ -0,0 +1,142 @@
+DIST addr2line-0.24.2.crate 39015 BLAKE2B 57186d6b957542cd71a0aa19f1355dfaabe6efa19b853c42f306494728b03d1e3183efdb2d2c7734a3e2347cd83a985d004f50c097e06b7520bd152310532e9b SHA512 39cbec3c920ffc0f37584afb55e1cfe4f182e4415319a4e9bfe842360f102f7b9315f6171c0cf71ba0337123903e604096cd573fe98698a26c8eebc2376d965b
+DIST adler2-2.0.0.crate 13529 BLAKE2B ec575b0bf12e321399ac3a1d59fce4ddbeabcc60cb3d7c2f362cce23eb29b4ea836451372d6d88552a4435ae29bb41d6230d55f625a4359eace680b9b771d0ad SHA512 12d12579ad617cf1a94cf95ab9d3f5db566c3b2de4bd5735eccd83c668fdad0eff134c996b73c46cbb9f932837682043878b8cc4764191625e9f93ccffcce423
+DIST aho-corasick-1.1.3.crate 183311 BLAKE2B 8dfcbba0b9d94e55eae739b16f5c6474baa43ee7854c5ca792f426a9f46fb0eece79cd493b804e51449181bcad338b96819fe977c02c9907654d713e26b9f830 SHA512 ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69
+DIST android-tzdata-0.1.1.crate 7674 BLAKE2B 4385a4875aadaacd5284a9ca7d1bf8a7bf14bf8925d1563d52fbabacc3af2c1ea08bfcf77106f3648f4fa052ac295158a21e7a0131d31eb9aecd99ea4ba20055 SHA512 4294024c21ddd0090c42c8eedf708d40d917f55ad5a4cb7aa3e64cfb6551b6df60f2e36bc08620c1d2fc8c7ba7207411518ee5c8635f60ed8ad9efdd458a2077
+DIST android_system_properties-0.1.5.crate 5243 BLAKE2B 86f68ec3bdabf8c6ec47881d794970f08a9eefc7417fc8a2bf4fe9faf9bdd2a2024a94adb0cbf96673409f5fbbd4d0111a1ac371339e7a90a277b6cd5003524e SHA512 b09f51339f9772c0e2e4241b36cf51573c6b96b19ffc1fbbc94b1c1d1d2fdfe8eac3134af54174a675ab05d18ef4f6bcb2c7fcc20114bbeef6e17e3692202191
+DIST ansi_term-0.12.1.crate 24838 BLAKE2B f636772c34e2d68cda7b8d3b2b86abda074585a62bd2654812ce92384244655a9197fa66e6939e19a674c0148ca605313d83de262bb18c2339a8a4eb4438a791 SHA512 b840e28b3e7700689a69a39659b1e066560078dd4a58326b91a028915819e7af883399ee53e920db68fd974c58d35bb1ddf8d427af5937d5f696f57c4376b671
+DIST atty-0.2.14.crate 5470 BLAKE2B 2db856a9e898a430258f059aeaf7c844a153293e8856d90ac81f7d91a888c89198768ad5cb09303c23241fe85c560a55148fa56a303651a82b0edb895616bfab SHA512 d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9
+DIST autocfg-1.4.0.crate 17712 BLAKE2B 7f7300439899be03d001dd32b7e797bc4b9a58103081b6f7353c4b5897813cedf870b3fb1fa25d320a75326b334b44d8287e8603de34fc560d0b567143915cc6 SHA512 3b5e7c30bc73e105e4bfcab584c24fc4016db41fac9c356c6649fd841051704bbe8848e09546eb50d7c1f18ea8ce1cb72fbc268a620d5c609b3472114b5be73c
+DIST backtrace-0.3.74.crate 88516 BLAKE2B 594b537f3860560bc790d04d72a91ea25bbf5f2494b9c43377129a8021c02d9c16471a223e518889775a816c45513b14bf097c453846b62302a58b59753a5fcb SHA512 00cb2be0626f0bf6ec8b8f525bb129d3ac74c386c5e46ee0f343edb78c863222521f8132876057a5a1facacf40792dea51f2f20e986b35f3a85bca3dcf5c1520
+DIST base64-0.8.0.crate 33091 BLAKE2B 9e72a457841f532956b684a30906924756fd791da2b1fbe6cd0ff4c418738f6eeea15d1a8379e6e033d0acec17736c78c4b01dd352dd5e9d59fd230be91235eb SHA512 7ce30633e5fa48cf0103ec66183192ecfec03a64b8147f42e5fd4dc9bb0d2e7885c19f7aadb130d306b8fbef6798b97199a1ab65b7c19a08b6d35d2e076d518d
+DIST bincode-1.3.3.crate 28958 BLAKE2B ea01d2efd8149ecba5e240ed989268b683d542a5f369902d316a4fd1ae4b8edd94e2d4a8cbff0e96646eb29facb04a84b249d74f0781dc3d29c8797ac975aa9f SHA512 49e39d71214dbb623a18e3852f6f2f2a5c3f951b64107d66c8adaa95a442a3283fba978bca41b126c9879b12833b945f478d2c77d35482b3577fc1a894e8e5f3
+DIST bitflags-1.3.2.crate 23021 BLAKE2B eb990bb27b2bdeb66fd7212ce582cb36e1c616debbac85df642d0c82b25439e6bf9b1e811fac76b59e58ea3c1bbea6170d03a61e8f9a395e4334a0e2e2987eda SHA512 3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62
+DIST bumpalo-3.17.0.crate 91975 BLAKE2B b0aca1d64373425384eddcdf8d60dc977058a3d1570451de944ce48aacdb984e73a29ab64fb5b23413582d57a8e32ad8155f6a1479eb00f804afe9d8a9d9e163 SHA512 b2acfb463aa705b9c6a9555858b84f565234110988c880cdb761ab8dc87892ee5d22e65fa935d2cfef9d58869fec0ab64d810b26bf122fdd89b454b6ce65ea1f
+DIST byteorder-1.5.0.crate 23288 BLAKE2B 7f85a7948406844070a2c8202e0bd52f73b3dfc7c666a97046128044eb9352195afb80e2bf894c0742ad109e4473339de1365d09591de70dfec6c8c02a8e1453 SHA512 96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f
+DIST cc-1.2.16.crate 103847 BLAKE2B 795261a0b910ad03a4d959a587164b317e1a7c462474c50620aaba5fe2f83a577dcc0f3d79f46fd8c743609a49dc87eaf1d44de8fe566638e4a8c24cfeac0e62 SHA512 f4de8d45740af7380dd976c5666832a25cc98a6c8d35bbc97a9cb5ab6a142fcdeece836a8ac1344d263a7b01f5e94128c2c2e1c22fc41bb5cb66537fe3b88bf2
+DIST cfg-if-0.1.10.crate 7933 BLAKE2B 063a96ed176f34f788666b40adc483d147fc011dee941ab60569ddd0e57502b5dd06ed71090f4e14ce005d06e240500a286f74652615e9d068fba649610d8cf8 SHA512 9d22616bfb4a75770a828a0a3cddac6787297a5fdc53eb17e25811cc94de717f2de8bd66d53c5d65ba1c83d8892aefee5ae758cf56a1ef0a0c3120f70b244339
+DIST cfg-if-1.0.0.crate 7934 BLAKE2B e99a5589c11d79d77a4537b34ce0a45d37b981c123b79b807cea836c89fc3926d693458893baca2882448d3d44e3f64e06141f6d916b748daa10b8cc1ae16d1b SHA512 0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff
+DIST chrono-0.4.40.crate 229824 BLAKE2B adf06e469c3294ce5899d602c42e6d25d63c7e8518530b365e926e402488eff6dd6f00abbaa4bcb693d4d2f406e8d2c71f2067ab09c2ce96867a09268231faa9 SHA512 345542dba10aff787c0bbe17e0ad1be7b279fe2b58763aca289ecd2e79ee1c518f9bd007ca3d89080191f272611776bc368cce9b25206b96bdbd710201cd0f3f
+DIST clap-2.34.0.crate 202210 BLAKE2B f383adf1d757ac4b68995132b33837686ce451f85a02a8d05d2c746da398510d05d46330f3efade063c3952aacb1754cdac73dd0afcae0df5340a89f9353aa1c SHA512 c648a761b9996a7e7464a538bb53621bae22090b846a42c3b729beca3363958ae67e3da9f93f58b10a10e043cadf7ff930388680d168646178c2824177832db8
+DIST core-foundation-sys-0.8.7.crate 37712 BLAKE2B 0e1dd99a5bbb0fe92f55181a37426f6e86445cb20e355f553b3162c88ccc075644461731a0cdcd93dcca65b6cef1de62b409afbd73ba3070a199ab8e7422dcfa SHA512 17492d5314db03abdb3b1998bf0c396ec8ed0f83bc978ae22d6026afdc86c50b58cbac073b3a0d97b92da7e98be11302faf1249d24313494bc058add4f4cb63a
+DIST crc32fast-1.4.2.crate 38491 BLAKE2B aaa3acca66e5814a45f12a90ae09f6ff5fc14ca94c8539184dab6ed928abc68cd1d37e539c268c1effd50ab3af20de6038593fb9c6bd6a664785dac52f6939fd SHA512 c7608d33022062e217d3576f536ffbd51479855a5e5874529c71db2bf6a937ce04d814c39cf777309c38445393bf43cb9996161947e28738abd432f11beb7266
+DIST derive_more-0.14.1.crate 17165 BLAKE2B b7c90d96fa74dbbd5af6f82ab0bece3841bf5f7e08bf7622cd0e32a22ddf1f25f8b48f42a1387eb18a00e7816d876a445357eb594011eedc1b15cddab018c42e SHA512 703951b04d07f90225b08f3688c2afa1d78511c82433d4430827592c5c5cab3b442c914420c533e91c929caad02044586d3f81a6e74bc32c12b9d75b2345e13e
+DIST either-1.15.0.crate 20114 BLAKE2B 2f87cb6408b1e1a15ea19d930cfca3948d867d268c8ff18cbaf39dcb7f7fdc628811575ec87a7728940dfb2c26775995a3165ab9c17dd42880d56569b22c6f88 SHA512 d70c34d903e8e5088fd065a6da6673eadb569a20af183fa9bd6418940b37c8c2a777c44dbdab1b9960890cba5cb7464b805667ac42f4e05499ddcd4277d24e3f
+DIST flate2-1.1.0.crate 110650 BLAKE2B 1245a0050ac2f6c966b0c869f772c24544206e1e29ac7bfbd1bb20aff20151f50332e3f2bfcc3edcabdde706b4ac9180e393e4944216183f7319c3b09bf5bc12 SHA512 7f240d413aeead2fd15c0b4cab1ea45b99987c185968ccc22778ecc7e08ff32ad6fd44abcf763a7c708f5bb7c43b325aaaeb30ea9bcea2b0917c9f7542bbcbdb
+DIST flexi_logger-0.11.5.crate 38282 BLAKE2B 4f93d2d88e45d492a085f0769ca2cb13107e04e27951021ba26f4b60ea95cfa06331630f28277a5d45d197acf97e6aaeae3ed43f7ae27cf7df6d2cf5685bc6db SHA512 21e429b36551bb64e6170d13fe44011e5e3ddffdac69be85c92d35fd715b02f7c86a7113985f128c5f027969702d193388e7256adc18ab0fdb6ca802e63732bd
+DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334
+DIST fuchsia-cprng-0.1.1.crate 2950 BLAKE2B 8519407ab5d1f04d03cc946a07050db4dd7bc70e03894e35b9e66910a3be11224084a86ba45103fdec845e94b7ba4defbd7c5217b035a0796c0c4a94b9562cd7 SHA512 ea9f5beb0dfcb023c22cfc2b37ce52dfcf3a2cbbed0f79ffffc332878858386805c65dce8469a431002367562d857a6c064e075688540c27fcb4056a110059d2
+DIST gimli-0.31.1.crate 279515 BLAKE2B c8924ce351af5b8f96ef757a189f7a9be14533c024d496c62037cd4eda790b3f6282cd3013ba82ecc83082acab1b60ea80b83e0fd5f8eeb381fd7f9df88ce0ee SHA512 b9c8c11547dc7420fe936b9f32a4f5ccf3bb68d1d9f39dedffd40d631360f6e032e719d858668826f1099b8a262e8096aa7ae1f6d7d3d7aaf47934d832715949
+DIST glob-0.3.2.crate 22359 BLAKE2B 564b72e2738cce5311aee12d8d6147631cb571f7b96d8d3823098d3dd449bcc23ffed5a6584f8979402bef95536b0e73fe9772f273295a0079782b9f7d88d19f SHA512 d15389441e337e3fab9c30102fe7b4b1b3e68d8cbb5d14162d2fd7e7d01a9812b2d6d6d2a24a60116418be41e2075e70becd6994c13b34365d512521e8debb02
+DIST heck-0.3.3.crate 10260 BLAKE2B dc756738081d855583f239908f671e9b5dde72ebfb577f6387b1a169817a03332464cf67071708a4c4f06b1ecb222118e8c719073ccdec1c0f938e5ef378b13f SHA512 b3498e033f44e03206421e565efec5b21d13107b60d35e4476331c44e6effd75c81f7678f2452c822eefd581209a2ffefd2034779cca2d8b4fac4583bbbf777f
+DIST hermit-abi-0.1.19.crate 9979 BLAKE2B 801e8052b85341cca388ada9db4b06bb1bd7b64474185b2ad06c0256b9e597639bd3dd4ba0053ea010f922e53969a4ab47b90d451fd9b94c8f2324055d151ea1 SHA512 1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a
+DIST iana-time-zone-0.1.61.crate 27685 BLAKE2B 2091f0bdbfae3f63ff846e27136d9779a2d65f85cef899ea3ab0ff7c987329e6a584cf49c57de566f08e0277bd4981ac3db30ea0cec6a6757ed50d96e2c6583f SHA512 d16c67f435606334042c3a286350db46ff3409f142c0782509b136150b4069aafff0dc5c2ecfb7519dd8d105b9a2e6649df2a7bec33ee3966dc94034c9d5a1c4
+DIST iana-time-zone-haiku-0.1.2.crate 7185 BLAKE2B 37fa14b589ff092377b9271c414d4e584c5a531f13f70ac48df26df3cc03353db635b4630ba192fc65b800cce11823e91b91f03dfad85e4bed55aa18398156cb SHA512 448224ecafa935472ff6f0aab7cb71f9dabdbe71569c4b94fcc65baea925ef48841577687c9a31106a1826c2105e8dd73c748e9d27fd002648e5b0ce838af6b2
+DIST itertools-0.5.10.crate 64674 BLAKE2B eb3472697f5810c8b7002a776ecbdd3f337625afd4e42b73f437716e2be53e62ce6cc9d6255c9ffd57c03e6b48f82acff3172647d9fc1b70e355a080ca8c002e SHA512 0976d710c6940f93759c9a6552197a9254040a719570a837d5336030ac1cf0e8d3aae308b18eacdc887b5677eeab0a43f36a4bb66656abf149b4f5f2f1d9f352
+DIST itoa-1.0.15.crate 11231 BLAKE2B 17c261baf95bff2f6cf0dbc33ab78ebbab0cf5dc56aeb7f8977377af868deb5957918f1763c2fe8c080e931489ea89ebcc16b3ebd976eeeb7663ff74989a1071 SHA512 158ca5dd4b04cb12d9292a4df63c72443adaf5aab1bd9aacdb964dc58878d847a64251f84897cb25c34648d4c973b44fef5b4c175d7c04cabc2c13b4631c2e42
+DIST js-sys-0.3.77.crate 55538 BLAKE2B 8a4c04a8e93bf5dab63784a24320a314cc5cb629df788e116c452857b8c049c6bf357f3bf8f35086eaa81bc2d7f0954001addfd0577d845844871ee138e81bc6 SHA512 d9370ed6ea892bd51ea181630ca661c348f82d575381aa4c8b529113dfcab6687f4d19bceecad7e1b28ebaca74d405862150a5b5ee2d5d55efdaf98eed1ab255
+DIST json-0.11.15.crate 46802 BLAKE2B 65821da44c781ff044bbc24a5c1128b37c87e20e683cb6d579e0901264c49ce036d853de23a8ad8868e923df948ae71b07d7732612fc03275714ee847d5661d0 SHA512 50e1b0439ae12eab28a3dbc5a6d224a337143d428277160d6176fcef8e9edb9466376fe4570b8f66d43719c97925be37bd538724b7713d471592372d2c74030b
+DIST lazy_static-1.5.0.crate 14025 BLAKE2B df29e0e3d1c061815bdd608b41074436024dc407d454f32517705ab04b2fe06075e310086c5e4961df0b4885e91021589d0bca2c1cbe6f0aeffa3ff1b3fd4637 SHA512 6d2f9887cd7f34f019644e42f02f2bf0111accd73aeaa60973ba0b039b6774670debece1ea9a6978e923208ef5d3ab7326473ee3560c078817f0f7ab8ed0f65f
+DIST libc-0.2.170.crate 760076 BLAKE2B 5deb440e04b0614cf5ec5a379d66b0f05f6f3eec1268742eb9052081408ec5da5f5185e63de59f3751506541321c618fd623d7b46b1892d360b86b6e250a4c4c SHA512 b716f1a76b208c5b84692fa3084c14dbfdb4a92b86c0e01215de04dc34c6e581e5f1c4561994c65a828838d5fa232efe93c3935faf5f83c8af127a5996f1f9d3
+DIST linked-hash-map-0.5.6.crate 15049 BLAKE2B 0f30e388633c60433dcbee353507f1c6857bd210f0b61a4d166a9b95067bdadaebe49d5fca4fa6ce13072e26037c6f75d46cc30cf8dc3c9cfcb3f33b33630093 SHA512 031a87645381c96beff33572e4bac1a9877e52fd2f99d39918fbede17d72291b35e2eb69e07edec20c3058554c35cc38fe85b8f175c2a3c69366136fcc71f707
+DIST log-0.4.26.crate 47022 BLAKE2B 529ce84cc92d1258327e148e1fff16cf4cba1d53f311353a15814856ad12d48f654aac5d4c6356a45439858a2f1938bdb7df582a1d62bf75b9380f2cf784caf0 SHA512 d85f3cb8bf90893d59b3174785295616d719c8d2078c04fa3e131c3f3cf84b73c75b932348df70b7eab2aedf261b27e6544f051696eb5c287fb461d1ee699ec1
+DIST matrixmultiply-0.1.15.crate 17024 BLAKE2B 3fa946e9dc2fb81c4efcee80aefc7ef6b90be7c8c05e28065c21bfb670c46736296a3196a04b578e969c337fd997cda8c53013368ddb30c0dde3da137bd3d0ab SHA512 5df51a43b0cf037d3199791f9d9bbc9816d3d88f7c4c4d909de190cd860160fc9783acf0948f26eb8c0c175f0f46259164bac47daa5daa7aba48e4a7d156ec4d
+DIST memchr-2.7.4.crate 96670 BLAKE2B da38114beca670467c3e1fbf4e415af6f22d52e3223715d52e181babb89b872b46511563985bcc16d7ff4e82f812c6e83ad904b0fe2501b14445119dfa8240e6 SHA512 8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2
+DIST memoffset-0.6.5.crate 7686 BLAKE2B 9a797388702389076c426052c3d54dc62802d5db8bc5c9c83990429f2ffaec4fab4c7dd3f09cd0704d1ea555e87976563bb43408ba54b5e66ce7e406d4604009 SHA512 11bdd9185b99dfee8e659e051b09ee301c7142a372a8117864745a5085c015436d2efbb1478192886f09cbc562529e209d2e3325d94938a64bc75b1d91d2bf3f
+DIST miniz_oxide-0.8.5.crate 62237 BLAKE2B 6afb3df5938ce0427fa8f61b0962b04ebb8baf76f304dc9c1b6d89b685be89c4bcc241a3cc54fbaff73a4607e58803bb6eb1689c817ac1302476db7a01d12abe SHA512 a82e36fdec6d77876c00bc4d03f2d8d90be898091a7c2f474e1b0c21142df2f362d5bcde407ec6bb48be982b22e2bc7fb23572c8aacb2b063ac20149b4564251
+DIST ndarray-0.8.4.crate 118100 BLAKE2B 77a2948fe12561fff8d779b355628f92ee3a65e1737ac920a4466f6cdab36d1f4838db05bbea8249bcbed953ecb0d5fa92c5b91c66ff448a14dfc3c2b2ae5ed7 SHA512 60ad92a8b333e01d29de01cf88554afa73fc9742757d72beb0867499675d6b9b3b72f21c43ed7fc0daadb0682d5de9a01ac725cf355b820c6e01d59b5a8f4933
+DIST nix-0.17.0.crate 195654 BLAKE2B 6857f84b3deb5800fe3167efd226f042bbcbbc61a4153ce59f69fb544616842c3f6d4566444201c669c6235d1d7577302e5404399f4937f1c0bbbd17fd47ef71 SHA512 3f2bc4f0e9dcb9753535aec9d626ad8126f0a9ea18f73760ba72be0f35d82542c659b4c443783010de133a318f423a16f71cd1f1dd5b5a1f4f71ff7bda247b63
+DIST nix-0.24.3.crate 266843 BLAKE2B 1eb1667a60d07c4541a0cb0cf0bed2c7c5256411028becdb229febd0f6215e8e176d3bf691f3bad2fc64841209bf364ff8345a3e92afb2bf8d3705fd734c8ef5 SHA512 6ecda3a14ce00002265e46a066b443cd3c092a306e25d9206b74ae31b8468fd5105b597ff1e7097588bbb6ef5e52fa48ebad908303b61db53361b525f44c13ad
+DIST nom-2.2.1.crate 95289 BLAKE2B 1f5ae66f897499f3a24d89b133cecfde5f38b80a05da4dcd4cdbd87cce6f37a690ebd624c0c190c77338afae74e25cbbc9b1f2fc765ec474eb8798372d11ed4f SHA512 f628351d0c9d4346aed3406777bb87d34a53be739b98712f80e17fc31598a75d165f81870f2e633599190ae1be850147502b5b7855bc184fddaa2dabd3314377
+DIST num-complex-0.1.44.crate 18974 BLAKE2B 49d0f7333411fca4396803106af6b864a7ef4db5906567ccc95a8c43d31e04b8ebc647fd52cb64f4649fcd79a900736bf90a50a20df87e102c17b2c0b233219b SHA512 771d654a9c7e3c5963b7e869089dec453cb72bc633492c2b13aef9bc86efb526e18223dce4e58c63d0091cc81a51f2a93578f62923226c8ff6328a748aaa7a2c
+DIST num-traits-0.1.43.crate 7659 BLAKE2B 313221a4364b18eb29e2d4c480209766c56b1ca2587a0ab8f668c71cfdefcd733d64be1430bea1846a77f075a26137fbe71f2f4d9be79688374cdbe9e0274ba4 SHA512 35ee0a41f8ae33b1e6656935585f540956a8155045992e7b488b9fdbcf0eb9c9adc90ed8128d45f248b9ac583114cf518c4c7de719b8c6627b29f2fbbac91f17
+DIST num-traits-0.2.19.crate 51631 BLAKE2B 78637360cbf32d172510a62bd9442708af9730c0296a2bb4ebd200c08facd49bc31bf8ddd58967e0df7273a938832b620265d9f8f4d26ad16049bf6dac1cb4e5 SHA512 180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956
+DIST numtoa-0.1.0.crate 8999 BLAKE2B 6a8cbf17458227fa87bdd6a35404e09afc092a1ea45d68c6c035e08a9d344fdb356b1bc7b52239dd6354ed9094e9338ccac599542bd7f0caf167ab8d17ad5fa7 SHA512 41b5c774048592c5867fba217c85d4ece4540e0f3ab0eea7dd1a6af340ba46dae42bbca62ea7fe3afdb258660f39a3d3082264c99dea67d3d1ae178d00a01354
+DIST object-0.36.7.crate 329938 BLAKE2B 0b02cf2f44e99002909b38125edada1a259feae59fd0e5ef52001755b6878cac710c87c60fbafdbe405281e039f68572ea3d8093d16128899090fd70df7f2fa8 SHA512 dd69172349ecf51fd2351d32cc4453760ca1d15e854a1cf5ed99112032901a54b4645b24163b946deed11f81d3e3035e1a5afd8bff20f335dbd05eceab073478
+DIST once_cell-1.20.3.crate 33456 BLAKE2B b16081751a1b6649d0235fe9cef3fd0a9023d4f6980521933e4a411282458050ca27c1a8aa01d5237d424fa279219b5713da21d8900eccc3100d19c37d24b7a2 SHA512 3ede903f232d6ced73aa74c6b2e2ec306012517eac684db253913df4656515d087d1aff9f437a58fdeecb77cedf8a5960d6772d72bf1f1f19f1ce3fe54bc72dd
+DIST onig-3.2.2.crate 36111 BLAKE2B 341a2885ba62b86bba884c4a9205c4c3715f7be9a541fc0da808f70eaf41054dbcc8346ec05b01d3b2b1dc87e321abbb0f47f2599f1e174bbecd53c67eefab48 SHA512 4878efcf7e76428a1c0857e2f454049ea74756fdf2c6bfb98da4edbe3c632c1c1acf717861436ecc48d935bff7191b7aac325b6c67b1c37ec4150ff936212b08
+DIST onig_sys-68.2.1.crate 652394 BLAKE2B c991384e6a90ef65d6e894868a0eb3cd75c085f2facf9955bf9c17a95e86ce600787920b60edebd336a64c4fe4ab37c6ebcf3994040ba9c166bd656fed525d59 SHA512 ced01ee3400fc6e612674f9417f065ec8ed5f8375778d6f33ac6bd52bbb356775e77d4ed7e1606291ee50e193188265edfcd2642179ba424b66e409537925645
+DIST parse_int-0.5.0.crate 3173 BLAKE2B ecefcde60969d04989ffac987c2ea4091c0d208fd805597c60e5f227c96c7e8d23b62d132dc7975e8259af3e21b001641827052be0a25a1ca7ef15a369949a0c SHA512 72e34f0a57273f769797b859fc6123bfbcf52b00fdbcc81795b177f46cb01db030c0452599894e52181b5c73a548ee4666d0eb58d11b9682daa692c76b21eb6d
+DIST pkg-config-0.3.32.crate 21370 BLAKE2B 74ded191f066bc223739b3d4afec58f23de57566e7604e3dd62001d9a095a7b6a3633fdb01fdc46960c8134a694d6bf097d9ecec62b38c4f14acafbbabd6e893 SHA512 59569110185fa665f76a13e884a67ad1578c55246abacfc18cb9f037b2d2d9ec3f2078a3adfe5cc82a451892c9ad55f918ee01362a741f57dc9ff6846a4e32e5
+DIST plist-0.2.4.crate 20553 BLAKE2B 48800a884b764dc478baa54b9c20ca040a82665513845ccecf4268b9a5117722abe9fcdeeee022cf39c7d203bb8778bc70b2936c107f710ed1fac78805c43498 SHA512 73be6b2bc9c47125187d0dab0b0cc72ceed66bf7adc62d95357416caa42d00d9e34275a0a998ff8eaee03167a33a572a6d8bc759e9ac8aba32488d2fa7735045
+DIST proc-macro2-0.4.30.crate 34731 BLAKE2B 0a27a06151b54e4ba50f08803a5de44d9c7702ed72cab1b775408696057246e3336dee3a61560886cb24fc4cf582339c8bde7d9211e4e0524f2c719b774339be SHA512 73a8de3f1d76a8baf2d45afc1497bba8c0cbf231bf9b6750b9cee2473f492d5f3957ac149998da720acc8287c96d604971b51dcdfa629523bbdd97c297856ac0
+DIST proc-macro2-1.0.94.crate 52391 BLAKE2B c50986bb34468379e22215c6572c2b722f54381c02258fcba6805eef0166e4bb591d20b94b9084b5d68972df8ef12476ce0d1081588cf80dad3c4ffffa347660 SHA512 3fc4552187d4130f0fdb415f94e625c156a1fdc6cc955fda8a68b49983ac8a83b897f43d1caa130c4f0932fbd9651140b7670601faa2b9b936947c3fd89f7769
+DIST quote-0.6.13.crate 17475 BLAKE2B 985287f3e619c46b052e704c6da78565fe5d8e4f9a0d503aa0e8818f595fbef32a437d67228c35cd02d817ee3e19efc03e75239013a87a79553bb252f15c8ac5 SHA512 bafa9ba42ea6ff2d6df652384485c58327de6eaea2832423eedd8ef8b4aace673c23b70f1f22106515ac13d7f625cb8b1a5e8c4388c1701ea3cd86fb9ac3056e
+DIST quote-1.0.39.crate 31206 BLAKE2B d7a29f7a39350831e664bf39fa4674e6f0ec7b1d1219e2939d3e070c2546b8b231a00e6e052709a5d3448da71701da69ee6952bbc787c76db1f7cb5eff8c3b6b SHA512 3ed328321f2781c00f6c3d163ab41d46a5ed4290aedcc6be6ff275a2fd7d56dc48b3452b167dc713b7883886d485e6f983bd0acad7191ce3f3c3a7c709d27770
+DIST rand-0.3.23.crate 11318 BLAKE2B 5ad9b187fcdfc515c606a73bd1e9aa3215e367659c35a013c9d4d0f80f9832331dfb971ca370a627c0a2afe2b8860514740e00b1d7572e221a557b5570cff6ff SHA512 a4f46fb7dfe39677dfc112eeb56fb3c28cec4cdaaf95f336f2a494f0b2b30fdf22ceb9ea956f90e13c7ffe711a68aef9fc1a80d9a911d93221ae263c243fb2c3
+DIST rand-0.4.6.crate 76401 BLAKE2B 5593ad2d7fb8214d917e2eb734f5eee548f48fd699c9fccc0de9c0c6ee49803a426492a25fda2ffcf844169e2bca00709d4dcd9ceede72a4667ec431f5502fda SHA512 a91c6da7188b426bf9cb832892ee2af87c4cd65fad505c34e9c63343da71efe8c0c67b75c405dca5345317b7940d1d0fc0b20be85afd6b3089203e5698d86f0a
+DIST rand_core-0.3.1.crate 15483 BLAKE2B 2e09b3b3306514c29bd7588498e79be7353de656d8cdeeb4dfc6a1ad092f15a861c2ac20591ff71f7f60d986de9a09c860de4a9f06799f04e736b31bc70a5fbe SHA512 5a7ae601124502bede760fd3179c2b28059ebc3b5983bfcb6b8fa62fb58df95cedc1aeb2734e792d894dfa4620801c13c29702f9cbee64243121575d4b6b9114
+DIST rand_core-0.4.2.crate 20243 BLAKE2B 22fee5e44127eee047ad8abcd9dd828befd0feee77ee9a0bcd4dd42174b1e650f2a19f1f3b39fde937e58c17afaabf7231e2aabf214c2eb22edf3f85b73f6eec SHA512 f7ae3b690e2cc1fbf2707ee04b752bc5472433f737ab581f9872f7c5660966bc6be45f0c5d2cd8771105df6d4a9d206c55f5cc6ffc1693b46e1ae03a2883b028
+DIST raw_tty-0.1.0.crate 3840 BLAKE2B 69b0850ae7428bbb908ee34ec923d14fff30f55b62c25b74eff14aae3de0bf4a9cc2262e0da2e692b560d876c61d57f02b516c705107126e7a3af6779525a76c SHA512 82fc438cc88e1f9435c3a3bff66c2f0426ca534f6eb17862047cc6b0f4cfb35dbb0924f1e99eadf09da0abb95f9edfeb26438e270b49763f6bed237fd1437687
+DIST rawpointer-0.1.0.crate 5821 BLAKE2B 222b9ea245d95904918f7b8c89abc420a960ba2b48f4b9e80a78d5ae3fece5bb5b1ec24d0d37e3973d83c445c6bc2312c4191c256a6a0fde7b0f7e6d0005ba10 SHA512 c5316d4db8167f381bb842d5b7b5b01bf5bde24f6a61afa90d4d9c027e276e23fd53b4ceaae031caeb7cffe7fa9a0d87c1f43bb9b3c1d046161c081b1ac4f2c0
+DIST rdrand-0.4.0.crate 6456 BLAKE2B 330ee64d998a0358f95a3dce50b3e1bbda531a3b613db7e5ba4038a1cf7191b60be3a0f33416e05380c41040704ce52727928915e9d2f4565d39984d1c86fcd6 SHA512 6476275d124bee28747191471e8d8f321a3b1c148c1f2a7ece4175f5244a7de90afe5f99d2eba5244d886b92e38232398864bf90e6d434b09494533942c8d894
+DIST redox_syscall-0.2.16.crate 24012 BLAKE2B 9497a52044458b1435ea16e86ee072e379b6b11ee31602ea72d6b6072a4a99426f409c2e58108a4e9c36dc193fa49c83951e71f4fd4e158eafff18c594dc01ad SHA512 63b5d876baaf99f5cf737679bc6ac7a9e3d8a41aa93f5c59416ce7e3841e2513bff678773553cfe62fb452707f82acc384ea63aec932a31bf94679cd1caddd27
+DIST redox_termios-0.1.3.crate 3240 BLAKE2B 3aa7360c9e982faf433b527605fab4cc01f74eac5f1f4698b5c7f43e5a7645fcddb39bd639c8f6935fb82db5a065630ee788fd8b111cca80be15db1a08d0b3fe SHA512 a221afea8eb1c7efe848e270a6ad5b65a97af945b4f64d3aa5346f5a61a9daaac1993446ddd78c1923b798e1659518856d7260d9d30651d91897850b0a1950d8
+DIST regex-1.11.1.crate 254170 BLAKE2B 5cf41012fc2ba8a006c0eb4a922cbbf1614bf300be361c9e2d98956a9a5e9b140e37bea09132fab7bfb633d4439158723624bcf45e8c619c4061b399253c1b82 SHA512 d065f6dc405771518260425f39a5eaaf8cab62e78c91ceed3b3994a9a121674d2484cadaaf816bdad89c87a40550d57b66a3d9de6618a7119a658301ce7e67d8
+DIST regex-automata-0.4.9.crate 618525 BLAKE2B ee3fc41c8c445be4c1aa3e5b19a3e61efd641b1a24e7a1ed55f837c1fba9c816272cb4645c13232b66b170bc7c413802928beb22e3891500141ad4ede65b60b0 SHA512 40bde0ec91cc27bc0c3fa237a37ecee5a1f023dbe006a999c5888f8f578ee2c4c64d9edfe1827546cea8e92ca3c10f8b4d494d81f3d0422b40d90bca9cf598d2
+DIST regex-syntax-0.4.2.crate 126234 BLAKE2B 874339260fc870fcbb8bb982629cfe1b5789877eb3db13181a73a4295b567a2466b3fc17433b890c0a7986ac3640382bd28c155abfec126b650d2a1c99003b3d SHA512 9b37814ab8bf8ba9d0ad125ea4038f505a0d232084faacbc4fa4126afefb3b8bdee03bfb55ee6f29c518a28f25021a31a8eb35d69999c48c739b1c30c2dba98d
+DIST regex-syntax-0.8.5.crate 357541 BLAKE2B fc6d125f7a8574c37d81c75cbfd447cbcff736f2d9991b19814ffc1a414ebc5b76e84fb8fd36c983b38e8e391d165cdd9047832b0d9100f0e1ba7085484b7db5 SHA512 549d8d130fea9ec0d5806126f57f31d433f50e9328c5532ad417c44bb5488ec0d20acb0983dbe54dabaa0b453cbea4533cf7baac7144df119e8f78dfe55c5ab8
+DIST ropey-1.6.1.crate 119463 BLAKE2B a0d02ada75d96381b02715ddf28ceff9dc6ce718054d11eef5710d0b044d42c4d324cb136e69719806b0441be47c2d94f67eb5668aad344806f31a9f96c36974 SHA512 2c7d4379fd3c8058d25e746a830357f1e0740bcab99da58274b2ac54c17999d166768f4c366c85fbf56507841a2526c5a0a69290ccf3f9879c0df39204b094b3
+DIST rustc-demangle-0.1.24.crate 29047 BLAKE2B 8248b014eedb26cdc0b748544ba91b9aae9c992a6f93b4d3ac256b78f691d572f8885a3575492ea556698a241d2759743968293079ca02bb6a5f318b0ed66dd4 SHA512 eb897c35300b87766e6105917a907fca1c5b1f7691fc03c6c1aaf38075ac883a73d1eb54a245d13ba59c7b0f0333d6543e23fc1b1c542fbbd5c750a84660b9e8
+DIST rustc_version-0.2.3.crate 10210 BLAKE2B 1f707d1c66d907c9b1d2ef6d0bc6bc9c89990a7b922a6dfc2041865940ff3854c4d0e1daf558279fd5871af5818d4000457a32c949104f46538312fbf730443b SHA512 01fa7a758dcaa4f15c18628a0d5ee5adde5ade96a8b7dde0908e39e27b290d1e9adb20d44e2adcd379341d2d4a0c34a80dc12553a3bb4efa4758988f28989779
+DIST rustversion-1.0.20.crate 20666 BLAKE2B 49fabcf276fe3f59b4a1c2e8a07364ba59c5ba4e0a33fe4150ce2eb93c6da42d32ad4d4a197baf6616c1cd703d34fcf5a90186c5467c1656388d55e7962d01a3 SHA512 250be168a4ee64f4b85d78658706659122d5fbbc748f321fe2b9baf48c547de4f0004c87882642645994b7798077c514a44e06b73784a800d04e4cc673aa8906
+DIST ryu-1.0.20.crate 48738 BLAKE2B b126085448cb58639a7b5867fe313dcaabaf19df478f67fcb6cf15b8e881a21e641878345e0bf1fea7d24b56b921e667fd26a39cb81fca7ea02585332068263f SHA512 329c581429d9b8baa7d9edd9cf20e23fb8002f339d9fb3d50ed4c7eb68fb19c1ba966d52a9c9602265ca5f59f2bd4393ddcb3a7ac20c64aee3096e137eb2a384
+DIST safemem-0.2.0.crate 6450 BLAKE2B 44598e47fa6185ec0890b4ba6d0e7b5f52f8892875741c3819559dfa61491736d4326fa1713916ca41d6daac72829ad31d0905f2e339a069a987d9715f340795 SHA512 71901f472668572e849504a8a830d4dd9a742729b0158d2c6865a5ad86e65cae8b5bb83707240ba03a7a74c610ace87f8b59bde68998d2bd66c19849aec4fc8a
+DIST same-file-1.0.6.crate 10183 BLAKE2B a320c8343e0b38078ba81c4f0159d886bf47764c74efe0d7cd2b3218426e8341b51e523c00a9e5fbc2ee1057618296bd70b576c68751bd55d6ddb352defaca15 SHA512 3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c
+DIST semver-0.9.0.crate 17344 BLAKE2B ae782bc78f29e45577de8574ee58959c70b54bb0b6f45a5a7b09cc4d358d9a0a80bbefc6e0f2a330e2b55adfbbe5c1f64f4ec9bb94c4adf7bb3e4fc9c142db6c SHA512 03a2ea563456f812c301721c3572370fe4934a22db60079da0dd6ffa33fa789e5e2436ef09e62fc35e0b742b06fabc290992c74eed80419a353c9de9449928dc
+DIST semver-parser-0.7.0.crate 10268 BLAKE2B e46b7cf9d292f8fc54561fca4df8534dc96f6be920a5c869c405ddb31b9d1a18eab0799207113cf4910a52cc0df5017ab1bc1883a7c3787ebf2d60f09ac0ab4f SHA512 17320468ec6b9862d595f358d70c09ac6e09db7885fe0ead7a1e596f79350a6306e8bfde5bbd6512008a7c5454da1c7ae55fe1e3bc1c1ff02ac9df54c0a6121f
+DIST serde-1.0.218.crate 78968 BLAKE2B af7f366a1aaaeb9b5f6f22e7398a30ea486aa3391ccab9a11435d45f7eba10796ce671556b771dbfd8b914563949c54b4a4f14fe447a549e879636339fa8f128 SHA512 35ffd8556287fa270beb90539c1641912d8fb233c53c4017f1f65a483b2dc340385458b9a869b7142b4d514bcc87c25e69c9370b3867e463be887bdebd19ead8
+DIST serde_derive-1.0.218.crate 57782 BLAKE2B b2244847b41f1aa396352bcea886d6a28d13ede23ae6ceb813143849cc107b3fe0cf054687d9f35bbb9db4e95c619422d9710532fcfffff291280cbe3649a433 SHA512 e89c076b0aa22ad74010f5b6a60397b9b78b59ca50a9660b29ceb1fd608cab820c47e787e450da306062c0cea1ade7142a7d4626a77aa0ae486096c130442cde
+DIST serde_json-1.0.140.crate 154852 BLAKE2B 733aecfb88fc37de37b60fdd33a45fecc2bf0ac2165b81bdb12665de7e26633836160e927be5d538eb2056a799e85ca4a1008cbd30af23b72a594643c6015f22 SHA512 bafa26fd43ba30cbf73572b8203292b1f275995636e9dfc3d47954939453fe4ecf0c60f25d2af1ec16c7cb0e7ce3b96cc07507d1b53b7db566fe7cb2624f0e12
+DIST shlex-1.3.0.crate 18713 BLAKE2B 18800c364d3a628f1a3125097ea82fe6286550c2997235df0bf8483a3906aacabc81308cb239887d46ba2f457cc6f8acd5aca78316707eea5098cd5666aea67d SHA512 5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a
+DIST smallvec-1.14.0.crate 35561 BLAKE2B aa8ee61800a6d13eda5acb4e9dc03543160849479a96a72c50ab38013b23e9593a665773b455a09777038edd436d7a35b501f6d4a0e16ff49544be60345a1e50 SHA512 90de38f208f551cdbf4980fda2314dee57d4e2bbf769a01c47bc849189e9243474932052faa92fe0ca59ecc9c5d1ed84091ef87f724343d38ebbbf710ba232be
+DIST str_indices-0.4.4.crate 19480 BLAKE2B 23657f3b9dde27948aa6450c374a4da00d6da449cc66df88438e56013b2a085e9099dff51e100dcc9aec2c4eb61356b7296636954afbd801842c20b0bbc2bb5b SHA512 8f7882a38c443a4f319aa2b009d32160ae2b7488cae1beb50ee5106ccf584c9f4a3cbba0829a1bcaea6d707bfd6986d99decd21bbd4fe89e8dc15412cfa4879e
+DIST strsim-0.8.0.crate 9309 BLAKE2B 40a8be506c43ee1ffe006ddc7dee98c3d418bdd205d57b78f5d1e4c9312feb57e1eaf952e02d92d4e0932db240c6fba45beb06ea8c4fc6de1cf1faa8b6a3a939 SHA512 1d55a8d946cd55f5f37d06aea536549ded95739fa58c0f2da285a0041154c181f663682bdcac643aa198b3e762d694a04f058db985c62ebe22b5c16327ba6d34
+DIST structopt-0.2.18.crate 26373 BLAKE2B 88a5570ac97493e4324fecd2e93851ea162de3bea583eaa0b4d4d4879bf11b1ee0bc69a7ba67c2599c05efe38c5967058b58c6458f3a830aece831958477d820 SHA512 fafa9cea1a99950d1ef8bde53ab5a18daabd5cf131f3c2bacf25786f057b2d0169fe6f5d6e96761a74b6e9cf72a9d6b7dfee53edfe0018a19260ee66ba9b5f97
+DIST structopt-derive-0.2.18.crate 13088 BLAKE2B 022ecef6b8a341bec3f557b1f4c961d2e4a0555e3528abe9dab635f7476b48ccd0cc75e8f0bb9fb02de676742e36eb62eecb01851cd929ccae56da3128965c0a SHA512 b3bb2a2c1b28aa275ae25d60ca0a3878b715293950748fdd4ce5c791bc5e7fbf066db3bf4678b7a6fb3a61b2b2703ff14503f87db3659281c7b201b427c59965
+DIST syn-0.15.44.crate 184212 BLAKE2B b735040d69d10b30c94de2e8f776d25ff5ec427e79a7371345a9bb694d50c4f3ab848ed30166c683aa88f5f73f7361dda2a74880d21882975485fabe5bf65d33 SHA512 c6c9b5887425e1e5fab905e477fcea41bba191693c471cf26922a9dfdd59ed957155a399406cc3723933a869565e7295183dabedfc34e3e2a20874ba94c7ead7
+DIST syn-2.0.99.crate 297762 BLAKE2B bf21147201b59235423dff51de5b652eee6f132d7fe173806e10aa702b09519be10325cf6102612a9def458c3f7bb3f353bef352a1f3252cc757454cc71a129f SHA512 d11d53f2482b23633dc9296bd9eafa152b899e8e9393c2bee6ffe9feb77fb112bf693f41a531bd5de896834a75eb23351daa00e32475166a69881d5bb0dbed95
+DIST syntect-2.1.0.crate 665726 BLAKE2B 66a597d84a777b51aeff6fb97c2b66ae1e7ba1909787bb883e0e4c80e615ab773a9018167166d5ca3d9127cda39505c98a11bcb92c9d02398372480183bbaa9d SHA512 e672de4ba1016d3fdc0977c77dbd3ac3d43bbe3e51e492305f7e8b886d67c1fe8ba872850f8caacee5d35405454c32e931a224984450bc55dfc1f5414cd8f214
+DIST termion-1.5.6.crate 22677 BLAKE2B b918dc82bfa370bb9662bace34211bc7afa03a042dbd25f4456a7e3859521d4f32ab755780e58070f29eb7903f3b4f8129eb9447cda953b9190f9df3b7eb3aea SHA512 228b6fa7e2f280d6bfc7cef77e7a1d0d8f597178e66af0bde1b1fb6553857b511ba8a6786165815aac6d8a082fd37191f4ea35a47f1e1182f7f2c6086eb34a8c
+DIST textwrap-0.11.0.crate 17322 BLAKE2B 257428908342774593bbd3528fcdae710712ff54e8a711393a24356d8ba0e16e466a4b20c05f942c48ca76b3b5b5aaa90ec202f782cad892caa8b71ccf124da6 SHA512 f5c0fe4f28ff1a3a0931e8e235b5157a45f67967985bcc752418c5ec3481fca44a8ae4800088889b37e8cd0533f53d3c456d5ffd19b767b3f83a87b49a2e209a
+DIST time-0.1.45.crate 28911 BLAKE2B d43e2431752881f6885d572017f461b304d07ee5ef0d8b4898e62b47c8154268839c3bf69b141159090cfc0d90bd0113d6084fe99ea1f2b1e20668528ce21112 SHA512 e643fb8649f3efdaa1b0b6abc6a140d55ac550a55cad99d0cce9415dc51e155fb1ea240953eeaba5dc47ec73c49ab7f2962af79c693436289de0eb3ff60985ee
+DIST toml-0.4.10.crate 47534 BLAKE2B 853aee7f7d9261d2d0daa755e6c158e2b3a173a6e9d8d96cd0d78d75f2ecb1eea341cb8be8b3df9ef1ec34129b77e4f45b4aa849e8c33e6a1f07a3f832993a4f SHA512 15bc40159478207d204e46ff2459dd3146d8f5508f07399f310ec8266190df8a1375e860fc8a7b3fb372b01e9d0f65eaecdc1b896ac2a921070ce76fde82f160
+DIST ugdb-0.1.12.tar.gz 596600 BLAKE2B b8c31807cd227532df59fca4a6545948c3a13e6e40ea875e4aaaa7a30ab795854829006cc325e1544e3c4830898fb05a1226c4549e7cf42a652eb4e7e6a970be SHA512 69e4813b0f4afa1993cb84ff156a6c0ccafb6f8c10ad0c77e592fe93f3c0e843ac034b6e82ad2719483f1c896cfee20fa95c1f4cf6be0895124f77316991b258
+DIST unicode-ident-1.0.18.crate 47743 BLAKE2B 517ab42a847020515b2b871844d0571ea672340f89a762631a791eac18935ac122122fa5566e58b99ab47de179eadb5298e8ff1d05b123c4e93b7fa989c8e31f SHA512 d11f89fb696f9e2953c96a40b5478832651b268c83b9c7a700b07e768e795d6e8dc346597d1226df21219d36866768d1f640bd8edb68db8bd3d5d437b2bfd324
+DIST unicode-segmentation-1.12.0.crate 106323 BLAKE2B 268b60aff6694434f05afb7e2b8187eeccdceb77460f8ce2ac0f84d470f8a4e03182ce3f7906177cd2f00f989273a7e69061a763006245f0876bf21b15076804 SHA512 55eebfe5e9972b39d7c0011d80eb5f517d636de37870999119a3d8f064f21f67b66a5ba9761d562738b05f220e21d56b5be7bbd9cc51662994e40dd67c38f946
+DIST unicode-width-0.1.14.crate 271615 BLAKE2B dd2e1504caedecb5d37c397ba05446d3d762b8b6833a8032ebbc213e324d53d89db5e96ed2f7223096e5754d800b39a54105906effc88d9437d7acb9e7beb81e SHA512 3c58a18776aa82cc13c761789a47901616cd98a30356f93d7eb05ae457314209d0a66213e2bbfa5eb8b59be6beacf62438234ce8daafa31b128dbf7d5d6fcadb
+DIST unicode-xid-0.1.0.crate 16000 BLAKE2B 159004a7bbb7476b39e982b51dbf615717095fd5946536e757653aa941bbf1b774f331db744ecc33bb2ead4b0a6d254fde86cfd6cd8b83ab9983fa89928eddbe SHA512 cc5343e2166938322cfd7c73f1f918f2a9c46846ac0ef55933d1e44cdfaf6f7da2b7ff18b68e356c47b6d8ba5565eda0db42c347dcbde830683f341ac2b1849d
+DIST unix_socket-0.5.0.crate 12261 BLAKE2B 833c47f6359554cb76cbac50ed91380a2dbe406f75e6b366a29a807f6981973fc84560ce83f8483743ad31bc0c53d8be40f215f7cf0822b7405195bee474e79b SHA512 dcd3589f042491540a69176dde6944710deea7317ed0de6912725686473ca15b34dda0a67490252bc8ef5c1ffdf7aecd7b76aa81a27a34b3c4870305c89412e5
+DIST unsegen-0.3.1.crate 260915 BLAKE2B e0cfe8a87451cd083f6e17e5d1dabe437eb465366d9354809899f0e63d924c423834abcbf596fab62b13aee8e9f3d2618d71d6fab62a27a2709a30d65f48b994 SHA512 4c77b1045b9343d1cfe7d97e5dce58b58211ec167b8c64235041c4afe2d444ab8335c10f5b4788b21c65fd5fe7b1cdb8054e90891ab220716d381bcbdade23ca
+DIST unsegen_jsonviewer-0.3.0.crate 31294 BLAKE2B c0093ba7b29da640673a28017b6797d9e71cee07c6498609374d6908831bfd22152e67ec534b32a635329255538e1d365f02af57a76da54ba5b16dd6286066cd SHA512 49e7ba4d5832bac05a8a6b808d0e0232d13ccc7d554ca646f408ed75347c783c11dfbb316bb4fd3c43c7e4f47b843ed00c4a581d2756047dfb381138f488fa1f
+DIST unsegen_pager-0.3.0.crate 77968 BLAKE2B 7564baf62fca181dcb388bfa1445ceae486c51f91d9d72b6612bd6964c9ebe8f1726b51975f0fce61951cb4a542edbc966e20dd0c2665918e7cd5874d0be1783 SHA512 01fae6db45abfabb0194149837e345ebfd60e31ca25b55eab076aa4397dc37ebe5157053fde1ffe99e249381d33563ce57a1c9b814cebfe55edfd98767ad6a28
+DIST unsegen_signals-0.3.0.crate 3009 BLAKE2B 7b0db5c250074f72d731d219f0f14f0b93e22ad3e0d27d5521f468730ca19a554d6b0a941900740684d6418cbb366ccf73cb78463bcf7a64f4c536dac0896c24 SHA512 93ba0a5fcdf2d8fb1acba534654fe6d1a775ca037f6561314fc650d1800f21b3839bdc74bab160229609088cd84e7bdfdc51c60f5d42a213ef16983a7210eb9b
+DIST unsegen_terminal-0.3.2.crate 30271 BLAKE2B d2928bcc784740724853c38fc0b80adca2cdb5dec9d81cb28213240d8a39403be59bb507ce937a291d1a343964c808e749d6398862d5f8167bc852b8933a58ac SHA512 54657dbd5ff296af9a6406b792fb7fd7046638e62c1421461a58f95fe4c4c3a971c890d4fc52add216591978ec32b486d4a2f9019c5876d62cc20644d0d16889
+DIST utf8parse-0.1.1.crate 13995 BLAKE2B 6b1de4afdb2837a76637de72f6e6a81e73aa683d8da04ebc94cf7ee3c542845d2244e721840511ee2725320f2f882722e2bea67914435131d7af1ab29291d1eb SHA512 543d4daddce8248b181deb1c3952ca15303d78616480b23af163ca6253a059b5ce9494652839a051c48a47816c3dd719465bbe5bb7930db676a16bcdac47c517
+DIST vec_map-0.8.2.crate 14466 BLAKE2B 8f109fbff19604b82ea2aa61c952e2ce9b5597ccc8e1ef4e847648e2de08dece8c4debe92889edeccb8d393645fd0b62436b49d236ded7ad181c4a51239a9539 SHA512 4f1ef59bc2c437e79f1f84fe021bce5aa8ccd581f500f3d5776913d5f17d45b03ccee64f5bd03d47656318cfc9344a1f4311079d471fa409a8e4e94c143973f9
+DIST void-1.0.2.crate 2356 BLAKE2B 41578fb5507f94e7d135f9595cec107ed00a926f4968df8b59792d1676ba5b6980cd67310f820fc37a9c14ebe43a171833fa8dfc09eac5dd42f2ebe808632a83 SHA512 1cc7d282600dc0164d7e410aa895d5dc99de1174991549c6733c94cc2027026517f66797751d737869eae58c560fa26edbf43f36b3015eb2fd99828fe40e0aa1
+DIST vte-0.3.3.crate 2397439 BLAKE2B 213fccf5b1f09b2d23bca57be2abec0a3580ab01864c51dd364676f5c66decc5184ef15f0e484f9a94e892f118863655f4b2ed2a340a47276b3fe7b4db901dec SHA512 5e00e8409ef21edb5aa6fbe482785fd5969dd17a6695f82328c4ae12ea8622712dc3473f33832fdfe0cc2395411431fd47842e86e35022149d5e958c4e5f8fe9
+DIST walkdir-2.5.0.crate 23951 BLAKE2B a2d3a973f206e94699adec0263dd5e211347722cf3ab82536295019268b3125084da5dbcad818070bfdcb6a5de08da4eb483475bc225a829f58a1e3e040b5fba SHA512 da36a121dc6656942dc9cd9887fcf4f6eea7750354ef3f59c7c25d836e7afe06f33260b4d55d0d99421104ed4ce56ef2a1f0f4c3b713766fff90548c21793fad
+DIST wasi-0.10.0+wasi-snapshot-preview1.crate 26964 BLAKE2B 525db01649a5981ee82ad80a1a4bab9baffd235262452675619f36a1b454017a74593c53c129f8c30b865994bbe30ef19cebaad9d245ccf54b9b07ef70d5d8ec SHA512 88e2da617f50d9ebfb1e0c5857321fb86b5ee88ae8a8d199d3cc092e0f39688a2cb68503f7c6bb09dd6bc50a9a03597a1eb2e032150fbd0d0b8afa02ad771c88
+DIST wasm-bindgen-0.2.100.crate 48288 BLAKE2B 8fc4f71c7d6cef15f131a9bdbb50e3eaf9f3894a5b6c1d73876824efb731b46e8c3449947893103f23bc15cad228a1b8bcccd45ada20df53b3f3dde6e419c184 SHA512 2a8ea7ec669efe10f5701dc3b2bf496e33afa70c31dbc65fda5191c9c28ddde54fa38bb168a41b0319a4ff0bb5ccd897ce51ccd7e523e647b3544fb390f8a4e3
+DIST wasm-bindgen-backend-0.2.100.crate 32111 BLAKE2B 6bbbef709753e22230176121388a95fdb8f4dd32e0755dce5bf6c1127c54a236af292f319d14b5cd97bdb310fee65288e8f404921b83693e287164cf9d589a2e SHA512 a2ee30c1185644f989af6be34e93149a791c05125de24c0ff91c320f683f6f5d939fe42b8ca09d629096388a39256469f8b96a6e35722ccfdbe8d978c9a51770
+DIST wasm-bindgen-macro-0.2.100.crate 9663 BLAKE2B b8a3fc6b3571f8caf106a9e9f3d9cc48b86096d714c5d0208f03d44d47003b3b26441b5cd68bcd49a8c05758bc1b984e460fb62ab439ff2d68c72766ce20358f SHA512 a1942f838eff5fd54406b573d81fe18f262df48a19535245b1a46cb31db2a022746e861d72e5286c632969d15d416655460d3865309c4947cd3d7965dead5c42
+DIST wasm-bindgen-macro-support-0.2.100.crate 26243 BLAKE2B c18e35978b62dd2822ba8a4f6955cd5154b2a0d81b8e8032c2f8bda42c1c25f74a13f3e1c3a7bf47a823de2517a237e6a1aef18b189bf1f2b934123c58d1eb34 SHA512 0d03eaeda37c9c6ae06c0fa96e872b54780c4cf545b621c730dcc113dd59a8cb6333c5e3818f51365f71913b9669d8a870a06e70729722d03c07a49cff8a4fdf
+DIST wasm-bindgen-shared-0.2.100.crate 8570 BLAKE2B 886fa72cae891d4c2311e12e28f0a7bde9bcaca893603afa3428a402726b3b2bcdb6cb7dca6fdf983bd8fac5f049f0543537f2161318769b43c7eebfc906df27 SHA512 3fca8ddd1c6b2f66f70f6608c9b341822603f1c0dd71d47d27c6be8fe3f2c88598619946627720734b48cf999cafd0c63a08af5db28ea78a1538d2165a5fba61
+DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97
+DIST winapi-i686-pc-windows-gnu-0.4.0.crate 2918815 BLAKE2B 4d357e4d30f9552972170d65b9a5358b69c46a3e772fe05efc22f3d4ffc1caeeaad7aacdc7abd503a7ad0545f8bd7d22bf351dcb6df76f812fa4d45c34d65df0 SHA512 a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2
+DIST winapi-util-0.1.9.crate 12464 BLAKE2B 7fb9dd803fc2608c4e5bc75674472992d82da364f24c22072d5624d6ae6abc44abd3e3ea3c45a7558e045331f3d87572b306b4ab5de52c07ff3706e7f13c2a38 SHA512 c46b893f67ec6e36499b00736bb6b9421e0e2611e76784afa6da01d7ebd033df82f1be7cf8d871d541125d290983f98f26f759488ba9aface49efce8edd682e9
+DIST winapi-x86_64-pc-windows-gnu-0.4.0.crate 2947998 BLAKE2B 2ad1ea8b5fa07d544e910ccba043ae925269b76b26c9da356305b34b86741dd8b9aff0b9ffe3d562db4fcd7d7c46a11ce9e3168b782b1d89ae6881742b7ede82 SHA512 4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513
+DIST windows-core-0.52.0.crate 42154 BLAKE2B 9670bf02261b4ab2a24eff97dad11e305deac823cacfae286965b62b11bc035f19a55ca710eaa4359c8a4905433a94fe62a836b77ddd68f244ad6ac2c9657f58 SHA512 0c8f1c7e63c11bdcf1361150ecc83abbfba8da2c6d28523799bd286bf8aa1df61ffed19175e8cb3ef516a9afb6248b640c2101a2e0c09a99bfd7a18c6741bd36
+DIST windows-link-0.1.0.crate 6153 BLAKE2B 51b34d4e9eefc3d389a205f1cc654b142641c562b036775504fc923ea83702ef9d2bf8909ce439af7f76aabb486405b91c25861510a92c2f8aaf05944912a2ab SHA512 c7e7b6e67b8041534f8bbf36567fc627b54b46bb407743864fd34113e2f30b7ecf4aa6c04ec328ef1b3cdbebe13ce8f9a2c31520d51e1c32732bfce2a1ff015c
+DIST windows-sys-0.59.0.crate 2387323 BLAKE2B 3110c8cd2bc005f8c95cd038a8d574af648dc19788fe4485f977376f92e36b911b1a542d669a07ae9cd4ea72a884ab01ec78b8a2b5587456eb202452d1d8fa0d SHA512 d35e009e979633a1f3c8468cd038bd5c8c0381405165ce03497decd7d9edaaac485d704487e4a61d9aaf4e4d011b4248408912df6a0044d50e8457259867e061
+DIST windows-targets-0.52.6.crate 6403 BLAKE2B eb98d0a8daeed5fe76e7fa8edb2743e2a3e77dfb9c4ea68605a6ab10532cb7cfc43bc1cea0180869445bd940be762a40136500e26b84ca88b5e0c502004c7a4c SHA512 d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f
+DIST windows_aarch64_gnullvm-0.52.6.crate 435718 BLAKE2B 8b12ae02892cb69401329034bbca671d13bd268a112120b56b90504707cef89decfbd2560492844a9f0588fab62dc1476ab7e931126b939015d25a8cc91ca334 SHA512 f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5
+DIST windows_aarch64_msvc-0.52.6.crate 832615 BLAKE2B adc8ff61b6dc96d39c92c7d4221ae6aa0575edfc016cfcd046067ca5d8fcfd56d10e8e227be1c038ce34684be22c7ccaf5f18cd5a7638d28fbff4ba15b48b90b SHA512 a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b
+DIST windows_i686_gnu-0.52.6.crate 880402 BLAKE2B 5aab8ee07132eccb7695807eb44811beeb0657aadfb672c54e99b6ae39c067ba9b93e38fc69bb5b9b14a9759f263ccd5e301597d2727d83b31b49a409b6bd405 SHA512 a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822
+DIST windows_i686_gnullvm-0.52.6.crate 475940 BLAKE2B fec4fda8bb2bf319a501a22372fa642ae682e4dee3235b258a028190ee73220bfc55b3142f06249bb4579b17e5fde662bb2b121aefe18544653350d7d0fe7d8e SHA512 95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f
+DIST windows_i686_msvc-0.52.6.crate 901163 BLAKE2B 99ed34e052db5ba77bab240ed5d38ce450be347a794d63ec39b719304c32722c9999b540ab40abe0216318900b7412970df99dfb36d1516a9517cae0c77d1bdc SHA512 ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96
+DIST windows_x86_64_gnu-0.52.6.crate 836363 BLAKE2B e2335829155cdbd4a55cc9f9babc237e14e32aab97f6f91afabcdf80d2aee37d6fb4b8669aaf433ff532c85dba59b3d366c7d41b61a2f29b96f960169c900687 SHA512 c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb
+DIST windows_x86_64_gnullvm-0.52.6.crate 435707 BLAKE2B ab77dccd06328cdb00175f41cdbc120594050a9678b7f9820444391fb50aada3911a91ea00f3a6db2b4fa1820fd23bc9a007dfbe65ad41417c26ee1137ef9b96 SHA512 67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd
+DIST windows_x86_64_msvc-0.52.6.crate 832564 BLAKE2B 8e9a3044654c6de99a9153e7cacd575474e7a8a3d883c67b02132af5d3fc99d03cd5f7a4dd666a3947451d11218e6acc6eb5e2526f012481106cc13453839719 SHA512 21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7
+DIST xml-rs-0.7.0.crate 50980 BLAKE2B 3d0427660327002248823c8b565f83214035d5b58273ff6adbb38b764c1d03d84418769e70bb15bc5dbd986eadbd8d1776dfba175dfb24f04d5e66e5f6209a03 SHA512 8763f37faa24bf5a460f068f16458d5e3f8f5cc8a698202e7db792d61edf580afdd80d6b02d168fa021d28049a48e5a583e346e9608872704e9beb6b3f345bf7
+DIST yaml-rust-0.4.5.crate 47783 BLAKE2B 3e888c5cc7afb43eaf3aaab2b6f47b86df164a66eb54d4e166b965cc84b1e06cd17bd992a0d6ee175d9a73a76e2b44a13167246383ed054afcf3cc1710b309cb SHA512 7621dc8dfd5e7d4a7a8805b2a7e8319b63b852367655f2359d4e3e8fec6c4fad52d75c46ce1161e4c674eac0780b757ce9d34e664e304d8d2beec7afa0363ea0
diff --git a/dev-debug/ugdb/metadata.xml b/dev-debug/ugdb/metadata.xml
new file mode 100644
index 000000000000..f390aa828259
--- /dev/null
+++ b/dev-debug/ugdb/metadata.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>pascal.jaeger@leimstift.de</email>
+ <name>Pascal Jaeger</name>
+ </maintainer>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/ugdb/ugdb-0.1.12.ebuild b/dev-debug/ugdb/ugdb-0.1.12.ebuild
new file mode 100644
index 000000000000..48751791f8c6
--- /dev/null
+++ b/dev-debug/ugdb/ugdb-0.1.12.ebuild
@@ -0,0 +1,175 @@
+# Copyright 2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# Autogenerated by pycargoebuild 0.15.1
+
+EAPI=8
+
+CRATES="
+ addr2line@0.24.2
+ adler2@2.0.0
+ aho-corasick@1.1.3
+ android-tzdata@0.1.1
+ android_system_properties@0.1.5
+ ansi_term@0.12.1
+ atty@0.2.14
+ autocfg@1.4.0
+ backtrace@0.3.74
+ base64@0.8.0
+ bincode@1.3.3
+ bitflags@1.3.2
+ bumpalo@3.17.0
+ byteorder@1.5.0
+ cc@1.2.16
+ cfg-if@0.1.10
+ cfg-if@1.0.0
+ chrono@0.4.40
+ clap@2.34.0
+ core-foundation-sys@0.8.7
+ crc32fast@1.4.2
+ derive_more@0.14.1
+ either@1.15.0
+ flate2@1.1.0
+ flexi_logger@0.11.5
+ fnv@1.0.7
+ fuchsia-cprng@0.1.1
+ gimli@0.31.1
+ glob@0.3.2
+ heck@0.3.3
+ hermit-abi@0.1.19
+ iana-time-zone-haiku@0.1.2
+ iana-time-zone@0.1.61
+ itertools@0.5.10
+ itoa@1.0.15
+ js-sys@0.3.77
+ json@0.11.15
+ lazy_static@1.5.0
+ libc@0.2.170
+ linked-hash-map@0.5.6
+ log@0.4.26
+ matrixmultiply@0.1.15
+ memchr@2.7.4
+ memoffset@0.6.5
+ miniz_oxide@0.8.5
+ ndarray@0.8.4
+ nix@0.17.0
+ nix@0.24.3
+ nom@2.2.1
+ num-complex@0.1.44
+ num-traits@0.1.43
+ num-traits@0.2.19
+ numtoa@0.1.0
+ object@0.36.7
+ once_cell@1.20.3
+ onig@3.2.2
+ onig_sys@68.2.1
+ parse_int@0.5.0
+ pkg-config@0.3.32
+ plist@0.2.4
+ proc-macro2@0.4.30
+ proc-macro2@1.0.94
+ quote@0.6.13
+ quote@1.0.39
+ rand@0.3.23
+ rand@0.4.6
+ rand_core@0.3.1
+ rand_core@0.4.2
+ raw_tty@0.1.0
+ rawpointer@0.1.0
+ rdrand@0.4.0
+ redox_syscall@0.2.16
+ redox_termios@0.1.3
+ regex-automata@0.4.9
+ regex-syntax@0.4.2
+ regex-syntax@0.8.5
+ regex@1.11.1
+ ropey@1.6.1
+ rustc-demangle@0.1.24
+ rustc_version@0.2.3
+ rustversion@1.0.20
+ ryu@1.0.20
+ safemem@0.2.0
+ same-file@1.0.6
+ semver-parser@0.7.0
+ semver@0.9.0
+ serde@1.0.218
+ serde_derive@1.0.218
+ serde_json@1.0.140
+ shlex@1.3.0
+ smallvec@1.14.0
+ str_indices@0.4.4
+ strsim@0.8.0
+ structopt-derive@0.2.18
+ structopt@0.2.18
+ syn@0.15.44
+ syn@2.0.99
+ syntect@2.1.0
+ termion@1.5.6
+ textwrap@0.11.0
+ time@0.1.45
+ toml@0.4.10
+ unicode-ident@1.0.18
+ unicode-segmentation@1.12.0
+ unicode-width@0.1.14
+ unicode-xid@0.1.0
+ unix_socket@0.5.0
+ unsegen@0.3.1
+ unsegen_jsonviewer@0.3.0
+ unsegen_pager@0.3.0
+ unsegen_signals@0.3.0
+ unsegen_terminal@0.3.2
+ utf8parse@0.1.1
+ vec_map@0.8.2
+ void@1.0.2
+ vte@0.3.3
+ walkdir@2.5.0
+ wasi@0.10.0+wasi-snapshot-preview1
+ wasm-bindgen-backend@0.2.100
+ wasm-bindgen-macro-support@0.2.100
+ wasm-bindgen-macro@0.2.100
+ wasm-bindgen-shared@0.2.100
+ wasm-bindgen@0.2.100
+ winapi-i686-pc-windows-gnu@0.4.0
+ winapi-util@0.1.9
+ winapi-x86_64-pc-windows-gnu@0.4.0
+ winapi@0.3.9
+ windows-core@0.52.0
+ windows-link@0.1.0
+ windows-sys@0.59.0
+ windows-targets@0.52.6
+ windows_aarch64_gnullvm@0.52.6
+ windows_aarch64_msvc@0.52.6
+ windows_i686_gnu@0.52.6
+ windows_i686_gnullvm@0.52.6
+ windows_i686_msvc@0.52.6
+ windows_x86_64_gnu@0.52.6
+ windows_x86_64_gnullvm@0.52.6
+ windows_x86_64_msvc@0.52.6
+ xml-rs@0.7.0
+ yaml-rust@0.4.5
+"
+
+inherit cargo flag-o-matic
+
+DESCRIPTION="An alternative TUI for gdb"
+HOMEPAGE="https://github.com/ftilde/ugdb"
+SRC_URI="
+ https://github.com/ftilde/ugdb/archive/${PV}.tar.gz -> ${P}.tar.gz
+ ${CARGO_CRATE_URIS}
+"
+
+LICENSE="MIT"
+# Dependent crate licenses
+LICENSE+="
+ ISC MIT Unicode-3.0
+ || ( Apache-2.0 Boost-1.0 )
+"
+SLOT="0"
+KEYWORDS="~amd64"
+
+QA_FLAGS_IGNORED="/usr/bin/ugdb"
+
+src_configure() {
+ append-cflags "-std=gnu17" # bug 943665
+ default
+}
diff --git a/dev-debug/valgrind/Manifest b/dev-debug/valgrind/Manifest
new file mode 100644
index 000000000000..2498da3b451a
--- /dev/null
+++ b/dev-debug/valgrind/Manifest
@@ -0,0 +1,8 @@
+DIST valgrind-3.26.0-patches-1.tar.xz 8092 BLAKE2B e2e4874ddd9129128153fc2ad0a35e6ecf4f81662c416257624600750c80cf959ff41ab5de06d47a841d640d9dfa0bb965f067d8c08d815931c6dd02c5fcd0bf SHA512 d55f283b834d3be572b4b2cdbdc11a15975162333052bbf77b3b7a0c29b170d332427d4ce24b2790aacabe737f02ef6ad4f2898ca625378631513fb60aaaba58
+DIST valgrind-3.26.0.tar.bz2 17182495 BLAKE2B 55e066b49e122f65df0c7129f25613f2d64fef6b4a7da59f42280e1a5a4086db84d033b8fca714b7ec8da506dbc71e8814f68f5b3d302c7373dbce8dac905b03 SHA512 80ebf9197be602fdd4aad0e9277e6ef2fd25ede9cecb6e6d159f6f062c13f62ad907c6b6e7000e82b3404d8b4f9e7bf15813f60d9fed414c7b713a4280c82898
+DIST valgrind-3.26.0.tar.bz2.asc 228 BLAKE2B 7ee59c96f5929e2de3478c062208e5fcf645e86f0894cb9b6330bb320b518f2e55e432ab31c813c623208216859ddcfcb673417c5a2be3982f2a9d23f4dcd698 SHA512 ecae4158c64bc4ff9c6c5859f41d8a724c5207b5dbac75772d64c23baf78a280159b1b954a16ac73993eb19c39e1fcb3bd0c946c0e18209f3cb8f3d9238d6071
+DIST valgrind-3.27.0-patches-1.tar.xz 1908 BLAKE2B c897cd70b2c27479ab51446f6d2c6e156f7a92f852720ad514a21dc5e37210da3b7ce250463b7b091794b143c840258efad8649bb133167acb8faa547074809f SHA512 f3e3108d4f4d4d614606e2d0232814035be9d9412d1209232ad2b22bf3fe3efcb1b49fe71856fe091924fe7732759b022627dc4a400cf20353c15301ff5eaf0e
+DIST valgrind-3.27.0.tar.bz2 17294027 BLAKE2B 0b996f238e4cbe6c6b42e07677c658b995bbf90d5a4c00c6d4a0fdb651d28644e90dcd40e3e715f74417cadbea60c34cc897428d61574103c2da70f4abcac63f SHA512 a171d95426835604a426e77b3745a05ab1557972fceb513e2caa76e71192c9763fe4c2190249a2312ae3a94511ee2aefa9a926858c11a724b8d95f497b083cf3
+DIST valgrind-3.27.0.tar.bz2.asc 228 BLAKE2B 9b150d2c28799548b6a23e40d4e80846959c0ae40872fe0616c257dcdf9d622fc09ce900b08d54ad24dd74a4577f6a6aabd93c53f23f235020f66ee15f61df8b SHA512 3481d16e0170ed636c49b7527803efed9dce2cdbbfad80cfd2ef708d849954a3a7ee0db5df971653a7a8f896f3618ffd947911c5e8eed36e3f21a5d83cec518b
+DIST valgrind-3.27.1.tar.bz2 17372682 BLAKE2B c161e0b08127ff361d19327d81428312a69f61ea088ccd83fd564c65b2508228bbe7e23bcdbce535e053623c73d8ebb92b8a56e418708e9b65fe2f03554a229e SHA512 4522e345fe31bc10478f21ab261cf7b3e509d80fe98fd0c7c9778ac9a9f90e1d8fa6e54a37c2e23114c01c95131035103fc1e78661710d7f45f5d564a31c1015
+DIST valgrind-3.27.1.tar.bz2.asc 228 BLAKE2B 4a443bde25564246f297bf27d138460cbf02f6bfe4978046380a851d4c25324b35c1ab139711952c741bb31f1561599da97e27e4d08e346797b30ef704008d71 SHA512 9281f43808d776b35dd39df010d8036929506e0fc933e7a66459b0c182febaaff663f5cecc1a0499d420fa7b91fee5ddf5642fbf727753690fdd72a24f6e8769
diff --git a/dev-debug/valgrind/files/valgrind-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch b/dev-debug/valgrind/files/valgrind-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
new file mode 100644
index 000000000000..44176658df74
--- /dev/null
+++ b/dev-debug/valgrind/files/valgrind-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
@@ -0,0 +1,22 @@
+From beab8d9f8d65230567270331017184c8762faa42 Mon Sep 17 00:00:00 2001
+From: Matt Turner <mattst88@gmail.com>
+Date: Mon, 4 Nov 2019 09:12:16 -0800
+Subject: [PATCH] Build ldst_multiple test with -fno-pie
+
+Bug: https://bugs.gentoo.org/685070
+---
+ none/tests/ppc32/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/none/tests/ppc32/Makefile.am b/none/tests/ppc32/Makefile.am
+index 11697c99a..222efd3f2 100644
+--- a/none/tests/ppc32/Makefile.am
++++ b/none/tests/ppc32/Makefile.am
+@@ -156,3 +156,4 @@ test_isa_2_07_part2_LDADD = -lm
+ test_tm_LDADD = -lm
+ test_touch_tm_LDADD = -lm
+
++ldst_multiple_CFLAGS = $(AM_CFLAGS) -fno-pie
+--
+2.23.0
+
diff --git a/dev-debug/valgrind/files/valgrind-3.21.0-glibc-2.34-suppressions.patch b/dev-debug/valgrind/files/valgrind-3.21.0-glibc-2.34-suppressions.patch
new file mode 100644
index 000000000000..c4111326cfa2
--- /dev/null
+++ b/dev-debug/valgrind/files/valgrind-3.21.0-glibc-2.34-suppressions.patch
@@ -0,0 +1,197 @@
+commit e04914e10126d3a8de13302e958bbfd5e83a6637
+Author: Romain Geissler <romain.geissler@amadeus.com>
+Date: Mon Jan 30 16:09:47 2023 +0000
+
+ Fragile temporary fix for https://bugs.kde.org/show_bug.cgi?id=464671: avoid using @GLIBC_VERSION@ with our recent toolchains.
+
+ This is fragile as it might a bit too many things (especially ld*.so, which maybe shall be written "ld-linux-*.so" to be a bit more robust)
+ and also it doesn't work for glibc < 2.34.
+
+ Ideally something similar to GLIBC_LIBC_PATH shall be introduced for ld.so and libdl.so, so that
+ it covers both glibc < 2.34 and glibc >= 2.34.
+
+--- a/glibc-2.X.supp.in
++++ b/glibc-2.X.supp.in
+@@ -39,74 +39,74 @@
+ {
+ dl-hack3-cond-1
+ Memcheck:Cond
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
+ }
+ {
+ dl-hack3-cond-2
+ Memcheck:Cond
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/libc-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
++ obj:@GLIBC_LIBC_PATH@
+ }
+ {
+ dl-hack3-cond-3
+ Memcheck:Cond
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/libc-@GLIBC_VERSION@*.so*
+- obj:*/lib*/libc-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so*
++ obj:@GLIBC_LIBC_PATH@
++ obj:@GLIBC_LIBC_PATH@
+ }
+ {
+ dl-hack3-cond-4
+ Memcheck:Cond
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/libdl-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
++ obj:@GLIBC_LIBC_PATH@
+ }
+
+ {
+ dl-hack4-64bit-addr-1
+ Memcheck:Addr8
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
+ }
+ {
+ dl-hack4-64bit-addr-2
+ Memcheck:Addr8
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/libc-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
++ obj:@GLIBC_LIBC_PATH@
+ }
+ {
+ dl-hack4-64bit-addr-3
+ Memcheck:Addr8
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so*
+- obj:*/lib*/libdl-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so*
++ obj:*/lib*/ld*.so*
++ obj:@GLIBC_LIBC_PATH@
+ }
+
+ {
+ dl-hack5-32bit-addr-1
+ Memcheck:Addr4
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so
++ obj:*/lib*/ld*.so
++ obj:*/lib*/ld*.so
++ obj:*/lib*/ld*.so
+ }
+ {
+ dl-hack5-32bit-addr-3
+ Memcheck:Addr4
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so
+- obj:*/lib*/libdl-@GLIBC_VERSION@*.so*
++ obj:*/lib*/ld*.so
++ obj:*/lib*/ld*.so
++ obj:@GLIBC_LIBC_PATH@
+ }
+ {
+ dl-hack5-32bit-addr-4
+ Memcheck:Addr4
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so
+- obj:*/lib*/libdl-@GLIBC_VERSION@*.so*
+- obj:*/lib*/ld-@GLIBC_VERSION@*.so
++ obj:*/lib*/ld*.so
++ obj:@GLIBC_LIBC_PATH@
++ obj:*/lib*/ld*.so
+ }
+
+
+@@ -124,7 +124,7 @@
+ glibc-2.5.x-on-SUSE-10.2-(PPC)-2a
+ Memcheck:Cond
+ fun:index
+- obj:*ld-@GLIBC_VERSION@.*.so
++ obj:*/lib*/ld*.so*
+ }
+ {
+ glibc-2.5.x-on-SuSE-10.2-(PPC)-2b
+@@ -136,7 +136,7 @@
+ glibc-2.5.5-on-SuSE-10.2-(PPC)-2c
+ Memcheck:Addr4
+ fun:index
+- obj:*ld-@GLIBC_VERSION@.*.so
++ obj:*/lib*/ld*.so*
+ }
+ {
+ glibc-2.3.5-on-SuSE-10.1-(PPC)-3
+@@ -149,9 +149,9 @@
+ {
+ glibc-@GLIBC_VERSION@-on-SUSE-10.3-(x86)
+ Memcheck:Addr4
+- obj:*/lib/ld-@GLIBC_VERSION@*.so
+- obj:*/lib/ld-@GLIBC_VERSION@*.so
+- obj:*/lib/ld-@GLIBC_VERSION@*.so
++ obj:*/lib/ld*.so
++ obj:*/lib/ld*.so
++ obj:*/lib/ld*.so
+ }
+
+ {
+@@ -168,9 +168,9 @@
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:__sendto_nocancel
+- obj:/*libc-@GLIBC_VERSION@*.so
+- obj:/*libc-@GLIBC_VERSION@*.so
+- obj:/*libc-@GLIBC_VERSION@*.so
++ obj:@GLIBC_LIBC_PATH@
++ obj:@GLIBC_LIBC_PATH@
++ obj:@GLIBC_LIBC_PATH@
+ }
+ {
+ glibc24-64bit-padding-1c
+@@ -180,7 +180,7 @@
+ fun:__nscd_get_map_ref
+ fun:nscd_get*_r
+ fun:*nscd*
+- obj:/*libc-@GLIBC_VERSION@*.so
++ obj:@GLIBC_LIBC_PATH@
+ }
+
+
+@@ -199,18 +199,18 @@
+ Memcheck:Param
+ socketcall.sendto(msg)
+ fun:send
+- obj:/*libc-@GLIBC_VERSION@*.so
+- obj:/*libc-@GLIBC_VERSION@*.so
+- obj:/*libc-@GLIBC_VERSION@*.so
++ obj:@GLIBC_LIBC_PATH@
++ obj:@GLIBC_LIBC_PATH@
++ obj:@GLIBC_LIBC_PATH@
+ }
+ {
+ X11-64bit-padding-4b
+ Memcheck:Param
+ socketcall.send(msg)
+ fun:send
+- obj:/*libc-@GLIBC_VERSION@*.so
+- obj:/*libc-@GLIBC_VERSION@*.so
+- obj:/*libc-@GLIBC_VERSION@*.so
++ obj:@GLIBC_LIBC_PATH@
++ obj:@GLIBC_LIBC_PATH@
++ obj:@GLIBC_LIBC_PATH@
+ }
+
+ ##----------------------------------------------------------------------##
diff --git a/dev-debug/valgrind/files/valgrind-3.26.0-gcc16.patch b/dev-debug/valgrind/files/valgrind-3.26.0-gcc16.patch
new file mode 100644
index 000000000000..4b9521456909
--- /dev/null
+++ b/dev-debug/valgrind/files/valgrind-3.26.0-gcc16.patch
@@ -0,0 +1,21 @@
+Small backport(ish) of https://sourceware.org/git/?p=valgrind.git;a=commit;h=51c5973d9d1f096b9472df75638f2a53324fafed
+--- a/configure.ac
++++ b/configure.ac
+@@ -2591,7 +2591,7 @@ AC_GCC_WARNING_SUBST_NO([unused-result], [FLAG_W_NO_UNUSED_RESULT])
+ AC_GCC_WARNING_SUBST_NO([infinite-recursion], [FLAG_W_NO_INFINITE_RECURSION])
+ AC_GCC_WARNING_SUBST_NO([deprecated], [FLAG_W_NO_DEPRECATED])
+ # OK for 32 and 64 bit
+-AC_GCC_WARNING_SUBST_NO([alloc-size-larger-than=18446744073709551615], [FLAG_W_NO_ALLOC_SIZE_LARGER_THAN])
++AC_GCC_WARNING_SUBST([alloc-size-larger-than=18446744073709551616], [FLAG_W_NO_ALLOC_SIZE_LARGER_THAN])
+ AC_GCC_WARNING_SUBST_NO([alloc-size], [FLAG_W_NO_ALLOC_SIZE])
+
+ AC_GCC_WARNING_SUBST([write-strings], [FLAG_W_WRITE_STRINGS])
+@@ -2610,7 +2610,7 @@ AC_GCC_WARNING_SUBST([implicit-fallthrough=2], [FLAG_W_IMPLICIT_FALLTHROUGH])
+ AC_DEFUN([AC_GXX_WARNING_SUBST_NO],[
+ AC_MSG_CHECKING([if g++ accepts -W$1])
+ safe_CXXFLAGS=$CXXFLAGS
+- CXXFLAGS="-W$1 -Werror"
++ CXXFLAGS="-W$1 -Wno-$1 -Werror"
+ AC_LANG_PUSH(C++)
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[;]])], [
+ AC_SUBST([$2], [-Wno-$1])
diff --git a/dev-debug/valgrind/files/valgrind-3.7.0-respect-flags.patch b/dev-debug/valgrind/files/valgrind-3.7.0-respect-flags.patch
new file mode 100644
index 000000000000..860e09c86ed3
--- /dev/null
+++ b/dev-debug/valgrind/files/valgrind-3.7.0-respect-flags.patch
@@ -0,0 +1,13 @@
+diff -Naur valgrind-3.7.0.orig//mpi/Makefile.am valgrind-3.7.0/mpi/Makefile.am
+--- valgrind-3.7.0.orig//mpi/Makefile.am 2011-10-26 17:24:23.000000000 -0400
++++ valgrind-3.7.0/mpi/Makefile.am 2011-11-10 16:03:14.000000000 -0500
+@@ -7,9 +7,6 @@
+ CC = $(MPI_CC)
+ DEFS =
+ DEFAULT_INCLUDES =
+-CPPFLAGS =
+-CFLAGS =
+-LDFLAGS =
+
+ EXTRA_DIST = \
+ mpiwrap_type_test.c
diff --git a/dev-debug/valgrind/metadata.xml b/dev-debug/valgrind/metadata.xml
new file mode 100644
index 000000000000..9fb531a356b2
--- /dev/null
+++ b/dev-debug/valgrind/metadata.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>toolchain@gentoo.org</email>
+ <name>Gentoo Toolchain Project</name>
+ </maintainer>
+ <longdescription>
+ Valgrind is a GPL'd tool to help you find memory-management problems
+ in your programs. When a program is run under Valgrind's supervision,
+ all reads and writes of memory are checked, and calls to
+ malloc/new/free/delete are intercepted. As a result, Valgrind can
+ detect problems such as
+
+ - Use of uninitialised memory
+ - Reading/writing memory after it has been free'd
+ - Reading/writing off the end of malloc'd blocks
+ - Reading/writing inappropriate areas on the stack
+ - Memory leaks -- where pointers to malloc'd blocks are lost forever
+ - Passing of uninitialised and/or unaddressible memory to system calls
+ - Mismatched use of malloc/new/new [] vs free/delete/delete []
+ - Some abuses of the POSIX Pthreads API
+ </longdescription>
+ <upstream>
+ <remote-id type="cpe">cpe:/a:valgrind:valgrind</remote-id>
+ </upstream>
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-debug/valgrind/valgrind-3.26.0.ebuild b/dev-debug/valgrind/valgrind-3.26.0.ebuild
new file mode 100644
index 000000000000..1c45634d1490
--- /dev/null
+++ b/dev-debug/valgrind/valgrind-3.26.0.ebuild
@@ -0,0 +1,204 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# The Valgrind upstream maintainer also maintains it in Fedora and will
+# backport fixes there which haven't yet made it into a release. Keep an eye
+# on it for fixes we should cherry-pick too:
+# https://src.fedoraproject.org/rpms/valgrind/tree/rawhide
+#
+# Also check the ${PV}_STABLE branch upstream for backports.
+
+inherit autotools dot-a flag-o-matic toolchain-funcs multilib pax-utils
+
+DESCRIPTION="An open-source memory debugger for GNU/Linux"
+HOMEPAGE="https://valgrind.org"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="
+ https://sourceware.org/git/${PN}.git
+ https://git.sr.ht/~sourceware/valgrind
+ "
+ inherit git-r3
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/valgrind.asc
+ inherit verify-sig
+
+ MY_P="${P/_rc/.RC}"
+ MY_P="${MY_P%%_p*}"
+ VALGRIND_PATCH_TARBALL="${MY_P}-patches-${PV##*_p}"
+ SRC_URI="
+ https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2
+ verify-sig? ( https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2.asc )
+ "
+ # Rollups of backports on ${PV}_STABLE branch upstream. This branch
+ # is usually announced on the mailing list and distros are encouraged
+ # to pull from it regularly.
+ if [[ ${PV} == *_p* ]] ; then
+ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${VALGRIND_PATCH_TARBALL}.tar.xz"
+ fi
+
+ S="${WORKDIR}"/${MY_P}
+
+ if [[ ${PV} != *_rc* ]] ; then
+ KEYWORDS="-* amd64 arm arm64 ppc ppc64 ~riscv x86 ~x64-macos ~x64-solaris"
+ fi
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="mpi"
+
+DEPEND="mpi? ( virtual/mpi )"
+RDEPEND="${DEPEND}"
+if [[ ${PV} == 9999 ]] ; then
+ # Needed for man pages
+ BDEPEND+="
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ "
+else
+ BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-valgrind-20251018 )"
+fi
+
+PATCHES=(
+ # Respect CFLAGS, LDFLAGS
+ "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch
+ "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
+ "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch
+ "${FILESDIR}"/${P}-gcc16.patch
+)
+
+QA_CONFIG_IMPL_DECL_SKIP+=(
+ # "checking if gcc accepts nested functions" but clang cannot handle good
+ # errors and reports both "function definition is not allowed here" and
+ # -Wimplicit-function-declaration. bug #900396
+ foo
+ # FreeBSD function, bug #932822
+ aio_readv
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif use verify-sig ; then
+ # Needed for downloaded patch (which is unsigned, which is fine)
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.bz2{,.asc}
+ fi
+
+ default
+}
+
+src_prepare() {
+ # Correct hard coded doc location
+ sed -i -e "s:doc/valgrind:doc/${PF}:" docs/Makefile.am || die
+
+ # Don't force multiarch stuff on OSX, bug #306467
+ sed -i -e 's:-arch \(i386\|x86_64\)::g' Makefile.all.am || die
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # upstream doesn't support this, but we don't build with
+ # Sun/Oracle ld, we have a GNU toolchain, so get some things
+ # working the Linux/GNU way
+ find "${S}" -name "Makefile.am" -o -name "Makefile.tool.am" | xargs \
+ sed -i -e 's:-M,/usr/lib/ld/map.noexstk:-z,noexecstack:' || die
+ cp "${S}"/coregrind/link_tool_exe_{linux,solaris}.in
+ fi
+
+ if [[ ${PV} != 9999 && -d "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} ]] ; then
+ PATCHES+=( "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} )
+ fi
+
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --with-gdbscripts-dir="${EPREFIX}"/usr/share/gdb/auto-load
+ )
+
+ tc-is-lto && myconf+=( --enable-lto )
+ lto-guarantee-fat
+
+ # Respect ar, bug #468114
+ tc-export AR
+
+ # -fomit-frame-pointer "Assembler messages: Error: junk `8' after expression"
+ # while compiling insn_sse.c in none/tests/x86
+ # -fstack-protector more undefined references to __guard and __stack_smash_handler
+ # because valgrind doesn't link to glibc (bug #114347)
+ # -fstack-protector-all Fails same way as -fstack-protector/-fstack-protector-strong.
+ # Note: -fstack-protector-explicit is a no-op for Valgrind, no need to strip it
+ # -fstack-protector-strong See -fstack-protector (bug #620402)
+ # -m64 -mx32 for multilib-portage, bug #398825
+ # -fharden-control-flow-redundancy: breaks runtime ('jump to the invalid address stated on the next line')
+ filter-flags -fomit-frame-pointer
+ filter-flags -fstack-protector
+ filter-flags -fstack-protector-all
+ filter-flags -fstack-protector-strong
+ filter-flags -m64 -mx32
+ filter-flags -fsanitize -fsanitize=*
+ filter-flags -fharden-control-flow-redundancy
+ append-cflags $(test-flags-CC -fno-harden-control-flow-redundancy)
+ filter-lto
+
+ if use amd64 || use ppc64; then
+ ! has_multilib_profile && myconf+=("--enable-only64bit")
+ fi
+
+ # Force bitness on darwin, bug #306467
+ use x64-macos && myconf+=("--enable-only64bit")
+
+ # Don't use mpicc unless the user asked for it (bug #258832)
+ if ! use mpi; then
+ myconf+=("--without-mpicc")
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # fxsave.o, tronical.o have textrels
+ # -fno-strict-aliasing: https://bugs.kde.org/show_bug.cgi?id=486093
+ emake CFLAGS="${CFLAGS} -fno-strict-aliasing" LDFLAGS="${LDFLAGS} -Wl,-z,notext" check
+}
+
+src_install() {
+ if [[ ${PV} == 9999 ]]; then
+ # TODO: Could do HTML docs too with 'all-docs'
+ emake -C docs man-pages FAQ.txt
+ mv docs/FAQ.txt . || die "Couldn't move FAQ.txt"
+ fi
+
+ default
+
+ dodoc FAQ.txt
+
+ pax-mark m "${ED}"/usr/$(get_libdir)/valgrind/*-*-linux
+
+ strip-lto-bytecode
+
+ # See README_PACKAGERS
+ dostrip -x /usr/libexec/valgrind/vgpreload* /usr/$(get_libdir)/valgrind/*
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # fix install_names on shared libraries, can't turn them into bundles,
+ # as dyld won't load them any more then, bug #306467
+ local l
+ for l in "${ED}"/usr/lib/valgrind/*.so ; do
+ install_name_tool -id "${EPREFIX}"/usr/lib/valgrind/${l##*/} "${l}"
+ done
+ fi
+}
+
+pkg_postinst() {
+ elog "Valgrind will not work if libc (e.g. glibc) does not have debug symbols."
+ elog "To fix this you can add splitdebug to FEATURES in make.conf"
+ elog "and remerge glibc. See:"
+ elog "https://bugs.gentoo.org/214065"
+ elog "https://bugs.gentoo.org/274771"
+ elog "https://bugs.gentoo.org/388703"
+}
diff --git a/dev-debug/valgrind/valgrind-3.26.0_p1.ebuild b/dev-debug/valgrind/valgrind-3.26.0_p1.ebuild
new file mode 100644
index 000000000000..3280daff3f83
--- /dev/null
+++ b/dev-debug/valgrind/valgrind-3.26.0_p1.ebuild
@@ -0,0 +1,203 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# The Valgrind upstream maintainer also maintains it in Fedora and will
+# backport fixes there which haven't yet made it into a release. Keep an eye
+# on it for fixes we should cherry-pick too:
+# https://src.fedoraproject.org/rpms/valgrind/tree/rawhide
+#
+# Also check the ${PV}_STABLE branch upstream for backports.
+
+inherit autotools dot-a flag-o-matic toolchain-funcs multilib pax-utils
+
+DESCRIPTION="An open-source memory debugger for GNU/Linux"
+HOMEPAGE="https://valgrind.org"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="
+ https://sourceware.org/git/${PN}.git
+ https://git.sr.ht/~sourceware/valgrind
+ "
+ inherit git-r3
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/valgrind.asc
+ inherit verify-sig
+
+ MY_P="${P/_rc/.RC}"
+ MY_P="${MY_P%%_p*}"
+ VALGRIND_PATCH_TARBALL="${MY_P}-patches-${PV##*_p}"
+ SRC_URI="
+ https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2
+ verify-sig? ( https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2.asc )
+ "
+ # Rollups of backports on ${PV}_STABLE branch upstream. This branch
+ # is usually announced on the mailing list and distros are encouraged
+ # to pull from it regularly.
+ if [[ ${PV} == *_p* ]] ; then
+ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${VALGRIND_PATCH_TARBALL}.tar.xz"
+ fi
+
+ S="${WORKDIR}"/${MY_P}
+
+ if [[ ${PV} != *_rc* ]] ; then
+ KEYWORDS="-* amd64 ~arm arm64 ppc ppc64 ~riscv x86 ~x64-macos ~x64-solaris"
+ fi
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="mpi"
+
+DEPEND="mpi? ( virtual/mpi )"
+RDEPEND="${DEPEND}"
+if [[ ${PV} == 9999 ]] ; then
+ # Needed for man pages
+ BDEPEND+="
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ "
+else
+ BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-valgrind-20251018 )"
+fi
+
+PATCHES=(
+ # Respect CFLAGS, LDFLAGS
+ "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch
+ "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
+ "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch
+)
+
+QA_CONFIG_IMPL_DECL_SKIP+=(
+ # "checking if gcc accepts nested functions" but clang cannot handle good
+ # errors and reports both "function definition is not allowed here" and
+ # -Wimplicit-function-declaration. bug #900396
+ foo
+ # FreeBSD function, bug #932822
+ aio_readv
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif use verify-sig ; then
+ # Needed for downloaded patch (which is unsigned, which is fine)
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.bz2{,.asc}
+ fi
+
+ default
+}
+
+src_prepare() {
+ # Correct hard coded doc location
+ sed -i -e "s:doc/valgrind:doc/${PF}:" docs/Makefile.am || die
+
+ # Don't force multiarch stuff on OSX, bug #306467
+ sed -i -e 's:-arch \(i386\|x86_64\)::g' Makefile.all.am || die
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # upstream doesn't support this, but we don't build with
+ # Sun/Oracle ld, we have a GNU toolchain, so get some things
+ # working the Linux/GNU way
+ find "${S}" -name "Makefile.am" -o -name "Makefile.tool.am" | xargs \
+ sed -i -e 's:-M,/usr/lib/ld/map.noexstk:-z,noexecstack:' || die
+ cp "${S}"/coregrind/link_tool_exe_{linux,solaris}.in
+ fi
+
+ if [[ ${PV} != 9999 && -d "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} ]] ; then
+ PATCHES+=( "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} )
+ fi
+
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --with-gdbscripts-dir="${EPREFIX}"/usr/share/gdb/auto-load
+ )
+
+ tc-is-lto && myconf+=( --enable-lto )
+ lto-guarantee-fat
+
+ # Respect ar, bug #468114
+ tc-export AR
+
+ # -fomit-frame-pointer "Assembler messages: Error: junk `8' after expression"
+ # while compiling insn_sse.c in none/tests/x86
+ # -fstack-protector more undefined references to __guard and __stack_smash_handler
+ # because valgrind doesn't link to glibc (bug #114347)
+ # -fstack-protector-all Fails same way as -fstack-protector/-fstack-protector-strong.
+ # Note: -fstack-protector-explicit is a no-op for Valgrind, no need to strip it
+ # -fstack-protector-strong See -fstack-protector (bug #620402)
+ # -m64 -mx32 for multilib-portage, bug #398825
+ # -fharden-control-flow-redundancy: breaks runtime ('jump to the invalid address stated on the next line')
+ filter-flags -fomit-frame-pointer
+ filter-flags -fstack-protector
+ filter-flags -fstack-protector-all
+ filter-flags -fstack-protector-strong
+ filter-flags -m64 -mx32
+ filter-flags -fsanitize -fsanitize=*
+ filter-flags -fharden-control-flow-redundancy
+ append-cflags $(test-flags-CC -fno-harden-control-flow-redundancy)
+ filter-lto
+
+ if use amd64 || use ppc64; then
+ ! has_multilib_profile && myconf+=("--enable-only64bit")
+ fi
+
+ # Force bitness on darwin, bug #306467
+ use x64-macos && myconf+=("--enable-only64bit")
+
+ # Don't use mpicc unless the user asked for it (bug #258832)
+ if ! use mpi; then
+ myconf+=("--without-mpicc")
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # fxsave.o, tronical.o have textrels
+ # -fno-strict-aliasing: https://bugs.kde.org/show_bug.cgi?id=486093
+ emake CFLAGS="${CFLAGS} -fno-strict-aliasing" LDFLAGS="${LDFLAGS} -Wl,-z,notext" check
+}
+
+src_install() {
+ if [[ ${PV} == 9999 ]]; then
+ # TODO: Could do HTML docs too with 'all-docs'
+ emake -C docs man-pages FAQ.txt
+ mv docs/FAQ.txt . || die "Couldn't move FAQ.txt"
+ fi
+
+ default
+
+ dodoc FAQ.txt
+
+ pax-mark m "${ED}"/usr/$(get_libdir)/valgrind/*-*-linux
+
+ strip-lto-bytecode
+
+ # See README_PACKAGERS
+ dostrip -x /usr/libexec/valgrind/vgpreload* /usr/$(get_libdir)/valgrind/*
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # fix install_names on shared libraries, can't turn them into bundles,
+ # as dyld won't load them any more then, bug #306467
+ local l
+ for l in "${ED}"/usr/lib/valgrind/*.so ; do
+ install_name_tool -id "${EPREFIX}"/usr/lib/valgrind/${l##*/} "${l}"
+ done
+ fi
+}
+
+pkg_postinst() {
+ elog "Valgrind will not work if libc (e.g. glibc) does not have debug symbols."
+ elog "To fix this you can add splitdebug to FEATURES in make.conf"
+ elog "and remerge glibc. See:"
+ elog "https://bugs.gentoo.org/214065"
+ elog "https://bugs.gentoo.org/274771"
+ elog "https://bugs.gentoo.org/388703"
+}
diff --git a/dev-debug/valgrind/valgrind-3.27.0.ebuild b/dev-debug/valgrind/valgrind-3.27.0.ebuild
new file mode 100644
index 000000000000..d9ec37366300
--- /dev/null
+++ b/dev-debug/valgrind/valgrind-3.27.0.ebuild
@@ -0,0 +1,203 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# The Valgrind upstream maintainer also maintains it in Fedora and will
+# backport fixes there which haven't yet made it into a release. Keep an eye
+# on it for fixes we should cherry-pick too:
+# https://src.fedoraproject.org/rpms/valgrind/tree/rawhide
+#
+# Also check the ${PV}_STABLE branch upstream for backports.
+
+inherit autotools dot-a flag-o-matic toolchain-funcs multilib pax-utils
+
+DESCRIPTION="An open-source memory debugger for GNU/Linux"
+HOMEPAGE="https://valgrind.org"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="
+ https://sourceware.org/git/${PN}.git
+ https://git.sr.ht/~sourceware/valgrind
+ "
+ inherit git-r3
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/valgrind.asc
+ inherit verify-sig
+
+ MY_P="${P/_rc/.RC}"
+ MY_P="${MY_P%%_p*}"
+ VALGRIND_PATCH_TARBALL="${MY_P}-patches-${PV##*_p}"
+ SRC_URI="
+ https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2
+ verify-sig? ( https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2.asc )
+ "
+ # Rollups of backports on ${PV}_STABLE branch upstream. This branch
+ # is usually announced on the mailing list and distros are encouraged
+ # to pull from it regularly.
+ if [[ ${PV} == *_p* ]] ; then
+ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${VALGRIND_PATCH_TARBALL}.tar.xz"
+ fi
+
+ S="${WORKDIR}"/${MY_P}
+
+ if [[ ${PV} != *_rc* ]] ; then
+ KEYWORDS="-* ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86 ~x64-macos ~x64-solaris"
+ fi
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="mpi"
+
+DEPEND="mpi? ( virtual/mpi )"
+RDEPEND="${DEPEND}"
+if [[ ${PV} == 9999 ]] ; then
+ # Needed for man pages
+ BDEPEND+="
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ "
+else
+ BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-valgrind-20251018 )"
+fi
+
+PATCHES=(
+ # Respect CFLAGS, LDFLAGS
+ "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch
+ "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
+ "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch
+)
+
+QA_CONFIG_IMPL_DECL_SKIP+=(
+ # "checking if gcc accepts nested functions" but clang cannot handle good
+ # errors and reports both "function definition is not allowed here" and
+ # -Wimplicit-function-declaration. bug #900396
+ foo
+ # FreeBSD function, bug #932822
+ aio_readv
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif use verify-sig ; then
+ # Needed for downloaded patch (which is unsigned, which is fine)
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.bz2{,.asc}
+ fi
+
+ default
+}
+
+src_prepare() {
+ # Correct hard coded doc location
+ sed -i -e "s:doc/valgrind:doc/${PF}:" docs/Makefile.am || die
+
+ # Don't force multiarch stuff on OSX, bug #306467
+ sed -i -e 's:-arch \(i386\|x86_64\)::g' Makefile.all.am || die
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # upstream doesn't support this, but we don't build with
+ # Sun/Oracle ld, we have a GNU toolchain, so get some things
+ # working the Linux/GNU way
+ find "${S}" -name "Makefile.am" -o -name "Makefile.tool.am" | xargs \
+ sed -i -e 's:-M,/usr/lib/ld/map.noexstk:-z,noexecstack:' || die
+ cp "${S}"/coregrind/link_tool_exe_{linux,solaris}.in
+ fi
+
+ if [[ ${PV} != 9999 && -d "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} ]] ; then
+ PATCHES+=( "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} )
+ fi
+
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --with-gdbscripts-dir="${EPREFIX}"/usr/share/gdb/auto-load
+ )
+
+ tc-is-lto && myconf+=( --enable-lto )
+ lto-guarantee-fat
+
+ # Respect ar, bug #468114
+ tc-export AR
+
+ # -fomit-frame-pointer "Assembler messages: Error: junk `8' after expression"
+ # while compiling insn_sse.c in none/tests/x86
+ # -fstack-protector more undefined references to __guard and __stack_smash_handler
+ # because valgrind doesn't link to glibc (bug #114347)
+ # -fstack-protector-all Fails same way as -fstack-protector/-fstack-protector-strong.
+ # Note: -fstack-protector-explicit is a no-op for Valgrind, no need to strip it
+ # -fstack-protector-strong See -fstack-protector (bug #620402)
+ # -m64 -mx32 for multilib-portage, bug #398825
+ # -fharden-control-flow-redundancy: breaks runtime ('jump to the invalid address stated on the next line')
+ filter-flags -fomit-frame-pointer
+ filter-flags -fstack-protector
+ filter-flags -fstack-protector-all
+ filter-flags -fstack-protector-strong
+ filter-flags -m64 -mx32
+ filter-flags -fsanitize -fsanitize=*
+ filter-flags -fharden-control-flow-redundancy
+ append-cflags $(test-flags-CC -fno-harden-control-flow-redundancy)
+ filter-lto
+
+ if use amd64 || use ppc64; then
+ ! has_multilib_profile && myconf+=("--enable-only64bit")
+ fi
+
+ # Force bitness on darwin, bug #306467
+ use x64-macos && myconf+=("--enable-only64bit")
+
+ # Don't use mpicc unless the user asked for it (bug #258832)
+ if ! use mpi; then
+ myconf+=("--without-mpicc")
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # fxsave.o, tronical.o have textrels
+ # -fno-strict-aliasing: https://bugs.kde.org/show_bug.cgi?id=486093
+ emake CFLAGS="${CFLAGS} -fno-strict-aliasing" LDFLAGS="${LDFLAGS} -Wl,-z,notext" check
+}
+
+src_install() {
+ if [[ ${PV} == 9999 ]]; then
+ # TODO: Could do HTML docs too with 'all-docs'
+ emake -C docs man-pages FAQ.txt
+ mv docs/FAQ.txt . || die "Couldn't move FAQ.txt"
+ fi
+
+ default
+
+ dodoc FAQ.txt
+
+ pax-mark m "${ED}"/usr/$(get_libdir)/valgrind/*-*-linux
+
+ strip-lto-bytecode
+
+ # See README_PACKAGERS
+ dostrip -x /usr/libexec/valgrind/vgpreload* /usr/$(get_libdir)/valgrind/*
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # fix install_names on shared libraries, can't turn them into bundles,
+ # as dyld won't load them any more then, bug #306467
+ local l
+ for l in "${ED}"/usr/lib/valgrind/*.so ; do
+ install_name_tool -id "${EPREFIX}"/usr/lib/valgrind/${l##*/} "${l}"
+ done
+ fi
+}
+
+pkg_postinst() {
+ elog "Valgrind will not work if libc (e.g. glibc) does not have debug symbols."
+ elog "To fix this you can add splitdebug to FEATURES in make.conf"
+ elog "and remerge glibc. See:"
+ elog "https://bugs.gentoo.org/214065"
+ elog "https://bugs.gentoo.org/274771"
+ elog "https://bugs.gentoo.org/388703"
+}
diff --git a/dev-debug/valgrind/valgrind-3.27.0_p1.ebuild b/dev-debug/valgrind/valgrind-3.27.0_p1.ebuild
new file mode 100644
index 000000000000..d9ec37366300
--- /dev/null
+++ b/dev-debug/valgrind/valgrind-3.27.0_p1.ebuild
@@ -0,0 +1,203 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# The Valgrind upstream maintainer also maintains it in Fedora and will
+# backport fixes there which haven't yet made it into a release. Keep an eye
+# on it for fixes we should cherry-pick too:
+# https://src.fedoraproject.org/rpms/valgrind/tree/rawhide
+#
+# Also check the ${PV}_STABLE branch upstream for backports.
+
+inherit autotools dot-a flag-o-matic toolchain-funcs multilib pax-utils
+
+DESCRIPTION="An open-source memory debugger for GNU/Linux"
+HOMEPAGE="https://valgrind.org"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="
+ https://sourceware.org/git/${PN}.git
+ https://git.sr.ht/~sourceware/valgrind
+ "
+ inherit git-r3
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/valgrind.asc
+ inherit verify-sig
+
+ MY_P="${P/_rc/.RC}"
+ MY_P="${MY_P%%_p*}"
+ VALGRIND_PATCH_TARBALL="${MY_P}-patches-${PV##*_p}"
+ SRC_URI="
+ https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2
+ verify-sig? ( https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2.asc )
+ "
+ # Rollups of backports on ${PV}_STABLE branch upstream. This branch
+ # is usually announced on the mailing list and distros are encouraged
+ # to pull from it regularly.
+ if [[ ${PV} == *_p* ]] ; then
+ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${VALGRIND_PATCH_TARBALL}.tar.xz"
+ fi
+
+ S="${WORKDIR}"/${MY_P}
+
+ if [[ ${PV} != *_rc* ]] ; then
+ KEYWORDS="-* ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86 ~x64-macos ~x64-solaris"
+ fi
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="mpi"
+
+DEPEND="mpi? ( virtual/mpi )"
+RDEPEND="${DEPEND}"
+if [[ ${PV} == 9999 ]] ; then
+ # Needed for man pages
+ BDEPEND+="
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ "
+else
+ BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-valgrind-20251018 )"
+fi
+
+PATCHES=(
+ # Respect CFLAGS, LDFLAGS
+ "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch
+ "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
+ "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch
+)
+
+QA_CONFIG_IMPL_DECL_SKIP+=(
+ # "checking if gcc accepts nested functions" but clang cannot handle good
+ # errors and reports both "function definition is not allowed here" and
+ # -Wimplicit-function-declaration. bug #900396
+ foo
+ # FreeBSD function, bug #932822
+ aio_readv
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif use verify-sig ; then
+ # Needed for downloaded patch (which is unsigned, which is fine)
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.bz2{,.asc}
+ fi
+
+ default
+}
+
+src_prepare() {
+ # Correct hard coded doc location
+ sed -i -e "s:doc/valgrind:doc/${PF}:" docs/Makefile.am || die
+
+ # Don't force multiarch stuff on OSX, bug #306467
+ sed -i -e 's:-arch \(i386\|x86_64\)::g' Makefile.all.am || die
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # upstream doesn't support this, but we don't build with
+ # Sun/Oracle ld, we have a GNU toolchain, so get some things
+ # working the Linux/GNU way
+ find "${S}" -name "Makefile.am" -o -name "Makefile.tool.am" | xargs \
+ sed -i -e 's:-M,/usr/lib/ld/map.noexstk:-z,noexecstack:' || die
+ cp "${S}"/coregrind/link_tool_exe_{linux,solaris}.in
+ fi
+
+ if [[ ${PV} != 9999 && -d "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} ]] ; then
+ PATCHES+=( "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} )
+ fi
+
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --with-gdbscripts-dir="${EPREFIX}"/usr/share/gdb/auto-load
+ )
+
+ tc-is-lto && myconf+=( --enable-lto )
+ lto-guarantee-fat
+
+ # Respect ar, bug #468114
+ tc-export AR
+
+ # -fomit-frame-pointer "Assembler messages: Error: junk `8' after expression"
+ # while compiling insn_sse.c in none/tests/x86
+ # -fstack-protector more undefined references to __guard and __stack_smash_handler
+ # because valgrind doesn't link to glibc (bug #114347)
+ # -fstack-protector-all Fails same way as -fstack-protector/-fstack-protector-strong.
+ # Note: -fstack-protector-explicit is a no-op for Valgrind, no need to strip it
+ # -fstack-protector-strong See -fstack-protector (bug #620402)
+ # -m64 -mx32 for multilib-portage, bug #398825
+ # -fharden-control-flow-redundancy: breaks runtime ('jump to the invalid address stated on the next line')
+ filter-flags -fomit-frame-pointer
+ filter-flags -fstack-protector
+ filter-flags -fstack-protector-all
+ filter-flags -fstack-protector-strong
+ filter-flags -m64 -mx32
+ filter-flags -fsanitize -fsanitize=*
+ filter-flags -fharden-control-flow-redundancy
+ append-cflags $(test-flags-CC -fno-harden-control-flow-redundancy)
+ filter-lto
+
+ if use amd64 || use ppc64; then
+ ! has_multilib_profile && myconf+=("--enable-only64bit")
+ fi
+
+ # Force bitness on darwin, bug #306467
+ use x64-macos && myconf+=("--enable-only64bit")
+
+ # Don't use mpicc unless the user asked for it (bug #258832)
+ if ! use mpi; then
+ myconf+=("--without-mpicc")
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # fxsave.o, tronical.o have textrels
+ # -fno-strict-aliasing: https://bugs.kde.org/show_bug.cgi?id=486093
+ emake CFLAGS="${CFLAGS} -fno-strict-aliasing" LDFLAGS="${LDFLAGS} -Wl,-z,notext" check
+}
+
+src_install() {
+ if [[ ${PV} == 9999 ]]; then
+ # TODO: Could do HTML docs too with 'all-docs'
+ emake -C docs man-pages FAQ.txt
+ mv docs/FAQ.txt . || die "Couldn't move FAQ.txt"
+ fi
+
+ default
+
+ dodoc FAQ.txt
+
+ pax-mark m "${ED}"/usr/$(get_libdir)/valgrind/*-*-linux
+
+ strip-lto-bytecode
+
+ # See README_PACKAGERS
+ dostrip -x /usr/libexec/valgrind/vgpreload* /usr/$(get_libdir)/valgrind/*
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # fix install_names on shared libraries, can't turn them into bundles,
+ # as dyld won't load them any more then, bug #306467
+ local l
+ for l in "${ED}"/usr/lib/valgrind/*.so ; do
+ install_name_tool -id "${EPREFIX}"/usr/lib/valgrind/${l##*/} "${l}"
+ done
+ fi
+}
+
+pkg_postinst() {
+ elog "Valgrind will not work if libc (e.g. glibc) does not have debug symbols."
+ elog "To fix this you can add splitdebug to FEATURES in make.conf"
+ elog "and remerge glibc. See:"
+ elog "https://bugs.gentoo.org/214065"
+ elog "https://bugs.gentoo.org/274771"
+ elog "https://bugs.gentoo.org/388703"
+}
diff --git a/dev-debug/valgrind/valgrind-3.27.1.ebuild b/dev-debug/valgrind/valgrind-3.27.1.ebuild
new file mode 100644
index 000000000000..d9ec37366300
--- /dev/null
+++ b/dev-debug/valgrind/valgrind-3.27.1.ebuild
@@ -0,0 +1,203 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# The Valgrind upstream maintainer also maintains it in Fedora and will
+# backport fixes there which haven't yet made it into a release. Keep an eye
+# on it for fixes we should cherry-pick too:
+# https://src.fedoraproject.org/rpms/valgrind/tree/rawhide
+#
+# Also check the ${PV}_STABLE branch upstream for backports.
+
+inherit autotools dot-a flag-o-matic toolchain-funcs multilib pax-utils
+
+DESCRIPTION="An open-source memory debugger for GNU/Linux"
+HOMEPAGE="https://valgrind.org"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="
+ https://sourceware.org/git/${PN}.git
+ https://git.sr.ht/~sourceware/valgrind
+ "
+ inherit git-r3
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/valgrind.asc
+ inherit verify-sig
+
+ MY_P="${P/_rc/.RC}"
+ MY_P="${MY_P%%_p*}"
+ VALGRIND_PATCH_TARBALL="${MY_P}-patches-${PV##*_p}"
+ SRC_URI="
+ https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2
+ verify-sig? ( https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2.asc )
+ "
+ # Rollups of backports on ${PV}_STABLE branch upstream. This branch
+ # is usually announced on the mailing list and distros are encouraged
+ # to pull from it regularly.
+ if [[ ${PV} == *_p* ]] ; then
+ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${VALGRIND_PATCH_TARBALL}.tar.xz"
+ fi
+
+ S="${WORKDIR}"/${MY_P}
+
+ if [[ ${PV} != *_rc* ]] ; then
+ KEYWORDS="-* ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86 ~x64-macos ~x64-solaris"
+ fi
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="mpi"
+
+DEPEND="mpi? ( virtual/mpi )"
+RDEPEND="${DEPEND}"
+if [[ ${PV} == 9999 ]] ; then
+ # Needed for man pages
+ BDEPEND+="
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ "
+else
+ BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-valgrind-20251018 )"
+fi
+
+PATCHES=(
+ # Respect CFLAGS, LDFLAGS
+ "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch
+ "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
+ "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch
+)
+
+QA_CONFIG_IMPL_DECL_SKIP+=(
+ # "checking if gcc accepts nested functions" but clang cannot handle good
+ # errors and reports both "function definition is not allowed here" and
+ # -Wimplicit-function-declaration. bug #900396
+ foo
+ # FreeBSD function, bug #932822
+ aio_readv
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif use verify-sig ; then
+ # Needed for downloaded patch (which is unsigned, which is fine)
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.bz2{,.asc}
+ fi
+
+ default
+}
+
+src_prepare() {
+ # Correct hard coded doc location
+ sed -i -e "s:doc/valgrind:doc/${PF}:" docs/Makefile.am || die
+
+ # Don't force multiarch stuff on OSX, bug #306467
+ sed -i -e 's:-arch \(i386\|x86_64\)::g' Makefile.all.am || die
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # upstream doesn't support this, but we don't build with
+ # Sun/Oracle ld, we have a GNU toolchain, so get some things
+ # working the Linux/GNU way
+ find "${S}" -name "Makefile.am" -o -name "Makefile.tool.am" | xargs \
+ sed -i -e 's:-M,/usr/lib/ld/map.noexstk:-z,noexecstack:' || die
+ cp "${S}"/coregrind/link_tool_exe_{linux,solaris}.in
+ fi
+
+ if [[ ${PV} != 9999 && -d "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} ]] ; then
+ PATCHES+=( "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} )
+ fi
+
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --with-gdbscripts-dir="${EPREFIX}"/usr/share/gdb/auto-load
+ )
+
+ tc-is-lto && myconf+=( --enable-lto )
+ lto-guarantee-fat
+
+ # Respect ar, bug #468114
+ tc-export AR
+
+ # -fomit-frame-pointer "Assembler messages: Error: junk `8' after expression"
+ # while compiling insn_sse.c in none/tests/x86
+ # -fstack-protector more undefined references to __guard and __stack_smash_handler
+ # because valgrind doesn't link to glibc (bug #114347)
+ # -fstack-protector-all Fails same way as -fstack-protector/-fstack-protector-strong.
+ # Note: -fstack-protector-explicit is a no-op for Valgrind, no need to strip it
+ # -fstack-protector-strong See -fstack-protector (bug #620402)
+ # -m64 -mx32 for multilib-portage, bug #398825
+ # -fharden-control-flow-redundancy: breaks runtime ('jump to the invalid address stated on the next line')
+ filter-flags -fomit-frame-pointer
+ filter-flags -fstack-protector
+ filter-flags -fstack-protector-all
+ filter-flags -fstack-protector-strong
+ filter-flags -m64 -mx32
+ filter-flags -fsanitize -fsanitize=*
+ filter-flags -fharden-control-flow-redundancy
+ append-cflags $(test-flags-CC -fno-harden-control-flow-redundancy)
+ filter-lto
+
+ if use amd64 || use ppc64; then
+ ! has_multilib_profile && myconf+=("--enable-only64bit")
+ fi
+
+ # Force bitness on darwin, bug #306467
+ use x64-macos && myconf+=("--enable-only64bit")
+
+ # Don't use mpicc unless the user asked for it (bug #258832)
+ if ! use mpi; then
+ myconf+=("--without-mpicc")
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # fxsave.o, tronical.o have textrels
+ # -fno-strict-aliasing: https://bugs.kde.org/show_bug.cgi?id=486093
+ emake CFLAGS="${CFLAGS} -fno-strict-aliasing" LDFLAGS="${LDFLAGS} -Wl,-z,notext" check
+}
+
+src_install() {
+ if [[ ${PV} == 9999 ]]; then
+ # TODO: Could do HTML docs too with 'all-docs'
+ emake -C docs man-pages FAQ.txt
+ mv docs/FAQ.txt . || die "Couldn't move FAQ.txt"
+ fi
+
+ default
+
+ dodoc FAQ.txt
+
+ pax-mark m "${ED}"/usr/$(get_libdir)/valgrind/*-*-linux
+
+ strip-lto-bytecode
+
+ # See README_PACKAGERS
+ dostrip -x /usr/libexec/valgrind/vgpreload* /usr/$(get_libdir)/valgrind/*
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # fix install_names on shared libraries, can't turn them into bundles,
+ # as dyld won't load them any more then, bug #306467
+ local l
+ for l in "${ED}"/usr/lib/valgrind/*.so ; do
+ install_name_tool -id "${EPREFIX}"/usr/lib/valgrind/${l##*/} "${l}"
+ done
+ fi
+}
+
+pkg_postinst() {
+ elog "Valgrind will not work if libc (e.g. glibc) does not have debug symbols."
+ elog "To fix this you can add splitdebug to FEATURES in make.conf"
+ elog "and remerge glibc. See:"
+ elog "https://bugs.gentoo.org/214065"
+ elog "https://bugs.gentoo.org/274771"
+ elog "https://bugs.gentoo.org/388703"
+}
diff --git a/dev-debug/valgrind/valgrind-9999.ebuild b/dev-debug/valgrind/valgrind-9999.ebuild
new file mode 100644
index 000000000000..e0233e6d293b
--- /dev/null
+++ b/dev-debug/valgrind/valgrind-9999.ebuild
@@ -0,0 +1,203 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# The Valgrind upstream maintainer also maintains it in Fedora and will
+# backport fixes there which haven't yet made it into a release. Keep an eye
+# on it for fixes we should cherry-pick too:
+# https://src.fedoraproject.org/rpms/valgrind/tree/rawhide
+#
+# Also check the ${PV}_STABLE branch upstream for backports.
+
+inherit autotools dot-a flag-o-matic toolchain-funcs multilib pax-utils
+
+DESCRIPTION="An open-source memory debugger for GNU/Linux"
+HOMEPAGE="https://valgrind.org"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="
+ https://sourceware.org/git/${PN}.git
+ https://git.sr.ht/~sourceware/valgrind
+ "
+ inherit git-r3
+else
+ VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/valgrind.asc
+ inherit verify-sig
+
+ MY_P="${P/_rc/.RC}"
+ MY_P="${MY_P%%_p*}"
+ VALGRIND_PATCH_TARBALL="${MY_P}-patches-${PV##*_p}"
+ SRC_URI="
+ https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2
+ verify-sig? ( https://sourceware.org/pub/valgrind/${MY_P}.tar.bz2.asc )
+ "
+ # Rollups of backports on ${PV}_STABLE branch upstream. This branch
+ # is usually announced on the mailing list and distros are encouraged
+ # to pull from it regularly.
+ if [[ ${PV} == *_p* ]] ; then
+ SRC_URI+=" https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/${VALGRIND_PATCH_TARBALL}.tar.xz"
+ fi
+
+ S="${WORKDIR}"/${MY_P}
+
+ if [[ ${PV} != *_rc* ]] ; then
+ KEYWORDS="-* ~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86 ~x64-macos ~x64-solaris"
+ fi
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+IUSE="mpi"
+
+DEPEND="mpi? ( virtual/mpi )"
+RDEPEND="${DEPEND}"
+if [[ ${PV} == 9999 ]] ; then
+ # Needed for man pages
+ BDEPEND+="
+ app-text/docbook-xsl-stylesheets
+ dev-libs/libxslt
+ "
+else
+ BDEPEND+=" verify-sig? ( >=sec-keys/openpgp-keys-valgrind-20251018 )"
+fi
+
+PATCHES=(
+ # Respect CFLAGS, LDFLAGS
+ "${FILESDIR}"/${PN}-3.7.0-respect-flags.patch
+ "${FILESDIR}"/${PN}-3.15.0-Build-ldst_multiple-test-with-fno-pie.patch
+ "${FILESDIR}"/${PN}-3.21.0-glibc-2.34-suppressions.patch
+)
+
+QA_CONFIG_IMPL_DECL_SKIP+=(
+ # "checking if gcc accepts nested functions" but clang cannot handle good
+ # errors and reports both "function definition is not allowed here" and
+ # -Wimplicit-function-declaration. bug #900396
+ foo
+ # FreeBSD function, bug #932822
+ aio_readv
+)
+
+src_unpack() {
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ elif use verify-sig ; then
+ # Needed for downloaded patch (which is unsigned, which is fine)
+ verify-sig_verify_detached "${DISTDIR}"/${MY_P}.tar.bz2{,.asc}
+ fi
+
+ default
+}
+
+src_prepare() {
+ # Correct hard coded doc location
+ sed -i -e "s:doc/valgrind:doc/${PF}:" docs/Makefile.am || die
+
+ # Don't force multiarch stuff on OSX, bug #306467
+ sed -i -e 's:-arch \(i386\|x86_64\)::g' Makefile.all.am || die
+
+ if [[ ${CHOST} == *-solaris* ]] ; then
+ # upstream doesn't support this, but we don't build with
+ # Sun/Oracle ld, we have a GNU toolchain, so get some things
+ # working the Linux/GNU way
+ find "${S}" -name "Makefile.am" -o -name "Makefile.tool.am" | xargs \
+ sed -i -e 's:-M,/usr/lib/ld/map.noexstk:-z,noexecstack:' || die
+ cp "${S}"/coregrind/link_tool_exe_{linux,solaris}.in
+ fi
+
+ if [[ ${PV} != 9999 && -d "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} ]] ; then
+ PATCHES+=( "${WORKDIR}"/${VALGRIND_PATCH_TARBALL} )
+ fi
+
+ default
+
+ eautoreconf
+}
+
+src_configure() {
+ local myconf=(
+ --with-gdbscripts-dir="${EPREFIX}"/usr/share/gdb/auto-load
+ )
+
+ tc-is-lto && myconf+=( --enable-lto )
+ lto-guarantee-fat
+
+ # Respect ar, bug #468114
+ tc-export AR
+
+ # -fomit-frame-pointer "Assembler messages: Error: junk `8' after expression"
+ # while compiling insn_sse.c in none/tests/x86
+ # -fstack-protector more undefined references to __guard and __stack_smash_handler
+ # because valgrind doesn't link to glibc (bug #114347)
+ # -fstack-protector-all Fails same way as -fstack-protector/-fstack-protector-strong.
+ # Note: -fstack-protector-explicit is a no-op for Valgrind, no need to strip it
+ # -fstack-protector-strong See -fstack-protector (bug #620402)
+ # -m64 -mx32 for multilib-portage, bug #398825
+ # -fharden-control-flow-redundancy: breaks runtime ('jump to the invalid address stated on the next line')
+ filter-flags -fomit-frame-pointer
+ filter-flags -fstack-protector
+ filter-flags -fstack-protector-all
+ filter-flags -fstack-protector-strong
+ filter-flags -m64 -mx32
+ filter-flags -fsanitize -fsanitize=*
+ filter-flags -fharden-control-flow-redundancy
+ append-cflags $(test-flags-CC -fno-harden-control-flow-redundancy)
+ filter-lto
+
+ if use amd64 || use ppc64; then
+ ! has_multilib_profile && myconf+=("--enable-only64bit")
+ fi
+
+ # Force bitness on darwin, bug #306467
+ use x64-macos && myconf+=("--enable-only64bit")
+
+ # Don't use mpicc unless the user asked for it (bug #258832)
+ if ! use mpi; then
+ myconf+=("--without-mpicc")
+ fi
+
+ econf "${myconf[@]}"
+}
+
+src_test() {
+ # fxsave.o, tronical.o have textrels
+ # -fno-strict-aliasing: https://bugs.kde.org/show_bug.cgi?id=486093
+ emake CFLAGS="${CFLAGS} -fno-strict-aliasing" LDFLAGS="${LDFLAGS} -Wl,-z,notext" check
+}
+
+src_install() {
+ if [[ ${PV} == 9999 ]]; then
+ # TODO: Could do HTML docs too with 'all-docs'
+ emake -C docs man-pages FAQ.txt
+ mv docs/FAQ.txt . || die "Couldn't move FAQ.txt"
+ fi
+
+ default
+
+ dodoc FAQ.txt
+
+ pax-mark m "${ED}"/usr/$(get_libdir)/valgrind/*-*-linux
+
+ strip-lto-bytecode
+
+ # See README_PACKAGERS
+ dostrip -x /usr/libexec/valgrind/vgpreload* /usr/$(get_libdir)/valgrind/*
+
+ if [[ ${CHOST} == *-darwin* ]] ; then
+ # fix install_names on shared libraries, can't turn them into bundles,
+ # as dyld won't load them any more then, bug #306467
+ local l
+ for l in "${ED}"/usr/lib/valgrind/*.so ; do
+ install_name_tool -id "${EPREFIX}"/usr/lib/valgrind/${l##*/} "${l}"
+ done
+ fi
+}
+
+pkg_postinst() {
+ elog "Valgrind will not work if libc (e.g. glibc) does not have debug symbols."
+ elog "To fix this you can add splitdebug to FEATURES in make.conf"
+ elog "and remerge glibc. See:"
+ elog "https://bugs.gentoo.org/214065"
+ elog "https://bugs.gentoo.org/274771"
+ elog "https://bugs.gentoo.org/388703"
+}