Move {dev-util → dev-debug}/ltrace

Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
Michał Górny
2024-01-19 15:44:11 +01:00
parent 329d834cf4
commit a2eb7e103e
15 changed files with 4 additions and 3 deletions
+1
View File
@@ -0,0 +1 @@
DIST ltrace-0.7.91_pre20221216.tar.bz2 288077 BLAKE2B cadc2ac551a96dfa95aee0d0eb251d8f41a8631350ba3be3f67d0cb10774a3db6abbd42481d24febdfcb0d565107e66b4de0056a85a7954bb050adb8e8fa5b4a SHA512 993c247797551b4fbb202c04f9af08063c8641946825b17d1f32c4647c606ece803a6b049c4afa3046c798add161ab58f01d90106f3b6029a223af03bca27a99
@@ -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])
@@ -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"
@@ -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>
@@ -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>
@@ -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
@@ -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.
@@ -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
@@ -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>
@@ -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 }
@@ -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
@@ -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 ~ia64 ~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)
}
+15
View File
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>marecki@gentoo.org</email>
<name>Marek Szuba</name>
</maintainer>
<upstream>
<remote-id type="gitlab">cespedes/ltrace</remote-id>
</upstream>
<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>
</pkgmetadata>