From a2ff6bc085524bf0a1dceb4d6880c7c105c3eef7 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 19 2015 03:35:19 +0000 Subject: import ltrace-0.7.91-14.el7 --- diff --git a/SOURCES/ltrace-0.7.91-multithread-no-f-1.patch b/SOURCES/ltrace-0.7.91-multithread-no-f-1.patch new file mode 100644 index 0000000..0589f5e --- /dev/null +++ b/SOURCES/ltrace-0.7.91-multithread-no-f-1.patch @@ -0,0 +1,175 @@ +From 4724bd5a4a19db117a1d280b9d1a3508fd4e03fa Mon Sep 17 00:00:00 2001 +From: Petr Machata +Date: Wed, 8 Apr 2015 07:11:52 -0400 +Subject: [PATCH 1/2] Convert main-threaded test case to new style + +--- + testsuite/ltrace.main/Makefile.am | 4 +- + testsuite/ltrace.main/main-threaded.c | 30 ---------- + testsuite/ltrace.main/main-threaded.exp | 103 ++++++++++++++++++++------------ + 3 files changed, 66 insertions(+), 71 deletions(-) + delete mode 100644 testsuite/ltrace.main/main-threaded.c + +diff --git a/testsuite/ltrace.main/Makefile.am b/testsuite/ltrace.main/Makefile.am +index 23ab8ab..06ad613 100644 +--- a/testsuite/ltrace.main/Makefile.am ++++ b/testsuite/ltrace.main/Makefile.am +@@ -1,4 +1,4 @@ +-# Copyright (C) 1992 - 2001, 2012, 2013 Free Software Foundation, Inc. ++# Copyright (C) 1992 - 2001, 2012, 2013, 2015 Free Software Foundation, Inc. + # + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by +@@ -17,7 +17,7 @@ + + EXTRA_DIST = branch_func.c branch_func.exp filters.exp hello-vfork.c \ + hello-vfork.exp main.c main.exp main-internal.exp main-lib.c \ +- main-threaded.c main-threaded.exp main-vfork.c main-vfork.exp \ ++ main-threaded.exp main-vfork.c main-vfork.exp \ + parameters.c parameters.conf parameters.exp parameters-lib.c \ + parameters2.exp parameters3.exp signals.c signals.exp \ + system_calls.c system_calls.exp system_call_params.exp +diff --git a/testsuite/ltrace.main/main-threaded.c b/testsuite/ltrace.main/main-threaded.c +deleted file mode 100644 +index 2992d1e..0000000 +--- a/testsuite/ltrace.main/main-threaded.c ++++ /dev/null +@@ -1,29 +0,0 @@ +-#include +- +-extern void print (char *); +- +-#define PRINT_LOOP 10 +- +-void * +-th_main (void *arg) +-{ +- int i; +- for (i=0; i. ++# This file is part of ltrace. ++# Copyright (C) 2011, 2015 Petr Machata, Red Hat Inc. ++# Copyright (C) 2006 Yao Qi . ++# ++# This program is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of the ++# License, or (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ++# 02110-1301 USA ++ ++set libprint [ltraceCompile libprint.so [ltraceSource c { ++ #include ++ ++ void ++ print(char* s) ++ { ++ printf("%s\n",s); ++ } ++}]] ++ ++set bin [ltraceCompile {} $libprint -lpthread [ltraceSource c { ++ #include ++ ++ extern void print (char *); ++ ++ #define PRINT_LOOP 10 ++ ++ void * ++ th_main (void *arg) ++ { ++ int i; ++ for (i=0; i +Date: Wed, 8 Apr 2015 07:14:10 -0400 +Subject: [PATCH 2/2] Fix tracing multi-threaded processes without -f + +- In handle_syscall, we avoid touching stack of ignored processes. + But in handle_sysret, we require a sysret-like stack entry even + for ignored processes, even though we then go ahead to not act + on that stack entry. Instead, for ignored processes, avoid looking + at stack trace at all. +--- + handle_event.c | 10 +++++----- + testsuite/ltrace.main/main-threaded.exp | 1 + + 2 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/handle_event.c b/handle_event.c +index 6fa7e98..c2550ad 100644 +--- a/handle_event.c ++++ b/handle_event.c +@@ -619,12 +619,12 @@ handle_x_sysret(Event *event, char *(*name_cb)(struct process *, int)) + debug(DEBUG_FUNCTION, "handle_x_sysret(pid=%d, sysnum=%d)", + event->proc->pid, event->e_un.sysnum); + +- unsigned d = event->proc->callstack_depth; +- assert(d > 0); +- struct callstack_element *elem = &event->proc->callstack[d - 1]; +- assert(elem->is_syscall); +- + if (event->proc->state != STATE_IGNORED) { ++ unsigned d = event->proc->callstack_depth; ++ assert(d > 0); ++ struct callstack_element *elem = &event->proc->callstack[d - 1]; ++ assert(elem->is_syscall); ++ + struct timedelta spent = calc_time_spent(elem->enter_time); + if (options.syscalls) + output_syscall_right(event->proc, +diff --git a/testsuite/ltrace.main/main-threaded.exp b/testsuite/ltrace.main/main-threaded.exp +index cead82d..aca7afd 100644 +--- a/testsuite/ltrace.main/main-threaded.exp ++++ b/testsuite/ltrace.main/main-threaded.exp +@@ -60,5 +60,6 @@ set bin [ltraceCompile {} $libprint -lpthread [ltraceSource c { + }]] + + ltraceMatch1 [ltraceRun -f -l libprint.so -- $bin] {print\(} == 30 ++ltraceMatch1 [ltraceRun -L -- $bin] exited == 1 + + ltraceDone +-- +2.1.0 diff --git a/SOURCES/ltrace-0.7.91-x86-plt_map.patch b/SOURCES/ltrace-0.7.91-x86-plt_map.patch new file mode 100644 index 0000000..9983cc7 --- /dev/null +++ b/SOURCES/ltrace-0.7.91-x86-plt_map.patch @@ -0,0 +1,101 @@ +From fba95ad936f1d8c1052259bae811f1fc07f9a215 Mon Sep 17 00:00:00 2001 +From: Petr Machata +Date: Thu, 30 Oct 2014 01:48:17 +0100 +Subject: [PATCH] Initialize the PLT slot map correctly on x86 and x86_64 + +The PLT slot map translates relocation numbers to PLT slot numbers, +but was actually initialized in the opposite direction. Fix the way +it's initialized. This bug can be seen on glibc in particular: + + $ ltrace -e free ls + libc.so.6->free(0x5) = + libc.so.6->free(0x78) = + libc.so.6->free(0xc) = + libc.so.6->free(0x308) = + +Note the nonsense values passed to free. The problem is that these +are not free calls at all, but malloc calls that are assigned to wrong +PLT slots due to above bug. +--- + sysdeps/linux-gnu/x86/plt.c | 38 +++++++++++++++++++++----------------- + 1 file changed, 21 insertions(+), 17 deletions(-) + +diff --git a/sysdeps/linux-gnu/x86/plt.c b/sysdeps/linux-gnu/x86/plt.c +index c860af6..97f6c3e 100644 +--- a/sysdeps/linux-gnu/x86/plt.c ++++ b/sysdeps/linux-gnu/x86/plt.c +@@ -77,6 +77,18 @@ arch_elf_init(struct ltelf *lte, struct library *lib) + { + VECT_INIT(<e->arch.plt_map, unsigned int); + ++ if (vect_reserve(<e->arch.plt_map, vect_size(<e->plt_relocs)) < 0) { ++ fail: ++ arch_elf_destroy(lte); ++ return -1; ++ } ++ ++ { ++ unsigned int i, sz = vect_size(<e->plt_relocs); ++ for (i = 0; i < sz; ++i) ++ vect_pushback (<e->arch.plt_map, &i); ++ } ++ + /* IRELATIVE slots may make the whole situation a fair deal + * more complex. On x86{,_64}, the PLT slots are not + * presented in the order of the corresponding relocations, +@@ -114,43 +126,35 @@ arch_elf_init(struct ltelf *lte, struct library *lib) + /* Here we scan the PLT table and initialize a map of + * relocation->slot number in lte->arch.plt_map. */ + +- size_t i; +- for (i = 0; i < vect_size(<e->plt_relocs); ++i) { ++ unsigned int i, sz = vect_size(<e->plt_relocs); ++ for (i = 0; i < sz; ++i) { + + GElf_Addr offset = x86_plt_offset(i); +- uint32_t reloc_arg = 0; + + uint8_t byte; + if (elf_read_next_u8(lte->plt_data, &offset, &byte) < 0 + || byte != 0xff + || elf_read_next_u8(lte->plt_data, &offset, &byte) < 0 + || (byte != 0xa3 && byte != 0x25)) +- goto next; ++ continue; + + /* Skip immediate argument in the instruction. */ + offset += 4; + ++ uint32_t reloc_arg; + if (elf_read_next_u8(lte->plt_data, &offset, &byte) < 0 + || byte != 0x68 + || elf_read_next_u32(lte->plt_data, +- &offset, &reloc_arg) < 0) { +- reloc_arg = 0; +- goto next; +- } ++ &offset, &reloc_arg) < 0) ++ continue; + + if (lte->ehdr.e_machine == EM_386) { +- if (reloc_arg % 8 != 0) { +- reloc_arg = 0; +- goto next; +- } ++ if (reloc_arg % 8 != 0) ++ continue; + reloc_arg /= 8; + } + +- next: +- if (VECT_PUSHBACK(<e->arch.plt_map, &reloc_arg) < 0) { +- arch_elf_destroy(lte); +- return -1; +- } ++ *VECT_ELEMENT(<e->arch.plt_map, unsigned int, reloc_arg) = i; + } + + return 0; +-- +2.1.0 + diff --git a/SOURCES/ltrace-0.7.91-x86-unused_label.patch b/SOURCES/ltrace-0.7.91-x86-unused_label.patch new file mode 100644 index 0000000..e56bda2 --- /dev/null +++ b/SOURCES/ltrace-0.7.91-x86-unused_label.patch @@ -0,0 +1,32 @@ +From e16a28f1b6e5a15368f8ed98dc29a6da714dc5fa Mon Sep 17 00:00:00 2001 +From: Petr Machata +Date: Tue, 9 Dec 2014 17:44:30 +0100 +Subject: [PATCH] Drop unused label in x86 backend + +--- + sysdeps/linux-gnu/x86/plt.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/sysdeps/linux-gnu/x86/plt.c b/sysdeps/linux-gnu/x86/plt.c +index 97f6c3e..44ea260 100644 +--- a/sysdeps/linux-gnu/x86/plt.c ++++ b/sysdeps/linux-gnu/x86/plt.c +@@ -1,6 +1,6 @@ + /* + * This file is part of ltrace. +- * Copyright (C) 2013 Petr Machata, Red Hat Inc. ++ * Copyright (C) 2013,2014 Petr Machata, Red Hat Inc. + * Copyright (C) 2004,2008,2009 Juan Cespedes + * + * This program is free software; you can redistribute it and/or +@@ -78,7 +78,6 @@ arch_elf_init(struct ltelf *lte, struct library *lib) + VECT_INIT(<e->arch.plt_map, unsigned int); + + if (vect_reserve(<e->arch.plt_map, vect_size(<e->plt_relocs)) < 0) { +- fail: + arch_elf_destroy(lte); + return -1; + } +-- +2.1.0 + diff --git a/SOURCES/ltrace-rh1225550.patch b/SOURCES/ltrace-rh1225550.patch new file mode 100644 index 0000000..58ea80c --- /dev/null +++ b/SOURCES/ltrace-rh1225550.patch @@ -0,0 +1,286 @@ +diff -Nrup a/testsuite/ltrace.main/system_call_params.exp b/testsuite/ltrace.main/system_call_params.exp +--- a/testsuite/ltrace.main/system_call_params.exp 2013-10-24 06:02:24.000000000 -0600 ++++ b/testsuite/ltrace.main/system_call_params.exp 2015-06-01 12:13:04.639847059 -0600 +@@ -1,5 +1,5 @@ + # This file is part of ltrace. +-# Copyright (C) 2013 Petr Machata, Red Hat Inc. ++# Copyright (C) 2013, 2014, 2015 Petr Machata, Red Hat Inc. + # + # This program is free software; you can redistribute it and/or + # modify it under the terms of the GNU General Public License as +@@ -17,13 +17,31 @@ + # 02110-1301 USA + + set bin [ltraceCompile {} [ltraceSource c { ++ #ifndef _GNU_SOURCE ++ #define _GNU_SOURCE ++ #endif + #include + #include + #include ++ #include ++ #include /* For SYS_xxx definitions */ ++ #include ++ ++ #ifndef SYS_open ++ # if defined(__aarch64__) ++ # /* Linux doesn't actually implement SYS_open on AArch64, but for merely ++ # * recording the syscall, it's fine. */ ++ # define SYS_open 1024 ++ # else ++ # error SYS_open not available. ++ # endif ++ #endif ++ + int main(void) { +- open("/some/path", O_RDONLY); ++ syscall(SYS_open, "/some/path", O_RDONLY); + write(1, "something", 10); + mount("source", "target", "filesystemtype", 0, 0); ++ return 0; + } + }]] + +@@ -42,8 +60,33 @@ set conf [ltraceNamedSource "$dir/syscal + # somelib.conf is passed, and syscalls.conf is not available, or + # doesn't list readdir, that would be taken from somelib.conf with a + # wrong prototype. ++# ++# This test relies on the fact that there is no global config file ++# that would provide legitimate system call prototype. But that ++# doesn't have to be true, maybe ltrace is already installed on the ++# system with the right prefix. So first compile a wrapper that we ++# use to redirect fopen calls. ++ ++set libfopen_so [ltraceCompile libfopen.so -ldl [ltraceSource c { ++ #define _GNU_SOURCE ++ #include ++ #include ++ #include ++ ++ FILE * ++ fopen(const char *path, const char *mode) ++ { ++ if (strncmp(path, "/usr/share", 10) == 0) ++ path = "/dev/null"; ++ ++ return ((FILE *(*)(const char *, const char *)) ++ dlsym(RTLD_NEXT, "fopen")) (path, mode); ++ } ++}]] + ++setenv LD_PRELOAD $libfopen_so + ltraceMatch1 [ltraceRun -L -S -F $conf -- $bin] {^open@SYS\("/some/path"} == 0 ++unsetenv LD_PRELOAD + + # On the other hand, if -F somedir/ is given, we want to accept + # syscalls.conf found there. +diff -Nrup a/testsuite/ltrace.main/system_calls.exp b/testsuite/ltrace.main/system_calls.exp +--- a/testsuite/ltrace.main/system_calls.exp 2013-10-24 06:02:24.000000000 -0600 ++++ b/testsuite/ltrace.main/system_calls.exp 2015-06-01 12:09:11.132944455 -0600 +@@ -1,67 +1,146 @@ +-# This file was written by Yao Qi . ++# This file is part of ltrace. ++# Copyright (C) 2014 Petr Machata, Red Hat Inc. ++# Copyright (C) 2006 Yao Qi , IBM Corporation ++# ++# This program is free software; you can redistribute it and/or ++# modify it under the terms of the GNU General Public License as ++# published by the Free Software Foundation; either version 2 of the ++# License, or (at your option) any later version. ++# ++# This program is distributed in the hope that it will be useful, but ++# WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA ++# 02110-1301 USA ++ ++# Objectives: Verify that Ltrace can trace all the system calls in ++# execution. Note that this test is necessarily noisy. Dynamic ++# linker adds a bunch of system calls of its own. ++ ++set empty [ltraceCompile {} [ltraceSource c { ++ int main (void) { return 0; } ++}]] ++ ++set bin [ltraceCompile {} [ltraceSource c { ++ #include ++ #include ++ #include ++ #include ++ #include ++ #include ++ ++ int ++ main () ++ { ++ FILE* fp; ++ char s[]="system_calls"; ++ char buffer[1024]; ++ struct stat state; ++ ++ fp = fopen ("system_calls.tmp", "w"); ++ if (fp == NULL) ++ { ++ printf("Can not create system_calls.tmp\n"); ++ exit (0); ++ } ++ fwrite(s, sizeof(s), 1, fp); ++ fseek (fp, 0, SEEK_CUR); ++ fread(buffer, sizeof(s), 1, fp); ++ fclose(fp); ++ ++ getcwd (buffer, sizeof buffer); ++ chdir ("."); ++ symlink ("system_calls.tmp", "system_calls.link"); ++ remove("system_calls.link"); ++ rename ("system_calls.tmp", "system_calls.tmp1"); ++ stat ("system_calls.tmp", &state); ++ access ("system_calls.tmp", R_OK); ++ remove("system_calls.tmp1"); ++ ++ mkdir ("system_call_mkdir", 0777); ++ rmdir ("system_call_mkdir"); ++ ++ return 0; ++ } ++}]] ++ ++proc Calls {logfile} { ++ set fp [open $logfile] ++ set ret {} ++ ++ while {[gets $fp line] >= 0} { ++ if [regexp -- {^[a-zA-Z0-9]*@SYS} $line] { ++ set call [lindex [split $line @] 0] ++ dict incr ret $call ++ } ++ } + +-set testfile "system_calls" +-set srcfile ${testfile}.c +-set binfile ${testfile} +- +- +-verbose "compiling source file now....." +-# Build the shared libraries this test case needs. +-if { [ ltrace_compile "${srcdir}/${subdir}/${testfile}.c" "${objdir}/${subdir}/${binfile}" executable {debug} ] != "" } { +- send_user "Testcase compile failed, so all tests in this file will automatically fail.\n" ++ close $fp ++ return $ret + } + +-# set options for ltrace. +-ltrace_options "-S" +- +-#Run PUT for ltarce. +-set exec_output [ltrace_runtest $objdir/$subdir $objdir/$subdir/$binfile] ++proc GetDefault {d key def} { ++ if {[dict exists $d $key]} { ++ return [dict get $d $key] ++ } else { ++ return $def ++ } ++} + +-#check the output of this program. +-verbose "ltrace runtest output: $exec_output\n" ++proc Diff {d1 d2} { ++ set keys [lsort -unique [concat [dict keys $d1] [dict keys $d2]]] ++ set ret {} ++ foreach key $keys { ++ set n1 [GetDefault $d1 $key 0] ++ set n2 [GetDefault $d2 $key 0] ++ set sum [expr $n1 - $n2] ++ if {[expr $sum != 0]} { ++ dict set ret $key $sum ++ } ++ } ++ return $ret ++} + +-if [regexp {ELF from incompatible architecture} $exec_output] { +- fail "32-bit ltrace can not perform on 64-bit PUTs and rebuild ltrace in 64 bit mode!" +- return +-} elseif [ regexp {Couldn't get .hash data} $exec_output ] { +- fail "Couldn't get .hash data!" +- return ++proc Match {d patterns} { ++ foreach line $patterns { ++ set pattern [lindex $line 0] ++ set op [lindex $line 1] ++ set expect [lindex $line 2] ++ ++ set count 0 ++ foreach key [dict keys $d] { ++ if [regexp -- $pattern $key] { ++ incr count [dict get $d $key] ++ } ++ } ++ ++ set msgMain "$pattern was recorded $count times" ++ ++ if {[eval expr $count $op $expect]} { ++ pass $msgMain ++ } else { ++ fail "$msgMain, expected $op $expect" ++ } ++ } + } + ++Match [Diff [Calls [ltraceRun -L -S -- $bin]] \ ++ [Calls [ltraceRun -L -S -- $empty]]] { ++ { {^write$} == 1 } ++ { {^unlink(at)?$} >= 2 } ++ { {^open(at)?$} == 1 } ++ { {^(new|f)?stat(64)?$} >= 1 } ++ { {^close$} == 1 } ++ { {^getcwd$} == 1 } ++ { {^chdir$} == 1 } ++ { {^symlink(at)?$} == 1 } ++ { {^f?access(at)?$} == 1 } ++ { {^rename(at)?$} == 1 } ++ { {^mkdir(at)?$} == 1 } ++} + +-set pattern "^munmap@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 2 +-set pattern "^write@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^unlink@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +- +-set pattern "^brk@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^open@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^(new)?fstat(64)?@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 egrep +-set pattern "^(old_)?mmap2?@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 egrep +-set pattern "^close@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +- +-set pattern "^getcwd@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^chdir@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^symlink@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^unlink@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^(new)?stat(64)?@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 egrep +-set pattern "^access@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^rename@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^mkdir@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 +-set pattern "^rmdir@SYS" +-ltrace_verify_output ${objdir}/${subdir}/${testfile}.ltrace $pattern 1 ++ltraceDone diff --git a/SOURCES/ltrace-rh1225568.patch b/SOURCES/ltrace-rh1225568.patch new file mode 100644 index 0000000..02d9b1a --- /dev/null +++ b/SOURCES/ltrace-rh1225568.patch @@ -0,0 +1,40 @@ +diff -Nrup a/testsuite/ltrace.minor/trace-clone.c b/testsuite/ltrace.minor/trace-clone.c +--- a/testsuite/ltrace.minor/trace-clone.c 2012-12-16 18:53:45.000000000 -0700 ++++ b/testsuite/ltrace.minor/trace-clone.c 2015-06-01 12:17:25.955142612 -0600 +@@ -3,11 +3,14 @@ + clone called. + + This file was written by Yao Qi . */ ++#ifndef _GNU_SOURCE + #define _GNU_SOURCE ++#endif + #include + #include + #include + #include ++#include + + int child () + { +@@ -22,7 +25,8 @@ typedef int (* myfunc)(); + int main () + { + pid_t pid; +- static char stack[STACK_SIZE]; ++ static __attribute__ ((aligned (16))) char stack[STACK_SIZE]; ++ + #ifdef __ia64__ + pid = __clone2((myfunc)&child, stack, STACK_SIZE, CLONE_FS, NULL); + #else +diff -Nrup a/testsuite/ltrace.minor/trace-irelative.exp b/testsuite/ltrace.minor/trace-irelative.exp +--- a/testsuite/ltrace.minor/trace-irelative.exp 2013-11-04 18:08:03.000000000 -0700 ++++ b/testsuite/ltrace.minor/trace-irelative.exp 2015-06-01 12:30:59.737371166 -0600 +@@ -54,6 +54,8 @@ set src [ltraceSource c { + }] + + foreach ext {{} .pie} { ++ # AArch64 does not have ifunc support yet ++ setup_xfail aarch64*-*-* + set bin1 [ltraceCompile $ext $src] + do_tests $bin1 "" + } diff --git a/SPECS/ltrace.spec b/SPECS/ltrace.spec index 83fea3b..2fbea54 100644 --- a/SPECS/ltrace.spec +++ b/SPECS/ltrace.spec @@ -1,7 +1,7 @@ Summary: Tracks runtime library calls from dynamically linked executables Name: ltrace Version: 0.7.91 -Release: 11%{?dist} +Release: 14%{?dist} URL: http://ltrace.alioth.debian.org/ License: GPLv2+ Group: Development/Debuggers @@ -80,6 +80,20 @@ Patch15: ltrace-0.7.91-parser-ws_after_id.patch # 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=1210290 +# 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 + +# Minor testsuite cleanups for aarch64 +Patch22: ltrace-rh1225550.patch +Patch23: ltrace-rh1225568.patch + %description Ltrace is a debugging program which runs a specified command until the command exits. While the command is executing, ltrace intercepts and @@ -109,6 +123,12 @@ execution of processes. %patch14 -p1 %patch15 -p1 %patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 %build %configure @@ -133,6 +153,23 @@ echo ====================TESTING END===================== %{_datadir}/ltrace %changelog +* Mon Jul 20 2015 Jeff Law - 0.7.91-14 +- Fix dates in ChangeLog. No functional changes (#1244866) + +* Wed Jan 7 2015 Petr Machata - 0.7.91-13 +- Fix system_call_params.exp and system_calls.exp for aarch64. + (#1225550) +- xfail part of trace-irelative.exp for aarch64, fix trace-clone + for aarch64 (#1225568) + +* Wed Jan 7 2015 Petr Machata - 0.7.91-12 +- Add upstream fix for a bug in labeling PLT slots + (ltrace-0.7.91-x86-plt_map.patch, + ltrace-0.7.91-x86-unused_label.patch) +- Add upstream fixes for tracing multi-threaded processes without -f + (ltrace-0.7.91-multithread-no-f-1.patch, + ltrace-0.7.91-multithread-no-f-2.patch) + * Tue Dec 9 2014 Petr Machata - 0.7.91-11 - Fix bias handling in PPC backend - Fix cloning of unresolved breakpoints in PPC backend @@ -410,7 +447,7 @@ echo ====================TESTING END===================== - e_entry patch: use elf's e_entry field instead of looking up _start symbol, which failed on stripped binaries. -* Tue May 3 2006 Petr Machata - 0.4-1.5 +* Wed May 3 2006 Petr Machata - 0.4-1.5 - Correct a typo that prevented the inclusion of "demangle.h" - Adding -Wl,-z,relro @@ -510,7 +547,7 @@ echo ====================TESTING END===================== * Sun Jun 24 2001 Elliot Lee - Bump release + rebuild. -* Thu Aug 2 2000 Tim Waugh +* Wed Aug 2 2000 Tim Waugh - fix off-by-one problem in checking syscall number * Wed Jul 12 2000 Prospector