Compare commits

..

No commits in common. "rawhide" and "f36" have entirely different histories.

22 changed files with 183 additions and 111 deletions

1
.gitignore vendored
View file

@ -4,4 +4,3 @@ ltrace-*/
/ltrace-0.7.0.tar.bz2
/ltrace-0.7.2.tar.bz2
/ltrace-0.7.91.tar.bz2
/ltrace-0.8.1.tar.bz2

View file

@ -1,11 +1,11 @@
Summary: Tracks runtime library calls from dynamically linked executables
Name: ltrace
Version: 0.8.1
Release: 1%{?dist}
Version: 0.7.91
Release: 44%{?dist}
# In coordination with Juan Céspedes, upstream is now officially on gitlab.
# We are going to being sending all of our Fedora patches upstream to gitlab.
URL: https://gitlab.com/cespedes/ltrace
License: GPL-2.0-or-later
License: GPLv2+
BuildRequires: elfutils-devel dejagnu
BuildRequires: libselinux-devel
@ -13,9 +13,127 @@ BuildRequires: autoconf automake libtool
BuildRequires: gcc-c++
BuildRequires: make
# https://gitlab.com/cespedes/ltrace/-/releases
# Note: this URL needs to be updated for each release, as the file
# number changes for each file. Full list of released files is at:
# https://alioth.debian.org/frs/?group_id=30892
Source: ltrace-%{version}.tar.bz2
# Merge of several upstream commits that fixes compilation on ARM.
Patch0: ltrace-0.7.91-arm.patch
# Upstream patch that fixes accounting of exec, __libc_start_main and
# others in -c output.
Patch1: ltrace-0.7.91-account_execl.patch
# Upstream patch that fixes interpretation of PLT on x86_64 when
# IRELATIVE slots are present.
Patch2: ltrace-0.7.91-x86_64-irelative.patch
# Upstream patch that fixes fetching of system call arguments on s390.
Patch3: ltrace-0.7.91-s390-fetch-syscall.patch
# Upstream patch that enables tracing of IRELATIVE PLT slots on s390.
Patch4: ltrace-0.7.91-s390-irelative.patch
# Fix for a regression in tracing across fork. Upstream patch.
Patch5: ltrace-0.7.91-ppc64-fork.patch
# Fix crashing a prelinked PPC64 binary which makes PLT calls through
# slots that ltrace doesn't trace.
# https://bugzilla.redhat.com/show_bug.cgi?id=1051221
Patch6: ltrace-0.7.91-breakpoint-on_install.patch
Patch7: ltrace-0.7.91-ppc64-unprelink.patch
# Man page nits. Backport of an upstream patch.
Patch8: ltrace-0.7.91-man.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1044766
Patch9: ltrace-0.7.91-cant_open.patch
# Support Aarch64 architecture.
Patch10: ltrace-0.7.91-aarch64.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1064406
Patch11: ltrace-0.7.2-e_machine.patch
# Support for ppc64le, backported from upstream.
# http://anonscm.debian.org/gitweb/?p=collab-maint/ltrace.git;a=commit;h=eea4ad2cce289753aaa35b4e0258a76d8f8f367c
# https://bugzilla.redhat.com/show_bug.cgi?id=1131956
Patch13: ltrace-0.7.91-ppc64le-support.patch
# 35a9677dc9dcb7909ebd28f30200474d7e8b660f,
# 437d2377119036346f4dbd93039c847b4cc9d0be,
# eb3993420734f091cde9a6053ca6b4edcf9ae334
Patch14: ltrace-0.7.91-ppc64le-fixes.patch
# http://anonscm.debian.org/gitweb/?p=collab-maint/ltrace.git;a=commit;h=2e9f9f1f5d0fb223b109429b9c904504b7f638e2
# http://anonscm.debian.org/gitweb/?p=collab-maint/ltrace.git;a=commit;h=f96635a03b3868057db5c2d7972d5533e2068345
Patch15: ltrace-0.7.91-parser-ws_after_id.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1171165
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=d8f1287b85e2c2b2ae0235809e956f4365e53c45
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=d80c5371454383e3f9978622e5578cf02af8c44c
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=bf82100966deda9c7d26ad085d97c08126a8ae88
Patch16: ltrace-0.7.91-ppc-bias.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1158714
Patch17: ltrace-0.7.91-x86-plt_map.patch
Patch18: ltrace-0.7.91-x86-unused_label.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1170315
Patch19: ltrace-0.7.91-unwind-elfutils.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1208351
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=4724bd5a4a19db117a1d280b9d1a3508fd4e03fa
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=72ee29639c55b5942bc07c8ed0013005f8fc5a97
Patch20: ltrace-0.7.91-multithread-no-f-1.patch
Patch21: ltrace-0.7.91-multithread-no-f-2.patch
# Fix problems with building a number of test cases.
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=694d19ff14017926454771cbb63a22355b72f1bf
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=a3a03622fb4ca9772dca13eae724a94ba1e728f4
Patch22: ltrace-0.7.91-testsuite-includes.patch
Patch23: ltrace-0.7.91-testsuite-includes-2.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1210653
# http://anonscm.debian.org/cgit/collab-maint/ltrace.git/commit/?id=eea6091f8672b01f7f022b0fc367e0f568225ffc
Patch24: ltrace-0.7.91-ppc64le-configure.patch
Patch25: ltrace-rh1307754.patch
# GCC now warns (errors) on "tautological compares", and readdir_r is deprecated.
Patch26: ltrace-0.7.91-tautology.patch
# ARM code has unreachable code after switch statement, move initialization
Patch27: ltrace-rh1423913.patch
# AARCH64 large parameters and syscall testsuite fixes.
Patch28: ltrace-0.7.91-aarch64-params.patch
# gcc-9 fix. Avoid passing NULL as argument to %s
Patch29: ltrace-0.7.91-null.patch
# Adds support for CET PLTs via second-plt lookups.
Patch30: ltrace-0.7.91-cet.patch
# Extra #includes for gcc 9
Patch31: ltrace-0.7.91-aarch64-headers.patch
# Testsuite: AARCH64 ifuncs not supported yet yet.
Patch32: ltrace-rh1225568.patch
# testsuite fixes for pre-installed config files
Patch33: ltrace-0.7.91-testsuite-system_call_params.patch
# Ignore bogus files from the environment
Patch34: ltrace-0.7.91-XDG_CONFIG_DIRS.patch
# GCC erroneously warns about uninitialized values
Patch35: ltrace-0.7.91-rh1799619.patch
# Support for both SC and SCV sycall insns
Patch36: ltrace-0.7.91-ppc64le-scv.patch
Patch37: ltrace-0.7.91-W-use-after-free.patch
%description
Ltrace is a debugging program which runs a specified command until the
command exits. While the command is executing, ltrace intercepts and
@ -28,6 +146,43 @@ execution of processes.
%prep
%setup -q -n %{name}-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
%patch17 -p1
%patch18 -p1
%patch19 -p1
%patch20 -p1
%patch21 -p1
%patch22 -p1
%patch23 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1
%patch37 -p1
%build
autoreconf -i
@ -55,36 +210,6 @@ echo ====================TESTING END=====================
%{_datadir}/ltrace
%changelog
* Tue Sep 16 2025 DJ Delorie <dj@redhat.com> - 0.8.1-1
- Rebased to ltrace 0.8.1
* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-53
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-52
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-51
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-50
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-49
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-48
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-47
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.7.91-46
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
* Fri May 03 2022 Carlos O'Donell <carlos@redhat.com> - 0.7.91-45
- Rebuild ltrace for rawhide (#2046722)
* Thu Jan 27 2022 DJ Delorie <dj@redhat.com> - 0.7.91-44
- Fix use-after-free cases.

View file

@ -3,4 +3,4 @@ discover:
how: fmf
directory: tests
execute:
how: tmt
how: beakerlib

View file

@ -1 +1 @@
SHA512 (ltrace-0.8.1.tar.bz2) = 68fdf10abb3c9534987cb4fcf2531502f8376c56299d56908406ba903fa63af2e0a82c3b902ed0cd47e4985154155a4e9387a11ada066515de26486301dddbaf
9db3bdee7cf3e11c87d8cc7673d4d25b ltrace-0.7.91.tar.bz2

View file

@ -8,8 +8,6 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
void child() {
printf("Fork Child\n");
@ -26,7 +24,7 @@ int main() {
child();
else {
printf("My child pid is %d\n",pid);
wait(NULL);
wait();
}
return 0;
}

View file

@ -55,8 +55,8 @@ rlJournalStart
fi
;;
esac
elif rlIsRHEL ">=9" && [[ $PACKAGE =~ ^ltrace ]] && [ "$(arch)" = "ppc64le" ]; then
rlLogWarning "RHEL >=9 ltrace fails to trace system binaries on ppc64le due to bz#1906881, hence skipping failure checking"
elif rlIsRHEL 9 && [[ $PACKAGE =~ ^ltrace ]] && [ "$(arch)" = "ppc64le" ]; then
rlLogWarning "RHEL-9 ltrace fails to trace system binaries on ppc64le due to bz#1906881, hence skipping failure checking"
skip_test=1
elif rlIsFedora 33 && [ "$(arch)" = "ppc64le" ]; then
rlLogWarning "FC33 ltrace fails to trace system binaries on ppc64le due to bz#1902770, hence skipping failure checking"

View file

@ -3,7 +3,6 @@
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <unistd.h>
#ifndef NI_MAXHOST

View file

@ -25,7 +25,7 @@ export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE reproducer.c
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean

View file

@ -1,7 +0,0 @@
#include <unistd.h>
int main()
{
alarm(42);
return 0;
}

View file

@ -28,12 +28,11 @@ rlJournalStart
rlAssertRpm $(rpm -qf $(which gcc))
rlShowRunningKernel
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "cp reproducer.c $TmpDir"
rlRun "pushd $TmpDir"
rlPhaseEnd
rlPhaseStartTest "ltrace with -o and -c options tracing testing binary"
rlRun "gcc -x c -o test.bin reproducer.c"
rlRun "echo 'int main(){alarm(42);return 0;}'| gcc -x c -o test.bin -"
rlRun "ltrace -o ltrace-test.log -c ./test.bin" 0 "ltrace is crunching a testing binary"
rlRun -l "cat ltrace-test.log"
rlAssertGrep "alarm" ltrace-test.log
@ -59,8 +58,8 @@ rlJournalStart
fi
;;
esac
elif rlIsRHEL ">=9" && [[ $PACKAGE =~ ^ltrace ]] && [ "$(arch)" = "ppc64le" ]; then
rlLogWarning "RHEL >=9 ltrace fails to trace system binaries on ppc64le due to bz#1906881, hence skipping failure checking"
elif rlIsRHEL 9 && [[ $PACKAGE =~ ^ltrace ]] && [ "$(arch)" = "ppc64le" ]; then
rlLogWarning "RHEL-9 ltrace fails to trace system binaries on ppc64le due to bz#1906881, hence skipping failure checking"
skip_system_binary_test=1
elif rlIsFedora 33 && [ "$(arch)" = "ppc64le" ]; then
rlLogWarning "FC33 ltrace fails to trace system binaries on ppc64le due to bz#1902770, hence skipping failure checking"
@ -68,22 +67,15 @@ rlJournalStart
fi
# ltrace no longer reports __libc_start_main on rhel-8 x86_64 (rhbz#1654734)
# search for either malloc or ioctl.
func_found=0
for traced_func in "malloc" "ioctl"; do
if grep "$traced_func" ltrace-test-sys.log; then
func_found=1
fi
done
if [ $func_found -ne 0 ]; then
if grep "ioctl" ltrace-test-sys.log; then
if [ $skip_system_binary_test ]; then
rlLogWarning "Test was skipped but it seems ok. Review skip check."
fi
else
if [ $skip_system_binary_test ]; then
rlLogInfo "ltrace output does not contain ioctl or malloc calls (expected failure)"
rlLogInfo "ltrace output does not contain ioctl calls (expected failure)"
else
rlFail "ltrace output does not contain ioctl or malloc calls"
rlFail "ltrace output does not contain ioctl calls"
fi
fi

View file

@ -42,7 +42,6 @@ rlJournalStart
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
#include <unistd.h>
int main()
{

View file

@ -32,7 +32,7 @@ CMD='ltrace'
BIN=$(which --skip-alias $CMD)
PACKAGE="${PACKAGE:-$(rpm -qf --qf='%{name}\n' $BIN)}"
if rlIsRHEL ">=9" || rlIsFedora; then
if rlIsRHEL 9 || rlIsFedora; then
PROC_NAME=dbus-broker
SERVICE_NAME=dbus-broker
elif rlIsRHEL 6; then
@ -46,19 +46,19 @@ fi
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "pgrep -x $PROC_NAME || service $SERVICE_NAME start" 0 "Checking/starting $SERVICE_NAME"
rlRun "pgrep $PROC_NAME || service $SERVICE_NAME start" 0 "Checking/starting $SERVICE_NAME"
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "pushd $TmpDir"
rlPhaseEnd
rlPhaseStartTest
rlRun "PID='$(pidof -s $PROC_NAME)'"
rlRun "PID=$(pidof $PROC_NAME)"
# try to ltrace dbus-daemon. If there is a bug (BZ#1360259), it will crash
rlWatchdog "ltrace -S -p $PID > output.log 2>&1" 30 INT
rlAssertEquals "ltrace is expected to be terminated by watchdog" 1 "$?"
rlLog "output.log: $(cat output.log)"
rlAssertNotGrep "\(Assertion.*failed\|Segmentation fault\)" output.log
rlAssertEquals "$PROC_NAME is expected to be still running" $PID "$(pidof -s $PROC_NAME)"
rlAssertEquals "$PROC_NAME is expected to be still running" $PID "$(pidof $PROC_NAME)"
rlFileSubmit output.log
rlPhaseEnd

View file

@ -29,7 +29,7 @@ export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE reproducer.c
FILES=$(METADATA) runtest.sh Makefile PURPOSE
.PHONY: all install download clean

View file

@ -12,8 +12,6 @@ recommend:
- gcc
- libgcc
- glibc-devel
- libgcc.i686
- glibc-devel.i686
duration: 5m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=868281

View file

@ -1,7 +0,0 @@
#include <unistd.h>
int main()
{
alarm(42);
return 0;
}

View file

@ -39,16 +39,14 @@ rlJournalStart
rlAssertRpm $LTRACE_RPM
rlAssertRpm $GCC_RPM
rlAssertRpm $BINUTILS_RPM
ARCH="$(rlGetPrimaryArch)"
SARCH="$(rlGetSecondaryArch)"
for arch in $ARCH $SARCH; do
for arch in $(rlGetPrimaryArch) $(rlGetSecondaryArch); do
rlCheckRpm glibc.$arch
done
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "cp reproducer.c $TmpDir"
rlRun "pushd $TmpDir"
if [ -d /usr/lib64 ]; then
ARCH=`uname -i`
if [[ $ARCH =~ s390.* ]]; then
if rlIsRHEL '>=8'; then
rlLogInfo "RHEL-8 and newer do not support s390x 31-bit compilation"
@ -64,9 +62,6 @@ rlJournalStart
elif [[ $ARCH =~ ia64|aarch64|ppc64le ]]; then
rlLogInfo "$ARCH does not support 32-bit compilation"
MBITS=
elif rlIsRHEL ">=10"; then
rlLogInfo "RHEL >=10 does not support 32-bit packages"
MBITS=
else
MBITS=32
fi
@ -74,11 +69,11 @@ rlJournalStart
rlLogInfo "MBITS=$MBITS"
rlRun "$GCC -fPIE -pie -x c reproducer.c -o a-native.out"
rlRun "echo 'int main(){alarm(42);return 0;}'| $GCC -fPIE -pie -x c -o a-native.out -"
rlAssertExists a-native.out
if [ -n "$MBITS" ]; then
rlRun "$GCC -fPIE -pie -m$MBITS -x c reproducer.c -o a-$MBITS.out"
rlRun "echo 'int main(){alarm(42);return 0;}'| $GCC -fPIE -pie -m$MBITS -x c -o a-$MBITS.out -"
rlAssertExists a-$MBITS.out
fi
rlPhaseEnd

View file

@ -28,7 +28,7 @@ void *sub_thd(void *c)
sub_func();
}
int main(int argc, char *argv[])
main(int argc, char *argv[])
{
int i;
pthread_t thd[NTHD];
@ -39,6 +39,5 @@ int main(int argc, char *argv[])
pthread_create(&thd[i], NULL, sub_thd, NULL);
}
// pause();
return 0;
}

View file

@ -1,5 +1,4 @@
#include <pthread.h>
#include <unistd.h>
void *start (void *arg) {
return arg;

View file

@ -1,5 +1,4 @@
#include <pthread.h>
#include <unistd.h>
void *start (void *arg) {
return arg;

View file

@ -1,11 +1,10 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <linux/sem.h>
#include <sys/mman.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/sem.h>
#include <unistd.h>
//#include "trigger_error.h"
#define THREAD_NUM 100
@ -18,14 +17,6 @@ int fullid;
int emptyid;
int mutxid;
union semun
{
int val; /* Value for SETVAL */
struct semid_ds *buf; /* Buffer for IPC_STAT, IPC_SET */
unsigned short *array; /* Array for GETALL, SETALL */
struct seminfo *__buf; /* Buffer for IPC_INFO (Linux-specific) */
};
void *thread_handle_a(void *temp);
int main(int argc, char *argv[])

View file

@ -1,7 +1,6 @@
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>

View file

@ -53,16 +53,10 @@ rlJournalStart
rlRun "dnf builddep -y $NVR.src.rpm"
rlRun "rpm --define='_topdir $TMP' -Uvh $NVR.src.rpm"
rlRun "${RPMBUILD_GCC:+CC=$RPMBUILD_GCC} rpmbuild --define='_topdir $TMP' -bc SPECS/${CMD}.spec"
MAKEFILE_PATH=$(ls BUILD/${CMD}-*/Makefile 2>/dev/null)
if [[ -z "$MAKEFILE_PATH" ]]; then
MAKEFILE_PATH=$(ls BUILD/${CMD}-*/${CMD}-*/Makefile 2>/dev/null)
fi
rlLogInfo "MAKEFILE_PATH=$MAKEFILE_PATH"
rlPhaseEnd
rlPhaseStartTest
rlRun "pushd ${MAKEFILE_PATH%/Makefile}"
rlRun "pushd BUILD/${CMD}-*"
# known issues to be ignored
ignore_list=''