From 2a1fab588fe52b4bf80dd2363f834102b0dbf4de Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 05 2019 19:45:10 +0000 Subject: import gcc-toolset-9-valgrind-3.15.0-9.el8 --- diff --git a/.gcc-toolset-9-valgrind.metadata b/.gcc-toolset-9-valgrind.metadata new file mode 100644 index 0000000..88f669e --- /dev/null +++ b/.gcc-toolset-9-valgrind.metadata @@ -0,0 +1 @@ +4cc014e2390c4bcecb11aa00b37aa52d352db97f SOURCES/valgrind-3.15.0.tar.bz2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8e3baf4 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/valgrind-3.15.0.tar.bz2 diff --git a/SOURCES/valgrind-3.15.0-arm64-ld-stpcpy.patch b/SOURCES/valgrind-3.15.0-arm64-ld-stpcpy.patch new file mode 100644 index 0000000..b0290ae --- /dev/null +++ b/SOURCES/valgrind-3.15.0-arm64-ld-stpcpy.patch @@ -0,0 +1,45 @@ +commit 89423f5d8ba05a099c2c62227a00a4f4eec59eb3 +Author: Mark Wielaard +Date: Tue May 7 21:20:04 2019 +0200 + + Intercept stpcpy also in ld.so for arm64 + + On other arches stpcpy () is intercepted for both libc.so and ld.so. + But not on arm64, where it is only intercepted for libc.so. + + This can cause memcheck warnings about the use of stpcpy () in ld.so + when called through dlopen () because ld.so contains its own copy of + that functions. + + Fix by introducing VG_Z_LD_LINUX_AARCH64_SO_1 (the encoded name of + ld.so on arm64) and using that in vg_replace_strmem.c to intercept + stpcpy. + + https://bugs.kde.org/show_bug.cgi?id=407307 + +diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h +index c97941f..15ba67f 100644 +--- a/include/pub_tool_redir.h ++++ b/include/pub_tool_redir.h +@@ -313,7 +313,9 @@ + #define VG_Z_LD_SO_1 ldZdsoZd1 // ld.so.1 + #define VG_U_LD_SO_1 "ld.so.1" + ++#define VG_Z_LD_LINUX_AARCH64_SO_1 ldZhlinuxZhaarch64ZdsoZd1 + #define VG_U_LD_LINUX_AARCH64_SO_1 "ld-linux-aarch64.so.1" ++ + #define VG_U_LD_LINUX_ARMHF_SO_3 "ld-linux-armhf.so.3" + + #endif +diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c +index 89a7dcc..19143cf 100644 +--- a/shared/vg_replace_strmem.c ++++ b/shared/vg_replace_strmem.c +@@ -1160,6 +1160,7 @@ static inline void my_exit ( int x ) + STPCPY(VG_Z_LIBC_SONAME, __stpcpy_sse2_unaligned) + STPCPY(VG_Z_LD_LINUX_SO_2, stpcpy) + STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy) ++ STPCPY(VG_Z_LD_LINUX_AARCH64_SO_1,stpcpy) + + #elif defined(VGO_darwin) + //STPCPY(VG_Z_LIBC_SONAME, stpcpy) diff --git a/SOURCES/valgrind-3.15.0-avx-rdrand-f16c.patch b/SOURCES/valgrind-3.15.0-avx-rdrand-f16c.patch new file mode 100644 index 0000000..cc041fe --- /dev/null +++ b/SOURCES/valgrind-3.15.0-avx-rdrand-f16c.patch @@ -0,0 +1,95 @@ +commit 791fe5ecf909d573bcbf353b677b9404f9da0ed4 +Author: Mark Wielaard +Date: Mon May 27 22:19:27 2019 +0200 + + Expose rdrand and f16c through cpuid also if the host only has avx. + + The amd64 CPUID dirtyhelpers are mostly static since they emulate some + existing CPU "family". The avx2 ("i7-4910MQ") CPUID variant however + can "dynamicly" enable rdrand and/or f16c if the host supports them. + Do the same for the avx_and_cx16 ("i5-2300") CPUID variant. + + https://bugs.kde.org/show_bug.cgi?id=408009 + +diff --git a/VEX/priv/guest_amd64_defs.h b/VEX/priv/guest_amd64_defs.h +index 4f34b41..a5de527 100644 +--- a/VEX/priv/guest_amd64_defs.h ++++ b/VEX/priv/guest_amd64_defs.h +@@ -165,7 +165,9 @@ extern void amd64g_dirtyhelper_storeF80le ( Addr/*addr*/, ULong/*data*/ ); + extern void amd64g_dirtyhelper_CPUID_baseline ( VexGuestAMD64State* st ); + extern void amd64g_dirtyhelper_CPUID_sse3_and_cx16 ( VexGuestAMD64State* st ); + extern void amd64g_dirtyhelper_CPUID_sse42_and_cx16 ( VexGuestAMD64State* st ); +-extern void amd64g_dirtyhelper_CPUID_avx_and_cx16 ( VexGuestAMD64State* st ); ++extern void amd64g_dirtyhelper_CPUID_avx_and_cx16 ( VexGuestAMD64State* st, ++ ULong hasF16C, ++ ULong hasRDRAND ); + extern void amd64g_dirtyhelper_CPUID_avx2 ( VexGuestAMD64State* st, + ULong hasF16C, ULong hasRDRAND ); + +diff --git a/VEX/priv/guest_amd64_helpers.c b/VEX/priv/guest_amd64_helpers.c +index e4cf7e2..182bae0 100644 +--- a/VEX/priv/guest_amd64_helpers.c ++++ b/VEX/priv/guest_amd64_helpers.c +@@ -3141,8 +3141,11 @@ void amd64g_dirtyhelper_CPUID_sse42_and_cx16 ( VexGuestAMD64State* st ) + address sizes : 36 bits physical, 48 bits virtual + power management: + */ +-void amd64g_dirtyhelper_CPUID_avx_and_cx16 ( VexGuestAMD64State* st ) ++void amd64g_dirtyhelper_CPUID_avx_and_cx16 ( VexGuestAMD64State* st, ++ ULong hasF16C, ULong hasRDRAND ) + { ++ vassert((hasF16C >> 1) == 0ULL); ++ vassert((hasRDRAND >> 1) == 0ULL); + # define SET_ABCD(_a,_b,_c,_d) \ + do { st->guest_RAX = (ULong)(_a); \ + st->guest_RBX = (ULong)(_b); \ +@@ -3157,9 +3160,14 @@ void amd64g_dirtyhelper_CPUID_avx_and_cx16 ( VexGuestAMD64State* st ) + case 0x00000000: + SET_ABCD(0x0000000d, 0x756e6547, 0x6c65746e, 0x49656e69); + break; +- case 0x00000001: +- SET_ABCD(0x000206a7, 0x00100800, 0x1f9ae3bf, 0xbfebfbff); ++ case 0x00000001: { ++ // As a baseline, advertise neither F16C (ecx:29) nor RDRAND (ecx:30), ++ // but patch in support for them as directed by the caller. ++ UInt ecx_extra ++ = (hasF16C ? (1U << 29) : 0) | (hasRDRAND ? (1U << 30) : 0); ++ SET_ABCD(0x000206a7, 0x00100800, (0x1f9ae3bf | ecx_extra), 0xbfebfbff); + break; ++ } + case 0x00000002: + SET_ABCD(0x76035a01, 0x00f0b0ff, 0x00000000, 0x00ca0000); + break; +diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c +index 56e992c..96dee38 100644 +--- a/VEX/priv/guest_amd64_toIR.c ++++ b/VEX/priv/guest_amd64_toIR.c +@@ -22007,7 +22007,8 @@ Long dis_ESC_0F ( + + vassert(fName); vassert(fAddr); + IRExpr** args = NULL; +- if (fAddr == &amd64g_dirtyhelper_CPUID_avx2) { ++ if (fAddr == &amd64g_dirtyhelper_CPUID_avx2 ++ || fAddr == &amd64g_dirtyhelper_CPUID_avx_and_cx16) { + Bool hasF16C = (archinfo->hwcaps & VEX_HWCAPS_AMD64_F16C) != 0; + Bool hasRDRAND = (archinfo->hwcaps & VEX_HWCAPS_AMD64_RDRAND) != 0; + args = mkIRExprVec_3(IRExpr_GSPTR(), +diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c +index 3536e57..56a28d1 100644 +--- a/coregrind/m_machine.c ++++ b/coregrind/m_machine.c +@@ -1076,10 +1076,10 @@ Bool VG_(machine_get_hwcaps)( void ) + have_avx2 = (ebx & (1<<5)) != 0; /* True => have AVX2 */ + } + +- /* Sanity check for RDRAND and F16C. These don't actually *need* AVX2, but +- it's convenient to restrict them to the AVX2 case since the simulated +- CPUID we'll offer them on has AVX2 as a base. */ +- if (!have_avx2) { ++ /* Sanity check for RDRAND and F16C. These don't actually *need* AVX, but ++ it's convenient to restrict them to the AVX case since the simulated ++ CPUID we'll offer them on has AVX as a base. */ ++ if (!have_avx) { + have_f16c = False; + have_rdrand = False; + } diff --git a/SOURCES/valgrind-3.15.0-copy_file_range.patch b/SOURCES/valgrind-3.15.0-copy_file_range.patch new file mode 100644 index 0000000..6cf9827 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-copy_file_range.patch @@ -0,0 +1,374 @@ +commit 5f00db054a6f59502e9deeeb59ace2261207ee31 +Author: Alexandra Hajkova +Date: Thu May 2 08:24:02 2019 -0400 + + Add support for the copy_file_range syscall + + Support amd64, x86, arm64, ppc64, ppc32 and s390x architectures. + Also add sys-copy_file_range test case. + +diff --git a/configure.ac b/configure.ac +index d043ce3..3528925 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -4172,6 +4172,7 @@ AC_CHECK_FUNCS([ \ + utimensat \ + process_vm_readv \ + process_vm_writev \ ++ copy_file_range \ + ]) + + # AC_CHECK_LIB adds any library found to the variable LIBS, and links these +@@ -4187,6 +4188,8 @@ AM_CONDITIONAL([HAVE_PTHREAD_SPINLOCK], + [test x$ac_cv_func_pthread_spin_lock = xyes]) + AM_CONDITIONAL([HAVE_PTHREAD_SETNAME_NP], + [test x$ac_cv_func_pthread_setname_np = xyes]) ++AM_CONDITIONAL([HAVE_COPY_FILE_RANGE], ++ [test x$ac_cv_func_copy_file_range = xyes]) + + if test x$VGCONF_PLATFORM_PRI_CAPS = xMIPS32_LINUX \ + -o x$VGCONF_PLATFORM_PRI_CAPS = xMIPS64_LINUX ; then +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index f76191a..1edf9eb 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -379,6 +379,7 @@ DECL_TEMPLATE(linux, sys_getsockname); + DECL_TEMPLATE(linux, sys_getpeername); + DECL_TEMPLATE(linux, sys_socketpair); + DECL_TEMPLATE(linux, sys_kcmp); ++DECL_TEMPLATE(linux, sys_copy_file_range); + + // Some arch specific functions called from syswrap-linux.c + extern Int do_syscall_clone_x86_linux ( Word (*fn)(void *), +diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c +index 30e7d0e..0c1d8d1 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -863,6 +863,8 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_statx, sys_statx), // 332 + + LINX_(__NR_membarrier, sys_membarrier), // 324 ++ ++ LINX_(__NR_copy_file_range, sys_copy_file_range), // 326 + }; + + SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 290320a..f66be2d 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -819,7 +819,7 @@ static SyscallTableEntry syscall_main_table[] = { + // (__NR_userfaultfd, sys_ni_syscall), // 282 + LINX_(__NR_membarrier, sys_membarrier), // 283 + // (__NR_mlock2, sys_ni_syscall), // 284 +- // (__NR_copy_file_range, sys_ni_syscall), // 285 ++ LINX_(__NR_copy_file_range, sys_copy_file_range), // 285 + // (__NR_preadv2, sys_ni_syscall), // 286 + // (__NR_pwritev2, sys_ni_syscall), // 287 + // (__NR_pkey_mprotect, sys_ni_syscall), // 288 +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index 73ef98d..cd0ee74 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -12093,6 +12093,36 @@ POST(sys_bpf) + } + } + ++PRE(sys_copy_file_range) ++{ ++ PRINT("sys_copy_file_range (%lu, %lu, %lu, %lu, %lu, %lu)", ARG1, ARG2, ARG3, ++ ARG4, ARG5, ARG6); ++ ++ PRE_REG_READ6(vki_size_t, "copy_file_range", ++ int, "fd_in", ++ vki_loff_t *, "off_in", ++ int, "fd_out", ++ vki_loff_t *, "off_out", ++ vki_size_t, "len", ++ unsigned int, "flags"); ++ ++ /* File descriptors are "specially" tracked by valgrind. ++ valgrind itself uses some, so make sure someone didn't ++ put in one of our own... */ ++ if (!ML_(fd_allowed)(ARG1, "copy_file_range(fd_in)", tid, False) || ++ !ML_(fd_allowed)(ARG3, "copy_file_range(fd_in)", tid, False)) { ++ SET_STATUS_Failure( VKI_EBADF ); ++ } else { ++ /* Now see if the offsets are defined. PRE_MEM_READ will ++ double check it can dereference them. */ ++ if (ARG2 != 0) ++ PRE_MEM_READ( "copy_file_range(off_in)", ARG2, sizeof(vki_loff_t)); ++ if (ARG4 != 0) ++ PRE_MEM_READ( "copy_file_range(off_out)", ARG4, sizeof(vki_loff_t)); ++ } ++} ++ ++ + #undef PRE + #undef POST + +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index f812f1f..71f208d 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1021,6 +1021,8 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_getrandom, sys_getrandom), // 359 + LINXY(__NR_memfd_create, sys_memfd_create), // 360 + ++ LINX_(__NR_copy_file_range, sys_copy_file_range), // 379 ++ + LINXY(__NR_statx, sys_statx), // 383 + }; + +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index eada099..1a42c1f 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1007,6 +1007,8 @@ static SyscallTableEntry syscall_table[] = { + + LINX_(__NR_membarrier, sys_membarrier), // 365 + ++ LINX_(__NR_copy_file_range, sys_copy_file_range), // 379 ++ + LINXY(__NR_statx, sys_statx), // 383 + }; + +diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c +index ad78384..41ada8d 100644 +--- a/coregrind/m_syswrap/syswrap-s390x-linux.c ++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c +@@ -854,6 +854,8 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_recvmsg, sys_recvmsg), // 372 + LINX_(__NR_shutdown, sys_shutdown), // 373 + ++ LINX_(__NR_copy_file_range, sys_copy_file_range), // 375 ++ + LINXY(__NR_statx, sys_statx), // 379 + }; + +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index f05619e..f8d97ea 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -1608,6 +1608,8 @@ static SyscallTableEntry syscall_table[] = { + + LINX_(__NR_membarrier, sys_membarrier), // 375 + ++ LINX_(__NR_copy_file_range, sys_copy_file_range), // 377 ++ + LINXY(__NR_statx, sys_statx), // 383 + + /* Explicitly not supported on i386 yet. */ +diff --git a/memcheck/tests/linux/Makefile.am b/memcheck/tests/linux/Makefile.am +index d7515d9..00e99a5 100644 +--- a/memcheck/tests/linux/Makefile.am ++++ b/memcheck/tests/linux/Makefile.am +@@ -20,6 +20,7 @@ EXTRA_DIST = \ + stack_switch.stderr.exp stack_switch.vgtest \ + syscalls-2007.vgtest syscalls-2007.stderr.exp \ + syslog-syscall.vgtest syslog-syscall.stderr.exp \ ++ sys-copy_file_range.vgtest sys-copy_file_range.stderr.exp \ + sys-openat.vgtest sys-openat.stderr.exp sys-openat.stdout.exp \ + sys-statx.vgtest sys-statx.stderr.exp \ + timerfd-syscall.vgtest timerfd-syscall.stderr.exp \ +@@ -49,6 +50,10 @@ if HAVE_AT_FDCWD + check_PROGRAMS += sys-openat + endif + ++if HAVE_COPY_FILE_RANGE ++ check_PROGRAMS += sys-copy_file_range ++endif ++ + AM_CFLAGS += $(AM_FLAG_M3264_PRI) + AM_CXXFLAGS += $(AM_FLAG_M3264_PRI) + +diff --git a/memcheck/tests/linux/sys-copy_file_range.c b/memcheck/tests/linux/sys-copy_file_range.c +new file mode 100644 +index 0000000..83981c6 +--- /dev/null ++++ b/memcheck/tests/linux/sys-copy_file_range.c +@@ -0,0 +1,67 @@ ++#define _GNU_SOURCE ++#include ++#include ++#include ++#include ++#include ++#include ++ ++int main(int argc, char **argv) ++{ ++ int fd_in, fd_out; ++ struct stat stat; ++ loff_t len, ret; ++ ++ fd_in = open("copy_file_range_source", O_CREAT | O_RDWR); ++ if (fd_in == -1) { ++ perror("open copy_file_range_source"); ++ exit(EXIT_FAILURE); ++ } ++ ++ if (write(fd_in, "foo bar\n", 8) != 8) { ++ perror("writing to the copy_file_range_source"); ++ exit(EXIT_FAILURE); ++ } ++ lseek(fd_in, 0, SEEK_SET); ++ ++ if (fstat(fd_in, &stat) == -1) { ++ perror("fstat"); ++ exit(EXIT_FAILURE); ++ } ++ ++ len = stat.st_size; ++ ++ fd_out = open("copy_file_range_dest", O_CREAT | O_WRONLY | O_TRUNC, 0644); ++ if (fd_out == -1) { ++ perror("open copy_file_range_dest"); ++ exit(EXIT_FAILURE); ++ } ++ ++ /* Check copy_file_range called with the correct arguments works. */ ++ do { ++ ret = copy_file_range(fd_in, NULL, fd_out, NULL, len, 0); ++ if (ret == -1) { ++ perror("copy_file_range"); ++ exit(EXIT_FAILURE); ++ } ++ ++ len -= ret; ++ } while (len > 0); ++ ++ /* Check valgrind will produce expected warnings for the ++ various wrong arguments. */ ++ do { ++ void *t; ++ void *z = (void *) -1; ++ ++ ret = copy_file_range(fd_in, t, fd_out, NULL, len, 0); ++ ret = copy_file_range(fd_in, NULL, fd_out, z, len, 0); ++ ret = copy_file_range(- 1, NULL, - 1, NULL, len, 0); ++ } while (0); ++ ++ close(fd_in); ++ close(fd_out); ++ unlink("copy_file_range_source"); ++ unlink("copy_file_range_dest"); ++ exit(EXIT_SUCCESS); ++} +diff --git a/memcheck/tests/linux/sys-copy_file_range.stderr.exp b/memcheck/tests/linux/sys-copy_file_range.stderr.exp +new file mode 100644 +index 0000000..1aa4dc2 +--- /dev/null ++++ b/memcheck/tests/linux/sys-copy_file_range.stderr.exp +@@ -0,0 +1,21 @@ ++ ++Syscall param copy_file_range("off_in") contains uninitialised byte(s) ++ ... ++ by 0x........: main (sys-copy_file_range.c:57) ++ ++Syscall param copy_file_range(off_out) points to unaddressable byte(s) ++ ... ++ by 0x........: main (sys-copy_file_range.c:58) ++ Address 0x........ is not stack'd, malloc'd or (recently) free'd ++ ++Warning: invalid file descriptor -1 in syscall copy_file_range(fd_in)() ++ ++HEAP SUMMARY: ++ in use at exit: 0 bytes in 0 blocks ++ total heap usage: 0 allocs, 0 frees, 0 bytes allocated ++ ++For a detailed leak analysis, rerun with: --leak-check=full ++ ++Use --track-origins=yes to see where uninitialised values come from ++For lists of detected and suppressed errors, rerun with: -s ++ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) +diff --git a/memcheck/tests/linux/sys-copy_file_range.vgtest b/memcheck/tests/linux/sys-copy_file_range.vgtest +new file mode 100644 +index 0000000..b7741e8 +--- /dev/null ++++ b/memcheck/tests/linux/sys-copy_file_range.vgtest +@@ -0,0 +1,2 @@ ++prereq: test -e sys-copy_file_range ++prog: sys-copy_file_range +commit bd27ad3ff31555484b7fdb310c4b033620882e44 +Author: Mark Wielaard +Date: Sun May 5 16:01:41 2019 +0200 + + Hook linux copy_file_range syscall on arm. + +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index 9f1bdab..9ba0665 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -1016,6 +1016,8 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_getrandom, sys_getrandom), // 384 + LINXY(__NR_memfd_create, sys_memfd_create), // 385 + ++ LINX_(__NR_copy_file_range, sys_copy_file_range), // 391 ++ + LINXY(__NR_statx, sys_statx), // 397 + }; + +commit c212b72a63e43be323a4e028bbdbe8b023c22be8 +Author: Mark Wielaard +Date: Wed May 15 21:30:00 2019 +0200 + + Explicitly make testcase variable for sys-copy_file_range undefined. + + On some systems an extra warning could occur when a variable in + the memcheck/tests/linux/sys-copy_file_range testcase was undefined, + but (accidentially) pointed to known bad memory. Fix by defining the + variable as 0, but then marking it explicitly undefined using memcheck + VALGRIND_MAKE_MEM_UNDEFINED. + + Followup for https://bugs.kde.org/show_bug.cgi?id=407218 + +diff --git a/memcheck/tests/linux/sys-copy_file_range.c b/memcheck/tests/linux/sys-copy_file_range.c +index 83981c6..589399c 100644 +--- a/memcheck/tests/linux/sys-copy_file_range.c ++++ b/memcheck/tests/linux/sys-copy_file_range.c +@@ -3,8 +3,8 @@ + #include + #include + #include +-#include + #include ++#include "../../memcheck.h" + + int main(int argc, char **argv) + { +@@ -51,7 +51,7 @@ int main(int argc, char **argv) + /* Check valgrind will produce expected warnings for the + various wrong arguments. */ + do { +- void *t; ++ void *t = 0; VALGRIND_MAKE_MEM_UNDEFINED (&t, sizeof (void *)); + void *z = (void *) -1; + + ret = copy_file_range(fd_in, t, fd_out, NULL, len, 0); +commit 033d013bebeb3471c0da47060deb9a5771e6c913 +Author: Mark Wielaard +Date: Fri May 24 21:51:31 2019 +0200 + + Fix memcheck/tests/linux/sys-copy_file_range open call (mode). + + sys-copy_file_range.c calls open with O_CREAT flag and so must provide + a mode argument. valgrind memcheck actually caught this ommission on + some arches (fedora rawhide i686 specifically). + + This is a small additional fixup for + https://bugs.kde.org/show_bug.cgi?id=407218 + +diff --git a/memcheck/tests/linux/sys-copy_file_range.c b/memcheck/tests/linux/sys-copy_file_range.c +index 589399c..3022fa1 100644 +--- a/memcheck/tests/linux/sys-copy_file_range.c ++++ b/memcheck/tests/linux/sys-copy_file_range.c +@@ -12,7 +12,7 @@ int main(int argc, char **argv) + struct stat stat; + loff_t len, ret; + +- fd_in = open("copy_file_range_source", O_CREAT | O_RDWR); ++ fd_in = open("copy_file_range_source", O_CREAT | O_RDWR, 0644); + if (fd_in == -1) { + perror("open copy_file_range_source"); + exit(EXIT_FAILURE); diff --git a/SOURCES/valgrind-3.15.0-disable-s390x-z13.patch b/SOURCES/valgrind-3.15.0-disable-s390x-z13.patch new file mode 100644 index 0000000..60df335 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-disable-s390x-z13.patch @@ -0,0 +1,34 @@ +diff -ur valgrind-3.14.0.orig/VEX/priv/guest_s390_helpers.c valgrind-3.14.0/VEX/priv/guest_s390_helpers.c +--- valgrind-3.14.0.orig/VEX/priv/guest_s390_helpers.c 2019-01-10 17:00:57.203206690 +0100 ++++ valgrind-3.14.0/VEX/priv/guest_s390_helpers.c 2019-01-10 17:06:23.335253900 +0100 +@@ -2469,7 +2469,7 @@ + /*--- Dirty helper for vector instructions ---*/ + /*------------------------------------------------------------*/ + +-#if defined(VGA_s390x) ++#if defined(VGA_s390x) && 0 /* disable for old binutils */ + ULong + s390x_dirtyhelper_vec_op(VexGuestS390XState *guest_state, + const ULong serialized) +diff -ur valgrind-3.14.0.orig/none/tests/s390x/Makefile.am valgrind-3.14.0/none/tests/s390x/Makefile.am +--- valgrind-3.14.0.orig/none/tests/s390x/Makefile.am 2019-01-10 17:00:57.411202894 +0100 ++++ valgrind-3.14.0/none/tests/s390x/Makefile.am 2019-01-10 17:10:28.963776813 +0100 +@@ -18,8 +18,7 @@ + spechelper-cr spechelper-clr \ + spechelper-ltr spechelper-or \ + spechelper-icm-1 spechelper-icm-2 spechelper-tmll \ +- spechelper-tm laa vector lsc2 ppno vector_string vector_integer \ +- vector_float ++ spechelper-tm laa + + if BUILD_DFP_TESTS + INSN_TESTS += dfp-1 dfp-2 dfp-3 dfp-4 dfptest dfpext dfpconv srnmt pfpo +@@ -68,8 +67,3 @@ + fixbr_CFLAGS = $(AM_CFLAGS) @FLAG_MLONG_DOUBLE_128@ + fpext_CFLAGS = $(AM_CFLAGS) @FLAG_MLONG_DOUBLE_128@ + ex_clone_LDADD = -lpthread +-vector_CFLAGS = $(AM_CFLAGS) -march=z13 +-lsc2_CFLAGS = -march=z13 -DS390_TESTS_NOCOLOR +-vector_string_CFLAGS = $(AM_CFLAGS) -march=z13 -DS390_TEST_COUNT=5 +-vector_integer_CFLAGS = $(AM_CFLAGS) -march=z13 -DS390_TEST_COUNT=4 +-vector_float_CFLAGS = $(AM_CFLAGS) -march=z13 -DS390_TEST_COUNT=4 diff --git a/SOURCES/valgrind-3.15.0-exp-sgcheck-no-aarch64.patch b/SOURCES/valgrind-3.15.0-exp-sgcheck-no-aarch64.patch new file mode 100644 index 0000000..69f13b3 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-exp-sgcheck-no-aarch64.patch @@ -0,0 +1,29 @@ +commit 59784c512ec40e588b21cf5ae8e31e9c4f99d6b8 +Author: Mark Wielaard +Date: Sat May 18 14:55:50 2019 +0200 + + aarch64 (arm64) isn't a supported architecture for exp-sgcheck. + + exp-sgcheck/pc_main.c contains: + + #if defined(VGA_arm) || defined(VGA_arm64) + VG_(printf)("SGCheck doesn't work on ARM yet, sorry.\n"); + VG_(exit)(1); + #endif + + But exp-sgcheck/tests/is_arch_supported checked against uname -m + which returns aarch64 (not arm64). Fix the test check so the + exp-sgcheck tests are skipped instead of producing failures. + +diff --git a/exp-sgcheck/tests/is_arch_supported b/exp-sgcheck/tests/is_arch_supported +index 818cc61..d4c6191 100755 +--- a/exp-sgcheck/tests/is_arch_supported ++++ b/exp-sgcheck/tests/is_arch_supported +@@ -10,6 +10,6 @@ + # architectures. + + case `uname -m` in +- ppc*|arm*|s390x|mips*) exit 1;; ++ ppc*|aarch64|arm*|s390x|mips*) exit 1;; + *) exit 0;; + esac diff --git a/SOURCES/valgrind-3.15.0-pkey.patch b/SOURCES/valgrind-3.15.0-pkey.patch new file mode 100644 index 0000000..3f534c5 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-pkey.patch @@ -0,0 +1,226 @@ +commit b064131bdf099d3647b4501e5d15391e1e9623e6 +Author: Mark Wielaard +Date: Thu May 30 00:29:58 2019 +0200 + + linux x86 and amd64 memory protection key syscalls. + + This implements minimal support for the pkey_alloc, pkey_free and + pkey_mprotect syscalls. pkey_alloc will simply indicate that pkeys + are not supported. pkey_free always fails. pkey_mprotect works just + like mprotect if the special pkey -1 is provided. + + https://bugs.kde.org/show_bug.cgi?id=408091 + +diff --git a/coregrind/m_syswrap/priv_syswrap-generic.h b/coregrind/m_syswrap/priv_syswrap-generic.h +index 88530f0..3e1c8b6 100644 +--- a/coregrind/m_syswrap/priv_syswrap-generic.h ++++ b/coregrind/m_syswrap/priv_syswrap-generic.h +@@ -106,6 +106,10 @@ extern Bool + ML_(handle_auxv_open)(SyscallStatus *status, const HChar *filename, + int flags); + ++/* Helper function for generic mprotect and linux pkey_mprotect. */ ++extern void handle_sys_mprotect (ThreadId tid, SyscallStatus *status, ++ Addr *addr, SizeT *len, Int *prot); ++ + DECL_TEMPLATE(generic, sys_ni_syscall); // * P -- unimplemented + DECL_TEMPLATE(generic, sys_exit); + DECL_TEMPLATE(generic, sys_fork); +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index 5cf5407..2471524 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -299,6 +299,11 @@ DECL_TEMPLATE(linux, sys_bpf); + // Linux-specific (new in Linux 4.11) + DECL_TEMPLATE(linux, sys_statx); + ++// Linux-specific memory protection key syscalls (since Linux 4.9) ++DECL_TEMPLATE(linux, sys_pkey_alloc); ++DECL_TEMPLATE(linux, sys_pkey_free); ++DECL_TEMPLATE(linux, sys_pkey_mprotect); ++ + /* --------------------------------------------------------------------- + Wrappers for sockets and ipc-ery. These are split into standalone + procedures because x86-linux hides them inside multiplexors +diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c +index d4fe413..2d6b95f 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -863,6 +863,10 @@ static SyscallTableEntry syscall_table[] = { + LINX_(__NR_membarrier, sys_membarrier), // 324 + + LINX_(__NR_copy_file_range, sys_copy_file_range), // 326 ++ ++ LINXY(__NR_pkey_mprotect, sys_pkey_mprotect), // 329 ++ LINX_(__NR_pkey_alloc, sys_pkey_alloc), // 330 ++ LINX_(__NR_pkey_free, sys_pkey_free), // 331 + }; + + SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) +diff --git a/coregrind/m_syswrap/syswrap-generic.c b/coregrind/m_syswrap/syswrap-generic.c +index 0b64919..01191f6 100644 +--- a/coregrind/m_syswrap/syswrap-generic.c ++++ b/coregrind/m_syswrap/syswrap-generic.c +@@ -3842,12 +3842,28 @@ PRE(sys_mprotect) + PRE_REG_READ3(long, "mprotect", + unsigned long, addr, vki_size_t, len, unsigned long, prot); + +- if (!ML_(valid_client_addr)(ARG1, ARG2, tid, "mprotect")) { ++ Addr addr = ARG1; ++ SizeT len = ARG2; ++ Int prot = ARG3; ++ ++ handle_sys_mprotect (tid, status, &addr, &len, &prot); ++ ++ ARG1 = addr; ++ ARG2 = len; ++ ARG3 = prot; ++} ++/* This will be called from the generic mprotect, or the linux specific ++ pkey_mprotect. Pass pointers to ARG1, ARG2 and ARG3 as addr, len and prot, ++ they might be adjusted and have to assigned back to ARG1, ARG2 and ARG3. */ ++void handle_sys_mprotect(ThreadId tid, SyscallStatus* status, ++ Addr *addr, SizeT *len, Int *prot) ++{ ++ if (!ML_(valid_client_addr)(*addr, *len, tid, "mprotect")) { + SET_STATUS_Failure( VKI_ENOMEM ); + } + #if defined(VKI_PROT_GROWSDOWN) + else +- if (ARG3 & (VKI_PROT_GROWSDOWN|VKI_PROT_GROWSUP)) { ++ if (*prot & (VKI_PROT_GROWSDOWN|VKI_PROT_GROWSUP)) { + /* Deal with mprotects on growable stack areas. + + The critical files to understand all this are mm/mprotect.c +@@ -3862,8 +3878,8 @@ PRE(sys_mprotect) + + The sanity check provided by the kernel is that the vma must + have the VM_GROWSDOWN/VM_GROWSUP flag set as appropriate. */ +- UInt grows = ARG3 & (VKI_PROT_GROWSDOWN|VKI_PROT_GROWSUP); +- NSegment const *aseg = VG_(am_find_nsegment)(ARG1); ++ UInt grows = *prot & (VKI_PROT_GROWSDOWN|VKI_PROT_GROWSUP); ++ NSegment const *aseg = VG_(am_find_nsegment)(*addr); + NSegment const *rseg; + + vg_assert(aseg); +@@ -3874,10 +3890,10 @@ PRE(sys_mprotect) + && rseg->kind == SkResvn + && rseg->smode == SmUpper + && rseg->end+1 == aseg->start) { +- Addr end = ARG1 + ARG2; +- ARG1 = aseg->start; +- ARG2 = end - aseg->start; +- ARG3 &= ~VKI_PROT_GROWSDOWN; ++ Addr end = *addr + *len; ++ *addr = aseg->start; ++ *len = end - aseg->start; ++ *prot &= ~VKI_PROT_GROWSDOWN; + } else { + SET_STATUS_Failure( VKI_EINVAL ); + } +@@ -3887,8 +3903,8 @@ PRE(sys_mprotect) + && rseg->kind == SkResvn + && rseg->smode == SmLower + && aseg->end+1 == rseg->start) { +- ARG2 = aseg->end - ARG1 + 1; +- ARG3 &= ~VKI_PROT_GROWSUP; ++ *len = aseg->end - *addr + 1; ++ *prot &= ~VKI_PROT_GROWSUP; + } else { + SET_STATUS_Failure( VKI_EINVAL ); + } +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index 810ca24..5452b8d 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -12120,6 +12120,76 @@ PRE(sys_copy_file_range) + } + } + ++PRE(sys_pkey_alloc) ++{ ++ PRINT("pkey_alloc (%lu, %lu)", ARG1, ARG2); ++ ++ PRE_REG_READ2(long, "pkey_alloc", ++ unsigned long, "flags", ++ unsigned long, "access_rights"); ++ ++ /* The kernel says: pkey_alloc() is always safe to call regardless of ++ whether or not the operating system supports protection keys. It can be ++ used in lieu of any other mechanism for detecting pkey support and will ++ simply fail with the error ENOSPC if the operating system has no pkey ++ support. ++ ++ So we simply always return ENOSPC to signal memory protection keys are ++ not supported under valgrind, unless there are unknown flags, then we ++ return EINVAL. */ ++ unsigned long pkey_flags = ARG1; ++ if (pkey_flags != 0) ++ SET_STATUS_Failure( VKI_EINVAL ); ++ else ++ SET_STATUS_Failure( VKI_ENOSPC ); ++} ++ ++PRE(sys_pkey_free) ++{ ++ PRINT("pkey_free (%" FMT_REGWORD "u )", ARG1); ++ ++ PRE_REG_READ1(long, "pkey_free", ++ unsigned long, "pkey"); ++ ++ /* Since pkey_alloc () can never succeed, see above, freeing any pkey is ++ always an error. */ ++ SET_STATUS_Failure( VKI_EINVAL ); ++} ++ ++PRE(sys_pkey_mprotect) ++{ ++ PRINT("sys_pkey_mprotect ( %#" FMT_REGWORD "x, %" FMT_REGWORD "u, %" ++ FMT_REGWORD "u %" FMT_REGWORD "u )", ARG1, ARG2, ARG3, ARG4); ++ PRE_REG_READ4(long, "pkey_mprotect", ++ unsigned long, addr, vki_size_t, len, unsigned long, prot, ++ unsigned long, pkey); ++ ++ Addr addr = ARG1; ++ SizeT len = ARG2; ++ Int prot = ARG3; ++ Int pkey = ARG4; ++ ++ /* Since pkey_alloc () can never succeed, see above, any pkey is ++ invalid. Except for -1, then pkey_mprotect acts just like mprotect. */ ++ if (pkey != -1) ++ SET_STATUS_Failure( VKI_EINVAL ); ++ else ++ handle_sys_mprotect (tid, status, &addr, &len, &prot); ++ ++ ARG1 = addr; ++ ARG2 = len; ++ ARG3 = prot; ++} ++ ++POST(sys_pkey_mprotect) ++{ ++ Addr addr = ARG1; ++ SizeT len = ARG2; ++ Int prot = ARG3; ++ ++ ML_(notify_core_and_tool_of_mprotect)(addr, len, prot); ++} ++ + + #undef PRE + #undef POST +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index ad54cf6..3829fa4 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -1608,6 +1608,9 @@ static SyscallTableEntry syscall_table[] = { + + LINX_(__NR_copy_file_range, sys_copy_file_range), // 377 + ++ LINXY(__NR_pkey_mprotect, sys_pkey_mprotect), // 380 ++ LINX_(__NR_pkey_alloc, sys_pkey_alloc), // 381 ++ LINX_(__NR_pkey_free, sys_pkey_free), // 382 + LINXY(__NR_statx, sys_statx), // 383 + + /* Explicitly not supported on i386 yet. */ diff --git a/SOURCES/valgrind-3.15.0-pkglibexecdir.patch b/SOURCES/valgrind-3.15.0-pkglibexecdir.patch new file mode 100644 index 0000000..cd52729 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-pkglibexecdir.patch @@ -0,0 +1,117 @@ +diff --git a/Makefile.all.am b/Makefile.all.am +index 3786e34..1befef5 100644 +--- a/Makefile.all.am ++++ b/Makefile.all.am +@@ -50,20 +50,20 @@ inplace-noinst_DSYMS: build-noinst_DSYMS + done + + # This is used by coregrind/Makefile.am and by /Makefile.am for doing +-# "make install". It copies $(noinst_PROGRAMS) into $prefix/lib/valgrind/. ++# "make install". It copies $(noinst_PROGRAMS) into $prefix/libexec/valgrind/. + # It needs to be depended on by an 'install-exec-local' rule. + install-noinst_PROGRAMS: $(noinst_PROGRAMS) +- $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ ++ $(mkinstalldirs) $(DESTDIR)$(pkglibexecdir); \ + for f in $(noinst_PROGRAMS); do \ +- $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibdir); \ ++ $(INSTALL_PROGRAM) $$f $(DESTDIR)$(pkglibexecdir); \ + done + + # This is used by coregrind/Makefile.am and by /Makefile.am for doing +-# "make uninstall". It removes $(noinst_PROGRAMS) from $prefix/lib/valgrind/. ++# "make uninstall". It removes $(noinst_PROGRAMS) from $prefix/libexec/valgrind/. + # It needs to be depended on by an 'uninstall-local' rule. + uninstall-noinst_PROGRAMS: + for f in $(noinst_PROGRAMS); do \ +- rm -f $(DESTDIR)$(pkglibdir)/$$f; \ ++ rm -f $(DESTDIR)$(pkglibexecdir)/$$f; \ + done + + # Similar to install-noinst_PROGRAMS. +@@ -71,15 +71,15 @@ uninstall-noinst_PROGRAMS: + # directories. XXX: not sure whether the resulting permissions will be + # correct when using 'cp -R'... + install-noinst_DSYMS: build-noinst_DSYMS +- $(mkinstalldirs) $(DESTDIR)$(pkglibdir); \ ++ $(mkinstalldirs) $(DESTDIR)$(pkglibexecdir); \ + for f in $(noinst_DSYMS); do \ +- cp -R $$f.dSYM $(DESTDIR)$(pkglibdir); \ ++ cp -R $$f.dSYM $(DESTDIR)$(pkglibexecdir); \ + done + + # Similar to uninstall-noinst_PROGRAMS. + uninstall-noinst_DSYMS: + for f in $(noinst_DSYMS); do \ +- rm -f $(DESTDIR)$(pkglibdir)/$$f.dSYM; \ ++ rm -f $(DESTDIR)$(pkglibexecdir)/$$f.dSYM; \ + done + + # This needs to be depended on by a 'clean-local' rule. +diff --git a/Makefile.am b/Makefile.am +index 242b38a..3b7c806 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -58,7 +58,7 @@ DEFAULT_SUPP_FILES = @DEFAULT_SUPP@ + # default.supp, as it is built from the base .supp files at compile-time. + dist_noinst_DATA = $(SUPP_FILES) + +-vglibdir = $(pkglibdir) ++vglibdir = $(pkglibexecdir) + vglib_DATA = default.supp + + pkgconfigdir = $(libdir)/pkgconfig +diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am +index 94030fd..f09763a 100644 +--- a/coregrind/Makefile.am ++++ b/coregrind/Makefile.am +@@ -11,12 +11,12 @@ include $(top_srcdir)/Makefile.all.am + + AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@ += \ + -I$(top_srcdir)/coregrind \ +- -DVG_LIBDIR="\"$(pkglibdir)"\" \ ++ -DVG_LIBDIR="\"$(pkglibexecdir)"\" \ + -DVG_PLATFORM="\"@VGCONF_ARCH_PRI@-@VGCONF_OS@\"" + if VGCONF_HAVE_PLATFORM_SEC + AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@ += \ + -I$(top_srcdir)/coregrind \ +- -DVG_LIBDIR="\"$(pkglibdir)"\" \ ++ -DVG_LIBDIR="\"$(pkglibexecdir)"\" \ + -DVG_PLATFORM="\"@VGCONF_ARCH_SEC@-@VGCONF_OS@\"" + endif + +@@ -714,7 +714,7 @@ GDBSERVER_XML_FILES = \ + m_gdbserver/mips64-fpu.xml + + # so as to make sure these get copied into the install tree +-vglibdir = $(pkglibdir) ++vglibdir = $(pkglibexecdir) + vglib_DATA = $(GDBSERVER_XML_FILES) + + # so as to make sure these get copied into the tarball +diff --git a/mpi/Makefile.am b/mpi/Makefile.am +index 7ad9a25..471fee0 100644 +--- a/mpi/Makefile.am ++++ b/mpi/Makefile.am +@@ -18,16 +18,18 @@ EXTRA_DIST = \ + # libmpiwrap-.so + #---------------------------------------------------------------------------- + +-noinst_PROGRAMS = ++# These are really real libraries, so they should go to libdir, not libexec. ++mpidir = $(pkglibdir) ++mpi_PROGRAMS = + if BUILD_MPIWRAP_PRI +-noinst_PROGRAMS += libmpiwrap-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so ++mpi_PROGRAMS += libmpiwrap-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so + endif + if BUILD_MPIWRAP_SEC +-noinst_PROGRAMS += libmpiwrap-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so ++mpi_PROGRAMS += libmpiwrap-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so + endif + + if VGCONF_OS_IS_DARWIN +-noinst_DSYMS = $(noinst_PROGRAMS) ++mpi_DSYMS = $(mpi_PROGRAMS) + endif + + diff --git a/SOURCES/valgrind-3.15.0-ppc64-filter_gdb.patch b/SOURCES/valgrind-3.15.0-ppc64-filter_gdb.patch new file mode 100644 index 0000000..b4137fe --- /dev/null +++ b/SOURCES/valgrind-3.15.0-ppc64-filter_gdb.patch @@ -0,0 +1,22 @@ +commit b1cc37ddb660afc536131227a9fb452ac9328972 +Author: Alexandra Hájková +Date: Mon Apr 15 15:34:12 2019 +0200 + + filter_gdb: add regexp to filter out names which starts with a "." + + such names are used for "function descriptors" on ppc64 + + https://bugs.kde.org/show_bug.cgi?id=406561 + +diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb +index 6eff229..fd2e8e7 100755 +--- a/gdbserver_tests/filter_gdb ++++ b/gdbserver_tests/filter_gdb +@@ -119,6 +119,7 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d' + -e 's/in select ()$/in syscall .../' \ + -e 's/in \.__select ()$/in syscall .../' \ + -e 's/in select () at \.\.\/sysdeps\/unix\/syscall-template\.S.*$/in syscall .../' \ ++ -e 's/in \.__select () at \.\.\/sysdeps\/unix\/syscall-template\.S.*$/in syscall .../' \ + -e '/^[ ]*at \.\.\/sysdeps\/unix\/syscall-template\.S/d' \ + -e '/^[ ]*in \.\.\/sysdeps\/unix\/syscall-template\.S/d' \ + -e '/^[1-9][0-9]*[ ]*\.\.\/sysdeps\/unix\/syscall-template\.S/d' \ diff --git a/SOURCES/valgrind-3.15.0-s390x-wrap-drd.patch b/SOURCES/valgrind-3.15.0-s390x-wrap-drd.patch new file mode 100644 index 0000000..be5adb5 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-s390x-wrap-drd.patch @@ -0,0 +1,194 @@ +From bfa89eae00ba7067445bc0532e1f17405c062954 Mon Sep 17 00:00:00 2001 +From: Andreas Arnez +Date: Thu, 23 May 2019 17:17:43 +0200 +Subject: [PATCH] Bug 407764 - s390x: drd fails on z13 due to function wrapping + issue + +The s390x-specific inline assembly macros for function wrapping in +include/valgrind.h have a few issues. + +When the compiler uses vector registers, such as with "-march=z13", all +vector registers must be declared as clobbered by the callee. Because +this is missing, many drd test failures are seen with "-march=z13". + +Also, the inline assemblies write the return value into the target +register before restoring r11. If r11 is used as the target register, +this means that the restore operation corrupts the result. This bug +causes failures with memcheck's "wrap6" test case. + +These bugs are fixed. The clobber list is extended by the vector +registers (if appropriate), and the target register is now written at the +end, after restoring r11. +--- + include/valgrind.h | 38 +++++++++++++++++++++++--------------- + 1 file changed, 23 insertions(+), 15 deletions(-) + +diff --git a/include/valgrind.h b/include/valgrind.h +index f071bd392..815efa893 100644 +--- a/include/valgrind.h ++++ b/include/valgrind.h +@@ -4687,8 +4687,16 @@ typedef + r14 in s390_irgen_noredir (VEX/priv/guest_s390_irgen.c) to give the + function a proper return address. All others are ABI defined call + clobbers. */ +-#define __CALLER_SAVED_REGS "0","1","2","3","4","5","14", \ +- "f0","f1","f2","f3","f4","f5","f6","f7" ++#if defined(__VX__) || defined(__S390_VX__) ++#define __CALLER_SAVED_REGS "0", "1", "2", "3", "4", "5", "14", \ ++ "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", \ ++ "v8", "v9", "v10", "v11", "v12", "v13", "v14", "v15", \ ++ "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23", \ ++ "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31" ++#else ++#define __CALLER_SAVED_REGS "0", "1", "2", "3", "4", "5", "14", \ ++ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7" ++#endif + + /* Nb: Although r11 is modified in the asm snippets below (inside + VALGRIND_CFI_PROLOGUE) it is not listed in the clobber section, for +@@ -4710,9 +4718,9 @@ typedef + "aghi 15,-160\n\t" \ + "lg 1, 0(1)\n\t" /* target->r1 */ \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "d" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ +@@ -4734,9 +4742,9 @@ typedef + "lg 2, 8(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ +@@ -4759,9 +4767,9 @@ typedef + "lg 3,16(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ +@@ -4786,9 +4794,9 @@ typedef + "lg 4,24(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ +@@ -4815,9 +4823,9 @@ typedef + "lg 5,32(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"7" \ +@@ -4846,9 +4854,9 @@ typedef + "lg 6,40(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,160\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +@@ -4880,9 +4888,9 @@ typedef + "mvc 160(8,15), 48(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,168\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +@@ -4916,9 +4924,9 @@ typedef + "mvc 168(8,15), 56(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,176\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +@@ -4954,9 +4962,9 @@ typedef + "mvc 176(8,15), 64(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,184\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +@@ -4994,9 +5002,9 @@ typedef + "mvc 184(8,15), 72(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,192\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +@@ -5036,9 +5044,9 @@ typedef + "mvc 192(8,15), 80(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,200\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +@@ -5080,9 +5088,9 @@ typedef + "mvc 200(8,15), 88(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,208\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +@@ -5126,9 +5134,9 @@ typedef + "mvc 208(8,15), 96(1)\n\t" \ + "lg 1, 0(1)\n\t" \ + VALGRIND_CALL_NOREDIR_R1 \ +- "lgr %0, 2\n\t" \ + "aghi 15,216\n\t" \ + VALGRIND_CFI_EPILOGUE \ ++ "lgr %0, 2\n\t" \ + : /*out*/ "=d" (_res) \ + : /*in*/ "a" (&_argvec[0]) __FRAME_POINTER \ + : /*trash*/ "cc", "memory", __CALLER_SAVED_REGS,"6","7" \ +-- +2.17.0 + diff --git a/SOURCES/valgrind-3.15.0-scalar-arm64.patch b/SOURCES/valgrind-3.15.0-scalar-arm64.patch new file mode 100644 index 0000000..2fa9ca7 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-scalar-arm64.patch @@ -0,0 +1,83 @@ +commit 917e423073c5eacffbad83008c27c8e61e0e342a +Author: Mark Wielaard +Date: Mon May 20 00:09:59 2019 +0200 + + Make memcheck/tests/arm64-linux/scalar test work under root. + + Running the testsuite as root isn't really recommended. + But lets not make tests fail unnecessarily when running as root. + Pass really invalid arguments to setuid, setgid, acct and fchown. + Make setresgid, setresuid, setregid and setreuid always succeed. + +diff --git a/memcheck/tests/arm64-linux/scalar.c b/memcheck/tests/arm64-linux/scalar.c +index fd49db6..622ea1c 100644 +--- a/memcheck/tests/arm64-linux/scalar.c ++++ b/memcheck/tests/arm64-linux/scalar.c +@@ -136,7 +136,7 @@ int main(void) + + // __NR_setuid 23 + GO(__NR_setuid, "1s 0m"); +- SY(__NR_setuid, x0); FAIL; ++ SY(__NR_setuid, x0-1); FAIL; + + // __NR_getuid 24 + GO(__NR_getuid, "0s 0m"); +@@ -229,7 +229,7 @@ int main(void) + + // __NR_setgid 46 + GO(__NR_setgid, "1s 0m"); +- SY(__NR_setgid, x0); FAIL; ++ SY(__NR_setgid, x0-1); FAIL; + + // __NR_getgid 47 + GO(__NR_getgid, "0s 0m"); +@@ -249,7 +249,7 @@ int main(void) + + // __NR_acct 51 + GO(__NR_acct, "1s 1m"); +- SY(__NR_acct, x0); FAIL; ++ SY(__NR_acct, x0-1); FAIL; + + // __NR_umount2 52 + GO(__NR_umount2, "2s 1m"); +@@ -340,11 +340,11 @@ int main(void) + + // __NR_setreuid 70 + GO(__NR_setreuid, "2s 0m"); +- SY(__NR_setreuid, x0, x0); FAIL; ++ SY(__NR_setreuid, x0-1, x0-1); SUCC; + + // __NR_setregid 71 + GO(__NR_setregid, "2s 0m"); +- SY(__NR_setregid, x0, x0); FAIL; ++ SY(__NR_setregid, x0-1, x0-1); SUCC; + + // __NR_sigsuspend arm64 only has rt_sigsuspend + // XXX: how do you use this function? +@@ -447,7 +447,7 @@ int main(void) + + // __NR_fchown 95 + GO(__NR_fchown, "3s 0m"); +- SY(__NR_fchown, x0, x0, x0); FAIL; ++ SY(__NR_fchown, x0-1, x0, x0); FAIL; + + // __NR_getpriority 96 + GO(__NR_getpriority, "2s 0m"); +@@ -733,7 +733,7 @@ int main(void) + + // __NR_setresuid 164 + GO(__NR_setresuid, "3s 0m"); +- SY(__NR_setresuid, x0, x0, x0); FAIL; ++ SY(__NR_setresuid, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresuid 165 + GO(__NR_getresuid, "3s 3m"); +@@ -757,7 +757,7 @@ int main(void) + + // __NR_setresgid 170 + GO(__NR_setresgid, "3s 0m"); +- SY(__NR_setresgid, x0, x0, x0); FAIL; ++ SY(__NR_setresgid, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresgid 171 + GO(__NR_getresgid, "3s 3m"); diff --git a/SOURCES/valgrind-3.15.0-scalar-x86.patch b/SOURCES/valgrind-3.15.0-scalar-x86.patch new file mode 100644 index 0000000..32fd243 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-scalar-x86.patch @@ -0,0 +1,137 @@ +commit abc09f23e1ad55a07beb827aef969acfe6c496ef +Author: Mark Wielaard +Date: Mon May 20 13:08:41 2019 +0200 + + Make memcheck/tests/x86-linux/scalar test work under root. + + Running the testsuite as root isn't really recommended. + But lets not make tests fail unnecessarily when running as root. + Similar to the arm64-linux/scalar fixes. Plus 32bit variants that + don't exist on arm64. + + Pass really invalid arguments to setuid[32], setgid[32], acct, fchown[32]. + Make setresgid[32], setresuid[32], setregid[32], setreuid[32] always succeed. + +diff --git a/memcheck/tests/x86-linux/scalar.c b/memcheck/tests/x86-linux/scalar.c +index 213a5ad..52f0d4e 100644 +--- a/memcheck/tests/x86-linux/scalar.c ++++ b/memcheck/tests/x86-linux/scalar.c +@@ -145,7 +145,7 @@ int main(void) + + // __NR_setuid 23 + GO(__NR_setuid, "1s 0m"); +- SY(__NR_setuid, x0); FAIL; ++ SY(__NR_setuid, x0-1); FAIL; + + // __NR_getuid 24 + GO(__NR_getuid, "0s 0m"); +@@ -238,7 +238,7 @@ int main(void) + + // __NR_setgid 46 + GO(__NR_setgid, "1s 0m"); +- SY(__NR_setgid, x0); FAIL; ++ SY(__NR_setgid, x0-1); FAIL; + + // __NR_getgid 47 + GO(__NR_getgid, "0s 0m"); +@@ -258,7 +258,7 @@ int main(void) + + // __NR_acct 51 + GO(__NR_acct, "1s 1m"); +- SY(__NR_acct, x0); FAIL; ++ SY(__NR_acct, x0-1); FAIL; + + // __NR_umount2 52 + GO(__NR_umount2, "2s 1m"); +@@ -349,11 +349,11 @@ int main(void) + + // __NR_setreuid 70 + GO(__NR_setreuid, "2s 0m"); +- SY(__NR_setreuid, x0, x0); FAIL; ++ SY(__NR_setreuid, x0-1, x0-1); SUCC; + + // __NR_setregid 71 + GO(__NR_setregid, "2s 0m"); +- SY(__NR_setregid, x0, x0); FAIL; ++ SY(__NR_setregid, x0-1, x0-1); SUCC; + + // __NR_sigsuspend 72 + // XXX: how do you use this function? +@@ -456,7 +456,7 @@ int main(void) + + // __NR_fchown 95 + GO(__NR_fchown, "3s 0m"); +- SY(__NR_fchown, x0, x0, x0); FAIL; ++ SY(__NR_fchown, x0-1, x0, x0); FAIL; + + // __NR_getpriority 96 + GO(__NR_getpriority, "2s 0m"); +@@ -742,7 +742,7 @@ int main(void) + + // __NR_setresuid 164 + GO(__NR_setresuid, "3s 0m"); +- SY(__NR_setresuid, x0, x0, x0); FAIL; ++ SY(__NR_setresuid, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresuid 165 + GO(__NR_getresuid, "3s 3m"); +@@ -766,7 +766,7 @@ int main(void) + + // __NR_setresgid 170 + GO(__NR_setresgid, "3s 0m"); +- SY(__NR_setresgid, x0, x0, x0); FAIL; ++ SY(__NR_setresgid, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresgid 171 + GO(__NR_getresgid, "3s 3m"); +@@ -923,11 +923,11 @@ int main(void) + + // __NR_setreuid32 203 + GO(__NR_setreuid32, "2s 0m"); +- SY(__NR_setreuid32, x0, x0); FAIL; ++ SY(__NR_setreuid32, x0-1, x0-1); SUCC; + + // __NR_setregid32 204 + GO(__NR_setregid32, "2s 0m"); +- SY(__NR_setregid32, x0, x0); FAIL; ++ SY(__NR_setregid32, x0-1, x0-1); SUCC; + + // __NR_getgroups32 205 + GO(__NR_getgroups32, "2s 1m"); +@@ -939,11 +939,11 @@ int main(void) + + // __NR_fchown32 207 + GO(__NR_fchown32, "3s 0m"); +- SY(__NR_fchown32, x0, x0, x0); FAIL; ++ SY(__NR_fchown32, x0-1, x0, x0); FAIL; + + // __NR_setresuid32 208 + GO(__NR_setresuid32, "3s 0m"); +- SY(__NR_setresuid32, x0, x0, x0); FAIL; ++ SY(__NR_setresuid32, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresuid32 209 + GO(__NR_getresuid32, "3s 3m"); +@@ -951,7 +951,7 @@ int main(void) + + // __NR_setresgid32 210 + GO(__NR_setresgid32, "3s 0m"); +- SY(__NR_setresgid32, x0, x0, x0); FAIL; ++ SY(__NR_setresgid32, x0-1, x0-1, x0-1); SUCC; + + // __NR_getresgid32 211 + GO(__NR_getresgid32, "3s 3m"); +@@ -963,11 +963,11 @@ int main(void) + + // __NR_setuid32 213 + GO(__NR_setuid32, "1s 0m"); +- SY(__NR_setuid32, x0); FAIL; ++ SY(__NR_setuid32, x0-1); FAIL; + + // __NR_setgid32 214 + GO(__NR_setgid32, "1s 0m"); +- SY(__NR_setgid32, x0); FAIL; ++ SY(__NR_setgid32, x0-1); FAIL; + + // __NR_setfsuid32 215 + GO(__NR_setfsuid32, "1s 0m"); diff --git a/SOURCES/valgrind-3.15.0-some-Wl-z-now.patch b/SOURCES/valgrind-3.15.0-some-Wl-z-now.patch new file mode 100644 index 0000000..79c3662 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-some-Wl-z-now.patch @@ -0,0 +1,72 @@ +commit d3c977726064ba09fed6dfc7daf22b16824c97b4 +Author: Mark Wielaard +Date: Fri May 24 18:24:56 2019 +0200 + + Add -Wl,-z,now to some binaries. + +diff --git a/auxprogs/Makefile.am b/auxprogs/Makefile.am +index 1b7842b..e211eec 100644 +--- a/auxprogs/Makefile.am ++++ b/auxprogs/Makefile.am +@@ -32,7 +32,7 @@ valgrind_listener_SOURCES = valgrind-listener.c + valgrind_listener_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind + valgrind_listener_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_listener_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-valgrind_listener_LDFLAGS = $(AM_CFLAGS_PRI) ++valgrind_listener_LDFLAGS = $(AM_CFLAGS_PRI) -Wl,-z,now + if VGCONF_PLATVARIANT_IS_ANDROID + valgrind_listener_CFLAGS += -static + endif +@@ -51,7 +51,7 @@ valgrind_di_server_SOURCES = valgrind-di-server.c + valgrind_di_server_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind + valgrind_di_server_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_di_server_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-valgrind_di_server_LDFLAGS = $(AM_CFLAGS_PRI) ++valgrind_di_server_LDFLAGS = $(AM_CFLAGS_PRI) -Wl,-z,now + if VGCONF_PLATVARIANT_IS_ANDROID + valgrind_di_server_CFLAGS += -static + endif +@@ -86,7 +86,7 @@ getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = getoff.c + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -fstack-protector-strong + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ ++getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ -Wl,-z,now + if HAVE_DLINFO_RTLD_DI_TLS_MODID + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = $(LDADD) -ldl + endif +diff --git a/cachegrind/Makefile.am b/cachegrind/Makefile.am +index f572741..1c07e50 100644 +--- a/cachegrind/Makefile.am ++++ b/cachegrind/Makefile.am +@@ -27,7 +27,7 @@ cg_merge_SOURCES = cg_merge.c + cg_merge_CPPFLAGS = $(AM_CPPFLAGS_PRI) + cg_merge_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + cg_merge_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-cg_merge_LDFLAGS = $(AM_CFLAGS_PRI) ++cg_merge_LDFLAGS = $(AM_CFLAGS_PRI) -Wl,-z,now + # If there is no secondary platform, and the platforms include x86-darwin, + # then the primary platform must be x86-darwin. Hence: + if ! VGCONF_HAVE_PLATFORM_SEC +diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am +index 3c73210..fb6b7bb 100644 +--- a/coregrind/Makefile.am ++++ b/coregrind/Makefile.am +@@ -57,7 +57,7 @@ RANLIB = ${LTO_RANLIB} + valgrind_CPPFLAGS = $(AM_CPPFLAGS_PRI) + valgrind_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-valgrind_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ ++valgrind_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ -Wl,-z,now + # If there is no secondary platform, and the platforms include x86-darwin, + # then the primary platform must be x86-darwin. Hence: + if ! VGCONF_HAVE_PLATFORM_SEC +@@ -96,7 +96,7 @@ endif + vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) + vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI) +-vgdb_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ ++vgdb_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ -Wl,-z,now + if VGCONF_PLATVARIANT_IS_ANDROID + vgdb_CFLAGS += -static + endif diff --git a/SOURCES/valgrind-3.15.0-some-stack-protector.patch b/SOURCES/valgrind-3.15.0-some-stack-protector.patch new file mode 100644 index 0000000..bde2aa5 --- /dev/null +++ b/SOURCES/valgrind-3.15.0-some-stack-protector.patch @@ -0,0 +1,118 @@ +commit b73fb7a614e1b5d60af23fb0752b5cead995e02e +Author: Mark Wielaard +Date: Sun Apr 14 00:30:05 2019 +0200 + + Remove no-stack-protector, add stack-protector-strong to some. + +diff --git a/auxprogs/Makefile.am b/auxprogs/Makefile.am +index 56cc5ef..1b7842b 100644 +--- a/auxprogs/Makefile.am ++++ b/auxprogs/Makefile.am +@@ -30,7 +30,7 @@ bin_PROGRAMS = valgrind-listener valgrind-di-server + + valgrind_listener_SOURCES = valgrind-listener.c + valgrind_listener_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind +-valgrind_listener_CFLAGS = $(AM_CFLAGS_PRI) ++valgrind_listener_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_listener_CCASFLAGS = $(AM_CCASFLAGS_PRI) + valgrind_listener_LDFLAGS = $(AM_CFLAGS_PRI) + if VGCONF_PLATVARIANT_IS_ANDROID +@@ -49,7 +49,7 @@ endif + + valgrind_di_server_SOURCES = valgrind-di-server.c + valgrind_di_server_CPPFLAGS = $(AM_CPPFLAGS_PRI) -I$(top_srcdir)/coregrind +-valgrind_di_server_CFLAGS = $(AM_CFLAGS_PRI) ++valgrind_di_server_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + valgrind_di_server_CCASFLAGS = $(AM_CCASFLAGS_PRI) + valgrind_di_server_LDFLAGS = $(AM_CFLAGS_PRI) + if VGCONF_PLATVARIANT_IS_ANDROID +@@ -84,7 +84,7 @@ endif + + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = getoff.c + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) +-getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) ++getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) -fstack-protector-strong + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CCASFLAGS = $(AM_CCASFLAGS_PRI) + getoff_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ + if HAVE_DLINFO_RTLD_DI_TLS_MODID +diff --git a/cachegrind/Makefile.am b/cachegrind/Makefile.am +index f8447a1..f572741 100644 +--- a/cachegrind/Makefile.am ++++ b/cachegrind/Makefile.am +@@ -25,7 +25,7 @@ bin_PROGRAMS = cg_merge + + cg_merge_SOURCES = cg_merge.c + cg_merge_CPPFLAGS = $(AM_CPPFLAGS_PRI) +-cg_merge_CFLAGS = $(AM_CFLAGS_PRI) ++cg_merge_CFLAGS = $(AM_CFLAGS_PRI) -fstack-protector-strong + cg_merge_CCASFLAGS = $(AM_CCASFLAGS_PRI) + cg_merge_LDFLAGS = $(AM_CFLAGS_PRI) + # If there is no secondary platform, and the platforms include x86-darwin, +diff --git a/configure.ac b/configure.ac +index f8c798b..ccc8f52 100755 +--- a/configure.ac ++++ b/configure.ac +@@ -2188,24 +2188,24 @@ AC_LANG(C) + AC_SUBST(FLAG_FALIGNED_NEW) + + # does this compiler support -fno-stack-protector ? +-AC_MSG_CHECKING([if gcc accepts -fno-stack-protector]) +- +-safe_CFLAGS=$CFLAGS +-CFLAGS="-fno-stack-protector -Werror" +- +-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ +- return 0; +-]])], [ +-no_stack_protector=yes +-FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector" +-AC_MSG_RESULT([yes]) +-], [ +-no_stack_protector=no ++#AC_MSG_CHECKING([if gcc accepts -fno-stack-protector]) ++# ++#safe_CFLAGS=$CFLAGS ++#CFLAGS="-fno-stack-protector -Werror" ++# ++#AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ ++# return 0; ++#]])], [ ++#no_stack_protector=yes ++#FLAG_FNO_STACK_PROTECTOR="-fno-stack-protector" ++#AC_MSG_RESULT([yes]) ++#], [ ++#no_stack_protector=no + FLAG_FNO_STACK_PROTECTOR="" +-AC_MSG_RESULT([no]) +-]) +-CFLAGS=$safe_CFLAGS +- ++#AC_MSG_RESULT([no]) ++#]) ++#CFLAGS=$safe_CFLAGS ++# + AC_SUBST(FLAG_FNO_STACK_PROTECTOR) + + # does this compiler support -finline-functions ? +diff --git a/coregrind/Makefile.am b/coregrind/Makefile.am +index 94030fd..3c73210 100644 +--- a/coregrind/Makefile.am ++++ b/coregrind/Makefile.am +@@ -55,7 +55,7 @@ AR = ${LTO_AR} + RANLIB = ${LTO_RANLIB} + + valgrind_CPPFLAGS = $(AM_CPPFLAGS_PRI) +-valgrind_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) ++valgrind_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + valgrind_CCASFLAGS = $(AM_CCASFLAGS_PRI) + valgrind_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ + # If there is no secondary platform, and the platforms include x86-darwin, +@@ -94,7 +94,7 @@ vgdb_SOURCES += vgdb-invoker-solaris.c + endif + + vgdb_CPPFLAGS = $(AM_CPPFLAGS_PRI) +-vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) ++vgdb_CFLAGS = $(AM_CFLAGS_PRI) $(LTO_CFLAGS) -fstack-protector-strong + vgdb_CCASFLAGS = $(AM_CCASFLAGS_PRI) + vgdb_LDFLAGS = $(AM_CFLAGS_PRI) @LIB_UBSAN@ + if VGCONF_PLATVARIANT_IS_ANDROID diff --git a/SOURCES/valgrind-3.9.0-cachegrind-improvements.patch b/SOURCES/valgrind-3.9.0-cachegrind-improvements.patch new file mode 100644 index 0000000..c2680b1 --- /dev/null +++ b/SOURCES/valgrind-3.9.0-cachegrind-improvements.patch @@ -0,0 +1,54 @@ +--- valgrind-3.8.1/cachegrind/cg_sim.c.jj 2011-10-26 23:24:32.000000000 +0200 ++++ valgrind-3.8.1/cachegrind/cg_sim.c 2011-12-09 17:31:19.256023683 +0100 +@@ -42,27 +42,30 @@ typedef struct { + Int size; /* bytes */ + Int assoc; + Int line_size; /* bytes */ +- Int sets; + Int sets_min_1; + Int line_size_bits; + Int tag_shift; +- HChar desc_line[128]; /* large enough */ + UWord* tags; +-} cache_t2; ++ HChar desc_line[128]; ++} cache_t2 ++#ifdef __GNUC__ ++__attribute__ ((aligned (8 * sizeof (Int)))) ++#endif ++; + + /* By this point, the size/assoc/line_size has been checked. */ + static void cachesim_initcache(cache_t config, cache_t2* c) + { +- Int i; ++ Int sets; + + c->size = config.size; + c->assoc = config.assoc; + c->line_size = config.line_size; + +- c->sets = (c->size / c->line_size) / c->assoc; +- c->sets_min_1 = c->sets - 1; ++ sets = (c->size / c->line_size) / c->assoc; ++ c->sets_min_1 = sets - 1; + c->line_size_bits = VG_(log2)(c->line_size); +- c->tag_shift = c->line_size_bits + VG_(log2)(c->sets); ++ c->tag_shift = c->line_size_bits + VG_(log2)(sets); + + if (c->assoc == 1) { + VG_(sprintf)(c->desc_line, "%d B, %d B, direct-mapped", +@@ -72,11 +75,8 @@ static void cachesim_initcache(cache_t c + c->size, c->line_size, c->assoc); + } + +- c->tags = VG_(malloc)("cg.sim.ci.1", +- sizeof(UWord) * c->sets * c->assoc); +- +- for (i = 0; i < c->sets * c->assoc; i++) +- c->tags[i] = 0; ++ c->tags = VG_(calloc)("cg.sim.ci.1", ++ sizeof(UWord), sets * c->assoc); + } + + /* This attribute forces GCC to inline the function, getting rid of a diff --git a/SOURCES/valgrind-3.9.0-helgrind-race-supp.patch b/SOURCES/valgrind-3.9.0-helgrind-race-supp.patch new file mode 100644 index 0000000..759d151 --- /dev/null +++ b/SOURCES/valgrind-3.9.0-helgrind-race-supp.patch @@ -0,0 +1,15 @@ +--- valgrind/glibc-2.34567-NPTL-helgrind.supp.jj 2009-08-19 15:37:48.000000000 +0200 ++++ valgrind/glibc-2.34567-NPTL-helgrind.supp 2009-10-21 16:46:31.000000000 +0200 +@@ -88,6 +88,12 @@ + obj:*/lib*/libpthread-2.*so* + } + { ++ helgrind-glibc2X-102a ++ Helgrind:Race ++ fun:mythread_wrapper ++ obj:*vgpreload_helgrind*.so ++} ++{ + helgrind-glibc2X-103 + Helgrind:Race + fun:pthread_cond_*@@GLIBC_2.* diff --git a/SOURCES/valgrind-3.9.0-ldso-supp.patch b/SOURCES/valgrind-3.9.0-ldso-supp.patch new file mode 100644 index 0000000..d7a42c7 --- /dev/null +++ b/SOURCES/valgrind-3.9.0-ldso-supp.patch @@ -0,0 +1,28 @@ +--- valgrind/glibc-2.X.supp.in.jj 2011-10-26 23:24:45.000000000 +0200 ++++ valgrind/glibc-2.X.supp.in 2012-05-07 10:55:20.395942656 +0200 +@@ -124,7 +124,7 @@ + glibc-2.5.x-on-SUSE-10.2-(PPC)-2a + Memcheck:Cond + fun:index +- obj:*ld-@GLIBC_VERSION@.*.so ++ obj:*ld-@GLIBC_VERSION@*.so + } + { + glibc-2.5.x-on-SuSE-10.2-(PPC)-2b +@@ -136,14 +136,14 @@ + glibc-2.5.5-on-SuSE-10.2-(PPC)-2c + Memcheck:Addr4 + fun:index +- obj:*ld-@GLIBC_VERSION@.*.so ++ obj:*ld-@GLIBC_VERSION@*.so + } + { + glibc-2.3.5-on-SuSE-10.1-(PPC)-3 + Memcheck:Addr4 + fun:*wordcopy_fwd_dest_aligned* + fun:mem*cpy +- obj:*lib*@GLIBC_VERSION@.*.so ++ obj:*lib*@GLIBC_VERSION@*.so + } + + { diff --git a/SPECS/valgrind.spec b/SPECS/valgrind.spec new file mode 100644 index 0000000..3a989b2 --- /dev/null +++ b/SPECS/valgrind.spec @@ -0,0 +1,1803 @@ +# For RHEL8 we need this before using any scl macro. +%global __python /usr/bin/python3 + +%{?scl:%scl_package valgrind} + +Summary: Tool for finding memory management bugs in programs +Name: %{?scl_prefix}valgrind +Version: 3.15.0 +Release: 9%{?dist} +Epoch: 1 +License: GPLv2+ +URL: http://www.valgrind.org/ +Group: Development/Debuggers + +# Only necessary for RHEL, will be ignored on Fedora + +# Are we building for a Software Collection? +%{?scl:%global is_scl 1} +%{!?scl:%global is_scl 0} + +# We never want the openmpi subpackage when building a software collecton. +# We always want it for fedora. +# We only want it for older rhel. But not s390x for too old rhel. +%if %{is_scl} + %global build_openmpi 0 +%else + %if 0%{?fedora} + %global build_openmpi 1 + %endif + %if 0%{?rhel} + %if 0%{?rhel} > 7 + %global build_openmpi 0 + %else + %ifarch s390x + %global build_openmpi (%{?rhel} > 6) + %else + %global build_openmpi 1 + %endif + %endif + %endif +%endif + +# We only want to build the valgrind-tools-devel package for Fedora proper +# as convenience. But not for DTS or RHEL. +%if %{is_scl} + %global build_tools_devel 0 +%else + %if 0%{?rhel} + %global build_tools_devel 0 + %else + %global build_tools_devel 1 + %endif +%endif + +# Whether to run the full regtest or only a limited set +# The full regtest includes gdb_server integration tests +# and experimental tools. +# Only run full regtests on fedora, but not on older rhel +# or when creating scl, the gdb_server tests might hang. +%if %{is_scl} + %global run_full_regtest 0 +%else + %if 0%{?fedora} + %global run_full_regtest 1 + %endif + %if 0%{?rhel} + %global run_full_regtest (%rhel >= 7) + %endif +%endif + +# Generating minisymtabs doesn't really work for the staticly linked +# tools. Note (below) that we don't strip the vgpreload libraries at all +# because valgrind might read and need the debuginfo in those (client) +# libraries for better error reporting and sometimes correctly unwinding. +# So those will already have their full symbol table. +%undefine _include_minidebuginfo + +Source0: ftp://sourceware.org/pub/valgrind/valgrind-%{version}.tar.bz2 + +# Needs investigation and pushing upstream +Patch1: valgrind-3.9.0-cachegrind-improvements.patch + +# KDE#211352 - helgrind races in helgrind's own mythread_wrapper +Patch2: valgrind-3.9.0-helgrind-race-supp.patch + +# Make ld.so supressions slightly less specific. +Patch3: valgrind-3.9.0-ldso-supp.patch + +# We want all executables and libraries in libexec instead of lib +# so they are only available for valgrind usage itself and so the +# same directory is used independent of arch. +Patch4: valgrind-3.15.0-pkglibexecdir.patch + +# KDE#398649 s390x z13 support doesn't build with older gcc/binutils +# Disable z13 support (on rhel6) +Patch5: valgrind-3.15.0-disable-s390x-z13.patch + +# Add some stack-protector +Patch6: valgrind-3.15.0-some-stack-protector.patch + +# KDE#406561 mcinfcallWSRU gdbserver_test fails on ppc64 +Patch7: valgrind-3.15.0-ppc64-filter_gdb.patch + +# KDE#407218 Add support for the copy_file_range syscall +Patch8: valgrind-3.15.0-copy_file_range.patch + +# KDE#407307 Intercept stpcpy also in ld.so for arm64 +Patch9: valgrind-3.15.0-arm64-ld-stpcpy.patch + +# commit 59784c aarch64 (arm64) isn't a supported architecture for exp-sgcheck. +Patch10: valgrind-3.15.0-exp-sgcheck-no-aarch64.patch + +# commit 917e42 Make memcheck/tests/arm64-linux/scalar work under root +Patch11: valgrind-3.15.0-scalar-arm64.patch + +# commit abc09f Make memcheck/tests/x86-linux/scalar test work under root. +Patch12: valgrind-3.15.0-scalar-x86.patch + +# KDE#407764 s390x: drd fails on z13 due to function wrapping issue +Patch13: valgrind-3.15.0-s390x-wrap-drd.patch + +# Add some -Wl,z,now. +Patch14: valgrind-3.15.0-some-Wl-z-now.patch + +# KDE#408009 Expose rdrand and f16c even on avx if host cpu supports them +Patch15: valgrind-3.15.0-avx-rdrand-f16c.patch + +# KDE#408091 Missing pkey syscalls +Patch16: valgrind-3.15.0-pkey.patch + +BuildRequires: glibc-devel + +%if %{build_openmpi} +BuildRequires: openmpi-devel +%endif + +%if %{run_full_regtest} +BuildRequires: gdb +%endif + +# gdbserver_tests/filter_make_empty uses ps in test +BuildRequires: procps + +# Some testcases require g++ to build +BuildRequires: gcc-c++ + +# check_headers_and_includes uses Getopt::Long +%if 0%{?fedora} +BuildRequires: perl-generators +%endif +BuildRequires: perl(Getopt::Long) + +# We always autoreconf +BuildRequires: automake +BuildRequires: autoconf + +%{?scl:Requires:%scl_runtime} + +# We need to fixup selinux file context when doing a scl build. +# In RHEL6 we might need to fix up the labels even though the +# meta package sets up a fs equivalence. See post. +%if 0%{?rhel} == 6 +%{?scl:Requires(post): /sbin/restorecon} +%endif + +# We could use %%valgrind_arches as defined in redhat-rpm-config +# But that is really for programs using valgrind, it defines the +# set of architectures that valgrind works correctly on. +ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64 + +# Define valarch, the architecture name that valgrind uses +# And only_arch, the configure option to only build for that arch. +%ifarch %{ix86} +%define valarch x86 +%define only_arch --enable-only32bit +%endif +%ifarch x86_64 +%define valarch amd64 +%define only_arch --enable-only64bit +%endif +%ifarch ppc +%define valarch ppc32 +%define only_arch --enable-only32bit +%endif +%ifarch ppc64 +%define valarch ppc64be +%define only_arch --enable-only64bit +%endif +%ifarch ppc64le +%define valarch ppc64le +%define only_arch --enable-only64bit +%endif +%ifarch s390x +%define valarch s390x +%define only_arch --enable-only64bit +%endif +%ifarch armv7hl +%define valarch arm +%define only_arch --enable-only32bit +%endif +%ifarch aarch64 +%define valarch arm64 +%define only_arch --enable-only64bit +%endif + +%description +Valgrind is an instrumentation framework for building dynamic analysis +tools. There are Valgrind tools that can automatically detect many +memory management and threading bugs, and profile your programs in +detail. You can also use Valgrind to build new tools. The Valgrind +distribution currently includes six production-quality tools: a memory +error detector (memcheck, the default tool), two thread error +detectors (helgrind and drd), a cache and branch-prediction profiler +(cachegrind), a call-graph generating cache and branch-prediction +profiler (callgrind), and a heap profiler (massif). + +%package devel +Summary: Development files for valgrind aware programs +Group: Development/Debuggers +Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} + +%description devel +Header files and libraries for development of valgrind aware programs. + +%if %{build_tools_devel} +%package tools-devel +Summary: Development files for building valgrind tools. +Group: Development/Debuggers +Requires: %{?scl_prefix}valgrind-devel = %{epoch}:%{version}-%{release} +Provides: %{name}-static = %{epoch}:%{version}-%{release} + +%description tools-devel +Header files and libraries for development of valgrind tools. +%endif + +%if %{build_openmpi} +%package openmpi +Summary: OpenMPI support for valgrind +Group: Development/Debuggers +Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} + +%description openmpi +A wrapper library for debugging OpenMPI parallel programs with valgrind. +See the section on Debugging MPI Parallel Programs with Valgrind in the +Valgrind User Manual for details. +%endif + +%prep +%setup -q -n %{?scl:%{pkg_name}}%{!?scl:%{name}}-%{version} + +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 + +# Disable s390x z13 support on old rhel, binutils is just too old. +%if 0%{?rhel} == 6 +%patch5 -p1 +%endif + +# Old rhel gcc doesn't have -fstack-protector-strong. +%if 0%{?fedora} || 0%{?rhel} >= 7 +%patch6 -p1 +%endif + +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 + +# This depends on patch6, old rhel gcc doesn't have -fstack-protector-strong. +%if 0%{?fedora} || 0%{?rhel} >= 7 +%patch14 -p1 +%endif + +%patch15 -p1 +%patch16 -p1 + +%build + +# Some patches (might) touch Makefile.am or configure.ac files. +# Just always autoreconf so we don't need patches to prebuild files. +./autogen.sh + +# Old openmpi-devel has version depended paths for mpicc. +%if %{build_openmpi} +%if 0%{?fedora} >= 13 || 0%{?rhel} >= 6 +%define mpiccpath %{!?scl:%{_libdir}}%{?scl:%{_root_libdir}}/openmpi/bin/mpicc +%else +%define mpiccpath %{!?scl:%{_libdir}}%{?scl:%{_root_libdir}}/openmpi/*/bin/mpicc +%endif +%else +# We explicitly don't want the libmpi wrapper. So make sure that configure +# doesn't pick some random mpi compiler that happens to be installed. +%define mpiccpath /bin/false +%endif + +# Filter out "hardening" flags that don't make sense for valgrind. +# -fstack-protector just cannot work (valgrind would have to implement +# its own version since it doesn't link with glibc and handles stack +# setup itself). We patch some flags back in just for those helper +# programs where it does make sense. +# +# -Wl,-z,now doesn't make sense for static linked tools +# and would prevent using the vgpreload libraries on binaries that +# don't link themselves against libraries (like pthread) which symbols +# are needed (but only if the inferior itself would use them). +# +# -O2 doesn't work for the vgpreload libraries either. They are meant +# to not be optimized to show precisely what happened. valgrind adds +# -O2 itself wherever suitable. +# +# On ppc64[be] -fexceptions is troublesome. +# It might cause an undefined reference to `_Unwind_Resume' +# in libcoregrind-ppc64be-linux.a(libcoregrind_ppc64be_linux_a-readelf.o): +# In function `read_elf_symtab__ppc64be_linux. +# +# Also disable strict symbol checks because the vg_preload library +# will use hidden/undefined symbols from glibc like __libc_freeres. +%undefine _strict_symbol_defs_build + +%ifarch ppc64 +CFLAGS="`echo " %{optflags} " | sed 's/ -fstack-protector\([-a-z]*\) / / g;s/ -O2 / /g;s/ -fexceptions / /g;'`" +%else +CFLAGS="`echo " %{optflags} " | sed 's/ -fstack-protector\([-a-z]*\) / / g;s/ -O2 / /g;'`" +%endif +export CFLAGS + +# Older Fedora/RHEL only had __global_ldflags. +# Even older didn't even have that (so we don't need to scrub them). +%if 0%{?build_ldflags:1} +LDFLAGS="`echo " %{build_ldflags} " | sed 's/ -Wl,-z,now / / g;'`" +%else +%if 0%{?__global_ldflags:1} +LDFLAGS="`echo " %{__global_ldflags} " | sed 's/ -Wl,-z,now / / g;'`" +%endif +%endif +export LDFLAGS + +%configure \ + --with-mpicc=%{mpiccpath} \ + %{only_arch} \ + GDB=%{_bindir}/gdb + +make %{?_smp_mflags} + +%install +rm -rf $RPM_BUILD_ROOT +make DESTDIR=$RPM_BUILD_ROOT install +mkdir docs/installed +mv $RPM_BUILD_ROOT%{_datadir}/doc/valgrind/* docs/installed/ +rm -f docs/installed/*.ps + +# We want the MPI wrapper installed under the openmpi libdir so the script +# generating the MPI library requires picks them up and sets up the right +# openmpi libmpi.so requires. Install symlinks in the original/upstream +# location for backwards compatibility. +%if %{build_openmpi} +pushd $RPM_BUILD_ROOT%{_libdir} +mkdir -p openmpi/valgrind +cd valgrind +mv libmpiwrap-%{valarch}-linux.so ../openmpi/valgrind/ +ln -s ../openmpi/valgrind/libmpiwrap-%{valarch}-linux.so +popd +%endif + +%if %{build_tools_devel} +%ifarch %{ix86} x86_64 +# To avoid multilib clashes in between i?86 and x86_64, +# tweak installed a little bit. +for i in HAVE_PTHREAD_CREATE_GLIBC_2_0 HAVE_PTRACE_GETREGS HAVE_AS_AMD64_FXSAVE64; do + sed -i -e 's,^\(#define '$i' 1\|/\* #undef '$i' \*/\)$,#ifdef __x86_64__\n# define '$i' 1\n#endif,' \ + $RPM_BUILD_ROOT%{_includedir}/valgrind/config.h +done +%endif +%else +# Remove files we aren't going to package. +# See tools-devel files. +rm $RPM_BUILD_ROOT%{_includedir}/valgrind/config.h +rm $RPM_BUILD_ROOT%{_includedir}/valgrind/libvex*h +rm $RPM_BUILD_ROOT%{_includedir}/valgrind/pub_tool_*h +rm -rf $RPM_BUILD_ROOT%{_includedir}/valgrind/vki +rm $RPM_BUILD_ROOT%{_libdir}/valgrind/*.a +%endif + +# We don't want debuginfo generated for the vgpreload libraries. +# Turn off execute bit so they aren't included in the debuginfo.list. +# We'll turn the execute bit on again in %%files. +chmod 644 $RPM_BUILD_ROOT%{_libexecdir}/valgrind/vgpreload*-%{valarch}-*so + +%check +# Make sure some info about the system is in the build.log +# Add || true because rpm on copr EPEL6 acts weirdly and we don't want +# to break the build. +uname -a +rpm -q glibc gcc binutils || true +%if %{run_full_regtest} +rpm -q gdb || true +%endif + +LD_SHOW_AUXV=1 /bin/true +cat /proc/cpuinfo + +# Make sure a basic binary runs. There should be no errors. +./vg-in-place --error-exitcode=1 /bin/true --help + +# Build the test files with the software collection compiler if available. +%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} +# Make sure no extra CFLAGS, CXXFLAGS or LDFLAGS leak through, +# the testsuite sets all flags necessary. See also configure above. +make %{?_smp_mflags} CFLAGS="" CXXFLAGS="" LDFLAGS="" check + +# Workaround https://bugzilla.redhat.com/show_bug.cgi?id=1434601 +# for gdbserver tests. +export PYTHONCOERCECLOCALE=0 + +echo ===============TESTING=================== +%if %{run_full_regtest} + make regtest || : +%else + make nonexp-regtest || : +%endif + +# Make sure test failures show up in build.log +# Gather up the diffs (at most the first 20 lines for each one) +MAX_LINES=20 +diff_files=`find gdbserver_tests */tests -name '*.diff*' | sort` +if [ z"$diff_files" = z ] ; then + echo "Congratulations, all tests passed!" >> diffs +else + for i in $diff_files ; do + echo "=================================================" >> diffs + echo $i >> diffs + echo "=================================================" >> diffs + if [ `wc -l < $i` -le $MAX_LINES ] ; then + cat $i >> diffs + else + head -n $MAX_LINES $i >> diffs + echo "" >> diffs + fi + done +fi +cat diffs +echo ===============END TESTING=============== + +%files +%doc COPYING NEWS README_* +%doc docs/installed/html docs/installed/*.pdf +%{_bindir}/* +%dir %{_libexecdir}/valgrind +# Install everything in the libdir except the .so. +# The vgpreload so files might need file mode adjustment. +%{_libexecdir}/valgrind/*[^o] +# Turn on executable bit again for vgpreload libraries. +# Was disabled in %%install to prevent debuginfo stripping. +%attr(0755,root,root) %{_libexecdir}/valgrind/vgpreload*-%{valarch}-*so +%{_mandir}/man1/* + +%files devel +%dir %{_includedir}/valgrind +%{_includedir}/valgrind/valgrind.h +%{_includedir}/valgrind/callgrind.h +%{_includedir}/valgrind/drd.h +%{_includedir}/valgrind/helgrind.h +%{_includedir}/valgrind/memcheck.h +%{_libdir}/pkgconfig/valgrind.pc + +%if %{build_tools_devel} +%files tools-devel +%{_includedir}/valgrind/config.h +%{_includedir}/valgrind/libvex*h +%{_includedir}/valgrind/pub_tool_*h +%{_includedir}/valgrind/vki +%dir %{_libdir}/valgrind +%{_libdir}/valgrind/*.a +%endif + +%if %{build_openmpi} +%files openmpi +%dir %{_libdir}/valgrind +%{_libdir}/openmpi/valgrind/libmpiwrap*.so +%{_libdir}/valgrind/libmpiwrap*.so +%endif + +%if 0%{?rhel} == 6 +%post +# There is a bug in rpm (rhbz#214737) that might cause post to be run +# even thought the binary isn't installed when installing two multilib +# versions at the same time. +if [ -x %{_bindir}/valgrind ]; then +# On RHEL6 the fs equivalency should be setup by the devtoolset meta +# package, but because of a rpm bug (rhbz#924044) it might not work. +%{?scl:/sbin/restorecon %{_bindir}/valgrind}%{!?scl:true} +fi +%endif + +%changelog +* Wed May 29 2019 Mark Wielaard - 3.15.0-9 +- Add valgrind-3.15.0-pkey.patch +- Add valgrind-3.15.0-avx-rdrand-f16c.patch. + +* Fri May 24 2019 Mark Wielaard - 3.15.0-6 +- Update valgrind-3.15.0-copy_file_range.patch. +- Update valgrind-3.15.0-some-stack-protector.patch to include getoff. +- Add valgrind-3.15.0-some-Wl-z-now.patch +- Add valgrind-3.15.0-s390x-wrap-drd.patch + +* Mon May 20 2019 Mark Wielaard - 3.15.0-5 +- Add valgrind-3.15.0-exp-sgcheck-no-aarch64.patch +- Add valgrind-3.15.0-scalar-arm64.patch +- Add valgrind-3.15.0-scalar-x86.patch + +* Wed May 8 2019 Mark Wielaard - 3.15.0-4 +- Add valgrind-3.15.0-copy_file_range.patch +- Add valgrind-3.15.0-arm64-ld-stpcpy.patch + +* Tue May 7 2019 Mark Wielaard - 3.15.0-2 +- valgrind-3.15.0 final +- clean up build flags + +* Wed Apr 17 2019 Mark Wielaard - 3.14.0-11 +- Rebuilt with s390x-vec-facility-bit for 8.1.0 (#1669234) + +* Thu Jan 24 2019 Mark Wielaard - 3.14.0-10 +- Add valgrind-3.14.0-s390x-vec-facility-bit.patch. + +* Mon Jan 7 2019 Mark Wielaard - 3.14.0-9 +- Add valgrind-3.14.0-power9-addex.patch + +* Thu Dec 20 2018 Mark Wielaard - 3.14.0-8 +- Update valgrind-3.14.0-jm-vmx-constraints.patch for ppc64. (#1658680) +- Show all diff files in check, not just the main/default one. + +* Mon Dec 17 2018 Mark Wielaard - 3.14.0-7 +- Add valgrind-3.14.0-arm64-ptrace-traceme.patch +- Add valgrind-3.14.0-mc_translate-vecret.patch + +* Wed Dec 12 2018 Mark Wielaard - 3.14.0-6 +- Add valgrind-3.14.0-final_tidyup.patch +- Add valgrind-3.14.0-ppc64-ldbrx.patch +- Add valgrind-3.14.0-ppc64-unaligned-words.patch +- Add valgrind-3.14.0-ppc64-lxvd2x.patch +- Add valgrind-3.14.0-ppc64-unaligned-vecs.patch +- Add valgrind-3.14.0-ppc64-lxvb16x.patch +- Add valgrind-3.14.0-set_AV_CR6.patch +- Add valgrind-3.14.0-undef_malloc_args.patch +- Add valgrind-3.14.0-jm-vmx-constraints.patch +- Add valgrind-3.14.0-sigkill.patch +- Add valgrind-3.14.0-ppc64-ptrace.patch + +* Tue Dec 4 2018 Mark Wielaard +- Add valgrind-3.14.0-wcsncmp.patch (#1655642) + +- Replace valgrind-3.14.0-s390x-vec-float-point-{code,test}.patch + with upstream versions. (#1525405) + +* Fri Nov 23 2018 Mark Wielaard - 3.14.0-4 +- Add valgrind-3.14.0-get_otrack_shadow_offset_wrk-ppc.patch, + valgrind-3.14.0-new-strlen-IROps.patch, + valgrind-3.14.0-ppc-instr-new-IROps.patch, + valgrind-3.14.0-memcheck-new-IROps.patch, + valgrind-3.14.0-ppc-frontend-new-IROps.patch, + valgrind-3.14.0-transform-popcount64-ctznat64.patch and + valgrind-3.14.0-enable-ppc-Iop_Sar_Shr8.patch (#1532205) + +* Wed Nov 21 2018 Mark Wielaard - 3.14.0-3 +- Add valgrind-3.14.0-s390z-more-z13-fixes.patch. + +* Tue Nov 20 2018 Mark Wielaard - 3.14.0-2 +- Add valgrind-3.14.0-s390x-fix-reg-alloc-vr-vs-fpr.patch. +- Add valgrind-3.14.0-s390x-sign-extend-lochi.patch. +- Add valgrind-3.14.0-s390x-vec-reg-vgdb.patch. +- Add valgrind-3.14.0-s390x-vec-float-point-code.patch + and valgrind-3.14.0-s390x-vec-float-point-tests.patch +- Only run full regtests on x86_64 on fedora or latest rhel. + +* Tue Oct 9 2018 Mark Wielaard - 3.14.0-1 +- valgrind 3.14.0 (#1569600). +- Enable s390x again. + +* Fri Aug 10 2018 Mark Wielaard - 3.13.0-29 +- Add valgrind-3.13.0-utime.patch + +* Thu Aug 9 2018 Florian Weimer - 1:3.13.0-28 +- Rebuild to remove s390x packages due to lack of z13 support (#1525405) + +* Fri Aug 3 2018 Mark Wielaard - 3.13.0-27 +- Add valgrind-3.13.0-ppc64-xsmaxcdp.patch + +* Fri Aug 3 2018 Mark Wielaard - 3.13.0-26 +- Use valgrind_arches for ExclusiveArch when defined. +- Use restorecon for scl on rhel6 to work around rpm bug (#1610676). + +* Tue Jul 31 2018 Mark Wielaard - 3.13.0-25 +- Add valgrind-3.13.0-x86-arch_prctl.patch (#1610304) + +* Mon Jul 30 2018 Florian Weimer - 3.13.0-24 +- Rebuild with fixed binutils + +* Fri Jul 27 2018 Mark Wielaard - 3.13.0-23 +- Remove valgrind-3.13.0-arm-disable-vfp-test.patch + +* Thu Jul 26 2018 Mark Wielaard - 3.13.0-22 +- Add valgrind-3.13.0-arch_prctl.patch (#1608824) + +* Thu Jul 12 2018 Mark Wielaard - 3.13.0-21 +- Add valgrind-3.13.0-separate-code.patch (#1600034) +- Add valgrind-3.13.0-arm-disable-vfp-test.patch + +* Thu Jul 5 2018 Mark Wielaard - 3.13.0-20 +- Don't try a full_regtest under scl, also don't adjust PATH. + +* Thu Apr 12 2018 Mark Wielaard - 3.13.0-19 +- Improved valgrind-3.13.0-arm64-hwcap.patch +- Add valgrind-3.13.0-arm64-ptrace.patch + +* Thu Apr 12 2018 Mark Wielaard - 3.13.0-18 +- Add valgrind-3.13.0-build-id-phdrs.patch (#1566639) + +* Tue Feb 27 2018 Mark Wielaard - 3.13.0-17 +- Add valgrind-3.13.0-ppc64-mtfprwa-constraint.patch. + +* Fri Feb 09 2018 Fedora Release Engineering - 1:3.13.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 23 2018 Mark Wielaard - 3.13.0-15 +- Split valgrind-tools-devel from valgrind-devel. +- Make building of libmpi wrapper explicit. + +* Mon Jan 22 2018 Mark Wielaard - 3.13.0-14 +- undefine _strict_symbol_defs_build. + +* Tue Jan 2 2018 Mark Wielaard - 3.13.0-13 +- Add additional fix to valgrind-3.13.0-debug-alt-file.patch. + +* Tue Dec 12 2017 Mark Wielaard - 3.13.0-12 +- Add valgrind-3.13.0-s390-cgijnl.patch. +- Use upstream version of valgrind-3.13.0-debug-alt-file.patch. + +* Sun Dec 10 2017 Mark Wielaard - 3.13.0-11 +- Add valgrind-3.13.0-debug-alt-file.patch. + +* Thu Nov 2 2017 Mark Wielaard - 3.13.0-10 +- Add valgrind-3.13.0-ppc64-timebase.patch. + +* Tue Oct 17 2017 Mark Wielaard - 3.13.0-9 +- Add valgrind-3.13.0-amd64-eflags-tests.patch +- Add valgrind-3.13.0-suppress-dl-trampoline-sse-avx.patch +- Add valgrind-3.13.0-static-tls.patch + +* Mon Oct 16 2017 Mark Wielaard - 3.13.0-8 +- Add valgrind-3.13.0-ppc64-vex-fixes.patch + +* Thu Aug 17 2017 Mark Wielaard - 3.13.0-7 +- Add valgrind-3.13.0-xml-socket.patch + +* Thu Aug 03 2017 Fedora Release Engineering - 1:3.13.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1:3.13.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Jul 7 2017 Mark Wielaard +- Add --error-exitcode=1 to /bin/true check. + +* Thu Jun 29 2017 Mark Wielaard 3.13.0-4 +- Add valgrind-3.13.0-arm-index-hardwire.patch (#1466017) +- Add valgrind-3.13.0-ucontext_t.patch +- Add valgrind-3.13.0-gdb-8-testfix.patch +- Add valgrind-3.13.0-disable-vgdb-child.patch + +* Fri Jun 23 2017 Mark Wielaard 3.13.0-3 +- Add valgrind-3.13.0-arm64-hwcap.patch (#1464211) + +* Sat Jun 17 2017 Mark Wielaard 3.13.0-2 +- Add valgrind-3.13.0-ppc64-check-no-vsx.patch +- Add valgrind-3.13.0-epoll_pwait.patch (#1462258) +- Add valgrind-3.13.0-ppc64-diag.patch + +* Thu Jun 15 2017 Mark Wielaard - 3.13.0-1 +- valgrind 3.13.0 final. +- Drop all upstreamed patches. + +* Tue Jun 6 2017 Mark Wielaard - 3.13.0-0.2.RC1 +- Add valgrind-3.13.0-arm-dcache.patch +- Add valgrind-3.13.0-g++-4.4.patch +- Add valgrind-3.13.0-s390x-GI-strcspn.patch +- Add valgrind-3.13.0-xtree-callgrind.patch + +* Fri Jun 2 2017 Mark Wielaard - 3.13.0-0.1.RC1 +- Update description as suggested by Ivo Raisr. +- Workaround gdb/python bug in testsuite (#1434601) +- Update to upstream 3.13.0-RC1. +- Drop all upstreamed patches. + +* Tue Mar 28 2017 Mark Wielaard - 3.12.0-8 +- Add valgrind-3.12.0-powerpc-register-pair.patch +- Add valgrind-3.12.0-ppc64-isa-3_00.patch + +* Sat Feb 18 2017 Mark Wielaard - 3.12.0-7 +- Add valgrind-3.12.0-aarch64-syscalls.patch + +* Sat Feb 18 2017 Mark Wielaard - 3.12.0-6 +- Add valgrind-3.12.0-arm64-ppc64-prlimit64.patch +- Add valgrind-3.12.0-arm64-hint.patch +- Add valgrind-3.12.0-clone-spawn.patch +- Add valgrind-3.12.0-quick-fatal-sigs.patch +- Add valgrind-3.12.0-exit_group.patch +- Add valgrind-3.12.0-deregister-stack.patch +- Add valgrind-3.12.0-x86-gdt-and-ss.patch +- Add valgrind-3.12.0-cd-dvd-ioctl.patch +- Add valgrind-3.12.0-tests-cxx11_abi_0.patch +- Add valgrind-3.12.0-helgrind-dl_allocate_tls-supp.patch +- Add valgrind-3.12.0-ppc-xxsel.patch + +* Fri Feb 17 2017 Mark Wielaard - 3.12.0-5 +- Add valgrind-3.12.0-ppc64-r2.patch (#1424367) + +* Sat Feb 11 2017 Fedora Release Engineering - 1:3.12.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Sat Nov 12 2016 Mark Wielaard - 3.12.0-3 +- Add valgrind-3.12.0-nocwd-cleanup.patch (#1390282) + +* Fri Oct 21 2016 Orion Poplawski - 1:3.12.0-2 +- Rebuild for openmpi 2.0 + +* Fri Oct 21 2016 Mark Wielaard - 3.12.0-1 +- Update to valgrind 3.12.0 release. + +* Thu Oct 20 2016 Mark Wielaard - 3.12.0-0.4-RC2 +- Update to 3.12.0-RC1. Drop integrated patches. +- Add valgrind-3.12.0-skip-cond-var.patch + +* Fri Sep 30 2016 Mark Wielaard - 3.12.0-0.3-BETA1 +- Clear CFLAGS, CXXFLAGS and LDFLAGS during make check. + +* Thu Sep 29 2016 Mark Wielaard - 3.12.0-0.2-BETA1 +- Add valgrind-3.12-beta1-ppc64be.patch. +- Enable gdb_server tests again. + +* Tue Sep 20 2016 Mark Wielaard - 3.12.0-0.1-BETA1 +- Update to valgrind 3.12.0 pre-release. + - Drop upstreamed patches. + - Disable exp-tests in %%check. GDB crashes on gdb_server tests. + +* Fri Jul 22 2016 Mark Wielaard - 3.11.0-26 +- Only build valgrind-openmpi when not creating a software collection. +- No support for multilib on secondary arches when creating scl. +- Touch up empty .exp files. + +* Thu Jul 21 2016 Mark Wielaard - 3.11.0-24 +- Mandatory Perl build-requires added +- Add valgrind-3.11.0-shr.patch +- Add valgrind-3.11.0-pcmpxstrx-0x70-0x19.patch +- Update valgrind-3.11.0-wrapmalloc.patch +- Add valgrind-3.11.0-sighandler-stack.patch + +* Tue Jun 21 2016 Mark Wielaard - 3.11.0-23 +- Update valgrind-3.11.0-ppoll-mask.patch (#1344082) + +* Mon May 30 2016 Mark Wielaard - 3.11.0-22 +- Add valgrind-3.11.0-arm64-handle_at.patch +- Add valgrind-3.11.0-ppc64-syscalls.patch + +* Fri Apr 29 2016 Mark Wielaard - 3.11.0-21 +- Add valgrind-3.11.0-deduppoolalloc.patch +- Add valgrind-3.11.0-ppc-bcd-addsub.patch +- Add valgrind-3.11.0-ppc64-vgdb-vr-regs.patch + +* Fri Apr 15 2016 Mark Wielaard - 3.11.0-20 +- Update valgrind-3.11.0-cxx-freeres.patch (x86 final_tidyup fix) +- Add valgrind-3.11.0-s390x-risbgn.patch + +* Sun Apr 03 2016 Mark Wielaard - 3.11.0-19 +- Add valgrind-3.11.0-cxx-freeres.patch (#1312647) +- Add valgrind-3.11.0-ppc64-separate-socketcalls.patch +- Add valgrind-3.11.0-isZeroU.patch +- Replace valgrind-3.11.0-arm64-ldpsw.patch with upstream version +- Add valgrind-3.11.0-ppc64-128bit-mod-carry.patch +- Add valgrind-3.11.0-amd64-fcom.patch +- Add valgrind-3.11.0-z13s.patch +- Add valgrind-3.11.0-gdb-test-filters.patch + +* Mon Mar 14 2016 Mark Wielaard - 3.11.0-18 +- Update valgrind-3.11.0-libstdc++-supp.patch. +- Add valgrind-3.11.0-arm64-ldr-literal-test.patch. +- Add valgrind-3.11.0-arm64-ldpsw.patch + +* Thu Mar 10 2016 Mark Wielaard - 3.11.0-17 +- Update valgrind-3.11.0-arm64-more-syscalls.patch +- Add valgrind-3.11.0-libstdc++-supp.patch (#1312647) + +* Wed Mar 09 2016 Mark Wielaard - 3.11.0-16 +- Add valgrind-3.11.0-ppoll-mask.patch +- Add valgrind-3.11.0-arm64-more-syscalls.patch + +* Wed Feb 24 2016 Mark Wielaard - 3.11.0-15 +- Add valgrind-3.11.0-s390-separate-socketcalls.patch +- Add valgrind-3.11.0-amd64-ld-index.patch + +* Thu Feb 18 2016 Mark Wielaard - 3.11.0-14 +- Update valgrind-3.11.0-futex.patch (fix helgrind/drd regression). +- Update valgrind-3.11.0-x86_unwind.patch (include amd64 fix). + +* Wed Feb 17 2016 Mark Wielaard - 3.11.0-13 +- Remove valgrind-3.11.0-no-stv.patch (gcc6 has been fixed). +- Add valgrind-3.11.0-futex.patch +- Add valgrind-3.11.0-s390x-popcnt.patch + +* Fri Feb 05 2016 Fedora Release Engineering - 1:3.11.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Sat Jan 30 2016 Mark Wielaard - 3.11.0-11 +- Add valgrind-3.11.0-no-stv.patch (GCC6 workaround). + +* Mon Jan 25 2016 Mark Wielaard - 3.11.0-10 +- Add valgrind-3.11.0-drd_std_thread.patch GCC6 build fix. + +* Fri Jan 22 2016 Mark Wielaard - 3.11.0-9 +- Fix valgrind-3.11.0-pthread_barrier.patch to apply with older patch. +- Fix multilib issue in config.h with HAVE_AS_AMD64_FXSAVE64. + +* Thu Jan 21 2016 Mark Wielaard - 3.11.0-8 +- Add valgrind-3.11.0-rlimit_data.patch +- Add valgrind-3.11.0-fclose.patch +- Add valgrind-3.11.0-pthread_spin_destroy.patch +- Add valgrind-3.11.0-socketcall-x86-linux.patch +- Don't strip debuginfo from vgpreload libaries. + Enable dwz for everything else again. +- Add valgrind-3.11.0-is_stmt.patch +- Add valgrind-3.11.0-x86_unwind.patch + +* Tue Jan 19 2016 Mark Wielaard - 3.11.0-7 +- Add valgrind-3.11.0-pthread_barrier.patch + +* Sat Jan 16 2016 Mark Wielaard - 3.11.0-6 +- Add valgrind-3.11.0-aspacemgr.patch (#1283774) + +* Sun Nov 15 2015 Mark Wielaard - 3.11.0-5 +- Add valgrind-3.11.0-wrapmalloc.patch + +* Mon Oct 12 2015 Mark Wielaard - 3.11.0-4 +- Fix parenthesis in valgrind-3.11.0-rexw-cvtps2pd.patch. +- Add valgrind-3.11.0-s390-hwcap.patch + +* Mon Oct 12 2015 Mark Wielaard - 3.11.0-3 +- Add valgrind-3.11.0-rexw-cvtps2pd.patch. + +* Thu Oct 01 2015 Mark Wielaard - 3.11.0-2 +- Add valgrind-3.11.0-no-rdrand.patch + +* Wed Sep 23 2015 Mark Wielaard - 3.11.0-1 +- Upgrade to valgrind 3.11.0 final +- Drop patches included upstream + - valgrind-3.11.0-ppc-dfp-guard.patch + - valgrind-3.11.0-ppc-ppr.patch + - valgrind-3.11.0-ppc-mbar.patch + - valgrind-3.11.0-glibc-futex-message.patch + - valgrind-3.11.0-arm64-libvex_test.patch + - valgrind-3.11.0-arm-warnings.patch + - valgrind-3.11.0-arm-no-cast-align.patch + - valgrind-3.11.0-ppc-vbit-test.patch +- Add arm64 syscall patches + - valgrind-3.11.0-arm64-xattr.patch + - valgrind-3.11.0-arm64-sigpending.patch + +* Sat Sep 19 2015 Mark Wielaard - 3.11.0-0.4.TEST1 +- Add valgrind-3.11.0-ppc-dfp-guard.patch +- Add valgrind-3.11.0-ppc-ppr.patch +- Add valgrind-3.11.0-ppc-mbar.patch + +* Fri Sep 18 2015 Mark Wielaard - 3.11.0-0.3.TEST1 +- Make sure some info about the system is in the build.log before check. +- Add valgrind-3.11.0-glibc-futex-message.patch +- Add valgrind-3.11.0-arm64-libvex_test.patch +- Add valgrind-3.11.0-arm-warnings.patch +- Add valgrind-3.11.0-arm-no-cast-align.patch +- Add valgrind-3.11.0-ppc-vbit-test.patch + +* Tue Sep 15 2015 Orion Poplawski - 1:3.11.0-0.2.TEST1 +- Rebuild for openmpi 1.10.0 + +* Thu Sep 10 2015 Mark Wielaard - 3.11.0-0.1.TEST1 +- Add BuildRequires perl(Getopt::Long) +- Upgrade to valgrind 3.11.0.TEST1 +- Remove upstreamed valgrind-3.10.1-gdb-file-warning.patch + +* Tue Aug 25 2015 Mark Wielaard - 3.10.1-22.svn20150825r15589 +- Drop valgrind-3.9.0-stat_h.patch. +- Add BuildRequires gcc-c++. +- Update to current valgrind svn (svn20150825r15589) +- Add valgrind-3.10.1-gdb-file-warning.patch + +* Mon Aug 17 2015 Mark Wielaard - 3.10.1-21.svn20150817r15561 +- Update to current valgrind svn. Drop patches now upstream. + +* Mon Aug 17 2015 Mark Wielaard - 3.10.1-20 +- Don't try to move around libmpiwrap when not building for openmpi (s390x) + +* Fri Aug 14 2015 Mark Wielaard - 3.10.1-19 +- Install libmpiwrap library under {_libdir}/openmpi/valgrind (#1238428) + +* Mon Aug 10 2015 Sandro Mani - 1:3.10.1-18 +- Rebuild for RPM MPI Requires Provides Change + +* Mon Aug 10 2015 Mark Wielaard - 3.10.1-17 +- Add setuid and setresgid to valgrind-3.10.1-aarch64-syscalls.patch. + +* Mon Aug 03 2015 Mark Wielaard - 3.10.1-16 +- Add valgrind-3.10.1-ppc64-hwcap2.patch + +* Wed Jul 08 2015 Mark Wielaard - 3.10.1-15 +- Update valgrind-3.10.1-s390x-fiebra.patch + +* Wed Jul 08 2015 Mark Wielaard - 3.10.1-14 +- Add valgrind-3.10.1-s390x-fiebra.patch + +* Tue Jul 07 2015 Mark Wielaard - 3.10.1-13 +- Add valgrind-3.10.1-di_notify_mmap.patch +- Add valgrind-3.10.1-memmove-ld_so-ppc64.patch + +* Fri Jun 19 2015 Mark Wielaard - 3.10.1-12 +- Add valgrind-3.10.1-kernel-4.0.patch. + +* Fri Jun 19 2015 Fedora Release Engineering - 1:3.10.1-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Jun 07 2015 Mark Wielaard - 3.10.1-10 +- Add valgrind-3.10.1-cfi-redzone.patch. + +* Wed Jun 03 2015 Mark Wielaard - 3.10.1-9 +- Add valgrind-3.10.1-memfd_create.patch. +- Add valgrind-3.10.1-syncfs.patch. +- Add valgrind-3.10.1-arm-process_vm_readv_writev.patch. +- Add valgrind-3.10.1-fno-ipa-icf.patch. +- Add valgrind-3.10.1-demangle-q.patch + +* Fri May 22 2015 Mark Wielaard - 3.10.1-8 +- Disable extended regtest on arm. The gdb tests hang for unknown reasons. + The reason is a glibc bug #1196181 which causes: + "GDB fails with Cannot parse expression `.L1055 4@r4'." + +* Wed Apr 22 2015 Mark Wielaard - 3.10.1-7 +- Add valgrind-3.10-1-ppc64-sigpending.patch +- Filter out -fstack-protector-strong and disable _hardened_build. + +* Wed Feb 18 2015 Mark Wielaard - 3.10.1-6 +- Add valgrind-3.10.1-send-recv-mmsg.patch +- Add mount and umount2 to valgrind-3.10.1-aarch64-syscalls.patch. +- Add valgrind-3.10.1-glibc-version-check.patch + +* Tue Feb 10 2015 Mark Wielaard - 3.10.1-5 +- Add accept4 to valgrind-3.10.1-aarch64-syscalls.patch. +- Add valgrind-3.10.1-ppc64-accept4.patch. + +* Sun Feb 08 2015 Mark Wielaard - 3.10.1-4 +- Add valgrind-3.10.1-aarch64-syscalls.patch. + +* Thu Feb 05 2015 Mark Wielaard - 3.10.1-3 +- Add valgrind-3.10-s390-spechelper.patch. + +* Tue Jan 13 2015 Mark Wielaard - 3.10.1-2 +- Add valgrind-3.10.1-mempcpy.patch. + +* Wed Nov 26 2014 Mark Wielaard - 3.10.1-1 +- Upgrade to 3.10.1 final. + +* Mon Nov 24 2014 Mark Wielaard - 3.10.1-0.1.TEST1 +- Upgrade to valgrind 3.10.1.TEST1 +- Remove patches that are now upstream: + - valgrind-3.10.0-old-ppc32-instr-magic.patch + - valgrind-3.10.0-aarch64-syscalls.patch + - valgrind-3.10.0-aarch64-dmb-sy.patch + - valgrind-3.10.0-aarch64-frint.patch + - valgrind-3.10.0-fcvtmu.patch + - valgrind-3.10.0-aarch64-fcvta.patch + +* Wed Nov 19 2014 Mark Wielaard - 3.10.0-6 +- Add getgroups/setgroups to valgrind-3.10.0-aarch64-syscalls.patch + +* Tue Nov 4 2014 Mark Wielaard - 3.10.0-5 +- Merge valgrind-3.10.0-aarch64-times.patch + and valgrind-3.10.0-aarch64-getsetsid.patch + into valgrind-3.10.0-aarch64-syscalls.patch + add fdatasync, msync, pread64, setreuid, setregid, + mknodat, fchdir, chroot, fchownat, fchmod and fchown. +- Add valgrind-3.10.0-aarch64-frint.patch +- Add valgrind-3.10.0-fcvtmu.patch +- Add valgrind-3.10.0-aarch64-fcvta.patch + +* Sat Oct 11 2014 Mark Wielaard - 3.10.0-4 +- Add valgrind-3.10.0-aarch64-times.patch +- Add valgrind-3.10.0-aarch64-getsetsid.patch +- Add valgrind-3.10.0-aarch64-dmb-sy.patch + +* Mon Sep 15 2014 Mark Wielaard - 3.10.0-3 +- Add valgrind-3.10.0-old-ppc32-instr-magic.patch. + +* Fri Sep 12 2014 Mark Wielaard - 3.10.0-2 +- Fix ppc32 multilib handling on ppc64[be]. +- Drop ppc64 secondary for ppc32 primary support. +- Except for armv7hl we don't support any other arm[32] arch. + +* Thu Sep 11 2014 Mark Wielaard - 3.10.0-1 +- Update to 3.10.0 final. +- Remove valgrind-3.10-configure-glibc-2.20.patch fixed upstream. + +* Mon Sep 8 2014 Mark Wielaard - 3.10.0-0.2.BETA2 +- Update to 3.10.0.BETA2. +- Don't run dwz or generate minisymtab. +- Remove valgrind-3.9.0-s390x-ld-supp.patch fixed upstream. +- Add valgrind-3.10-configure-glibc-2.20.patch. + +* Tue Sep 2 2014 Mark Wielaard - 3.10.0-0.1.BETA1 +- Update to official upstream 3.10.0 BETA1. + - Enables inlined frames in stacktraces. + +* Fri Aug 29 2014 Mark Wielaard - 3.9.0-26.svn20140829r14384 +- Update to upstream svn r14384 +- Enable gdb_server tests again for arm and aarch64 + +* Wed Aug 27 2014 Mark Wielaard - 3.9.0-25.svn20140827r14370 +- Update to upstream svn r14370 +- Remove ppc testfile copying (no longer patched in) + +* Mon Aug 18 2014 Mark Wielaard - 3.9.0-24.svn20140818r14303 +- Update to upstream svn r14303 +- Move fake libgcc into shared to not break post-regtest-checks. +- autogen.sh execution no longer needed in %%build. + +* Mon Aug 18 2014 Fedora Release Engineering - 1:3.9.0-23.svn20140809r14250 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Aug 9 2014 Mark Wielaard 3.9.0-22.svn20140809r14250 +- Update to upstream svn r14250 + - ppc64le support got integrated upstream. Remove patches: + valgrind-3.9.0-ppc64le-initial.patch + valgrind-3.9.0-ppc64le-functional.patch + valgrind-3.9.0-ppc64le-test.patch + valgrind-3.9.0-ppc64le-extra.patch + +* Sat Jul 19 2014 Mark Wielaard 3.9.0-21.svn20140718r14176 +- Disable full regtest on arm (gdb integration tests sometimes hang). + +* Fri Jul 18 2014 Mark Wielaard 3.9.0-20.svn20140718r14176 +- Update to upstream svn r14176 + Remove valgrind-3.9.0-arm64-user_regs.patch +- Add ppc64le support + valgrind-3.9.0-ppc64le-initial.patch + valgrind-3.9.0-ppc64le-functional.patch + valgrind-3.9.0-ppc64le-test.patch + valgrind-3.9.0-ppc64le-extra.patch + +* Tue Jul 15 2014 Mark Wielaard 3.9.0-19.svn20140715r14165 +- Add valgrind-3.9.0-arm64-user_regs.patch +- Disable full regtest on aarch64 (gdb integration tests sometimes hang). +- Enable openmpi support on aarch64. + +* Tue Jul 15 2014 Mark Wielaard 3.9.0-18.svn20140715r14165 +- Update to upstream svn r14165. +- Remove valgrind-3.9.0-ppc64-ifunc.patch. +- Remove valgrind-3.9.0-aarch64-glibc-2.19.90-gcc-4.9.patch +- Remove valgrind-3.9.0-format-security.patch +- Remove valgrind-3.9.0-msghdr.patch + +* Fri Jul 4 2014 Mark Wielaard 3.9.0-17.svn20140513r13961 +- Remove ppc multilib support (#1116110) +- Add valgrind-3.9.0-ppc64-ifunc.patch + +* Sun Jun 08 2014 Fedora Release Engineering - 1:3.9.0-16.svn20140513r13961 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Mon May 19 2014 Mark Wielaard +- Don't cleanup fake 32-bit libgcc created in %%build. + make regtest might depend on it to build -m32 binaries. + +* Fri May 16 2014 Mark Wielaard 3.9.0-15.svn20140513r13961 +- Add SHL_d_d_#imm to valgrind-3.9.0-aarch64-glibc-2.19.90-gcc-4.9.patch + +* Thu May 15 2014 Mark Wielaard 3.9.0-14.svn20140513r13961 +- Add valgrind-3.9.0-aarch64-glibc-2.19.90-gcc-4.9.patch + +* Tue May 13 2014 Mark Wielaard 3.9.0-13.svn20140513r13961 +- Update to upstream svn r13961. +- Remove valgrind-3.9.0-mpx.patch integrated upstream now. +- Add valgrind-3.9.0-msghdr.patch +- Add valgrind-3.9.0-format-security.patch + +* Thu May 8 2014 Mark Wielaard 3.9.0-12.svn20140319r13879 +- Add valgrind-3.9.0-mpx.patch (#1087933) + +* Wed Mar 19 2014 Mark Wielaard - 3.9.0-11.svn20140319r13879 +- Update to upstream svn r13879. arm64 make check now builds. + +* Tue Mar 18 2014 Mark Wielaard - 3.9.0-10.svn20140318r13876 +- Make sure basic binary (/bin/true) runs under valgrind. + And fail the whole build if not. The regtests are not zero-fail. +- Update to upstream svn r13876. +- Introduce build_openmpi and build_multilib in spec file. + +* Tue Mar 11 2014 Mark Wielaard - 3.9.0-9.svn20140311r13869 +- Enable aarch64 based on current upstream svn. Removed upstreamed patches. + Thanks to Marcin Juszkiewicz + +* Mon Mar 10 2014 Mark Wielaard - 3.9.0-8 +- Add valgrind-3.9.0-ppc64-priority.patch + +* Mon Feb 24 2014 Mark Wielaard +- Add upstream fixes to valgrind-3.9.0-timer_create.patch + +* Fri Feb 21 2014 Mark Wielaard - 3.9.0-7 +- Add valgrind-3.9.0-glibc-2.19.patch + +* Fri Feb 21 2014 Mark Wielaard - 3.9.0-6 +- Add valgrind-3.9.0-s390-dup3.patch +- Add valgrind-3.9.0-timer_create.patch + +* Thu Dec 12 2013 Mark Wielaard - 3.9.0-5 +- Add valgrind-3.9.0-manpage-memcheck-options.patch. +- Add valgrind-3.9.0-s390-fpr-pair.patch. + +* Thu Nov 28 2013 Mark Wielaard - 3.9.0-4 +- Add valgrind-3.9.0-xabort.patch. + +* Fri Nov 22 2013 Mark Wielaard - 3.9.0-3 +- Add valgrind-3.9.0-anon-typedef.patch. +- Add valgrind-3.9.0-s390x-ld-supp.patch + +* Wed Nov 20 2013 Mark Wielaard - 3.9.0-2 +- Add valgrind-3.9.0-dwz-alt-buildid.patch. +- Add valgrind-3.9.0-s390-risbg.patch. + +* Fri Nov 1 2013 Mark Wielaard - 3.9.0-1 +- Upgrade to valgrind 3.9.0 final. +- Remove support for really ancient GCCs (valgrind-3.9.0-config_h.patch). +- Add valgrind-3.9.0-amd64_gen_insn_test.patch. +- Remove and cleanup fake 32-bit libgcc package. + +* Mon Oct 28 2013 Mark Wielaard - 3.9.0-0.1.TEST1 +- Upgrade to valgrind 3.9.0.TEST1 +- Remove patches that are now upstream: + - valgrind-3.8.1-abbrev-parsing.patch + - valgrind-3.8.1-af-bluetooth.patch + - valgrind-3.8.1-aspacemgr_VG_N_SEGs.patch + - valgrind-3.8.1-avx2-bmi-fma.patch.gz + - valgrind-3.8.1-avx2-prereq.patch + - valgrind-3.8.1-bmi-conf-check.patch + - valgrind-3.8.1-capget.patch + - valgrind-3.8.1-cfi_dw_ops.patch + - valgrind-3.8.1-dwarf-anon-enum.patch + - valgrind-3.8.1-filter_gdb.patch + - valgrind-3.8.1-find-buildid.patch + - valgrind-3.8.1-gdbserver_exit.patch + - valgrind-3.8.1-gdbserver_tests-syscall-template-source.patch + - valgrind-3.8.1-glibc-2.17-18.patch + - valgrind-3.8.1-index-supp.patch + - valgrind-3.8.1-initial-power-isa-207.patch + - valgrind-3.8.1-manpages.patch + - valgrind-3.8.1-memcheck-mc_translate-Iop_8HLto16.patch + - valgrind-3.8.1-mmxext.patch + - valgrind-3.8.1-movntdqa.patch + - valgrind-3.8.1-new-manpages.patch + - valgrind-3.8.1-openat.patch + - valgrind-3.8.1-overlap_memcpy_filter.patch + - valgrind-3.8.1-pie.patch + - valgrind-3.8.1-pkg-config.patch + - valgrind-3.8.1-power-isa-205-deprecation.patch + - valgrind-3.8.1-ppc-32-mode-64-bit-instr.patch + - valgrind-3.8.1-ppc-setxattr.patch + - valgrind-3.8.1-proc-auxv.patch + - valgrind-3.8.1-ptrace-include-configure.patch + - valgrind-3.8.1-ptrace-setgetregset.patch + - valgrind-3.8.1-ptrace-thread-area.patch + - valgrind-3.8.1-regtest-fixlets.patch + - valgrind-3.8.1-s390-STFLE.patch + - valgrind-3.8.1-s390_tsearch_supp.patch + - valgrind-3.8.1-sendmsg-flags.patch + - valgrind-3.8.1-sigill_diag.patch + - valgrind-3.8.1-static-variables.patch + - valgrind-3.8.1-stpncpy.patch + - valgrind-3.8.1-text-segment.patch + - valgrind-3.8.1-wcs.patch + - valgrind-3.8.1-x86_amd64_features-avx.patch + - valgrind-3.8.1-xaddb.patch + - valgrind-3.8.1-zero-size-sections.patch +- Remove special case valgrind-3.8.1-enable-armv5.patch. +- Remove valgrind-3.8.1-x86-backtrace.patch, rely on new upstream fp/cfi + try-cache mechanism. + +* Mon Oct 14 2013 Mark Wielaard - 3.8.1-31 +- Fix multilib issue with HAVE_PTRACE_GETREGS in config.h. + +* Thu Sep 26 2013 Mark Wielaard - 3.8.1-30 +- Add valgrind-3.8.1-index-supp.patch (#1011713) + +* Wed Sep 25 2013 Mark Wielaard - 3.8.1-29 +- Filter out -mcpu= so tests are compiled with the right flags. (#996927). + +* Mon Sep 23 2013 Mark Wielaard - 3.8.1-28 +- Implement SSE4 MOVNTDQA insn (valgrind-3.8.1-movntdqa.patch) +- Don't BuildRequire /bin/ps, just BuildRequire procps + (procps-ng provides procps). + +* Thu Sep 05 2013 Mark Wielaard - 3.8.1-27 +- Fix power_ISA2_05 testcase (valgrind-3.8.1-power-isa-205-deprecation.patch) +- Fix ppc32 make check build (valgrind-3.8.1-initial-power-isa-207.patch) +- Add valgrind-3.8.1-mmxext.patch + +* Wed Aug 21 2013 Mark Wielaard - 3.8.1-26 +- Allow building against glibc 2.18. (#999169) + +* Thu Aug 15 2013 Mark Wielaard - 3.8.1-25 +- Add valgrind-3.8.1-s390-STFLE.patch + s390 message-security assist (MSA) instruction extension not implemented. + +* Wed Aug 14 2013 Mark Wielaard - 3.8.1-24 +- Add valgrind-3.8.1-power-isa-205-deprecation.patch + Deprecation of some ISA 2.05 POWER6 instructions. +- Fixup auto-foo generation of new manpage doc patch. + +* Wed Aug 14 2013 Mark Wielaard - 3.8.1-23 +- tests/check_isa-2_07_cap should be executable. + +* Tue Aug 13 2013 Mark Wielaard - 3.8.1-22 +- Add valgrind-3.8.1-initial-power-isa-207.patch + Initial ISA 2.07 support for POWER8-tuned libc. + +* Thu Aug 08 2013 Mark Wielaard - 3.8.1-21 +- Don't depend on docdir location and version in openmpi subpackage + description (#993938). +- Enable openmpi subpackage also on arm. + +* Thu Aug 08 2013 Mark Wielaard - 3.8.1-20 +- Add valgrind-3.8.1-ptrace-include-configure.patch (#992847) + +* Sun Aug 04 2013 Fedora Release Engineering - 1:3.8.1-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Jul 18 2013 Petr Pisar - 1:3.8.1-18 +- Perl 5.18 rebuild + +* Mon Jul 08 2013 Mark Wielaard - 3.8.1-17 +- Add valgrind-3.8.1-dwarf-anon-enum.patch +- Cleanup valgrind-3.8.1-sigill_diag.patch .orig file changes (#949687). +- Add valgrind-3.8.1-ppc-setxattr.patch +- Add valgrind-3.8.1-new-manpages.patch +- Add valgrind-3.8.1-ptrace-thread-area.patch +- Add valgrind-3.8.1-af-bluetooth.patch + +* Tue May 28 2013 Michael Schwendt - 1:3.8.1-16 +- Provide virtual -static package in -devel subpackage (#609624). + +* Thu Apr 25 2013 Mark Wielaard 3.8.1-15 +- Add valgrind-3.8.1-zero-size-sections.patch. Resolves issues with zero + sized .eh_frame sections on ppc64. + +* Thu Apr 18 2013 Mark Wielaard 3.8.1-14 +- fixup selinux file context when doing a scl build. +- Enable regtest suite on ARM. +- valgrind-3.8.1-abbrev-parsing.patch, drop workaround, enable real fix. +- Fix -Ttext-segment configure check. Enables s390x again. +- BuildRequire ps for testsuite. + +* Tue Apr 02 2013 Mark Wielaard 3.8.1-13 +- Fix quoting in valgrind valgrind-3.8.1-enable-armv5.patch and + remove arm configure hunk from valgrind-3.8.1-text-segment.patch #947440 +- Replace valgrind-3.8.1-text-segment.patch with upstream variant. +- Add valgrind-3.8.1-regtest-fixlets.patch. + +* Wed Mar 20 2013 Mark Wielaard 3.8.1-12 +- Add valgrind-3.8.1-text-segment.patch +- Don't undefine _missing_build_ids_terminate_build. + +* Tue Mar 12 2013 Mark Wielaard 3.8.1-11 +- Add valgrind-3.8.1-manpages.patch + +* Fri Mar 01 2013 Mark Wielaard 3.8.1-10 +- Don't disable -debuginfo package generation, but do undefine + _missing_build_ids_terminate_build. + +* Thu Feb 28 2013 Mark Wielaard 3.8.1-9 +- Replace valgrind-3.8.1-sendmsg-flags.patch with upstream version. + +* Tue Feb 19 2013 Mark Wielaard 3.8.1-8 +- Add valgrind-3.8.1-sendmsg-flags.patch +- Add valgrind-3.8.1-ptrace-setgetregset.patch +- Add valgrind-3.8.1-static-variables.patch + +* Thu Feb 07 2013 Jon Ciesla 1:3.8.1-7 +- Merge review fixes, BZ 226522. + +* Wed Jan 16 2013 Mark Wielaard 3.8.1-6 +- Allow building against glibc-2.17. + +* Sun Nov 4 2012 Mark Wielaard 3.8.1-5 +- Add valgrind-3.8.1-stpncpy.patch (KDE#309427) +- Add valgrind-3.8.1-ppc-32-mode-64-bit-instr.patch (#810992, KDE#308573) +- Add valgrind-3.8.1-sigill_diag.patch (#810992, KDE#309425) + +* Tue Oct 16 2012 Mark Wielaard 3.8.1-4 +- Add valgrind-3.8.1-xaddb.patch (#866793, KDE#307106) + +* Mon Oct 15 2012 Mark Wielaard 3.8.1-3 +- Add valgrind-3.8.1-x86_amd64_features-avx.patch (KDE#307285) +- Add valgrind-3.8.1-gdbserver_tests-syscall-template-source.patch (KDE#307155) +- Add valgrind-3.8.1-overlap_memcpy_filter.patch (KDE#307290) +- Add valgrind-3.8.1-pkg-config.patch (#827219, KDE#307729) +- Add valgrind-3.8.1-proc-auxv.patch (KDE#253519) +- Add valgrind-3.8.1-wcs.patch (#755242, KDE#307828) +- Add valgrind-3.8.1-filter_gdb.patch (KDE#308321) +- Add valgrind-3.8.1-gdbserver_exit.patch (#862795, KDE#308341) +- Add valgrind-3.8.1-aspacemgr_VG_N_SEGs.patch (#730303, KDE#164485) +- Add valgrind-3.8.1-s390_tsearch_supp.patch (#816244, KDE#308427) + +* Fri Sep 21 2012 Mark Wielaard 3.8.1-2 +- Add valgrind-3.8.1-gdbserver_tests-mcinvoke-ppc64.patch +- Replace valgrind-3.8.1-cfi_dw_ops.patch with version as committed upstream. +- Remove erroneous printf change from valgrind-3.8.1-abbrev-parsing.patch. +- Add scalar testcase change to valgrind-3.8.1-capget.patch. + +* Thu Sep 20 2012 Mark Wielaard 3.8.1-1 +- Add partial backport of upstream revision 12884 + valgrind-3.8.0-memcheck-mc_translate-Iop_8HLto16.patch + without it AVX2 VPBROADCASTB insn is broken under memcheck. +- Add valgrind-3.8.0-cfi_dw_ops.patch (KDE#307038) + DWARF2 CFI reader: unhandled DW_OP_ opcode 0x8 (DW_OP_const1u and friends) +- Add valgrind-3.8.0-avx2-prereq.patch. +- Remove accidentially included diffs for gdbserver_tests and helgrind/tests + Makefile.in from valgrind-3.8.0-avx2-bmi-fma.patch.gz +- Remove valgrind-3.8.0-tests.patch tests no longer hang. +- Added SCL macros to support building as part of a Software Collection. +- Upgrade to valgrind 3.8.1. + +* Wed Sep 12 2012 Mark Wielaard 3.8.0-8 +- Add configure fixup valgrind-3.8.0-bmi-conf-check.patch + +* Wed Sep 12 2012 Mark Wielaard 3.8.0-7 +- Add valgrind-3.8.0-avx2-bmi-fma.patch (KDE#305728) + +* Tue Sep 11 2012 Mark Wielaard 3.8.0-6 +- Add valgrind-3.8.0-lzcnt-tzcnt-bugfix.patch (KDE#295808) +- Add valgrind-3.8.0-avx-alignment-check.patch (KDE#305926) + +* Mon Aug 27 2012 Mark Wielaard 3.8.0-5 +- Add valgrind-3.8.0-abbrev-parsing.patch for #849783 (KDE#305513). + +* Sun Aug 19 2012 Mark Wielaard 3.8.0-4 +- Add valgrind-3.8.0-find-buildid.patch workaround bug #849435 (KDE#305431). + +* Wed Aug 15 2012 Jakub Jelinek 3.8.0-3 +- fix up last change + +* Wed Aug 15 2012 Jakub Jelinek 3.8.0-2 +- tweak up to allow simultaneous installation + of valgrind-devel.{i686,x86_64} (#848146) + +* Fri Aug 10 2012 Jakub Jelinek 3.8.0-1 +- update to 3.8.0 release +- from CFLAGS/CXXFLAGS filter just fortification flags, not arch + specific flags +- on i?86 prefer to use CFI over %%ebp unwinding, as GCC 4.6+ + defaults to -fomit-frame-pointer + +* Tue Aug 07 2012 Mark Wielaard 3.8.0-0.1.TEST1.svn12858 +- Update to 3.8.0-TEST1 +- Clear CFLAGS CXXFLAGS LDFLAGS. +- Fix \ line continuation in configure line. + +* Fri Aug 03 2012 Mark Wielaard 3.7.0-7 +- Fixup shadowing warnings valgrind-3.7.0-dwz.patch +- Add valgrind-3.7.0-ref_addr.patch (#842659, KDE#298864) + +* Wed Jul 25 2012 Mark Wielaard 3.7.0-6 +- handle dwz DWARF compressor output (#842659, KDE#302901) +- allow glibc 2.16. + +* Sun Jul 22 2012 Fedora Release Engineering - 1:3.7.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Mon May 7 2012 Jakub Jelinek 3.7.0-4 +- adjust suppressions so that it works even with ld-2.15.so (#806854) +- handle DW_TAG_unspecified_type and DW_TAG_rvalue_reference_type + (#810284, KDE#278313) +- handle .debug_types sections (#810286, KDE#284124) + +* Sun Mar 4 2012 Peter Robinson 3.7.0-2 +- Fix building on ARM platform + +* Fri Jan 27 2012 Jakub Jelinek 3.7.0-1 +- update to 3.7.0 (#769213, #782910, #772343) +- handle some further SCSI ioctls (#783936) +- handle fcntl F_SETOWN_EX and F_GETOWN_EX (#770746) + +* Wed Aug 17 2011 Adam Jackson 3.6.1-6 +- rebuild for rpm 4.9.1 trailing / bug + +* Thu Jul 21 2011 Jakub Jelinek 3.6.1-5 +- handle PLT unwind info (#723790, KDE#277045) + +* Mon Jun 13 2011 Jakub Jelinek 3.6.1-4 +- fix memcpy/memmove redirection on x86_64 (#705790) + +* Wed Jun 8 2011 Jakub Jelinek 3.6.1-3 +- fix testing against glibc 2.14 + +* Wed Jun 8 2011 Jakub Jelinek 3.6.1-2 +- fix build on ppc64 (#711608) +- don't fail if s390x support patch hasn't been applied, + move testing into %%check (#708522) +- rebuilt against glibc 2.14 + +* Wed Feb 23 2011 Jakub Jelinek 3.6.1-1 +- update to 3.6.1 + +* Mon Feb 07 2011 Fedora Release Engineering - 1:3.6.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 28 2011 Jakub Jelinek 3.6.0-2 +- rebuilt against glibc 2.13 (#673046) +- hook in pwrite64 syscall on ppc64 (#672858) +- fix PIE handling on ppc/ppc64 (#665289) + +* Fri Nov 12 2010 Jakub Jelinek 3.6.0-1 +- update to 3.6.0 +- add s390x support (#632354) +- provide a replacement for str{,n}casecmp{,_l} (#626470) + +* Tue May 18 2010 Jakub Jelinek 3.5.0-18 +- rebuilt against glibc 2.12 + +* Mon Apr 12 2010 Jakub Jelinek 3.5.0-16 +- change pub_tool_basics.h not to include config.h (#579283) +- add valgrind-openmpi package for OpenMPI support (#565541) +- allow NULL second argument to capget (#450976) + +* Wed Apr 7 2010 Jakub Jelinek 3.5.0-15 +- handle i686 nopw insns with more than one data16 prefix (#574889) +- DWARF4 support +- handle getcpu and splice syscalls + +* Wed Jan 20 2010 Jakub Jelinek 3.5.0-14 +- fix build against latest glibc headers + +* Wed Jan 20 2010 Jakub Jelinek 3.5.0-13 +- DW_OP_mod is unsigned modulus instead of signed +- fix up valgrind.pc (#551277) + +* Mon Dec 21 2009 Jakub Jelinek 3.5.0-12 +- don't require offset field to be set in adjtimex's + ADJ_OFFSET_SS_READ mode (#545866) + +* Wed Dec 2 2009 Jakub Jelinek 3.5.0-10 +- add handling of a bunch of recent syscalls and fix some + other syscall wrappers (Dodji Seketeli) +- handle prelink created split of .bss into .dynbss and .bss + and similarly for .sbss and .sdynbss (#539874) + +* Wed Nov 4 2009 Jakub Jelinek 3.5.0-9 +- rebuilt against glibc 2.11 +- use upstream version of the ifunc support + +* Wed Oct 28 2009 Jakub Jelinek 3.5.0-8 +- add preadv/pwritev syscall support + +* Tue Oct 27 2009 Jakub Jelinek 3.5.0-7 +- add perf_counter_open syscall support (#531271) +- add handling of some sbb/adc insn forms on x86_64 (KDE#211410) + +* Fri Oct 23 2009 Jakub Jelinek 3.5.0-6 +- ppc and ppc64 fixes + +* Thu Oct 22 2009 Jakub Jelinek 3.5.0-5 +- add emulation of 0x67 prefixed loop* insns on x86_64 (#530165) + +* Wed Oct 21 2009 Jakub Jelinek 3.5.0-4 +- handle reading of .debug_frame in addition to .eh_frame +- ignore unknown DWARF3 expressions in evaluate_trivial_GX +- suppress helgrind race errors in helgrind's own mythread_wrapper +- fix compilation of x86 tests on x86_64 and ppc tests + +* Wed Oct 14 2009 Jakub Jelinek 3.5.0-3 +- handle many more DW_OP_* ops that GCC now uses +- handle the more compact form of DW_AT_data_member_location +- don't strip .debug_loc etc. from valgrind binaries + +* Mon Oct 12 2009 Jakub Jelinek 3.5.0-2 +- add STT_GNU_IFUNC support (Dodji Seketeli, #518247) +- wrap inotify_init1 syscall (Dodji Seketeli, #527198) +- fix mmap/mprotect handling in memcheck (KDE#210268) + +* Fri Aug 21 2009 Jakub Jelinek 3.5.0-1 +- update to 3.5.0 + +* Tue Jul 28 2009 Jakub Jelinek 3.4.1-7 +- handle futex ops newly added during last 4 years (#512121) + +* Sun Jul 26 2009 Fedora Release Engineering 3.4.1-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Jul 13 2009 Jakub Jelinek 3.4.1-5 +- add support for DW_CFA_{remember,restore}_state + +* Mon Jul 13 2009 Jakub Jelinek 3.4.1-4 +- handle version 3 .debug_frame, .eh_frame, .debug_info and + .debug_line (#509197) + +* Mon May 11 2009 Jakub Jelinek 3.4.1-3 +- rebuilt against glibc 2.10.1 + +* Wed Apr 22 2009 Jakub Jelinek 3.4.1-2 +- redirect x86_64 ld.so strlen early (#495645) + +* Mon Mar 9 2009 Jakub Jelinek 3.4.1-1 +- update to 3.4.1 + +* Mon Feb 9 2009 Jakub Jelinek 3.4.0-3 +- update to 3.4.0 + +* Wed Apr 16 2008 Jakub Jelinek 3.3.0-3 +- add suppressions for glibc 2.8 +- add a bunch of syscall wrappers (#441709) + +* Mon Mar 3 2008 Jakub Jelinek 3.3.0-2 +- add _dl_start suppression for ppc/ppc64 + +* Mon Mar 3 2008 Jakub Jelinek 3.3.0-1 +- update to 3.3.0 +- split off devel bits into valgrind-devel subpackage + +* Thu Oct 18 2007 Jakub Jelinek 3.2.3-7 +- add suppressions for glibc >= 2.7 + +* Fri Aug 31 2007 Jakub Jelinek 3.2.3-6 +- handle new x86_64 nops (#256801, KDE#148447) +- add support for private futexes (KDE#146781) +- update License tag + +* Fri Aug 3 2007 Jakub Jelinek 3.2.3-5 +- add ppc64-linux symlink in valgrind ppc.rpm, so that when + rpm prefers 32-bit binaries over 64-bit ones 32-bit + /usr/bin/valgrind can find 64-bit valgrind helper binaries + (#249773) +- power5+ and power6 support (#240762) + +* Thu Jun 28 2007 Jakub Jelinek 3.2.3-4 +- pass GDB=%%{_prefix}/gdb to configure to fix default + --db-command (#220840) + +* Wed Jun 27 2007 Jakub Jelinek 3.2.3-3 +- add suppressions for glibc >= 2.6 +- avoid valgrind internal error if io_destroy syscall is + passed a bogus argument + +* Tue Feb 13 2007 Jakub Jelinek 3.2.3-2 +- fix valgrind.pc again + +* Tue Feb 13 2007 Jakub Jelinek 3.2.3-1 +- update to 3.2.3 + +* Wed Nov 8 2006 Jakub Jelinek 3.2.1-7 +- some cachegrind improvements (Ulrich Drepper) + +* Mon Nov 6 2006 Jakub Jelinek 3.2.1-6 +- fix valgrind.pc (#213149) +- handle Intel Core2 cache sizes in cachegrind (Ulrich Drepper) + +* Wed Oct 25 2006 Jakub Jelinek 3.2.1-5 +- fix valgrind on ppc/ppc64 where PAGESIZE is 64K (#211598) + +* Sun Oct 1 2006 Jakub Jelinek 3.2.1-4 +- adjust for glibc-2.5 + +* Wed Sep 27 2006 Jakub Jelinek 3.2.1-3 +- another DW_CFA_set_loc handling fix + +* Tue Sep 26 2006 Jakub Jelinek 3.2.1-2 +- fix openat handling (#208097) +- fix DW_CFA_set_loc handling + +* Tue Sep 19 2006 Jakub Jelinek 3.2.1-1 +- update to 3.2.1 bugfix release + - SSE3 emulation fixes, reduce memcheck false positive rate, + 4 dozens of bugfixes + +* Mon Aug 21 2006 Jakub Jelinek 3.2.0-5 +- handle the new i686/x86_64 nops (#203273) + +* Fri Jul 28 2006 Jeremy Katz - 1:3.2.0-4 +- rebuild to bring ppc back + +* Wed Jul 12 2006 Jesse Keating - 1:3.2.0-3.1 +- rebuild + +* Fri Jun 16 2006 Jakub Jelinek 3.2.0-3 +- handle [sg]et_robust_list syscall on ppc{32,64} + +* Fri Jun 16 2006 Jakub Jelinek 3.2.0-2 +- fix ppc64 symlink to 32-bit valgrind libdir +- handle a few extra ppc64 syscalls + +* Thu Jun 15 2006 Jakub Jelinek 3.2.0-1 +- update to 3.2.0 + - ppc64 support + +* Fri May 26 2006 Jakub Jelinek 3.1.1-3 +- handle [sg]et_robust_list syscalls on i?86/x86_64 +- handle *at syscalls on ppc +- ensure on x86_64 both 32-bit and 64-bit glibc{,-devel} are + installed in the buildroot (#191820) + +* Wed Apr 12 2006 Jakub Jelinek 3.1.1-2 +- handle many syscalls that were unhandled before, especially on ppc + +* Mon Apr 3 2006 Jakub Jelinek 3.1.1-1 +- upgrade to 3.1.1 + - many bugfixes + +* Mon Mar 13 2006 Jakub Jelinek 3.1.0-2 +- add support for DW_CFA_val_offset{,_sf}, DW_CFA_def_cfa_sf + and skip over DW_CFA_val_expression quietly +- adjust libc/ld.so filenames in glibc-2.4.supp for glibc 2.4 + release + +* Mon Jan 9 2006 Jakub Jelinek 3.1.0-1 +- upgrade to 3.1.0 (#174582) + - many bugfixes, ppc32 support + +* Thu Oct 13 2005 Jakub Jelinek 3.0.1-2 +- remove Obsoletes for valgrind-callgrind, as it has been + ported to valgrind 3.0.x already + +* Sun Sep 11 2005 Jakub Jelinek 3.0.1-1 +- upgrade to 3.0.1 + - many bugfixes +- handle xattr syscalls on x86-64 (Ulrich Drepper) + +* Fri Aug 12 2005 Jakub Jelinek 3.0.0-3 +- fix amd64 handling of cwtd instruction +- fix amd64 handling of e.g. sarb $0x4,val(%%rip) +- speedup amd64 insn decoding + +* Fri Aug 12 2005 Jakub Jelinek 3.0.0-2 +- lower x86_64 stage2 base from 112TB down to 450GB, so that + valgrind works even on 2.4.x kernels. Still way better than + 1.75GB that stock valgrind allows + +* Fri Aug 12 2005 Jakub Jelinek 3.0.0-1 +- upgrade to 3.0.0 + - x86_64 support +- temporarily obsolete valgrind-callgrind, as it has not been + ported yet + +* Tue Jul 12 2005 Jakub Jelinek 2.4.0-3 +- build some insn tests with -mmmx, -msse or -msse2 (#161572) +- handle glibc-2.3.90 the same way as 2.3.[0-5] + +* Wed Mar 30 2005 Jakub Jelinek 2.4.0-2 +- resurrect the non-upstreamed part of valgrind_h patch +- remove 2.1.2-4G patch, seems to be upstreamed +- resurrect passing -fno-builtin in memcheck tests + +* Sun Mar 27 2005 Colin Walters 2.4.0-1 +- New upstream version +- Update valgrind-2.2.0-regtest.patch to 2.4.0; required minor + massaging +- Disable valgrind-2.1.2-4G.patch for now; Not going to touch this, + and Fedora does not ship 4G kernel by default anymore +- Remove upstreamed valgrind-2.2.0.ioctls.patch +- Remove obsolete valgrind-2.2.0-warnings.patch; Code is no longer + present +- Remove upstreamed valgrind-2.2.0-valgrind_h.patch +- Remove obsolete valgrind-2.2.0-unnest.patch and + valgrind-2.0.0-pthread-stacksize.patch; valgrind no longer + includes its own pthread library + +* Thu Mar 17 2005 Jakub Jelinek 2.2.0-10 +- rebuilt with GCC 4 + +* Tue Feb 8 2005 Jakub Jelinek 2.2.0-8 +- avoid unnecessary use of nested functions for pthread_once + cleanup + +* Mon Dec 6 2004 Jakub Jelinek 2.2.0-7 +- update URL (#141873) + +* Tue Nov 16 2004 Jakub Jelinek 2.2.0-6 +- act as if NVALGRIND is defined when using + in non-m32/i386 programs (#138923) +- remove weak from VALGRIND_PRINTF*, make it static and + add unused attribute + +* Mon Nov 8 2004 Jakub Jelinek 2.2.0-4 +- fix a printout and possible problem with local variable + usage around setjmp (#138254) + +* Tue Oct 5 2004 Jakub Jelinek 2.2.0-3 +- remove workaround for buggy old makes (#134563) + +* Fri Oct 1 2004 Jakub Jelinek 2.2.0-2 +- handle some more ioctls (Peter Jones, #131967) + +* Thu Sep 2 2004 Jakub Jelinek 2.2.0-1 +- update to 2.2.0 + +* Thu Jul 22 2004 Jakub Jelinek 2.1.2-3 +- fix packaging of documentation + +* Tue Jul 20 2004 Jakub Jelinek 2.1.2-2 +- allow tracing of 32-bit binaries on x86-64 + +* Tue Jul 20 2004 Jakub Jelinek 2.1.2-1 +- update to 2.1.2 +- run make regtest as part of package build +- use glibc-2.3 suppressions instead of glibc-2.2 suppressions + +* Thu Apr 29 2004 Colin Walters 2.0.0-1 +- update to 2.0.0 + +* Tue Feb 25 2003 Jeff Johnson 1.9.4-0.20030228 +- update to 1.9.4 from CVS. +- dwarf patch from Graydon Hoare. +- sysinfo patch from Graydon Hoare, take 1. + +* Fri Feb 14 2003 Jeff Johnson 1.9.3-6.20030207 +- add return codes to syscalls. +- fix: set errno after syscalls. + +* Tue Feb 11 2003 Graydon Hoare 1.9.3-5.20030207 +- add handling for separate debug info (+fix). +- handle blocking readv/writev correctly. +- comment out 4 overly zealous pthread checks. + +* Tue Feb 11 2003 Jeff Johnson 1.9.3-4.20030207 +- move _pthread_desc to vg_include.h. +- implement pthread_mutex_timedlock(). +- implement pthread_barrier_wait(). + +* Mon Feb 10 2003 Jeff Johnson 1.9.3-3.20030207 +- import all(afaik) missing functionality from linuxthreads. + +* Sun Feb 9 2003 Jeff Johnson 1.9.3-2.20030207 +- import more missing functionality from linuxthreads in glibc-2.3.1. + +* Sat Feb 8 2003 Jeff Johnson 1.9.3-1.20030207 +- start fixing nptl test cases. + +* Fri Feb 7 2003 Jeff Johnson 1.9.3-0.20030207 +- build against current 1.9.3 with nptl hacks. + +* Tue Oct 15 2002 Alexander Larsson +- Update to 1.0.4 + +* Fri Aug 9 2002 Alexander Larsson +- Update to 1.0.0 + +* Wed Jul 3 2002 Alexander Larsson +- Update to pre4. + +* Tue Jun 18 2002 Alexander Larsson +- Add threadkeys and extra suppressions patches. Bump epoch. + +* Mon Jun 17 2002 Alexander Larsson +- Updated to 1.0pre1 + +* Tue May 28 2002 Alex Larsson +- Updated to 20020524. Added GLIBC_PRIVATE patch + +* Thu May 9 2002 Jonathan Blandford +- add missing symbol __pthread_clock_settime + +* Wed May 8 2002 Alex Larsson +- Update to 20020508 + +* Mon May 6 2002 Alex Larsson +- Update to 20020503b + +* Thu May 2 2002 Alex Larsson +- update to new snapshot + +* Mon Apr 29 2002 Alex Larsson 20020428-1 +- update to new snapshot + +* Fri Apr 26 2002 Jeremy Katz 20020426-1 +- update to new snapshot + +* Thu Apr 25 2002 Alex Larsson 20020424-5 +- Added stack patch. Commented out other patches. + +* Wed Apr 24 2002 Nalin Dahyabhai 20020424-4 +- filter out GLIBC_PRIVATE requires, add preload patch + +* Wed Apr 24 2002 Alex Larsson 20020424-3 +- Make glibc 2.2 and XFree86 4 the default supressions + +* Wed Apr 24 2002 Alex Larsson 20020424-2 +- Added patch that includes atomic.h + +* Wed Apr 24 2002 Alex Larsson 20020424-1 +- Initial build