mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-11-09 06:37:10 -08:00
Move {dev-util → dev-debug}/ltrace
Signed-off-by: Michał Górny <mgorny@gentoo.org>
This commit is contained in:
@@ -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)
|
||||
}
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user