Compare commits

...
Sign in to create a new pull request.

13 commits

Author SHA1 Message Date
DJ Delorie
a8c41cd354 Rebase to ltrace 0.8.1 2025-09-16 12:54:36 -04:00
Fedora Release Engineering
955c1e43d1 Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild 2025-07-24 20:55:16 +00:00
Fedora Release Engineering
10f68c7444 Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild 2025-01-17 16:07:24 +00:00
Martin Coufal
287df279b5 tests/Regression/bz1360259-ltrace-crashes-when-run-on-certain-processes-with-the--S-option: make pidof return only one PID 2024-11-13 13:59:27 +01:00
Martin Coufal
4b0ed33102 tests/Regression/bz868281-ltrace-doesn-t-work-on-PIE-binaries: fix for rhel10
* disable 32b part of the test for rhel10
* fix getting ARCH/SARCH
* move reproducer to a separate file, add missing include
2024-11-13 10:42:54 +01:00
Martin Coufal
665a435b81 tests: fix for rhel10
We use tests in Fedora for RHEL testing as well and some of the tests
need to be updated to compile and run successfully on RHEL-10.

* tests/Regression/211135-ltrace-hangs-while-tracing-child-process-with--f-option:
  add missing includes, add NULL arg to wait()
* tests/Regression/211163-ltrace-with--c-omit-execl-call: fix IF
  condition to include rhel-10
* tests/Regression/427444-ltrace-crashes-process-to-be-analysed: add
  missing include
* tests/Regression/447404-ltrace-with-both--o-and--c-options-does-not-produce-output-to-file:
  moved reproducer to a separate file, add missing include, fix IF
  condition to include rhel-10
* tests/Regression/bz1158713-ltrace-assigns-wrong-names-to-glibc-PLT-slots:
  add missing include
* tests/Regression/bz1360259-ltrace-crashes-when-run-on-certain-processes-with-the--S-option:
  fix IF condition to include rhel-10
* tests/Sanity/random-apps: add return type and return to main function,
  add missing includes, add semun union definition
2024-11-11 12:48:52 +01:00
Václav Kadlčík
d70730248f Fix gating tests on Rawhide 2024-09-18 14:16:14 +02:00
Fedora Release Engineering
941e708eb6 Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild 2024-07-18 16:05:46 +00:00
Software Management Team
6444af4152 Eliminate use of obsolete %patchN syntax (#2283636) 2024-05-30 12:46:47 +02:00
Miroslav Suchý
4773a704b6 Migrate to SPDX license
This is a part of https://fedoraproject.org/wiki/Changes/SPDX_Licenses_Phase_3
2024-02-13 09:30:05 +00:00
Fedora Release Engineering
a77340edfd Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-25 04:54:45 +00:00
Fedora Release Engineering
15ef50aff4 Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild 2024-01-21 06:18:29 +00:00
Fedora Release Engineering
cbc633d2a2 Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
Signed-off-by: Fedora Release Engineering <releng@fedoraproject.org>
2023-07-20 13:08:56 +00:00
20 changed files with 88 additions and 178 deletions

1
.gitignore vendored
View file

@ -4,3 +4,4 @@ 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.7.91
Release: 47%{?dist}
Version: 0.8.1
Release: 1%{?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: GPLv2+
License: GPL-2.0-or-later
BuildRequires: elfutils-devel dejagnu
BuildRequires: libselinux-devel
@ -13,127 +13,9 @@ BuildRequires: autoconf automake libtool
BuildRequires: gcc-c++
BuildRequires: make
# 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
# https://gitlab.com/cespedes/ltrace/-/releases
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
@ -146,43 +28,6 @@ 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
@ -210,6 +55,27 @@ 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

View file

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

View file

@ -8,6 +8,8 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
void child() {
printf("Fork Child\n");
@ -24,7 +26,7 @@ int main() {
child();
else {
printf("My child pid is %d\n",pid);
wait();
wait(NULL);
}
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,6 +3,7 @@
#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
FILES=$(METADATA) runtest.sh Makefile PURPOSE reproducer.c
.PHONY: all install download clean

View file

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

View file

@ -28,11 +28,12 @@ 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 "echo 'int main(){alarm(42);return 0;}'| gcc -x c -o test.bin -"
rlRun "gcc -x c -o test.bin reproducer.c"
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
@ -58,8 +59,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"

View file

@ -42,6 +42,7 @@ 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
@ -52,13 +52,13 @@ rlJournalStart
rlPhaseEnd
rlPhaseStartTest
rlRun "PID=$(pidof $PROC_NAME)"
rlRun "PID='$(pidof -s $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 $PROC_NAME)"
rlAssertEquals "$PROC_NAME is expected to be still running" $PID "$(pidof -s $PROC_NAME)"
rlFileSubmit output.log
rlPhaseEnd

View file

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

View file

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

View file

@ -39,14 +39,16 @@ rlJournalStart
rlAssertRpm $LTRACE_RPM
rlAssertRpm $GCC_RPM
rlAssertRpm $BINUTILS_RPM
for arch in $(rlGetPrimaryArch) $(rlGetSecondaryArch); do
ARCH="$(rlGetPrimaryArch)"
SARCH="$(rlGetSecondaryArch)"
for arch in $ARCH $SARCH; 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"
@ -62,6 +64,9 @@ 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
@ -69,11 +74,11 @@ rlJournalStart
rlLogInfo "MBITS=$MBITS"
rlRun "echo 'int main(){alarm(42);return 0;}'| $GCC -fPIE -pie -x c -o a-native.out -"
rlRun "$GCC -fPIE -pie -x c reproducer.c -o a-native.out"
rlAssertExists a-native.out
if [ -n "$MBITS" ]; then
rlRun "echo 'int main(){alarm(42);return 0;}'| $GCC -fPIE -pie -m$MBITS -x c -o a-$MBITS.out -"
rlRun "$GCC -fPIE -pie -m$MBITS -x c reproducer.c -o a-$MBITS.out"
rlAssertExists a-$MBITS.out
fi
rlPhaseEnd

View file

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

View file

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

View file

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

View file

@ -1,10 +1,11 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/sem.h>
#include <pthread.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
@ -17,6 +18,14 @@ 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,6 +1,7 @@
#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,10 +53,16 @@ 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 BUILD/${CMD}-*"
rlRun "pushd ${MAKEFILE_PATH%/Makefile}"
# known issues to be ignored
ignore_list=''