diff --git a/.devtoolset-4-valgrind.metadata b/.devtoolset-4-valgrind.metadata new file mode 100644 index 0000000..c8ef927 --- /dev/null +++ b/.devtoolset-4-valgrind.metadata @@ -0,0 +1 @@ +15518427de842547ffa84eff8b2b67f3b16581a8 SOURCES/valgrind-3.10.1.tar.bz2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..103b81d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/valgrind-3.10.1.tar.bz2 diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/valgrind-3.10-1-ppc64-sigpending.patch b/SOURCES/valgrind-3.10-1-ppc64-sigpending.patch new file mode 100644 index 0000000..bffd8f5 --- /dev/null +++ b/SOURCES/valgrind-3.10-1-ppc64-sigpending.patch @@ -0,0 +1,23 @@ +commit b389b1806babbbf54cf92fe4c34c855a070a3cf4 +Author: mjw +Date: Wed Apr 22 15:29:03 2015 +0000 + + Enable rt_sigpending syscall on ppc64 linux. + + Patch from Thomas Huth + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15133 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index ba4116d..6f3c1f7 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -988,7 +988,7 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_rt_sigaction, sys_rt_sigaction), // 173 + LINXY(__NR_rt_sigprocmask, sys_rt_sigprocmask), // 174 + +-// _____(__NR_rt_sigpending, sys_rt_sigpending), // 175 ++ LINXY(__NR_rt_sigpending, sys_rt_sigpending), // 175 + LINXY(__NR_rt_sigtimedwait, sys_rt_sigtimedwait), // 176 + LINXY(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo), // 177 + LINX_(__NR_rt_sigsuspend, sys_rt_sigsuspend), // 178 diff --git a/SOURCES/valgrind-3.10-s390-spechelper.patch b/SOURCES/valgrind-3.10-s390-spechelper.patch new file mode 100644 index 0000000..c4ffcab --- /dev/null +++ b/SOURCES/valgrind-3.10-s390-spechelper.patch @@ -0,0 +1,25 @@ +commit d1d90974d5239151892742b11dd26cf12055aade +Author: cborntra +Date: Thu Feb 5 11:05:10 2015 +0000 + + Fix bug 343802. We need to handle one more special case in the spechelper + + + git-svn-id: svn://svn.valgrind.org/vex/trunk@3083 8f6e269a-dfd6-0310-a8e1-e2731360e62c + +diff --git a/VEX/priv/guest_s390_helpers.c b/VEX/priv/guest_s390_helpers.c +index 78ca2ef..df1f24b 100644 +--- a/VEX/priv/guest_s390_helpers.c ++++ b/VEX/priv/guest_s390_helpers.c +@@ -1958,7 +1958,10 @@ guest_s390x_spechelper(const HChar *function_name, IRExpr **args, + return unop(Iop_1Uto32, binop(Iop_CmpNE64, cc_dep1, mkU64(0))); + } + if (cond == 4 || cond == 4 + 1) { +- return unop(Iop_1Uto32, binop(Iop_CmpLT64S, cc_dep1, mkU64(0))); ++ /* Special case cc_dep < 0. Only check the MSB to avoid bogus ++ memcheck complaints due to gcc magic. Fixes 343802 ++ */ ++ return unop(Iop_64to32, binop(Iop_Shr64, cc_dep1, mkU8(63))); + } + if (cond == 8 + 4 || cond == 8 + 4 + 1) { + return unop(Iop_1Uto32, binop(Iop_CmpLE64S, cc_dep1, mkU64(0))); diff --git a/SOURCES/valgrind-3.10.1-aarch64-syscalls.patch b/SOURCES/valgrind-3.10.1-aarch64-syscalls.patch new file mode 100644 index 0000000..389b841 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-aarch64-syscalls.patch @@ -0,0 +1,191 @@ +commit 143af81290bd49c76c46267d64baea896df50c40 +Author: sewardj +Date: Mon Nov 24 16:19:48 2014 +0000 + + Enable sys_flock on arm64-linux. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14777 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index cd27ad2..d90dcb6 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -880,6 +880,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_inotify_add_watch, sys_inotify_add_watch), // 27 + LINX_(__NR_inotify_rm_watch, sys_inotify_rm_watch), // 28 + LINXY(__NR_ioctl, sys_ioctl), // 29 ++ GENX_(__NR_flock, sys_flock), // 32 + LINX_(__NR_mknodat, sys_mknodat), // 33 + LINX_(__NR_mkdirat, sys_mkdirat), // 34 + LINX_(__NR_unlinkat, sys_unlinkat), // 35 +@@ -1183,7 +1184,6 @@ static SyscallTableEntry syscall_main_table[] = { + //ZZ LINXY(__NR__llseek, sys_llseek), // 140 + //ZZ GENXY(__NR_getdents, sys_getdents), // 141 + //ZZ GENX_(__NR__newselect, sys_select), // 142 +-//ZZ GENX_(__NR_flock, sys_flock), // 143 + //ZZ + //ZZ LINXY(__NR__sysctl, sys_sysctl), // 149 + //ZZ +commit 9ae3282faa77f89c43fdd97186875ff8da90fff9 +Author: sewardj +Date: Thu Feb 5 15:28:28 2015 +0000 + + Enable sys_mbind, sys_get_mempolicy, sys_set_mempolicy on arm64-linux. + Patch from Hideaki Kimura (hideaki.kimura@gmail.com). Fixes #342038. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14907 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index a72392f..16df466 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -1032,6 +1032,9 @@ static SyscallTableEntry syscall_main_table[] = { + GENX_(__NR_mlock, sys_mlock), // 228 + GENX_(__NR_mlockall, sys_mlockall), // 230 + GENX_(__NR_madvise, sys_madvise), // 233 ++ LINX_(__NR_mbind, sys_mbind), // 235 ++ LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 236 ++ LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 237 + GENXY(__NR_wait4, sys_wait4), // 260 + + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 +commit 9ee89cddf19b6ab8f45e8546ef73d3e4e997ad2f +Author: mjw +Date: Sat Feb 7 22:36:48 2015 +0000 + + Bug 343732 - Unhandled syscall 144 (setgid) on aarch64. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14916 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 16df466..ed66227 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -959,6 +959,7 @@ static SyscallTableEntry syscall_main_table[] = { + GENX_(__NR_setpriority, sys_setpriority), // 140 + GENX_(__NR_getpriority, sys_getpriority), // 141 + GENX_(__NR_setregid, sys_setregid), // 143 ++ GENX_(__NR_setgid, sys_setgid), // 144 + GENX_(__NR_setreuid, sys_setreuid), // 145 + LINX_(__NR_setresuid, sys_setresuid), // 147 + LINXY(__NR_getresuid, sys_getresuid), // 148 +@@ -1091,7 +1092,6 @@ static SyscallTableEntry syscall_main_table[] = { + //ZZ LINXY(__NR_pipe, sys_pipe), // 42 + //ZZ // GENX_(__NR_prof, sys_ni_syscall), // 44 + +-//ZZ LINX_(__NR_setgid, sys_setgid16), // 46 + //ZZ LINX_(__NR_getgid, sys_getgid16), // 47 + //ZZ //zz // (__NR_signal, sys_signal), // 48 */* (ANSI C) + //ZZ LINX_(__NR_geteuid, sys_geteuid16), // 49 +commit ae70db15b2f8e013bd8a3874d3d6716eb5b8e48c +Author: mjw +Date: Sat Feb 7 22:58:51 2015 +0000 + + Bug 343733 Unhandled syscall 187 (msgctl and related) on aarch64 + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14917 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index ed66227..c23e6f7 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -992,6 +992,10 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_mq_timedreceive, sys_mq_timedreceive), // 183 + LINX_(__NR_mq_notify, sys_mq_notify), // 184 + LINXY(__NR_mq_getsetattr, sys_mq_getsetattr), // 185 ++ LINX_(__NR_msgget, sys_msgget), // 186 ++ LINXY(__NR_msgctl, sys_msgctl), // 187 ++ LINXY(__NR_msgrcv, sys_msgrcv), // 188 ++ LINX_(__NR_msgsnd, sys_msgsnd), // 189 + LINX_(__NR_semget, sys_semget), // 190 + LINXY(__NR_semctl, sys_semctl), // 191 + LINX_(__NR_semtimedop, sys_semtimedop), // 192 +@@ -1323,10 +1327,6 @@ static SyscallTableEntry syscall_main_table[] = { + //ZZ LINXY(__NR_recvfrom, sys_recvfrom), // 292 + //ZZ LINX_(__NR_semget, sys_semget), // 299 + //ZZ LINXY(__NR_semctl, sys_semctl), // 300 +-//ZZ LINX_(__NR_msgget, sys_msgget), +-//ZZ LINX_(__NR_msgsnd, sys_msgsnd), +-//ZZ LINXY(__NR_msgrcv, sys_msgrcv), +-//ZZ LINXY(__NR_msgctl, sys_msgctl), // 304 + //ZZ + //ZZ LINX_(__NR_request_key, sys_request_key), // 287 + //ZZ // LINX_(__NR_ioprio_set, sys_ioprio_set), // 289 +commit c79fe53e9e31d5c8e5d2ad3a0943b21e84129ccb +Author: mjw +Date: Tue Feb 10 13:39:04 2015 +0000 + + Bug #344007 accept4 syscall unhandled on arm64 (242) and ppc64 (344) + + ppc64 might fall back to socketcall in some cases, but arm64 always uses + accept4 syscall directly. Some (confusing) background on when/how glibc + (wrongly) decides to use a direct accept4 or the socketcall system call: + https://sourceware.org/ml/libc-alpha/2013-12/msg00014.html + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14926 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index c23e6f7..1f9670a 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -1040,6 +1040,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_mbind, sys_mbind), // 235 + LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 236 + LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 237 ++ LINXY(__NR_accept4, sys_accept4), // 242 + GENXY(__NR_wait4, sys_wait4), // 260 + + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 +@@ -1379,8 +1380,6 @@ static SyscallTableEntry syscall_main_table[] = { + //ZZ LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 363 + //ZZ LINXY(__NR_perf_event_open, sys_perf_event_open), // 364 + //ZZ +-//ZZ LINXY(__NR_accept4, sys_accept4), // 366 +-//ZZ + //ZZ LINXY(__NR_name_to_handle_at, sys_name_to_handle_at),// 370 + //ZZ LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 371 + //ZZ LINXY(__NR_clock_adjtime, sys_clock_adjtime) // 372 +commit 52e770f94992d381dc1dbe104770ebc8cb9937c4 +Author: mjw +Date: Wed Feb 18 14:23:17 2015 +0000 + + Bug #344307 2 unhandled syscalls on aarch64/arm64: umount2(39), mount (40) + + Reporter: Branislav Blaskovic, bblaskov@redhat.com + Patch: Robin Hack, rhack@redhat.com + Test: Miloš Prchlík, mprchlik@redhat.com + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14944 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 7b7e824..fc6ca08 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -887,6 +887,9 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_linkat, sys_linkat), // 37 + LINX_(__NR_renameat, sys_renameat), // 38 + ++ LINX_(__NR_umount2, sys_umount), // 39 ++ LINX_(__NR_mount, sys_mount), // 40 ++ + // FIXME IS THIS CORRECT? it may well not be. + GENXY(__NR3264_statfs, sys_statfs), // 43 + GENXY(__NR3264_fstatfs, sys_fstatfs), // 44 +@@ -1075,7 +1078,6 @@ static SyscallTableEntry syscall_main_table[] = { + //ZZ LINX_(__NR_lseek, sys_lseek), // 19 + //ZZ + //ZZ GENX_(__NR_getpid, sys_getpid), // 20 +-//ZZ LINX_(__NR_mount, sys_mount), // 21 + //ZZ LINX_(__NR_umount, sys_oldumount), // 22 + //ZZ LINX_(__NR_setuid, sys_setuid16), // 23 ## P + //ZZ LINX_(__NR_getuid, sys_getuid16), // 24 ## P +@@ -1107,7 +1109,6 @@ static SyscallTableEntry syscall_main_table[] = { + //ZZ + //ZZ LINX_(__NR_getegid, sys_getegid16), // 50 + //ZZ GENX_(__NR_acct, sys_acct), // 51 +-//ZZ LINX_(__NR_umount2, sys_umount), // 52 + //ZZ // GENX_(__NR_lock, sys_ni_syscall), // 53 + //ZZ + //ZZ LINXY(__NR_fcntl, sys_fcntl), // 55 diff --git a/SOURCES/valgrind-3.10.1-arm-process_vm_readv_writev.patch b/SOURCES/valgrind-3.10.1-arm-process_vm_readv_writev.patch new file mode 100644 index 0000000..d713927 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-arm-process_vm_readv_writev.patch @@ -0,0 +1,25 @@ +commit ca799bc50411fe5a0cf79e60e97a2c3a0a2afdda +Author: mjw +Date: Tue Jun 2 18:17:44 2015 +0000 + + Enable process_vm_readv/writev syscall on arm32. + + This makes none/tests/process_vm_readv_writev.vgtest pass on arm32. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15304 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index f8f56f5..32c41ca 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -1214,6 +1214,10 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 372 + LINX_(__NR_syncfs, sys_syncfs), // 373 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 374 ++ ++ LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 376 ++ LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 377 ++ + LINXY(__NR_getrandom, sys_getrandom), // 384 + LINXY(__NR_memfd_create, sys_memfd_create) // 385 + }; diff --git a/SOURCES/valgrind-3.10.1-cfi-redzone.patch b/SOURCES/valgrind-3.10.1-cfi-redzone.patch new file mode 100644 index 0000000..1515495 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-cfi-redzone.patch @@ -0,0 +1,102 @@ +commit 41d3053e27e5be8f5d3f7e6f2880e046b43387be +Author: philippe +Date: Thu Jun 4 19:44:47 2015 +0000 + + On platforms that have an accessible redzone below the SP, the unwind logic + should be able to access the redzone. + So, when computing fp_min, substract the redzone. + Currently, only amd64 and ppc64 have a non 0 redzone. + + Regtested on amd64 and ppc64le, no regression. + + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15309 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +--- valgrind-3.10.1/coregrind/m_stacktrace.c.orig 2014-11-25 20:41:21.000000000 +0100 ++++ valgrind-3.10.1/coregrind/m_stacktrace.c 2015-06-07 16:20:31.962739322 +0200 +@@ -76,7 +76,20 @@ + } \ + } + +- ++/* Note about calculation of fp_min : fp_min is the lowest address ++ which can be accessed during unwinding. This is SP - VG_STACK_REDZONE_SZB. ++ On most platforms, this will be equal to SP (as VG_STACK_REDZONE_SZB ++ is 0). However, on some platforms (e.g. amd64), there is an accessible ++ redzone below the SP. Some CFI unwind info are generated, taking this ++ into account. As an example, the following is a CFI unwind info on ++ amd64 found for a 'retq' instruction: ++[0x400f7e .. 0x400f7e]: let cfa=oldSP+8 in RA=*(cfa+-8) SP=cfa+0 BP=*(cfa+-16) ++ 0x400f7e: retq ++ As you can see, the previous BP is found 16 bytes below the cfa, which ++ is the oldSP+8. So, effectively, the BP is found 8 bytes below the SP. ++ The fp_min must take this into account, otherwise, VG_(use_CF_info) will ++ not unwind the BP. */ ++ + /* ------------------------ x86 ------------------------- */ + + #if defined(VGP_x86_linux) || defined(VGP_x86_darwin) +@@ -192,7 +205,7 @@ + uregs.xip = (Addr)startRegs->r_pc; + uregs.xsp = (Addr)startRegs->r_sp; + uregs.xbp = startRegs->misc.X86.r_ebp; +- Addr fp_min = uregs.xsp; ++ Addr fp_min = uregs.xsp - VG_STACK_REDZONE_SZB; + + /* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1], + stopping when the trail goes cold, which we guess to be +@@ -473,7 +486,7 @@ + uregs.xip = startRegs->r_pc; + uregs.xsp = startRegs->r_sp; + uregs.xbp = startRegs->misc.AMD64.r_rbp; +- Addr fp_min = uregs.xsp; ++ Addr fp_min = uregs.xsp - VG_STACK_REDZONE_SZB; + + /* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1], + stopping when the trail goes cold, which we guess to be +@@ -654,7 +667,7 @@ + # elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux) + Addr lr = startRegs->misc.PPC64.r_lr; + # endif +- Addr fp_min = sp; ++ Addr fp_min = sp - VG_STACK_REDZONE_SZB; + + /* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1], + stopping when the trail goes cold, which we guess to be +@@ -917,7 +930,7 @@ + uregs.r12 = startRegs->misc.ARM.r12; + uregs.r11 = startRegs->misc.ARM.r11; + uregs.r7 = startRegs->misc.ARM.r7; +- Addr fp_min = uregs.r13; ++ Addr fp_min = uregs.r13 - VG_STACK_REDZONE_SZB; + + /* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1], + stopping when the trail goes cold, which we guess to be +@@ -1061,7 +1074,7 @@ + uregs.sp = startRegs->r_sp; + uregs.x30 = startRegs->misc.ARM64.x30; + uregs.x29 = startRegs->misc.ARM64.x29; +- Addr fp_min = uregs.sp; ++ Addr fp_min = uregs.sp - VG_STACK_REDZONE_SZB; + + /* Snaffle IPs from the client's stack into ips[0 .. max_n_ips-1], + stopping when the trail goes cold, which we guess to be +@@ -1155,7 +1168,7 @@ + D3UnwindRegs uregs; + uregs.ia = startRegs->r_pc; + uregs.sp = startRegs->r_sp; +- Addr fp_min = uregs.sp; ++ Addr fp_min = uregs.sp - VG_STACK_REDZONE_SZB; + uregs.fp = startRegs->misc.S390X.r_fp; + uregs.lr = startRegs->misc.S390X.r_lr; + +@@ -1238,7 +1251,7 @@ + D3UnwindRegs uregs; + uregs.pc = startRegs->r_pc; + uregs.sp = startRegs->r_sp; +- Addr fp_min = uregs.sp; ++ Addr fp_min = uregs.sp - VG_STACK_REDZONE_SZB; + + #if defined(VGP_mips32_linux) + uregs.fp = startRegs->misc.MIPS32.r30; diff --git a/SOURCES/valgrind-3.10.1-demangle-q.patch b/SOURCES/valgrind-3.10.1-demangle-q.patch new file mode 100644 index 0000000..2cc45d6 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-demangle-q.patch @@ -0,0 +1,75 @@ +commit 3d62ad9a0158a1fe56cf3cff9fc49bfb6d504b27 +Author: florian +Date: Mon Nov 24 22:30:49 2014 +0000 + + Change the testcase to not depend on the type of 'this' in the output. + GCC 4.9.2 and GCC 4.8.x have different opinions about that variable's type. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14780 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/memcheck/tests/demangle.cpp b/memcheck/tests/demangle.cpp +index 6fb2b98..ff15fe1 100644 +--- a/memcheck/tests/demangle.cpp ++++ b/memcheck/tests/demangle.cpp +@@ -16,7 +16,7 @@ class magic { + public: + T xyzzy(T *p) + { +- return (new abc::def)->xyzzy(p, 0); ++ return (new abc::def)->xyzzy(p, 0); + } + }; + +diff --git a/memcheck/tests/demangle.stderr.exp b/memcheck/tests/demangle.stderr.exp +index b79c638..2124517 100644 +--- a/memcheck/tests/demangle.stderr.exp ++++ b/memcheck/tests/demangle.stderr.exp +@@ -1,6 +1,6 @@ + + Conditional jump or move depends on uninitialised value(s) +- at 0x........: abc::def* const>::xyzzy(int*, magic* const*) (demangle.cpp:9) ++ at 0x........: abc::def >::xyzzy(int*, magic*) (demangle.cpp:9) + by 0x........: magic::xyzzy(int*) (demangle.cpp:19) + by 0x........: main (demangle.cpp:27) + +commit 79a59b53abd68d3d5df2f77bfbe23d6c3eab0e4b +Author: mjw +Date: Wed Jun 3 09:52:00 2015 +0000 + + Run memcheck/tests/demangle with -q. + + The interesting part is the demangled backtrace in the error message. + Suppress the memory allocation/blocks summary which can differ slightly + depending on the underlying arch/libs. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15308 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/memcheck/tests/demangle.stderr.exp b/memcheck/tests/demangle.stderr.exp +index 2124517..6e7467d 100644 +--- a/memcheck/tests/demangle.stderr.exp ++++ b/memcheck/tests/demangle.stderr.exp +@@ -1,16 +1,5 @@ +- + Conditional jump or move depends on uninitialised value(s) + at 0x........: abc::def >::xyzzy(int*, magic*) (demangle.cpp:9) + by 0x........: magic::xyzzy(int*) (demangle.cpp:19) + by 0x........: main (demangle.cpp:27) + +- +-HEAP SUMMARY: +- in use at exit: 6 bytes in 3 blocks +- total heap usage: 3 allocs, 0 frees, 6 bytes allocated +- +-For a detailed leak analysis, rerun with: --leak-check=full +- +-For counts of detected and suppressed errors, rerun with: -v +-Use --track-origins=yes to see where uninitialised values come from +-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) +diff --git a/memcheck/tests/demangle.vgtest b/memcheck/tests/demangle.vgtest +index f6ae038..b65b6d3 100644 +--- a/memcheck/tests/demangle.vgtest ++++ b/memcheck/tests/demangle.vgtest +@@ -1 +1,2 @@ + prog: demangle ++vgopts: -q diff --git a/SOURCES/valgrind-3.10.1-di_notify_mmap.patch b/SOURCES/valgrind-3.10.1-di_notify_mmap.patch new file mode 100644 index 0000000..f6aa612 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-di_notify_mmap.patch @@ -0,0 +1,11 @@ +--- valgrind-3.10.1/coregrind/m_debuginfo/debuginfo.c.orig 2015-07-06 00:21:14.252904153 +0200 ++++ valgrind-3.10.1/coregrind/m_debuginfo/debuginfo.c 2015-07-06 00:22:30.975591973 +0200 +@@ -925,7 +925,7 @@ + + /* Note the details about the mapping. */ + struct _DebugInfoMapping map; +- map.avma = a; ++ map.avma = seg->start; + map.size = seg->end + 1 - seg->start; + map.foff = seg->offset; + map.rx = is_rx_map; diff --git a/SOURCES/valgrind-3.10.1-fno-ipa-icf.patch b/SOURCES/valgrind-3.10.1-fno-ipa-icf.patch new file mode 100644 index 0000000..428ed3a --- /dev/null +++ b/SOURCES/valgrind-3.10.1-fno-ipa-icf.patch @@ -0,0 +1,1920 @@ +commit d343ed4f0f11f2902d3ca858a4a0ecb8f1685587 +Author: mjw +Date: Tue Jun 2 20:23:06 2015 +0000 + + GCC 5.1 is too smart. Disable Identical Code Folding for preload libs. + + We want to disabled Identical Code Folding for the tools preload shared + objects to get better backraces. For GCC 5.1 -fipa-icf is enabled by + default at -O2. + + The optimization reduces code size and may disturb + unwind stacks by replacing a function by equivalent + one with a different name. + + Add a configure check to see if GCC supports -fno-ipa-icf. + If it does then add the flag to AM_CFLAGS_PSO_BASE. + + Without this GCC will notice some of the preload replacement functions + in vg_replace_strmem are identical and fold them all into one picking + a random (existing) function name. This causes backtraces showing + completely unexpected function names. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15305 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/Makefile.all.am b/Makefile.all.am +index d587548..a04cb4a 100644 +--- a/Makefile.all.am ++++ b/Makefile.all.am +@@ -133,10 +133,10 @@ endif + if VGCONF_OS_IS_DARWIN + AM_CFLAGS_PSO_BASE = -dynamic \ + -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +- -fpic -fPIC -fno-builtin ++ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + else + AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +- -fpic -fno-builtin ++ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + endif + + +--- valgrind-3.10.1/configure.ac.orig 2015-06-03 14:28:49.535167119 +0200 ++++ valgrind-3.10.1/configure.ac 2015-06-03 14:29:16.594455917 +0200 +@@ -1744,6 +1744,32 @@ + CXXFLAGS="$CXXFLAGS -fno-stack-protector" + fi + ++# Does GCC support disabling Identical Code Folding? ++# We want to disabled Identical Code Folding for the ++# tools preload shared objects to get better backraces. ++# For GCC 5.1+ -fipa-icf is enabled by default at -O2. ++# "The optimization reduces code size and may disturb ++# unwind stacks by replacing a function by equivalent ++# one with a different name." ++AC_MSG_CHECKING([if gcc accepts -fno-ipa-icf]) ++ ++safe_CFLAGS=$CFLAGS ++CFLAGS="-fno-ipa-icf" ++ ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[ ++ return 0; ++]])], [ ++no_ipa_icf=yes ++FLAG_FNO_IPA_ICF="-fno-ipa-icf" ++AC_MSG_RESULT([yes]) ++], [ ++no_ipa_icf=no ++FLAG_FNO_IPA_ICF="" ++AC_MSG_RESULT([no]) ++]) ++CFLAGS=$safe_CFLAGS ++ ++AC_SUBST(FLAG_FNO_IPA_ICF) + + # does this compiler support --param inline-unit-growth=... ? + +Only in valgrind-3.10.1: autom4te.cache +diff -ru valgrind-3.10.1.orig/auxprogs/Makefile.in valgrind-3.10.1/auxprogs/Makefile.in +--- valgrind-3.10.1.orig/auxprogs/Makefile.in 2015-06-03 14:30:23.567170612 +0200 ++++ valgrind-3.10.1/auxprogs/Makefile.in 2015-06-03 14:39:57.289288083 +0200 +@@ -177,6 +177,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -317,7 +318,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -329,7 +330,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/cachegrind/Makefile.in valgrind-3.10.1/cachegrind/Makefile.in +--- valgrind-3.10.1.orig/cachegrind/Makefile.in 2015-06-03 14:30:23.564170581 +0200 ++++ valgrind-3.10.1/cachegrind/Makefile.in 2015-06-03 14:39:57.370288946 +0200 +@@ -231,6 +231,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -372,7 +373,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -384,7 +385,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/cachegrind/tests/Makefile.in valgrind-3.10.1/cachegrind/tests/Makefile.in +--- valgrind-3.10.1.orig/cachegrind/tests/Makefile.in 2015-06-03 14:30:23.563170570 +0200 ++++ valgrind-3.10.1/cachegrind/tests/Makefile.in 2015-06-03 14:39:57.433289617 +0200 +@@ -190,6 +190,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -330,7 +331,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -342,7 +343,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/cachegrind/tests/x86/Makefile.in valgrind-3.10.1/cachegrind/tests/x86/Makefile.in +--- valgrind-3.10.1.orig/cachegrind/tests/x86/Makefile.in 2015-06-03 14:30:23.562170559 +0200 ++++ valgrind-3.10.1/cachegrind/tests/x86/Makefile.in 2015-06-03 14:39:57.489290214 +0200 +@@ -142,6 +142,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -282,7 +283,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -294,7 +295,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/callgrind/Makefile.in valgrind-3.10.1/callgrind/Makefile.in +--- valgrind-3.10.1.orig/callgrind/Makefile.in 2015-06-03 14:30:23.561170548 +0200 ++++ valgrind-3.10.1/callgrind/Makefile.in 2015-06-03 14:39:57.618291589 +0200 +@@ -244,6 +244,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -385,7 +386,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -397,7 +398,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/callgrind/tests/Makefile.in valgrind-3.10.1/callgrind/tests/Makefile.in +--- valgrind-3.10.1.orig/callgrind/tests/Makefile.in 2015-06-03 14:30:23.559170527 +0200 ++++ valgrind-3.10.1/callgrind/tests/Makefile.in 2015-06-03 14:39:57.677292217 +0200 +@@ -183,6 +183,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -323,7 +324,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -335,7 +336,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/config.h.in valgrind-3.10.1/config.h.in +--- valgrind-3.10.1.orig/config.h.in 2015-06-03 14:30:23.624171221 +0200 ++++ valgrind-3.10.1/config.h.in 2015-06-03 14:30:34.000000000 +0200 +@@ -33,62 +33,12 @@ + /* path to GDB */ + #undef GDB_PATH + +-/* Define to 1 if you're using glibc 2.10.x */ +-#undef GLIBC_2_10 ++/* Define to 1 if index() and strlen() have been optimized heavily (x86 glibc ++ >= 2.12) */ ++#undef GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT + +-/* Define to 1 if you're using glibc 2.11.x */ +-#undef GLIBC_2_11 +- +-/* Define to 1 if you're using glibc 2.12.x */ +-#undef GLIBC_2_12 +- +-/* Define to 1 if you're using glibc 2.13.x */ +-#undef GLIBC_2_13 +- +-/* Define to 1 if you're using glibc 2.14.x */ +-#undef GLIBC_2_14 +- +-/* Define to 1 if you're using glibc 2.15.x */ +-#undef GLIBC_2_15 +- +-/* Define to 1 if you're using glibc 2.16.x */ +-#undef GLIBC_2_16 +- +-/* Define to 1 if you're using glibc 2.17.x */ +-#undef GLIBC_2_17 +- +-/* Define to 1 if you're using glibc 2.18.x */ +-#undef GLIBC_2_18 +- +-/* Define to 1 if you're using glibc 2.19.x */ +-#undef GLIBC_2_19 +- +-/* Define to 1 if you're using glibc 2.2.x */ +-#undef GLIBC_2_2 +- +-/* Define to 1 if you're using glibc 2.20.x */ +-#undef GLIBC_2_20 +- +-/* Define to 1 if you're using glibc 2.3.x */ +-#undef GLIBC_2_3 +- +-/* Define to 1 if you're using glibc 2.4.x */ +-#undef GLIBC_2_4 +- +-/* Define to 1 if you're using glibc 2.5.x */ +-#undef GLIBC_2_5 +- +-/* Define to 1 if you're using glibc 2.6.x */ +-#undef GLIBC_2_6 +- +-/* Define to 1 if you're using glibc 2.7.x */ +-#undef GLIBC_2_7 +- +-/* Define to 1 if you're using glibc 2.8.x */ +-#undef GLIBC_2_8 +- +-/* Define to 1 if you're using glibc 2.9.x */ +-#undef GLIBC_2_9 ++/* Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10) */ ++#undef GLIBC_MANDATORY_STRLEN_REDIRECT + + /* Define to 1 if gcc/as can do Altivec. */ + #undef HAS_ALTIVEC +Only in valgrind-3.10.1: config.h.in~ +diff -ru valgrind-3.10.1.orig/configure valgrind-3.10.1/configure +--- valgrind-3.10.1.orig/configure 2015-06-03 14:30:23.624171221 +0200 ++++ valgrind-3.10.1/configure 2015-06-03 14:40:03.112350132 +0200 +@@ -685,6 +685,7 @@ + DWARF4_FALSE + DWARF4_TRUE + FLAG_UNLIMITED_INLINE_UNIT_GROWTH ++FLAG_FNO_IPA_ICF + FLAG_FNO_STACK_PROTECTOR + FLAG_W_EXTRA + FLAG_W_NO_STATIC_LOCAL_IN_INLINE +@@ -8517,6 +8518,51 @@ + CXXFLAGS="$CXXFLAGS -fno-stack-protector" + fi + ++# Does GCC support disabling Identical Code Folding? ++# We want to disabled Identical Code Folding for the ++# tools preload shared objects to get better backraces. ++# For GCC 5.1+ -fipa-icf is enabled by default at -O2. ++# "The optimization reduces code size and may disturb ++# unwind stacks by replacing a function by equivalent ++# one with a different name." ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if gcc accepts -fno-ipa-icf" >&5 ++$as_echo_n "checking if gcc accepts -fno-ipa-icf... " >&6; } ++ ++safe_CFLAGS=$CFLAGS ++CFLAGS="-fno-ipa-icf" ++ ++cat confdefs.h - <<_ACEOF >conftest.$ac_ext ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ return 0; ++ ++ ; ++ return 0; ++} ++_ACEOF ++if ac_fn_c_try_compile "$LINENO"; then : ++ ++no_ipa_icf=yes ++FLAG_FNO_IPA_ICF="-fno-ipa-icf" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 ++$as_echo "yes" >&6; } ++ ++else ++ ++no_ipa_icf=no ++FLAG_FNO_IPA_ICF="" ++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 ++$as_echo "no" >&6; } ++ ++fi ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++CFLAGS=$safe_CFLAGS ++ ++ + + # does this compiler support --param inline-unit-growth=... ? + +diff -ru valgrind-3.10.1.orig/coregrind/Makefile.in valgrind-3.10.1/coregrind/Makefile.in +--- valgrind-3.10.1.orig/coregrind/Makefile.in 2015-06-03 14:30:23.654171541 +0200 ++++ valgrind-3.10.1/coregrind/Makefile.in 2015-06-03 14:39:58.470300668 +0200 +@@ -811,6 +811,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -951,7 +952,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -963,7 +964,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/docs/Makefile.in valgrind-3.10.1/docs/Makefile.in +--- valgrind-3.10.1.orig/docs/Makefile.in 2015-06-03 14:30:23.669171701 +0200 ++++ valgrind-3.10.1/docs/Makefile.in 2015-06-03 14:39:58.515301147 +0200 +@@ -99,6 +99,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +diff -ru valgrind-3.10.1.orig/drd/Makefile.in valgrind-3.10.1/drd/Makefile.in +--- valgrind-3.10.1.orig/drd/Makefile.in 2015-06-03 14:30:23.623171210 +0200 ++++ valgrind-3.10.1/drd/Makefile.in 2015-06-03 14:39:58.673302831 +0200 +@@ -294,6 +294,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -435,7 +436,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -447,7 +448,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/drd/tests/Makefile.in valgrind-3.10.1/drd/tests/Makefile.in +--- valgrind-3.10.1.orig/drd/tests/Makefile.in 2015-06-03 14:30:23.620171178 +0200 ++++ valgrind-3.10.1/drd/tests/Makefile.in 2015-06-03 14:39:58.842304631 +0200 +@@ -566,6 +566,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -706,7 +707,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -718,7 +719,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-bbv/Makefile.in valgrind-3.10.1/exp-bbv/Makefile.in +--- valgrind-3.10.1.orig/exp-bbv/Makefile.in 2015-06-03 14:30:23.574170687 +0200 ++++ valgrind-3.10.1/exp-bbv/Makefile.in 2015-06-03 14:39:58.915305410 +0200 +@@ -184,6 +184,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -325,7 +326,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -337,7 +338,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-bbv/tests/amd64-linux/Makefile.in valgrind-3.10.1/exp-bbv/tests/amd64-linux/Makefile.in +--- valgrind-3.10.1.orig/exp-bbv/tests/amd64-linux/Makefile.in 2015-06-03 14:30:23.571170655 +0200 ++++ valgrind-3.10.1/exp-bbv/tests/amd64-linux/Makefile.in 2015-06-03 14:39:59.035306688 +0200 +@@ -162,6 +162,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -302,7 +303,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -314,7 +315,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-bbv/tests/arm-linux/Makefile.in valgrind-3.10.1/exp-bbv/tests/arm-linux/Makefile.in +--- valgrind-3.10.1.orig/exp-bbv/tests/arm-linux/Makefile.in 2015-06-03 14:30:23.573170676 +0200 ++++ valgrind-3.10.1/exp-bbv/tests/arm-linux/Makefile.in 2015-06-03 14:39:59.093307306 +0200 +@@ -145,6 +145,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -285,7 +286,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -297,7 +298,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-bbv/tests/Makefile.in valgrind-3.10.1/exp-bbv/tests/Makefile.in +--- valgrind-3.10.1.orig/exp-bbv/tests/Makefile.in 2015-06-03 14:30:23.573170676 +0200 ++++ valgrind-3.10.1/exp-bbv/tests/Makefile.in 2015-06-03 14:39:58.972306017 +0200 +@@ -173,6 +173,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -313,7 +314,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -325,7 +326,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-bbv/tests/ppc32-linux/Makefile.in valgrind-3.10.1/exp-bbv/tests/ppc32-linux/Makefile.in +--- valgrind-3.10.1.orig/exp-bbv/tests/ppc32-linux/Makefile.in 2015-06-03 14:30:23.572170666 +0200 ++++ valgrind-3.10.1/exp-bbv/tests/ppc32-linux/Makefile.in 2015-06-03 14:39:59.154307956 +0200 +@@ -145,6 +145,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -285,7 +286,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -297,7 +298,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-bbv/tests/x86/Makefile.in valgrind-3.10.1/exp-bbv/tests/x86/Makefile.in +--- valgrind-3.10.1.orig/exp-bbv/tests/x86/Makefile.in 2015-06-03 14:30:23.569170634 +0200 ++++ valgrind-3.10.1/exp-bbv/tests/x86/Makefile.in 2015-06-03 14:39:59.274309235 +0200 +@@ -154,6 +154,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -294,7 +295,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -306,7 +307,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-bbv/tests/x86-linux/Makefile.in valgrind-3.10.1/exp-bbv/tests/x86-linux/Makefile.in +--- valgrind-3.10.1.orig/exp-bbv/tests/x86-linux/Makefile.in 2015-06-03 14:30:23.573170676 +0200 ++++ valgrind-3.10.1/exp-bbv/tests/x86-linux/Makefile.in 2015-06-03 14:39:59.212308574 +0200 +@@ -145,6 +145,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -285,7 +286,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -297,7 +298,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-dhat/Makefile.in valgrind-3.10.1/exp-dhat/Makefile.in +--- valgrind-3.10.1.orig/exp-dhat/Makefile.in 2015-06-03 14:30:23.561170548 +0200 ++++ valgrind-3.10.1/exp-dhat/Makefile.in 2015-06-03 14:39:59.347310013 +0200 +@@ -208,6 +208,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -349,7 +350,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -361,7 +362,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-dhat/tests/Makefile.in valgrind-3.10.1/exp-dhat/tests/Makefile.in +--- valgrind-3.10.1.orig/exp-dhat/tests/Makefile.in 2015-06-03 14:30:23.561170548 +0200 ++++ valgrind-3.10.1/exp-dhat/tests/Makefile.in 2015-06-03 14:39:59.384310407 +0200 +@@ -99,6 +99,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +diff -ru valgrind-3.10.1.orig/exp-sgcheck/Makefile.in valgrind-3.10.1/exp-sgcheck/Makefile.in +--- valgrind-3.10.1.orig/exp-sgcheck/Makefile.in 2015-06-03 14:30:23.857173707 +0200 ++++ valgrind-3.10.1/exp-sgcheck/Makefile.in 2015-06-03 14:39:59.479311419 +0200 +@@ -227,6 +227,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -368,7 +369,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -380,7 +381,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/exp-sgcheck/tests/Makefile.in valgrind-3.10.1/exp-sgcheck/tests/Makefile.in +--- valgrind-3.10.1.orig/exp-sgcheck/tests/Makefile.in 2015-06-03 14:30:23.857173707 +0200 ++++ valgrind-3.10.1/exp-sgcheck/tests/Makefile.in 2015-06-03 14:39:59.549312165 +0200 +@@ -170,6 +170,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -310,7 +311,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -322,7 +323,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/gdbserver_tests/Makefile.in valgrind-3.10.1/gdbserver_tests/Makefile.in +--- valgrind-3.10.1.orig/gdbserver_tests/Makefile.in 2015-06-03 14:30:23.689171914 +0200 ++++ valgrind-3.10.1/gdbserver_tests/Makefile.in 2015-06-03 14:39:59.617312890 +0200 +@@ -180,6 +180,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -320,7 +321,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -332,7 +333,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/helgrind/Makefile.in valgrind-3.10.1/helgrind/Makefile.in +--- valgrind-3.10.1.orig/helgrind/Makefile.in 2015-06-03 14:30:23.601170975 +0200 ++++ valgrind-3.10.1/helgrind/Makefile.in 2015-06-03 14:39:59.728314073 +0200 +@@ -259,6 +259,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -400,7 +401,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -412,7 +413,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/helgrind/tests/Makefile.in valgrind-3.10.1/helgrind/tests/Makefile.in +--- valgrind-3.10.1.orig/helgrind/tests/Makefile.in 2015-06-03 14:30:23.597170933 +0200 ++++ valgrind-3.10.1/helgrind/tests/Makefile.in 2015-06-03 14:39:59.839315256 +0200 +@@ -396,6 +396,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -536,7 +537,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -548,7 +549,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/include/Makefile.in valgrind-3.10.1/include/Makefile.in +--- valgrind-3.10.1.orig/include/Makefile.in 2015-06-03 14:30:23.631171295 +0200 ++++ valgrind-3.10.1/include/Makefile.in 2015-06-03 14:39:59.883315724 +0200 +@@ -132,6 +132,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +diff -ru valgrind-3.10.1.orig/lackey/Makefile.in valgrind-3.10.1/lackey/Makefile.in +--- valgrind-3.10.1.orig/lackey/Makefile.in 2015-06-03 14:30:23.602170986 +0200 ++++ valgrind-3.10.1/lackey/Makefile.in 2015-06-03 14:39:59.954316481 +0200 +@@ -184,6 +184,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -325,7 +326,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -337,7 +338,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/lackey/tests/Makefile.in valgrind-3.10.1/lackey/tests/Makefile.in +--- valgrind-3.10.1.orig/lackey/tests/Makefile.in 2015-06-03 14:30:23.602170986 +0200 ++++ valgrind-3.10.1/lackey/tests/Makefile.in 2015-06-03 14:39:59.991316875 +0200 +@@ -102,6 +102,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +diff -ru valgrind-3.10.1.orig/Makefile.in valgrind-3.10.1/Makefile.in +--- valgrind-3.10.1.orig/Makefile.in 2015-06-03 14:30:23.855173685 +0200 ++++ valgrind-3.10.1/Makefile.in 2015-06-03 14:40:02.788346679 +0200 +@@ -210,6 +210,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -351,7 +352,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -363,7 +364,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/Makefile.vex.in valgrind-3.10.1/Makefile.vex.in +--- valgrind-3.10.1.orig/Makefile.vex.in 2015-06-03 14:30:23.565170591 +0200 ++++ valgrind-3.10.1/Makefile.vex.in 2015-06-03 14:39:57.216287305 +0200 +@@ -283,6 +283,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -423,7 +424,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -435,7 +436,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/massif/Makefile.in valgrind-3.10.1/massif/Makefile.in +--- valgrind-3.10.1.orig/massif/Makefile.in 2015-06-03 14:30:23.638171370 +0200 ++++ valgrind-3.10.1/massif/Makefile.in 2015-06-03 14:40:00.072317738 +0200 +@@ -239,6 +239,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -380,7 +381,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -392,7 +393,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/massif/tests/Makefile.in valgrind-3.10.1/massif/tests/Makefile.in +--- valgrind-3.10.1.orig/massif/tests/Makefile.in 2015-06-03 14:30:23.637171359 +0200 ++++ valgrind-3.10.1/massif/tests/Makefile.in 2015-06-03 14:40:00.148318548 +0200 +@@ -223,6 +223,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -363,7 +364,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -375,7 +376,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/Makefile.in valgrind-3.10.1/memcheck/Makefile.in +--- valgrind-3.10.1.orig/memcheck/Makefile.in 2015-06-03 14:30:23.855173685 +0200 ++++ valgrind-3.10.1/memcheck/Makefile.in 2015-06-03 14:40:00.251319646 +0200 +@@ -257,6 +257,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -398,7 +399,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -410,7 +411,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/amd64/Makefile.in valgrind-3.10.1/memcheck/tests/amd64/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/amd64/Makefile.in 2015-06-03 14:30:23.766172736 +0200 ++++ valgrind-3.10.1/memcheck/tests/amd64/Makefile.in 2015-06-03 14:40:00.633323716 +0200 +@@ -190,6 +190,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -330,7 +331,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -342,7 +343,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/amd64-linux/Makefile.in valgrind-3.10.1/memcheck/tests/amd64-linux/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/amd64-linux/Makefile.in 2015-06-03 14:30:23.725172298 +0200 ++++ valgrind-3.10.1/memcheck/tests/amd64-linux/Makefile.in 2015-06-03 14:40:00.564322981 +0200 +@@ -145,6 +145,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -285,7 +286,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -297,7 +298,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/common/Makefile.in valgrind-3.10.1/memcheck/tests/common/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/common/Makefile.in 2015-06-03 14:30:23.696171989 +0200 ++++ valgrind-3.10.1/memcheck/tests/common/Makefile.in 2015-06-03 14:40:00.684324260 +0200 +@@ -124,6 +124,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -264,7 +265,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -276,7 +277,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/darwin/Makefile.in valgrind-3.10.1/memcheck/tests/darwin/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/darwin/Makefile.in 2015-06-03 14:30:23.730172352 +0200 ++++ valgrind-3.10.1/memcheck/tests/darwin/Makefile.in 2015-06-03 14:40:00.746324920 +0200 +@@ -165,6 +165,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -305,7 +306,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -317,7 +318,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/linux/Makefile.in valgrind-3.10.1/memcheck/tests/linux/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/linux/Makefile.in 2015-06-03 14:30:23.728172330 +0200 ++++ valgrind-3.10.1/memcheck/tests/linux/Makefile.in 2015-06-03 14:40:00.814325645 +0200 +@@ -191,6 +191,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -331,7 +332,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -343,7 +344,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/Makefile.in valgrind-3.10.1/memcheck/tests/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/Makefile.in 2015-06-03 14:30:23.780172885 +0200 ++++ valgrind-3.10.1/memcheck/tests/Makefile.in 2015-06-03 14:40:00.500322299 +0200 +@@ -845,6 +845,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -985,7 +986,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -997,7 +998,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/ppc32/Makefile.in valgrind-3.10.1/memcheck/tests/ppc32/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/ppc32/Makefile.in 2015-06-03 14:30:23.693171957 +0200 ++++ valgrind-3.10.1/memcheck/tests/ppc32/Makefile.in 2015-06-03 14:40:00.874326284 +0200 +@@ -142,6 +142,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -282,7 +283,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -294,7 +295,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/ppc64/Makefile.in valgrind-3.10.1/memcheck/tests/ppc64/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/ppc64/Makefile.in 2015-06-03 14:30:23.772172800 +0200 ++++ valgrind-3.10.1/memcheck/tests/ppc64/Makefile.in 2015-06-03 14:40:00.935326934 +0200 +@@ -142,6 +142,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -282,7 +283,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -294,7 +295,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/s390x/Makefile.in valgrind-3.10.1/memcheck/tests/s390x/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/s390x/Makefile.in 2015-06-03 14:30:23.692171946 +0200 ++++ valgrind-3.10.1/memcheck/tests/s390x/Makefile.in 2015-06-03 14:40:01.002327648 +0200 +@@ -166,6 +166,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -306,7 +307,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -318,7 +319,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/vbit-test/Makefile.in valgrind-3.10.1/memcheck/tests/vbit-test/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/vbit-test/Makefile.in 2015-06-03 14:30:23.698172010 +0200 ++++ valgrind-3.10.1/memcheck/tests/vbit-test/Makefile.in 2015-06-03 14:40:01.080328479 +0200 +@@ -164,6 +164,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -304,7 +305,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -316,7 +317,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/x86/Makefile.in valgrind-3.10.1/memcheck/tests/x86/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/x86/Makefile.in 2015-06-03 14:30:23.722172267 +0200 ++++ valgrind-3.10.1/memcheck/tests/x86/Makefile.in 2015-06-03 14:40:01.223330003 +0200 +@@ -192,6 +192,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -332,7 +333,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -344,7 +345,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/memcheck/tests/x86-linux/Makefile.in valgrind-3.10.1/memcheck/tests/x86-linux/Makefile.in +--- valgrind-3.10.1.orig/memcheck/tests/x86-linux/Makefile.in 2015-06-03 14:30:23.777172853 +0200 ++++ valgrind-3.10.1/memcheck/tests/x86-linux/Makefile.in 2015-06-03 14:40:01.144329161 +0200 +@@ -165,6 +165,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -305,7 +306,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -317,7 +318,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/mpi/Makefile.in valgrind-3.10.1/mpi/Makefile.in +--- valgrind-3.10.1.orig/mpi/Makefile.in 2015-06-03 14:30:23.858173717 +0200 ++++ valgrind-3.10.1/mpi/Makefile.in 2015-06-03 14:40:01.290330717 +0200 +@@ -157,6 +157,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -297,7 +298,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -309,7 +310,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/Makefile.in valgrind-3.10.1/none/Makefile.in +--- valgrind-3.10.1.orig/none/Makefile.in 2015-06-03 14:30:24.086176150 +0200 ++++ valgrind-3.10.1/none/Makefile.in 2015-06-03 14:40:01.365331516 +0200 +@@ -182,6 +182,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -323,7 +324,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -335,7 +336,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/amd64/Makefile.in valgrind-3.10.1/none/tests/amd64/Makefile.in +--- valgrind-3.10.1.orig/none/tests/amd64/Makefile.in 2015-06-03 14:30:24.020175446 +0200 ++++ valgrind-3.10.1/none/tests/amd64/Makefile.in 2015-06-03 14:40:01.616334191 +0200 +@@ -389,6 +389,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -529,7 +530,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -541,7 +542,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/arm/Makefile.in valgrind-3.10.1/none/tests/arm/Makefile.in +--- valgrind-3.10.1.orig/none/tests/arm/Makefile.in 2015-06-03 14:30:24.073176012 +0200 ++++ valgrind-3.10.1/none/tests/arm/Makefile.in 2015-06-03 14:40:01.707335160 +0200 +@@ -202,6 +202,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -342,7 +343,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -354,7 +355,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/arm64/Makefile.in valgrind-3.10.1/none/tests/arm64/Makefile.in +--- valgrind-3.10.1.orig/none/tests/arm64/Makefile.in 2015-06-03 14:30:24.000175233 +0200 ++++ valgrind-3.10.1/none/tests/arm64/Makefile.in 2015-06-03 14:40:01.771335843 +0200 +@@ -154,6 +154,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -294,7 +295,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -306,7 +307,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/darwin/Makefile.in valgrind-3.10.1/none/tests/darwin/Makefile.in +--- valgrind-3.10.1.orig/none/tests/darwin/Makefile.in 2015-06-03 14:30:24.008175318 +0200 ++++ valgrind-3.10.1/none/tests/darwin/Makefile.in 2015-06-03 14:40:01.829336460 +0200 +@@ -147,6 +147,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -287,7 +288,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -299,7 +300,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/linux/Makefile.in valgrind-3.10.1/none/tests/linux/Makefile.in +--- valgrind-3.10.1.orig/none/tests/linux/Makefile.in 2015-06-03 14:30:24.005175286 +0200 ++++ valgrind-3.10.1/none/tests/linux/Makefile.in 2015-06-03 14:40:01.888337089 +0200 +@@ -150,6 +150,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -290,7 +291,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -302,7 +303,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/Makefile.in valgrind-3.10.1/none/tests/Makefile.in +--- valgrind-3.10.1.orig/none/tests/Makefile.in 2015-06-03 14:30:24.084176129 +0200 ++++ valgrind-3.10.1/none/tests/Makefile.in 2015-06-03 14:40:01.506333019 +0200 +@@ -535,6 +535,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -675,7 +676,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -687,7 +688,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/mips32/Makefile.in valgrind-3.10.1/none/tests/mips32/Makefile.in +--- valgrind-3.10.1.orig/none/tests/mips32/Makefile.in 2015-06-03 14:30:24.047175734 +0200 ++++ valgrind-3.10.1/none/tests/mips32/Makefile.in 2015-06-03 14:40:01.962337878 +0200 +@@ -221,6 +221,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -361,7 +362,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -373,7 +374,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/mips64/Makefile.in valgrind-3.10.1/none/tests/mips64/Makefile.in +--- valgrind-3.10.1.orig/none/tests/mips64/Makefile.in 2015-06-03 14:30:24.039175649 +0200 ++++ valgrind-3.10.1/none/tests/mips64/Makefile.in 2015-06-03 14:40:02.055338869 +0200 +@@ -276,6 +276,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -416,7 +417,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -428,7 +429,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/ppc32/Makefile.in valgrind-3.10.1/none/tests/ppc32/Makefile.in +--- valgrind-3.10.1.orig/none/tests/ppc32/Makefile.in 2015-06-03 14:30:23.911174283 +0200 ++++ valgrind-3.10.1/none/tests/ppc32/Makefile.in 2015-06-03 14:40:02.165340041 +0200 +@@ -291,6 +291,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -431,7 +432,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -443,7 +444,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/ppc64/Makefile.in valgrind-3.10.1/none/tests/ppc64/Makefile.in +--- valgrind-3.10.1.orig/none/tests/ppc64/Makefile.in 2015-06-03 14:30:24.080176086 +0200 ++++ valgrind-3.10.1/none/tests/ppc64/Makefile.in 2015-06-03 14:40:02.267341128 +0200 +@@ -260,6 +260,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -400,7 +401,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -412,7 +413,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/s390x/Makefile.in valgrind-3.10.1/none/tests/s390x/Makefile.in +--- valgrind-3.10.1.orig/none/tests/s390x/Makefile.in 2015-06-03 14:30:23.895174113 +0200 ++++ valgrind-3.10.1/none/tests/s390x/Makefile.in 2015-06-03 14:40:02.407342619 +0200 +@@ -589,6 +589,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -729,7 +730,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -741,7 +742,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/x86/Makefile.in valgrind-3.10.1/none/tests/x86/Makefile.in +--- valgrind-3.10.1.orig/none/tests/x86/Makefile.in 2015-06-03 14:30:23.964174849 +0200 ++++ valgrind-3.10.1/none/tests/x86/Makefile.in 2015-06-03 14:40:02.565344303 +0200 +@@ -338,6 +338,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -478,7 +479,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -490,7 +491,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/none/tests/x86-linux/Makefile.in valgrind-3.10.1/none/tests/x86-linux/Makefile.in +--- valgrind-3.10.1.orig/none/tests/x86-linux/Makefile.in 2015-06-03 14:30:24.082176108 +0200 ++++ valgrind-3.10.1/none/tests/x86-linux/Makefile.in 2015-06-03 14:40:02.463343216 +0200 +@@ -143,6 +143,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -283,7 +284,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -295,7 +296,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/perf/Makefile.in valgrind-3.10.1/perf/Makefile.in +--- valgrind-3.10.1.orig/perf/Makefile.in 2015-06-03 14:30:24.087176161 +0200 ++++ valgrind-3.10.1/perf/Makefile.in 2015-06-03 14:40:02.631345006 +0200 +@@ -176,6 +176,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -316,7 +317,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -328,7 +329,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. +diff -ru valgrind-3.10.1.orig/shared/Makefile.in valgrind-3.10.1/shared/Makefile.in +--- valgrind-3.10.1.orig/shared/Makefile.in 2015-06-03 14:30:23.564170581 +0200 ++++ valgrind-3.10.1/shared/Makefile.in 2015-06-03 14:40:02.665345369 +0200 +@@ -99,6 +99,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +diff -ru valgrind-3.10.1.orig/tests/Makefile.in valgrind-3.10.1/tests/Makefile.in +--- valgrind-3.10.1.orig/tests/Makefile.in 2015-06-03 14:30:23.626171242 +0200 ++++ valgrind-3.10.1/tests/Makefile.in 2015-06-03 14:40:02.728346040 +0200 +@@ -174,6 +174,7 @@ + ECHO_T = @ECHO_T@ + EGREP = @EGREP@ + EXEEXT = @EXEEXT@ ++FLAG_FNO_IPA_ICF = @FLAG_FNO_IPA_ICF@ + FLAG_FNO_STACK_PROTECTOR = @FLAG_FNO_STACK_PROTECTOR@ + FLAG_M32 = @FLAG_M32@ + FLAG_M64 = @FLAG_M64@ +@@ -314,7 +315,7 @@ + -fno-builtin + + @VGCONF_OS_IS_DARWIN_FALSE@AM_CFLAGS_PSO_BASE = -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin ++@VGCONF_OS_IS_DARWIN_FALSE@ -fpic -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # These flags are used for building the preload shared objects (PSOs). +@@ -326,7 +327,7 @@ + # results in segfaults like (eg) #324050. + @VGCONF_OS_IS_DARWIN_TRUE@AM_CFLAGS_PSO_BASE = -dynamic \ + @VGCONF_OS_IS_DARWIN_TRUE@ -O -g -fno-omit-frame-pointer -fno-strict-aliasing \ +-@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin ++@VGCONF_OS_IS_DARWIN_TRUE@ -fpic -fPIC -fno-builtin @FLAG_FNO_IPA_ICF@ + + + # Flags for specific targets. diff --git a/SOURCES/valgrind-3.10.1-glibc-version-check.patch b/SOURCES/valgrind-3.10.1-glibc-version-check.patch new file mode 100644 index 0000000..221a330 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-glibc-version-check.patch @@ -0,0 +1,455 @@ +commit 4f3062b90b12f3e031a1c949c50a79e0d13de485 +Author: bart +Date: Sat Sep 13 10:53:00 2014 +0000 + + configure.ac: Generalize glibc version check + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14530 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/configure.ac b/configure.ac +index ba11ec6..863cd7e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -875,141 +875,41 @@ AC_EGREP_CPP([BIONIC_LIBC], [ + GLIBC_VERSION="bionic") + + +-AC_MSG_CHECKING([the GLIBC_VERSION version]) ++AC_MSG_CHECKING([the glibc version]) + + case "${GLIBC_VERSION}" in + 2.2) +- AC_MSG_RESULT(2.2 family) +- AC_DEFINE([GLIBC_2_2], 1, [Define to 1 if you're using glibc 2.2.x]) ++ AC_MSG_RESULT(${GLIBC_VERSION} family) + DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- +- 2.3) +- AC_MSG_RESULT(2.3 family) +- AC_DEFINE([GLIBC_2_3], 1, [Define to 1 if you're using glibc 2.3.x]) +- DEFAULT_SUPP="glibc-2.3.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- +- 2.4) +- AC_MSG_RESULT(2.4 family) +- AC_DEFINE([GLIBC_2_4], 1, [Define to 1 if you're using glibc 2.4.x]) +- DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- +- 2.5) +- AC_MSG_RESULT(2.5 family) +- AC_DEFINE([GLIBC_2_5], 1, [Define to 1 if you're using glibc 2.5.x]) +- DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.6) +- AC_MSG_RESULT(2.6 family) +- AC_DEFINE([GLIBC_2_6], 1, [Define to 1 if you're using glibc 2.6.x]) +- DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.7) +- AC_MSG_RESULT(2.7 family) +- AC_DEFINE([GLIBC_2_7], 1, [Define to 1 if you're using glibc 2.7.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.8) +- AC_MSG_RESULT(2.8 family) +- AC_DEFINE([GLIBC_2_8], 1, [Define to 1 if you're using glibc 2.8.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.9) +- AC_MSG_RESULT(2.9 family) +- AC_DEFINE([GLIBC_2_9], 1, [Define to 1 if you're using glibc 2.9.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.10) +- AC_MSG_RESULT(2.10 family) +- AC_DEFINE([GLIBC_2_10], 1, [Define to 1 if you're using glibc 2.10.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.11) +- AC_MSG_RESULT(2.11 family) +- AC_DEFINE([GLIBC_2_11], 1, [Define to 1 if you're using glibc 2.11.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.12) +- AC_MSG_RESULT(2.12 family) +- AC_DEFINE([GLIBC_2_12], 1, [Define to 1 if you're using glibc 2.12.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.13) +- AC_MSG_RESULT(2.13 family) +- AC_DEFINE([GLIBC_2_13], 1, [Define to 1 if you're using glibc 2.13.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.14) +- AC_MSG_RESULT(2.14 family) +- AC_DEFINE([GLIBC_2_14], 1, [Define to 1 if you're using glibc 2.14.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" ++ 2.[[3-6]]) ++ AC_MSG_RESULT(${GLIBC_VERSION} family) ++ DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- 2.15) +- AC_MSG_RESULT(2.15 family) +- AC_DEFINE([GLIBC_2_15], 1, [Define to 1 if you're using glibc 2.15.x]) ++ 2.[[7-9]]) ++ AC_MSG_RESULT(${GLIBC_VERSION} family) + DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- 2.16) +- AC_MSG_RESULT(2.16 family) +- AC_DEFINE([GLIBC_2_16], 1, [Define to 1 if you're using glibc 2.16.x]) ++ 2.10|2.11) ++ AC_MSG_RESULT(${GLIBC_VERSION} family) ++ AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1, ++ [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)]) + DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- 2.17) +- AC_MSG_RESULT(2.17 family) +- AC_DEFINE([GLIBC_2_17], 1, [Define to 1 if you're using glibc 2.17.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.18) +- AC_MSG_RESULT(2.18 family) +- AC_DEFINE([GLIBC_2_18], 1, [Define to 1 if you're using glibc 2.18.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.19) +- AC_MSG_RESULT(2.19 family) +- AC_DEFINE([GLIBC_2_19], 1, [Define to 1 if you're using glibc 2.19.x]) +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.20) +- AC_MSG_RESULT(2.20 family) +- AC_DEFINE([GLIBC_2_20], 1, [Define to 1 if you're using glibc 2.20.x]) ++ 2.*) ++ AC_MSG_RESULT(${GLIBC_VERSION} family) ++ AC_DEFINE([GLIBC_MANDATORY_STRLEN_REDIRECT], 1, ++ [Define to 1 if strlen() has been optimized heavily (amd64 glibc >= 2.10)]) ++ AC_DEFINE([GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT], 1, ++ [Define to 1 if index() and strlen() have been optimized heavily (x86 glibc >= 2.12)]) + DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +@@ -1024,10 +924,9 @@ case "${GLIBC_VERSION}" in + AC_DEFINE([BIONIC_LIBC], 1, [Define to 1 if you're using Bionic]) + DEFAULT_SUPP="bionic.supp ${DEFAULT_SUPP}" + ;; +- +- *) ++ 2.0|2.1|*) + AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}]) +- AC_MSG_ERROR([Valgrind requires glibc version 2.2 - 2.19]) ++ AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later]) + AC_MSG_ERROR([or Darwin or Bionic libc]) + ;; + esac +diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c +index 9d3c9b1..9aee707 100644 +--- a/coregrind/m_redir.c ++++ b/coregrind/m_redir.c +@@ -53,7 +53,7 @@ + #include "pub_core_demangle.h" // VG_(maybe_Z_demangle) + #include "pub_core_libcproc.h" // VG_(libdir) + +-#include "config.h" /* GLIBC_2_* */ ++#include "config.h" /* GLIBC_MANDATORY_*_REDIRECT */ + + + /* This module is a critical part of the redirection/intercept system. +@@ -1242,10 +1242,7 @@ void VG_(redir_initialise) ( void ) + start, otherwise ld.so (glibc-2.3.5) makes a lot of noise. */ + if (0==VG_(strcmp)("Memcheck", VG_(details).name)) { + const HChar** mandatory; +-# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \ +- || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \ +- || defined(GLIBC_2_8) || defined(GLIBC_2_9) \ +- || defined(GLIBC_2_10) || defined(GLIBC_2_11) ++# ifndef GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT + mandatory = NULL; + # else + /* for glibc-2.12 and later, this is mandatory - can't sanely +@@ -1282,9 +1279,7 @@ void VG_(redir_initialise) ( void ) + add_hardwired_spec( + "ld-linux-x86-64.so.2", "strlen", + (Addr)&VG_(amd64_linux_REDIR_FOR_strlen), +-# if defined(GLIBC_2_2) || defined(GLIBC_2_3) || defined(GLIBC_2_4) \ +- || defined(GLIBC_2_5) || defined(GLIBC_2_6) || defined(GLIBC_2_7) \ +- || defined(GLIBC_2_8) || defined(GLIBC_2_9) ++# ifndef GLIBC_MANDATORY_STRLEN_REDIRECT + NULL + # else + /* for glibc-2.10 and later, this is mandatory - can't sanely +--- valgrind-3.10.1/configure.orig 2015-02-18 16:53:12.878214576 +0100 ++++ valgrind-3.10.1/configure 2015-02-18 16:54:17.347087203 +0100 +@@ -6645,198 +6645,49 @@ + + + +-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the GLIBC_VERSION version" >&5 +-$as_echo_n "checking the GLIBC_VERSION version... " >&6; } ++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the glibc version" >&5 ++$as_echo_n "checking the glibc version... " >&6; } + + case "${GLIBC_VERSION}" in + 2.2) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.2 family" >&5 +-$as_echo "2.2 family" >&6; } +- +-$as_echo "#define GLIBC_2_2 1" >>confdefs.h +- ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 ++$as_echo "${GLIBC_VERSION} family" >&6; } + DEFAULT_SUPP="glibc-2.2.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.2-LinuxThreads-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- +- 2.3) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.3 family" >&5 +-$as_echo "2.3 family" >&6; } +- +-$as_echo "#define GLIBC_2_3 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.3.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- +- 2.4) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.4 family" >&5 +-$as_echo "2.4 family" >&6; } +- +-$as_echo "#define GLIBC_2_4 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.4.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- +- 2.5) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.5 family" >&5 +-$as_echo "2.5 family" >&6; } +- +-$as_echo "#define GLIBC_2_5 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.5.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.6) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.6 family" >&5 +-$as_echo "2.6 family" >&6; } +- +-$as_echo "#define GLIBC_2_6 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.6.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.7) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.7 family" >&5 +-$as_echo "2.7 family" >&6; } +- +-$as_echo "#define GLIBC_2_7 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.8) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.8 family" >&5 +-$as_echo "2.8 family" >&6; } +- +-$as_echo "#define GLIBC_2_8 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.9) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.9 family" >&5 +-$as_echo "2.9 family" >&6; } +- +-$as_echo "#define GLIBC_2_9 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.10) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.10 family" >&5 +-$as_echo "2.10 family" >&6; } +- +-$as_echo "#define GLIBC_2_10 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.11) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.11 family" >&5 +-$as_echo "2.11 family" >&6; } +- +-$as_echo "#define GLIBC_2_11 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.12) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.12 family" >&5 +-$as_echo "2.12 family" >&6; } +- +-$as_echo "#define GLIBC_2_12 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.13) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.13 family" >&5 +-$as_echo "2.13 family" >&6; } +- +-$as_echo "#define GLIBC_2_13 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.14) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.14 family" >&5 +-$as_echo "2.14 family" >&6; } +- +-$as_echo "#define GLIBC_2_14 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.15) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.15 family" >&5 +-$as_echo "2.15 family" >&6; } +- +-$as_echo "#define GLIBC_2_15 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.16) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.16 family" >&5 +-$as_echo "2.16 family" >&6; } +- +-$as_echo "#define GLIBC_2_16 1" >>confdefs.h +- +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" ++ 2.[3-6]) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 ++$as_echo "${GLIBC_VERSION} family" >&6; } ++ DEFAULT_SUPP="glibc-${GLIBC_VERSION}.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- 2.17) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.17 family" >&5 +-$as_echo "2.17 family" >&6; } +- +-$as_echo "#define GLIBC_2_17 1" >>confdefs.h +- ++ 2.[7-9]) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 ++$as_echo "${GLIBC_VERSION} family" >&6; } + DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- 2.18) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.18 family" >&5 +-$as_echo "2.18 family" >&6; } ++ 2.10|2.11) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 ++$as_echo "${GLIBC_VERSION} family" >&6; } + +-$as_echo "#define GLIBC_2_18 1" >>confdefs.h ++$as_echo "#define GLIBC_MANDATORY_STRLEN_REDIRECT 1" >>confdefs.h + + DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" + ;; +- 2.19) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.19 family" >&5 +-$as_echo "2.19 family" >&6; } ++ 2.*) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${GLIBC_VERSION} family" >&5 ++$as_echo "${GLIBC_VERSION} family" >&6; } + +-$as_echo "#define GLIBC_2_19 1" >>confdefs.h ++$as_echo "#define GLIBC_MANDATORY_STRLEN_REDIRECT 1" >>confdefs.h + +- DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +- DEFAULT_SUPP="glibc-2.X-drd.supp ${DEFAULT_SUPP}" +- ;; +- 2.20) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.20 family" >&5 +-$as_echo "2.20 family" >&6; } + +-$as_echo "#define GLIBC_2_20 1" >>confdefs.h ++$as_echo "#define GLIBC_MANDATORY_INDEX_AND_STRLEN_REDIRECT 1" >>confdefs.h + + DEFAULT_SUPP="glibc-2.X.supp ${DEFAULT_SUPP}" + DEFAULT_SUPP="glibc-2.34567-NPTL-helgrind.supp ${DEFAULT_SUPP}" +@@ -6858,11 +6709,10 @@ + + DEFAULT_SUPP="bionic.supp ${DEFAULT_SUPP}" + ;; +- +- *) ++ 2.0|2.1|*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported version ${GLIBC_VERSION}" >&5 + $as_echo "unsupported version ${GLIBC_VERSION}" >&6; } +- as_fn_error $? "Valgrind requires glibc version 2.2 - 2.19" "$LINENO" 5 ++ as_fn_error $? "Valgrind requires glibc version 2.2 or later" "$LINENO" 5 + as_fn_error $? "or Darwin or Bionic libc" "$LINENO" 5 + ;; + esac diff --git a/SOURCES/valgrind-3.10.1-helgrind-supp-io-mempcpy.patch b/SOURCES/valgrind-3.10.1-helgrind-supp-io-mempcpy.patch new file mode 100644 index 0000000..fd7fdf7 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-helgrind-supp-io-mempcpy.patch @@ -0,0 +1,30 @@ +diff --git a/glibc-2.34567-NPTL-helgrind.supp b/glibc-2.34567-NPTL-helgrind.supp +index b61a339..ed105b8 100644 +--- a/glibc-2.34567-NPTL-helgrind.supp ++++ b/glibc-2.34567-NPTL-helgrind.supp +@@ -23,6 +23,10 @@ + # this, then loads of errors to do with stdio are reported, because + # H fails to see glibc's internal locking/unlocking of FILE*s + # as required by POSIX. A better solution is needed. ++# ++# - some of the stdio functions in newer glibc manipulate stdio ++# FILE*s state through mempcpy, which we intercept, so we also need ++# to suppress such manipulations. + + #{ + # helgrind-glibc2X-001 +@@ -41,6 +45,14 @@ + } + + { ++ helgrind-glibc-io-xsputn-mempcpy ++ Helgrind:Race ++ fun:__GI_mempcpy ++ fun:_IO_*xsputn* ++ obj:*/lib*/libc-2.*so* ++} ++ ++{ + helgrind-glibc2X-005 + Helgrind:Race + obj:*/lib*/libpthread-2.*so* diff --git a/SOURCES/valgrind-3.10.1-kernel-4.0.patch b/SOURCES/valgrind-3.10.1-kernel-4.0.patch new file mode 100644 index 0000000..65b9ed0 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-kernel-4.0.patch @@ -0,0 +1,96 @@ +commit bf803555d10b5b4c9223b24bf13845ee88d8f3b5 +Author: cborntra +Date: Mon Feb 23 20:19:03 2015 +0000 + + Fix configure for Linux kernel >= 4.0-rc1 + In addition raise the minimal Linux version to 2.6 as there is almost + no test coverage for 2.4 and 2.6 was released in 2003. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14955 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/configure.ac b/configure.ac +index fe2897b..ebb0798 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -325,20 +325,14 @@ case "${host_os}" in + kernel=`uname -r` + + case "${kernel}" in +- 2.6.*|3.*) +- AC_MSG_RESULT([2.6.x/3.x family (${kernel})]) +- AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you're using Linux 2.6.x or Linux 3.x]) +- ;; +- +- 2.4.*) +- AC_MSG_RESULT([2.4 family (${kernel})]) +- AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you're using Linux 2.4.x]) +- ;; +- +- *) ++ 0.*|1.*|2.0.*|2.1.*|2.2.*|2.3.*|2.4.*|2.5.*) + AC_MSG_RESULT([unsupported (${kernel})]) +- AC_MSG_ERROR([Valgrind works on kernels 2.4, 2.6]) ++ AC_MSG_ERROR([Valgrind needs a Linux kernel >= 2.6]) + ;; ++ ++ *) ++ AC_MSG_RESULT([2.6 or later (${kernel})]) ++ ;; + esac + + ;; +diff -ur valgrind-3.10.1.orig/config.h.in valgrind-3.10.1/config.h.in +--- valgrind-3.10.1.orig/config.h.in 2015-06-19 11:36:36.495314032 +0200 ++++ valgrind-3.10.1/config.h.in 2015-06-19 11:36:50.000000000 +0200 +@@ -280,12 +280,6 @@ + /* Define to 1 if you have the `utimensat' function. */ + #undef HAVE_UTIMENSAT + +-/* Define to 1 if you're using Linux 2.4.x */ +-#undef KERNEL_2_4 +- +-/* Define to 1 if you're using Linux 2.6.x or Linux 3.x */ +-#undef KERNEL_2_6 +- + /* configured default page size 4k */ + #undef MIPS_PAGE_SHIFT + +diff -ur valgrind-3.10.1.orig/configure valgrind-3.10.1/configure +--- valgrind-3.10.1.orig/configure 2015-06-19 11:36:36.496314042 +0200 ++++ valgrind-3.10.1/configure 2015-06-19 11:36:56.837523466 +0200 +@@ -5554,27 +5554,16 @@ + kernel=`uname -r` + + case "${kernel}" in +- 2.6.*|3.*) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.6.x/3.x family (${kernel})" >&5 +-$as_echo "2.6.x/3.x family (${kernel})" >&6; } +- +-$as_echo "#define KERNEL_2_6 1" >>confdefs.h +- +- ;; +- +- 2.4.*) +- { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.4 family (${kernel})" >&5 +-$as_echo "2.4 family (${kernel})" >&6; } +- +-$as_echo "#define KERNEL_2_4 1" >>confdefs.h +- +- ;; +- +- *) ++ 0.*|1.*|2.0.*|2.1.*|2.2.*|2.3.*|2.4.*|2.5.*) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported (${kernel})" >&5 + $as_echo "unsupported (${kernel})" >&6; } +- as_fn_error $? "Valgrind works on kernels 2.4, 2.6" "$LINENO" 5 ++ as_fn_error $? "Valgrind needs a Linux kernel >= 2.6" "$LINENO" 5 + ;; ++ ++ *) ++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: 2.6 or later (${kernel})" >&5 ++$as_echo "2.6 or later (${kernel})" >&6; } ++ ;; + esac + + ;; diff --git a/SOURCES/valgrind-3.10.1-memfd_create.patch b/SOURCES/valgrind-3.10.1-memfd_create.patch new file mode 100644 index 0000000..09c99d2 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-memfd_create.patch @@ -0,0 +1,171 @@ +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index 22c6c98..4a8d7e1 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -285,6 +285,7 @@ DECL_TEMPLATE(linux, sys_fanotify_mark); + + // Linux-specific (new in Linux 3.17) + DECL_TEMPLATE(linux, sys_getrandom); ++DECL_TEMPLATE(linux, sys_memfd_create); + + /* --------------------------------------------------------------------- + Wrappers for sockets and ipc-ery. These are split into standalone +diff --git a/coregrind/m_syswrap/syswrap-amd64-linux.c b/coregrind/m_syswrap/syswrap-amd64-linux.c +index ae696b1..88802fb 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -1078,8 +1078,8 @@ static SyscallTableEntry syscall_table[] = { + // LIN__(__NR_sched_getattr, sys_ni_syscall), // 315 + // LIN__(__NR_renameat2, sys_ni_syscall), // 316 + // LIN__(__NR_seccomp, sys_ni_syscall), // 317 +- LINXY(__NR_getrandom, sys_getrandom) // 318 +-// LIN__(__NR_memfd_create, sys_ni_syscall), // 319 ++ LINXY(__NR_getrandom, sys_getrandom), // 318 ++ LINXY(__NR_memfd_create, sys_memfd_create) // 319 + + // LIN__(__NR_kexec_file_load, sys_ni_syscall), // 320 + // LIN__(__NR_bpf, sys_ni_syscall) // 321 +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index 4293800..200b0d1 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -1215,7 +1215,8 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 371 + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 372 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 374 +- LINXY(__NR_getrandom, sys_getrandom) // 384 ++ LINXY(__NR_getrandom, sys_getrandom), // 384 ++ LINXY(__NR_memfd_create, sys_memfd_create) // 385 + }; + + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 56fafac..a72392f 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -1037,6 +1037,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 + LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 + LINXY(__NR_getrandom, sys_getrandom), // 278 ++ LINXY(__NR_memfd_create, sys_memfd_create), // 279 + + // The numbers below are bogus. (See comment further down.) + // When pulling entries above this line, change the numbers +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index f0bd3cb..7c72545 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -3018,6 +3018,26 @@ POST(sys_getrandom) + POST_MEM_WRITE( ARG1, ARG2 ); + } + ++PRE(sys_memfd_create) ++{ ++ PRINT("sys_memfd_create ( %#lx, %ld )" , ARG1,ARG2); ++ PRE_REG_READ2(int, "memfd_create", ++ char *, uname, unsigned int, flags); ++ PRE_MEM_RASCIIZ( "memfd_create(uname)", ARG1 ); ++} ++ ++POST(sys_memfd_create) ++{ ++ vg_assert(SUCCESS); ++ if (!ML_(fd_allowed)(RES, "memfd_create", tid, True)) { ++ VG_(close)(RES); ++ SET_STATUS_Failure( VKI_EMFILE ); ++ } else { ++ if (VG_(clo_track_fds)) ++ ML_(record_fd_open_nameless)(tid, RES); ++ } ++} ++ + /* --------------------------------------------------------------------- + utime wrapper + ------------------------------------------------------------------ */ +diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c +index bddadd0..fa921c1 100644 +--- a/coregrind/m_syswrap/syswrap-mips32-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips32-linux.c +@@ -1118,7 +1118,8 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY (__NR_process_vm_readv, sys_process_vm_readv), // 345 + LINX_ (__NR_process_vm_writev, sys_process_vm_writev), // 346 + //.. +- LINXY(__NR_getrandom, sys_getrandom) // 353 ++ LINXY(__NR_getrandom, sys_getrandom), // 353 ++ LINXY(__NR_memfd_create, sys_memfd_create) // 354 + }; + + SyscallTableEntry* ML_(get_linux_syscall_entry) (UInt sysno) +diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c +index c51ab6f..f8340ab 100644 +--- a/coregrind/m_syswrap/syswrap-mips64-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips64-linux.c +@@ -910,7 +910,8 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY (__NR_clock_adjtime, sys_clock_adjtime), + LINXY (__NR_process_vm_readv, sys_process_vm_readv), + LINX_ (__NR_process_vm_writev, sys_process_vm_writev), +- LINXY(__NR_getrandom, sys_getrandom) ++ LINXY(__NR_getrandom, sys_getrandom), ++ LINXY(__NR_memfd_create, sys_memfd_create) + }; + + SyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno ) +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index 5c058c2..6b53abe 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1258,7 +1258,8 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352 + +- LINXY(__NR_getrandom, sys_getrandom) // 359 ++ LINXY(__NR_getrandom, sys_getrandom), // 359 ++ LINXY(__NR_memfd_create, sys_memfd_create) // 360 + }; + + SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index c173593..25e0bde 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1157,7 +1157,8 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352 + +- LINXY(__NR_getrandom, sys_getrandom) // 359 ++ LINXY(__NR_getrandom, sys_getrandom), // 359 ++ LINXY(__NR_memfd_create, sys_memfd_create) // 360 + }; + + SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) +diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c +index 6363e2d..ca969c8 100644 +--- a/coregrind/m_syswrap/syswrap-s390x-linux.c ++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c +@@ -1050,9 +1050,9 @@ static SyscallTableEntry syscall_table[] = { + // ?????(__NR_sched_getattr, ), // 346 + // ?????(__NR_renameat2, ), // 347 + // ?????(__NR_seccomp, ), // 348 +- LINXY(__NR_getrandom, sys_getrandom) // 349 ++ LINXY(__NR_getrandom, sys_getrandom), // 349 + +-// ?????(__NR_memfd_create, ), // 350 ++ LINXY(__NR_memfd_create, sys_memfd_create) // 350 + }; + + SyscallTableEntry* ML_(get_linux_syscall_entry) ( UInt sysno ) +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index dcbf425..0e87679 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -1821,8 +1821,8 @@ static SyscallTableEntry syscall_table[] = { + // LIN__(__NR_renameat2, sys_ni_syscall), // 353 + // LIN__(__NR_seccomp, sys_ni_syscall), // 354 + +- LINXY(__NR_getrandom, sys_getrandom) // 355 +-// LIN__(__NR_memfd_create, sys_ni_syscall), // 356 ++ LINXY(__NR_getrandom, sys_getrandom), // 355 ++ LINXY(__NR_memfd_create, sys_memfd_create) // 356 + // LIN__(__NR_bpf, sys_ni_syscall) // 357 + }; + diff --git a/SOURCES/valgrind-3.10.1-memmove-ld_so-ppc64.patch b/SOURCES/valgrind-3.10.1-memmove-ld_so-ppc64.patch new file mode 100644 index 0000000..1293748 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-memmove-ld_so-ppc64.patch @@ -0,0 +1,23 @@ +commit 6b5fb6710eaa4151e3aea77355d8fa3366312857 +Author: mjw +Date: Tue Jul 7 13:01:39 2015 +0000 + + 349828 memcpy intercepts memmove causing src/dst overlap error (ppc64 ld.so) + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15397 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c +index d4e5449..0f366bf 100644 +--- a/shared/vg_replace_strmem.c ++++ b/shared/vg_replace_strmem.c +@@ -1141,6 +1141,10 @@ static inline void my_exit ( int x ) + #if defined(VGO_linux) + MEMMOVE(VG_Z_LIBC_SONAME, memmove) + MEMMOVE(VG_Z_LIBC_SONAME, __GI_memmove) ++ /* See bug #349828 Override for ld64.so.1 like memcpy, because for some ++ arches MEMCPY_OK_FOR_FORWARD_MEMMOVE is set, which might cause memmove ++ to call memcpy. */ ++ MEMMOVE(VG_Z_LD64_SO_1, memmove) + + #elif defined(VGO_darwin) + # if DARWIN_VERS <= DARWIN_10_6 diff --git a/SOURCES/valgrind-3.10.1-mempcpy.patch b/SOURCES/valgrind-3.10.1-mempcpy.patch new file mode 100644 index 0000000..aff3d23 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-mempcpy.patch @@ -0,0 +1,20 @@ +commit a7abe3d4ad8757a65b53230755a12b9ae5e79ffa +Author: mjw +Date: Tue Jan 13 16:10:20 2015 +0000 + + BZ #342795 Internal glibc __GI_mempcpy call should be intercepted. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14866 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c +index 4ca652b..5203306 100644 +--- a/shared/vg_replace_strmem.c ++++ b/shared/vg_replace_strmem.c +@@ -1363,6 +1363,7 @@ static inline void my_exit ( int x ) + + #if defined(VGO_linux) + GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy) ++ GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, __GI_mempcpy) + GLIBC25_MEMPCPY(VG_Z_LD_SO_1, mempcpy) /* ld.so.1 */ + GLIBC25_MEMPCPY(VG_Z_LD_LINUX_SO_3, mempcpy) /* ld-linux.so.3 */ + GLIBC25_MEMPCPY(VG_Z_LD_LINUX_X86_64_SO_2, mempcpy) /* ld-linux-x86-64.so.2 */ diff --git a/SOURCES/valgrind-3.10.1-ppc64-accept4.patch b/SOURCES/valgrind-3.10.1-ppc64-accept4.patch new file mode 100644 index 0000000..74d0b10 --- /dev/null +++ b/SOURCES/valgrind-3.10.1-ppc64-accept4.patch @@ -0,0 +1,26 @@ +commit c79fe53e9e31d5c8e5d2ad3a0943b21e84129ccb +Author: mjw +Date: Tue Feb 10 13:39:04 2015 +0000 + + Bug #344007 accept4 syscall unhandled on arm64 (242) and ppc64 (344) + + ppc64 might fall back to socketcall in some cases, but arm64 always uses + accept4 syscall directly. Some (confusing) background on when/how glibc + (wrongly) decides to use a direct accept4 or the socketcall system call: + https://sourceware.org/ml/libc-alpha/2013-12/msg00014.html + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14926 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index 25e0bde..8d5fa08 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1152,6 +1152,8 @@ static SyscallTableEntry syscall_table[] = { + LINX_(__NR_pwritev, sys_pwritev), // 321 + LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 322 + ++ LINXY(__NR_accept4, sys_accept4), // 344 ++ + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 347 + + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 diff --git a/SOURCES/valgrind-3.10.1-send-recv-mmsg.patch b/SOURCES/valgrind-3.10.1-send-recv-mmsg.patch new file mode 100644 index 0000000..e4d3e7b --- /dev/null +++ b/SOURCES/valgrind-3.10.1-send-recv-mmsg.patch @@ -0,0 +1,294 @@ +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index 4a8d7e1..d093974 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -305,6 +305,10 @@ extern void ML_(linux_POST_sys_msgctl) ( TId, UW, UW, UW, UW ); + extern void ML_(linux_PRE_sys_getsockopt) ( TId, UW, UW, UW, UW, UW ); + extern void ML_(linux_POST_sys_getsockopt) ( TId, SR, UW, UW, UW, UW, UW ); + extern void ML_(linux_PRE_sys_setsockopt) ( TId, UW, UW, UW, UW, UW ); ++extern void ML_(linux_PRE_sys_recvmmsg) ( TId, UW, UW, UW, UW, UW ); ++extern void ML_(linux_POST_sys_recvmmsg) ( TId, UW, UW, UW, UW, UW, UW ); ++extern void ML_(linux_PRE_sys_sendmmsg) ( TId, UW, UW, UW, UW ); ++extern void ML_(linux_POST_sys_sendmmsg) ( TId, UW, UW, UW, UW, UW ); + + // Linux-specific (but non-arch-specific) ptrace wrapper helpers + extern void ML_(linux_PRE_getregset) ( ThreadId, long, long ); +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index 16df075..10c1fc2 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -4063,6 +4063,20 @@ PRE(sys_socketcall) + ML_(generic_PRE_sys_recvmsg)( tid, "msg", (struct vki_msghdr *)ARG2_1 ); + break; + ++ case VKI_SYS_RECVMMSG: ++ /* int recvmmsg(int s, struct mmsghdr *mmsg, int vlen, int flags, ++ struct timespec *timeout); */ ++ PRE_MEM_READ_ef("socketcall.recvmmsg(args)", ARG2, 5*sizeof(Addr) ); ++ ML_(linux_PRE_sys_recvmmsg)( tid, ARG2_0, ARG2_1, ARG2_2, ARG2_3, ++ ARG2_4 ); ++ break; ++ ++ case VKI_SYS_SENDMMSG: ++ /* int sendmmsg(int s, struct mmsghdr *mmsg, int vlen, int flags); */ ++ PRE_MEM_READ_ef("socketcall.sendmmsg(args)", ARG2, 4*sizeof(Addr) ); ++ ML_(linux_PRE_sys_sendmmsg)( tid, ARG2_0, ARG2_1, ARG2_2, ARG2_3 ); ++ break; ++ + default: + VG_(message)(Vg_DebugMsg,"Warning: unhandled socketcall 0x%lx\n",ARG1); + SET_STATUS_Failure( VKI_EINVAL ); +@@ -4168,6 +4182,15 @@ POST(sys_socketcall) + ML_(generic_POST_sys_recvmsg)( tid, "msg", (struct vki_msghdr *)ARG2_1, RES ); + break; + ++ case VKI_SYS_RECVMMSG: ++ ML_(linux_POST_sys_recvmmsg)( tid, RES, ++ ARG2_0, ARG2_1, ARG2_2, ARG2_3, ARG2_4 ); ++ break; ++ ++ case VKI_SYS_SENDMMSG: ++ ML_(linux_POST_sys_sendmmsg)( tid, RES, ARG2_0, ARG2_1, ARG2_2, ARG2_3 ); ++ break; ++ + default: + VG_(message)(Vg_DebugMsg,"FATAL: unhandled socketcall 0x%lx\n",ARG1); + VG_(core_panic)("... bye!\n"); +@@ -4846,64 +4869,31 @@ PRE(sys_process_vm_writev) + + PRE(sys_sendmmsg) + { +- struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)ARG2; +- HChar name[32]; +- UInt i; + *flags |= SfMayBlock; + PRINT("sys_sendmmsg ( %ld, %#lx, %ld, %ld )",ARG1,ARG2,ARG3,ARG4); + PRE_REG_READ4(long, "sendmmsg", + int, s, const struct mmsghdr *, mmsg, int, vlen, int, flags); +- for (i = 0; i < ARG3; i++) { +- VG_(sprintf)(name, "mmsg[%u].msg_hdr", i); +- ML_(generic_PRE_sys_sendmsg)(tid, name, &mmsg[i].msg_hdr); +- VG_(sprintf)(name, "sendmmsg(mmsg[%u].msg_len)", i); +- PRE_MEM_WRITE( name, (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); +- } ++ ML_(linux_PRE_sys_sendmmsg)(tid, ARG1,ARG2,ARG3,ARG4); + } + + POST(sys_sendmmsg) + { +- if (RES > 0) { +- struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)ARG2; +- UInt i; +- for (i = 0; i < RES; i++) { +- POST_MEM_WRITE( (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); +- } +- } ++ ML_(linux_POST_sys_sendmmsg) (tid, RES, ARG1,ARG2,ARG3,ARG4); + } + + PRE(sys_recvmmsg) + { +- struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)ARG2; +- HChar name[32]; +- UInt i; + *flags |= SfMayBlock; + PRINT("sys_recvmmsg ( %ld, %#lx, %ld, %ld, %#lx )",ARG1,ARG2,ARG3,ARG4,ARG5); + PRE_REG_READ5(long, "recvmmsg", + int, s, struct mmsghdr *, mmsg, int, vlen, + int, flags, struct timespec *, timeout); +- for (i = 0; i < ARG3; i++) { +- VG_(sprintf)(name, "mmsg[%u].msg_hdr", i); +- ML_(generic_PRE_sys_recvmsg)(tid, name, &mmsg[i].msg_hdr); +- VG_(sprintf)(name, "recvmmsg(mmsg[%u].msg_len)", i); +- PRE_MEM_WRITE( name, (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); +- } +- if (ARG5) +- PRE_MEM_READ( "recvmmsg(timeout)", ARG5, sizeof(struct vki_timespec) ); ++ ML_(linux_PRE_sys_recvmmsg)(tid, ARG1,ARG2,ARG3,ARG4,ARG5); + } + + POST(sys_recvmmsg) + { +- if (RES > 0) { +- struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)ARG2; +- HChar name[32]; +- UInt i; +- for (i = 0; i < RES; i++) { +- VG_(sprintf)(name, "mmsg[%u].msg_hdr", i); +- ML_(generic_POST_sys_recvmsg)(tid, name, &mmsg[i].msg_hdr, mmsg[i].msg_len); +- POST_MEM_WRITE( (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); +- } +- } ++ ML_(linux_POST_sys_recvmmsg) (tid, RES, ARG1,ARG2,ARG3,ARG4,ARG5); + } + + /* --------------------------------------------------------------------- +@@ -10271,6 +10261,69 @@ ML_(linux_PRE_sys_setsockopt) ( ThreadId tid, + } + } + ++void ++ML_(linux_PRE_sys_recvmmsg) ( ThreadId tid, ++ UWord arg1, UWord arg2, UWord arg3, ++ UWord arg4, UWord arg5 ) ++{ ++ struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)arg2; ++ HChar name[40]; // large enough ++ UInt i; ++ for (i = 0; i < arg3; i++) { ++ VG_(sprintf)(name, "mmsg[%u].msg_hdr", i); ++ ML_(generic_PRE_sys_recvmsg)(tid, name, &mmsg[i].msg_hdr); ++ VG_(sprintf)(name, "recvmmsg(mmsg[%u].msg_len)", i); ++ PRE_MEM_WRITE( name, (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); ++ } ++ if (arg5) ++ PRE_MEM_READ( "recvmmsg(timeout)", arg5, sizeof(struct vki_timespec) ); ++} ++ ++void ++ML_(linux_POST_sys_recvmmsg) (ThreadId tid, UWord res, ++ UWord arg1, UWord arg2, UWord arg3, ++ UWord arg4, UWord arg5 ) ++{ ++ if (res > 0) { ++ struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)arg2; ++ HChar name[32]; // large enough ++ UInt i; ++ for (i = 0; i < res; i++) { ++ VG_(sprintf)(name, "mmsg[%u].msg_hdr", i); ++ ML_(generic_POST_sys_recvmsg)(tid, name, &mmsg[i].msg_hdr, mmsg[i].msg_len); ++ POST_MEM_WRITE( (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); ++ } ++ } ++} ++ ++void ++ML_(linux_PRE_sys_sendmmsg) ( ThreadId tid, ++ UWord arg1, UWord arg2, UWord arg3, UWord arg4 ) ++{ ++ struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)arg2; ++ HChar name[40]; // large enough ++ UInt i; ++ for (i = 0; i < arg3; i++) { ++ VG_(sprintf)(name, "mmsg[%u].msg_hdr", i); ++ ML_(generic_PRE_sys_sendmsg)(tid, name, &mmsg[i].msg_hdr); ++ VG_(sprintf)(name, "sendmmsg(mmsg[%u].msg_len)", i); ++ PRE_MEM_WRITE( name, (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); ++ } ++} ++ ++void ++ML_(linux_POST_sys_sendmmsg) (ThreadId tid, UWord res, ++ UWord arg1, UWord arg2, UWord arg3, UWord arg4 ) ++{ ++ if (res > 0) { ++ struct vki_mmsghdr *mmsg = (struct vki_mmsghdr *)arg2; ++ UInt i; ++ for (i = 0; i < res; i++) { ++ POST_MEM_WRITE( (Addr)&mmsg[i].msg_len, sizeof(mmsg[i].msg_len) ); ++ } ++ } ++} ++ + /* --------------------------------------------------------------------- + ptrace wrapper helpers + ------------------------------------------------------------------ */ +diff --git a/include/vki/vki-linux.h b/include/vki/vki-linux.h +index bf3ffee..af5cbaf 100644 +--- a/include/vki/vki-linux.h ++++ b/include/vki/vki-linux.h +@@ -596,6 +596,8 @@ typedef struct vki_sigevent { + #define VKI_SYS_SENDMSG 16 /* sys_sendmsg(2) */ + #define VKI_SYS_RECVMSG 17 /* sys_recvmsg(2) */ + #define VKI_SYS_ACCEPT4 18 /* sys_accept4(2) */ ++#define VKI_SYS_RECVMMSG 19 /* sys_recvmmsg(2) */ ++#define VKI_SYS_SENDMMSG 20 /* sys_sendmmsg(2) */ + + #ifndef ARCH_HAS_SOCKET_TYPES + enum vki_sock_type { +commit 4b2fb567b7422b2563c52a0ff2c1c166264a02e0 +Author: mjw +Date: Tue Feb 17 16:04:09 2015 +0000 + + Bug #344279 syscall sendmmsg on arm64 (269) and ppc32/64 (349) unhandled. + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14939 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 1f9670a..e8f4a3e 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -1043,6 +1043,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_accept4, sys_accept4), // 242 + GENXY(__NR_wait4, sys_wait4), // 260 + ++ LINXY(__NR_sendmmsg, sys_sendmmsg), // 269 + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 + LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 + LINXY(__NR_getrandom, sys_getrandom), // 278 +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index 6b53abe..2ce6673 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1255,6 +1255,8 @@ static SyscallTableEntry syscall_table[] = { + + LINX_(__NR_clock_adjtime, sys_clock_adjtime), // 347 + ++ LINXY(__NR_sendmmsg, sys_sendmmsg), // 349 ++ + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352 + +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index 8d5fa08..f18a10c 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1156,6 +1156,8 @@ static SyscallTableEntry syscall_table[] = { + + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 347 + ++ LINXY(__NR_sendmmsg, sys_sendmmsg), // 349 ++ + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 + LINX_(__NR_process_vm_writev, sys_process_vm_writev),// 352 + + +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index e8f4a3e..7b7e824 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -1040,7 +1040,10 @@ static SyscallTableEntry syscall_main_table[] = { + LINX_(__NR_mbind, sys_mbind), // 235 + LINXY(__NR_get_mempolicy, sys_get_mempolicy), // 236 + LINX_(__NR_set_mempolicy, sys_set_mempolicy), // 237 ++ ++ LINXY(__NR_recvmmsg, sys_recvmmsg), // 243 + LINXY(__NR_accept4, sys_accept4), // 242 ++ + GENXY(__NR_wait4, sys_wait4), // 260 + + LINXY(__NR_sendmmsg, sys_sendmmsg), // 269 +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index 2ce6673..7f09fc4 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1251,6 +1251,7 @@ static SyscallTableEntry syscall_table[] = { + LINX_(__NR_shutdown, sys_shutdown), // 338 + LINX_(__NR_setsockopt, sys_setsockopt), // 339 + ++ LINXY(__NR_recvmmsg, sys_recvmmsg), // 343 + LINXY(__NR_accept4, sys_accept4), // 344 + + LINX_(__NR_clock_adjtime, sys_clock_adjtime), // 347 +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index f18a10c..b309f43 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1152,6 +1152,7 @@ static SyscallTableEntry syscall_table[] = { + LINX_(__NR_pwritev, sys_pwritev), // 321 + LINXY(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo),// 322 + ++ LINXY(__NR_recvmmsg, sys_recvmmsg), // 343 + LINXY(__NR_accept4, sys_accept4), // 344 + + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 347 diff --git a/SOURCES/valgrind-3.10.1-syncfs.patch b/SOURCES/valgrind-3.10.1-syncfs.patch new file mode 100644 index 0000000..7b8c48e --- /dev/null +++ b/SOURCES/valgrind-3.10.1-syncfs.patch @@ -0,0 +1,158 @@ +commit 7c91105917f41c11a0b377b2393725da380cd490 +Author: tom +Date: Thu May 7 18:54:31 2015 +0000 + + Add support for the syncfs system call. + + Based on patch from j@eckel.me on BZ#347389. + + + git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15191 a5019735-40e9-0310-863c-91ae7b9d1cf9 + +diff --git a/coregrind/m_syswrap/priv_syswrap-linux.h b/coregrind/m_syswrap/priv_syswrap-linux.h +index d093974..6552dca 100644 +--- a/coregrind/m_syswrap/priv_syswrap-linux.h ++++ b/coregrind/m_syswrap/priv_syswrap-linux.h +@@ -287,6 +287,8 @@ DECL_TEMPLATE(linux, sys_fanotify_mark); + DECL_TEMPLATE(linux, sys_getrandom); + DECL_TEMPLATE(linux, sys_memfd_create); + ++DECL_TEMPLATE(linux, sys_syncfs); ++ + /* --------------------------------------------------------------------- + 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 62f7ee6..de3288e 100644 +--- a/coregrind/m_syswrap/syswrap-amd64-linux.c ++++ b/coregrind/m_syswrap/syswrap-amd64-linux.c +@@ -1062,7 +1062,7 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 304 + + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 305 +-// LINX_(__NR_syncfs, sys_ni_syscall), // 306 ++ LINX_(__NR_syncfs, sys_syncfs), // 306 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 307 + // LINX_(__NR_setns, sys_ni_syscall), // 308 + LINXY(__NR_getcpu, sys_getcpu), // 309 +diff --git a/coregrind/m_syswrap/syswrap-arm-linux.c b/coregrind/m_syswrap/syswrap-arm-linux.c +index dc8714c..f8f56f5 100644 +--- a/coregrind/m_syswrap/syswrap-arm-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm-linux.c +@@ -1212,6 +1212,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY(__NR_name_to_handle_at, sys_name_to_handle_at),// 370 + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 371 + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 372 ++ LINX_(__NR_syncfs, sys_syncfs), // 373 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 374 + LINXY(__NR_getrandom, sys_getrandom), // 384 + LINXY(__NR_memfd_create, sys_memfd_create) // 385 +diff --git a/coregrind/m_syswrap/syswrap-arm64-linux.c b/coregrind/m_syswrap/syswrap-arm64-linux.c +index 2f35e51..7551e8a 100644 +--- a/coregrind/m_syswrap/syswrap-arm64-linux.c ++++ b/coregrind/m_syswrap/syswrap-arm64-linux.c +@@ -1042,6 +1042,8 @@ static SyscallTableEntry syscall_main_table[] = { + + GENXY(__NR_wait4, sys_wait4), // 260 + ++ LINX_(__NR_syncfs, sys_syncfs), // 267 ++ + LINXY(__NR_sendmmsg, sys_sendmmsg), // 269 + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 270 + LINX_(__NR_process_vm_writev, sys_process_vm_writev), // 271 +diff --git a/coregrind/m_syswrap/syswrap-linux.c b/coregrind/m_syswrap/syswrap-linux.c +index f15c909..09c247c 100644 +--- a/coregrind/m_syswrap/syswrap-linux.c ++++ b/coregrind/m_syswrap/syswrap-linux.c +@@ -3064,6 +3064,13 @@ POST(sys_memfd_create) + } + } + ++PRE(sys_syncfs) ++{ ++ *flags |= SfMayBlock; ++ PRINT("sys_syncfs ( %ld )", ARG1); ++ PRE_REG_READ1(long, "syncfs", unsigned int, fd); ++} ++ + /* --------------------------------------------------------------------- + utime wrapper + ------------------------------------------------------------------ */ +diff --git a/coregrind/m_syswrap/syswrap-mips32-linux.c b/coregrind/m_syswrap/syswrap-mips32-linux.c +index 1b4c5bc..7a71576 100644 +--- a/coregrind/m_syswrap/syswrap-mips32-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips32-linux.c +@@ -1112,6 +1112,7 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY (__NR_prlimit64, sys_prlimit64), // 338 + //.. + LINXY (__NR_clock_adjtime, sys_clock_adjtime), // 341 ++ LINX_ (__NR_syncfs, sys_syncfs), // 342 + //.. + LINXY (__NR_process_vm_readv, sys_process_vm_readv), // 345 + LINX_ (__NR_process_vm_writev, sys_process_vm_writev), // 346 +diff --git a/coregrind/m_syswrap/syswrap-mips64-linux.c b/coregrind/m_syswrap/syswrap-mips64-linux.c +index d356645..3a5e979 100644 +--- a/coregrind/m_syswrap/syswrap-mips64-linux.c ++++ b/coregrind/m_syswrap/syswrap-mips64-linux.c +@@ -909,7 +909,8 @@ static SyscallTableEntry syscall_main_table[] = { + LINXY (__NR_process_vm_readv, sys_process_vm_readv), + LINX_ (__NR_process_vm_writev, sys_process_vm_writev), + LINXY(__NR_getrandom, sys_getrandom), +- LINXY(__NR_memfd_create, sys_memfd_create) ++ LINXY(__NR_memfd_create, sys_memfd_create), ++ LINX_(__NR_syncfs, sys_syncfs) + }; + + SyscallTableEntry * ML_(get_linux_syscall_entry) ( UInt sysno ) +diff --git a/coregrind/m_syswrap/syswrap-ppc32-linux.c b/coregrind/m_syswrap/syswrap-ppc32-linux.c +index 1f5d7f6..9c9937b 100644 +--- a/coregrind/m_syswrap/syswrap-ppc32-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc32-linux.c +@@ -1253,7 +1253,7 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_accept4, sys_accept4), // 344 + + LINX_(__NR_clock_adjtime, sys_clock_adjtime), // 347 +- ++ LINX_(__NR_syncfs, sys_syncfs), // 348 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 349 + + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 +diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c +index 6f3c1f7..e2432fd 100644 +--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c ++++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c +@@ -1155,7 +1155,7 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_accept4, sys_accept4), // 344 + + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 347 +- ++ LINX_(__NR_syncfs, sys_syncfs), // 348 + LINXY(__NR_sendmmsg, sys_sendmmsg), // 349 + + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 351 +diff --git a/coregrind/m_syswrap/syswrap-s390x-linux.c b/coregrind/m_syswrap/syswrap-s390x-linux.c +index 8e0afa0..db374f4 100644 +--- a/coregrind/m_syswrap/syswrap-s390x-linux.c ++++ b/coregrind/m_syswrap/syswrap-s390x-linux.c +@@ -1035,7 +1035,7 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_name_to_handle_at, sys_name_to_handle_at), // 335 + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at), // 336 + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 337 +-// ?????(__NR_syncfs, ), // 338 ++ LINX_(__NR_syncfs, sys_syncfs), // 338 + // ?????(__NR_setns, ), // 339 + + LINXY(__NR_process_vm_readv, sys_process_vm_readv), // 340 +diff --git a/coregrind/m_syswrap/syswrap-x86-linux.c b/coregrind/m_syswrap/syswrap-x86-linux.c +index 0f80d4a..e08af76 100644 +--- a/coregrind/m_syswrap/syswrap-x86-linux.c ++++ b/coregrind/m_syswrap/syswrap-x86-linux.c +@@ -1805,7 +1805,7 @@ static SyscallTableEntry syscall_table[] = { + LINXY(__NR_name_to_handle_at, sys_name_to_handle_at),// 341 + LINXY(__NR_open_by_handle_at, sys_open_by_handle_at),// 342 + LINXY(__NR_clock_adjtime, sys_clock_adjtime), // 343 +-// LINX_(__NR_syncfs, sys_ni_syscall), // 344 ++ LINX_(__NR_syncfs, sys_syncfs), // 344 + + LINXY(__NR_sendmmsg, sys_sendmmsg), // 345 + // LINX_(__NR_setns, sys_ni_syscall), // 346 diff --git a/SOURCES/valgrind-3.11.0-rexw-cvtps2pd.patch b/SOURCES/valgrind-3.11.0-rexw-cvtps2pd.patch new file mode 100644 index 0000000..12cef42 --- /dev/null +++ b/SOURCES/valgrind-3.11.0-rexw-cvtps2pd.patch @@ -0,0 +1,76 @@ +diff --git a/VEX/priv/guest_amd64_toIR.c b/VEX/priv/guest_amd64_toIR.c +index 98596d2..06552e8 100644 +--- a/VEX/priv/guest_amd64_toIR.c ++++ b/VEX/priv/guest_amd64_toIR.c +@@ -13396,7 +13396,8 @@ Long dis_ESC_0F__SSE2 ( Bool* decode_OK, + case 0x5A: + /* 0F 5A = CVTPS2PD -- convert 2 x F32 in low half mem/xmm to 2 x + F64 in xmm(G). */ +- if (haveNo66noF2noF3(pfx) && sz == 4) { ++ if (haveNo66noF2noF3(pfx) ++ && (sz == 4 || /* ignore redundant REX.W */ sz == 8)) { + delta = dis_CVTPS2PD_128( vbi, pfx, delta, False/*!isAvx*/ ); + goto decode_success; + } +diff --git a/none/tests/amd64/redundantRexW.c b/none/tests/amd64/redundantRexW.c +index e189267..0a50c3b 100644 +--- a/none/tests/amd64/redundantRexW.c ++++ b/none/tests/amd64/redundantRexW.c +@@ -596,6 +596,23 @@ int main ( void ) + after_test( "rex.WB subsd -0x8(%r13),%xmm1", regs, mem ); + } + ++ /* cvtps2pd mem, reg 48 0f 5a 07 rex.W cvtps2pd (%rdi),%xmm0 */ ++ { ++ before_test( regs, mem ); ++ __asm__ __volatile__( ++ "movq %0, %%r14\n" ++ "\tmovq %1, %%r15\n" ++ LOAD_XMMREGS_from_r14 ++ "\tmovq %%r15, %%rdi\n" ++ "\t.byte 0x48,0x0f,0x5a,0x07\n" ++ SAVE_XMMREGS_to_r14 ++ : /*out*/ : /*in*/ "r"(regs), "r"( -0 + (char*)&mem->dqw[2] ) ++ : /*trash*/ "r14","r15","memory", XMMREGS, ++ "rdi" ++ ); ++ after_test( "rex.W cvtps2pd (%rdi),%xmm0", regs, mem ); ++ } ++ + free(regs); + free(mem); + return 0; +diff --git a/none/tests/amd64/redundantRexW.stdout.exp b/none/tests/amd64/redundantRexW.stdout.exp +index dd1697a..94b255a 100644 +--- a/none/tests/amd64/redundantRexW.stdout.exp ++++ b/none/tests/amd64/redundantRexW.stdout.exp +@@ -648,3 +648,29 @@ after "rex.WB subsd -0x8(%r13),%xmm1" (xmms in order [15..0]) { + %xmm15 ................................ + } + ++after "rex.W cvtps2pd (%rdi),%xmm0" (dqws in order [15 .. 0]) { ++ [0] ................................ ++ [1] ................................ ++ [2] ................................ ++ [3] ................................ ++ [4] ................................ ++} ++after "rex.W cvtps2pd (%rdi),%xmm0" (xmms in order [15..0]) { ++ %xmm 0 113a1c7d5554535213bd9cffd4535251 ++ %xmm 1 ................................ ++ %xmm 2 ................................ ++ %xmm 3 ................................ ++ %xmm 4 ................................ ++ %xmm 5 ................................ ++ %xmm 6 ................................ ++ %xmm 7 ................................ ++ %xmm 8 ................................ ++ %xmm 9 ................................ ++ %xmm10 ................................ ++ %xmm11 ................................ ++ %xmm12 ................................ ++ %xmm13 ................................ ++ %xmm14 ................................ ++ %xmm15 ................................ ++} ++ 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..3432c55 --- /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]; + 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/SOURCES/valgrind-3.9.0-mpiwrapper.patch b/SOURCES/valgrind-3.9.0-mpiwrapper.patch new file mode 100644 index 0000000..2bca07c --- /dev/null +++ b/SOURCES/valgrind-3.9.0-mpiwrapper.patch @@ -0,0 +1,81 @@ +Index: mpi/Makefile.am +=================================================================== +--- valgrind/mpi/Makefile.am (revision 12965) ++++ valgrind/mpi/Makefile.am (working copy) +@@ -1,15 +1,13 @@ + include $(top_srcdir)/Makefile.all.am + +-# HACK WARNING: automake isn't good at supporting non-$(CC) compilers. +-# But we need to use $(MPI_CC) for the MPI stuff. So we have this mpi stuff +-# in its own directory so we can use the following blunt instruments, which +-# override the C compiler and all the default flags. +-CC = $(MPI_CC) ++# HACK WARNING: We like to use the MPI_CC CFLAGS and LDFLAGS but don't ++# actually want to link against libmpi. The wrapper is generic and loaded ++# through LD_PRELOAD into the program already using libmpi. + DEFS = + DEFAULT_INCLUDES = + CPPFLAGS = +-CFLAGS = +-LDFLAGS = ++CFLAGS = $(shell $(MPI_CC) -showme:compile) ++LDFLAGS = $(shell $(MPI_CC) -showme:link | sed 's/ -lmpi //g') + + EXTRA_DIST = \ + mpiwrap_type_test.c +--- valgrind-3.8.0/mpi/Makefile.in.orig 2012-09-12 12:04:46.084508623 +0200 ++++ valgrind-3.8.0/mpi/Makefile.in 2012-09-12 12:05:56.110800265 +0200 +@@ -108,17 +108,12 @@ + AWK = @AWK@ + BOOST_CFLAGS = @BOOST_CFLAGS@ + BOOST_LIBS = @BOOST_LIBS@ +- +-# HACK WARNING: automake isn't good at supporting non-$(CC) compilers. +-# But we need to use $(MPI_CC) for the MPI stuff. So we have this mpi stuff +-# in its own directory so we can use the following blunt instruments, which +-# override the C compiler and all the default flags. +-CC = $(MPI_CC) ++CC = @CC@ + CCAS = @CCAS@ + CCASDEPMODE = @CCASDEPMODE@ + CCASFLAGS = @CCASFLAGS@ + CCDEPMODE = @CCDEPMODE@ +-CFLAGS = ++CFLAGS = $(shell $(MPI_CC) -showme:compile) + CFLAGS_MPI = @CFLAGS_MPI@ + CPP = @CPP@ + CPPFLAGS = +@@ -127,6 +122,10 @@ + CXXFLAGS = @CXXFLAGS@ + CYGPATH_W = @CYGPATH_W@ + DEFAULT_SUPP = @DEFAULT_SUPP@ ++ ++# HACK WARNING: We like to use the MPI_CC CFLAGS and LDFLAGS but don't ++# actually want to link against libmpi. The wrapper is generic and loaded ++# through LD_PRELOAD into the program already using libmpi. + DEFS = + DEPDIR = @DEPDIR@ + DIFF = @DIFF@ +@@ -156,7 +155,7 @@ + INSTALL_PROGRAM = @INSTALL_PROGRAM@ + INSTALL_SCRIPT = @INSTALL_SCRIPT@ + INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +-LDFLAGS = ++LDFLAGS = $(shell $(MPI_CC) -showme:link | sed 's/ -lmpi //g') + LDFLAGS_MPI = @LDFLAGS_MPI@ + LIBOBJS = @LIBOBJS@ + LIBS = @LIBS@ +Index: mpi/libmpiwrap.c +=================================================================== +--- valgrind/mpi/libmpiwrap.c (revision 12965) ++++ valgrind/mpi/libmpiwrap.c (working copy) +@@ -114,6 +114,9 @@ + be used with. The configure system will tell us what the path to + the chosen MPI implementation is, via -I.. to the compiler. */ + #include "mpi.h" ++#ifdef MPI_LOGICAL ++extern __typeof(ompi_mpi_logical) ompi_mpi_logical __attribute__((weak)); ++#endif + + /* Where are API symbols? + Open MPI lib/libmpi.so, soname = libmpi.so.0 diff --git a/SOURCES/valgrind-3.9.0-stat_h.patch b/SOURCES/valgrind-3.9.0-stat_h.patch new file mode 100644 index 0000000..628dd79 --- /dev/null +++ b/SOURCES/valgrind-3.9.0-stat_h.patch @@ -0,0 +1,48 @@ +--- valgrind/include/vki/vki-amd64-linux.h.jj 2009-08-19 09:37:07.000000000 -0400 ++++ valgrind/include/vki/vki-amd64-linux.h 2010-01-20 04:41:52.662552000 -0500 +@@ -328,6 +328,9 @@ struct vki_stat { + long st_blksize; + long st_blocks; /* Number 512-byte blocks allocated. */ + ++#undef st_atime ++#undef st_mtime ++#undef st_ctime + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; +--- valgrind/include/vki/vki-x86-linux.h.jj 2009-08-19 09:37:07.000000000 -0400 ++++ valgrind/include/vki/vki-x86-linux.h 2010-01-20 04:42:19.649995000 -0500 +@@ -366,6 +366,9 @@ struct vki_stat { + unsigned long st_size; + unsigned long st_blksize; + unsigned long st_blocks; ++#undef st_atime ++#undef st_mtime ++#undef st_ctime + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; +--- valgrind/include/vki/vki-ppc32-linux.h.jj 2009-08-19 09:37:07.000000000 -0400 ++++ valgrind/include/vki/vki-ppc32-linux.h 2010-01-20 04:42:44.861651000 -0500 +@@ -410,6 +410,9 @@ struct vki_stat { + long st_size; + unsigned long st_blksize; + unsigned long st_blocks; ++#undef st_atime ++#undef st_mtime ++#undef st_ctime + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; +--- valgrind/include/vki/vki-ppc64-linux.h.jj 2009-08-19 09:37:07.000000000 -0400 ++++ valgrind/include/vki/vki-ppc64-linux.h 2010-01-20 04:43:05.579922000 -0500 +@@ -446,6 +446,9 @@ struct vki_stat { + long st_size; + unsigned long st_blksize; + unsigned long st_blocks; ++#undef st_atime ++#undef st_mtime ++#undef st_ctime + unsigned long st_atime; + unsigned long st_atime_nsec; + unsigned long st_mtime; diff --git a/SPECS/valgrind.spec b/SPECS/valgrind.spec new file mode 100644 index 0000000..82f73d8 --- /dev/null +++ b/SPECS/valgrind.spec @@ -0,0 +1,1014 @@ +%{?scl:%scl_package valgrind} + +Summary: Tool for finding memory management bugs in programs +Name: %{?scl_prefix}valgrind +Version: 3.10.1 +Release: 15%{?dist} +Epoch: 1 +License: GPLv2+ +URL: http://www.valgrind.org/ +Group: Development/Debuggers + +# Only necessary for RHEL, will be ignored on Fedora +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +# Only arches that are supported upstream as multilib and that the distro +# has multilib builds for should set build_multilib 1. In practice that +# is only x86_64 and ppc64 (but not in fedora 21 and later, and never +# for ppc64le). +%global build_multilib 0 + +%ifarch x86_64 + %global build_multilib 1 +%endif + +%ifarch ppc64 + %if 0%{?rhel} + %global build_multilib 1 + %endif + %if 0%{?fedora} + %global build_multilib (%fedora < 21) + %endif +%endif + +# Note s390x doesn't have an openmpi port available. +%ifarch %{ix86} x86_64 ppc ppc64 ppc64le %{arm} aarch64 +%global build_openmpi 1 +%else +%global build_openmpi 0 +%endif + +# Don't run dwz or generate minisymtab, valgrind doesn't handle compressed +# DWARF very well and it might read its own vgpreload libraries. Generating +# minisymtabs doesn't really work for the staticly linked tools. +%define _find_debuginfo_dwz_opts %{nil} +%undefine _include_minidebuginfo + +Source0: http://www.valgrind.org/downloads/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 + +# undef st_atime, st_mtime and st_ctime. Unknown why this is (still?) needed. +Patch3: valgrind-3.9.0-stat_h.patch + +# Make ld.so supressions slightly less specific. +Patch4: valgrind-3.9.0-ldso-supp.patch + +# KDE#342795 Internal glibc __GI_mempcpy call should be intercepted +Patch5: valgrind-3.10.1-mempcpy.patch + +# KDE#343802 - s390x memcheck reports spurious conditional jump +Patch6: valgrind-3.10-s390-spechelper.patch + +# KDE#342038, KDE#343732, KDE#343733, KDE#344007, KDE#344307 +# mbind, get_mempolicy, set_mempolicy, flock, setgid, msgget, msgctl, +# msgrcv, msgsnd, accept4, mount, umount2 +Patch7: valgrind-3.10.1-aarch64-syscalls.patch + +# KDE#344007 ppc64 missing accept4 syscall +Patch8: valgrind-3.10.1-ppc64-accept4.patch + +# KDE#344279 - syscall sendmmsg on arm64 (269) and ppc32/64 (349) unhandled +# KDE#344295 - syscall recvmmsg on arm64 (243) and ppc32/64 (343) unhandled +# KDE#344318 - socketcall should wrap recvmmsg and sendmmsg +Patch9: valgrind-3.10.1-send-recv-mmsg.patch + +# Upstream valgrind svn r14530 +Patch10: valgrind-3.10.1-glibc-version-check.patch + +# Upstream valgrind svn r15133 +Patch11: valgrind-3.10-1-ppc64-sigpending.patch + +# KDE#343012 - Unhandled syscall 319 (memfd_create) +Patch12: valgrind-3.10.1-memfd_create.patch + +# KDE#347389 - Add support for the syncfs system call. +Patch13: valgrind-3.10.1-syncfs.patch + +# Upstream valgrind svn r15304 +Patch14: valgrind-3.10.1-arm-process_vm_readv_writev.patch + +# Upstream valgrind svn r15305 +Patch15: valgrind-3.10.1-fno-ipa-icf.patch + +# Upstream valgrind svn r14780 and r15308 +Patch16: valgrind-3.10.1-demangle-q.patch + +# KDE#345928 callstack only contains current function for small stacks +Patch17: valgrind-3.10.1-cfi-redzone.patch + +# KDE#344499 Fix compilation for Linux kernel >= 4. +Patch18: valgrind-3.10.1-kernel-4.0.patch + +# KDE#349941 di_notify_mmap might create wrong start/size DebugInfoMapping +Patch19: valgrind-3.10.1-di_notify_mmap.patch + +# KDE#349828 memcpy intercepts memmove causing src/dst overlap error +Patch20: valgrind-3.10.1-memmove-ld_so-ppc64.patch + +# KDE#352130 helgrind reports false races for printfs using mempcpy +Patch21: valgrind-3.10.1-helgrind-supp-io-mempcpy.patch + +# KDE#278744 cvtps2pd with redundant RexW +Patch22: valgrind-3.11.0-rexw-cvtps2pd.patch + +# DTS specific. +Patch1001: valgrind-3.9.0-mpiwrapper.patch + +%if %{build_multilib} +# Ensure glibc{,-devel} is installed for both multilib arches +BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so +%endif + +%if 0%{?fedora} >= 15 +BuildRequires: glibc-devel >= 2.14 +%else +%if 0%{?rhel} >= 6 +BuildRequires: glibc-devel >= 2.12 +%else +BuildRequires: glibc-devel >= 2.5 +%endif +%endif + +%if %{build_openmpi} +BuildRequires: openmpi-devel >= 1.3.3 +%endif + +# For %%build and %%check. +# In case of a software collection, pick the matching gdb and binutils. +BuildRequires: %{?scl_prefix}gdb +BuildRequires: %{?scl_prefix}binutils + +# gdbserver_tests/filter_make_empty uses ps in test +BuildRequires: procps + +%{?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 + +ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64 + +%ifarch %{ix86} +%define valarch x86 +%define valsecarch %{nil} +%endif +%ifarch x86_64 +%define valarch amd64 +%define valsecarch x86 +%endif +%ifarch ppc +%define valarch ppc32 +%define valsecarch %{nil} +%endif +%ifarch ppc64 + %define valarch ppc64be + %if %{build_multilib} + %define valsecarch ppc32 + %else + %define valsecarch %{nil} + %endif +%endif +%ifarch ppc64le +%define valarch ppc64le +%define valsecarch %{nil} +%endif +%ifarch s390x +%define valarch s390x +%define valsecarch %{nil} +%endif +%ifarch armv7hl +%define valarch arm +%define valsecarch %{nil} +%endif +%ifarch aarch64 +%define valarch arm64 +%define valsecarch %{nil} +%endif + +%description +Valgrind is a tool to help you find memory-management problems in your +programs. When a program is run under Valgrind's supervision, all +reads and writes of memory are checked, and calls to +malloc/new/free/delete are intercepted. As a result, Valgrind can +detect a lot of problems that are otherwise very hard to +find/diagnose. + +%package devel +Summary: Development files for valgrind +Group: Development/Debuggers +Requires: %{?scl_prefix}valgrind = %{epoch}:%{version}-%{release} + +%description devel +Header files and libraries for development of valgrind aware programs +or valgrind plugins. + +%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. + +%prep +%setup -q -n %{?scl:%{pkg_name}}%{!?scl:%{name}}-%{version} + +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 + +# DTS Only needed for RHEL6 since that has diffrent openmpi and compat-openmpi +# packages that might differ per minor version. +%if 0%{?rhel} == 6 +%patch1001 -p1 +%endif + +%build +# We need to use the software collection compiler and binutils if available. +# The configure checks might otherwise miss support for various newer +# assembler instructions. +%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} + +CC=gcc +%if %{build_multilib} +# Ugly hack - libgcc 32-bit package might not be installed +mkdir -p shared/libgcc/32 +ar r shared/libgcc/32/libgcc_s.a +ar r shared/libgcc/libgcc_s_32.a +CC="gcc -B `pwd`/shared/libgcc/" +%endif + +# Old openmpi-devel has version depended paths for mpicc. +%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 + +# Filter out some flags that cause lots of valgrind test failures. +# Also filter away -O2, valgrind adds it wherever suitable, but +# not for tests which should be -O0, as they aren't meant to be +# compiled with -O2 unless explicitely requested. Same for any -mcpu flag. +# Ideally we will change this to only be done for the non-primary build +# and the test suite. +%undefine _hardened_build +OPTFLAGS="`echo " %{optflags} " | sed 's/ -m\(64\|3[21]\) / /g;s/ -fexceptions / /g;s/ -fstack-protector\([-a-z]*\) / / g;s/ -Wp,-D_FORTIFY_SOURCE=2 / /g;s/ -O2 / /g;s/ -mcpu=\([a-z0-9]\+\) / /g;s/^ //;s/ $//'`" +%configure CC="$CC" CFLAGS="$OPTFLAGS" CXXFLAGS="$OPTFLAGS" \ +%if %{build_openmpi} + --with-mpicc=%{mpiccpath} \ +%endif + GDB=%{_bindir}/gdb + +make %{?_smp_mflags} + +# Ensure there are no unexpected file descriptors open, +# the testsuite otherwise fails. +cat > close_fds.c < +#include +int main (int argc, char *const argv[]) +{ + int i, j = sysconf (_SC_OPEN_MAX); + if (j < 0) + exit (1); + for (i = 3; i < j; ++i) + close (i); + execvp (argv[1], argv + 1); + exit (1); +} +EOF +gcc $RPM_OPT_FLAGS -o close_fds close_fds.c + +%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 + +%if "%{valsecarch}" != "" +pushd $RPM_BUILD_ROOT%{_libdir}/valgrind/ +rm -f *-%{valsecarch}-* || : +for i in *-%{valarch}-*; do + j=`echo $i | sed 's/-%{valarch}-/-%{valsecarch}-/'` + ln -sf ../../lib/valgrind/$j $j +done +popd +%endif + +rm -f $RPM_BUILD_ROOT%{_libdir}/valgrind/*.supp.in + +%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 \ +%if 0%{?rhel} == 5 + HAVE_BUILTIN_ATOMIC HAVE_BUILTIN_ATOMIC_CXX \ +%endif + ; 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 + +%check +# Make sure a basic binary runs. +./vg-in-place /bin/true + +# Build the test files with the software collection compiler if available. +%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} +# Make sure no extra CFLAGS leak through, the testsuite sets all flags +# necessary. See also configure above. +make %{?_smp_mflags} CFLAGS="" check || : + +echo ===============TESTING=================== +./close_fds make regtest || : + +# 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 . -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 +%defattr(-,root,root) +%doc COPYING NEWS README_* +%doc docs/installed/html docs/installed/*.pdf +%{_bindir}/* +%dir %{_libdir}/valgrind +%{_libdir}/valgrind/*[^ao] +%{_libdir}/valgrind/[^l]*o +%{_mandir}/man1/* + +%files devel +%defattr(-,root,root) +%{_includedir}/valgrind +%dir %{_libdir}/valgrind +%{_libdir}/valgrind/*.a +%{_libdir}/pkgconfig/* + +%if %{build_openmpi} +%files openmpi +%defattr(-,root,root) +%dir %{_libdir}/valgrind +%{_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 +* Tue Oct 13 2015 Mark Wielaard - 3.10.1-15 +- Add valgrind-3.11.0-rexw-cvtps2pd.patch (#1268438) + +* Tue Sep 01 2015 Mark Wielaard - 3.10.1-14 +- Add valgrind-3.10.1-helgrind-supp-io-mempcpy.patch (#1248891) + +* Tue Jul 07 2015 Mark Wielaard - 3.10.1-13 +- 3.10.1 Refresh. + - Add valgrind-3.10.1-di_notify_mmap.patch + - Add valgrind-3.10.1-memmove-ld_so-ppc64.patch + - Add valgrind-3.10.1-kernel-4.0.patch. + - Add valgrind-3.10.1-cfi-redzone.patch. + - 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 + - Add valgrind-3.10-1-ppc64-sigpending.patch + - Filter out -fstack-protector-strong and disable _hardened_build. + - 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 + - Add accept4 to valgrind-3.10.1-aarch64-syscalls.patch. + - Add valgrind-3.10.1-ppc64-accept4.patch. + - Add valgrind-3.10.1-aarch64-syscalls.patch. + - Add valgrind-3.10-s390-spechelper.patch. + - Add valgrind-3.10.1-mempcpy.patch. + +* Thu Dec 18 2014 Mark Wielaard - 3.10.1-1 +- Upgrade to 3.10.1. + +* Wed May 28 2014 Mark Wielaard - 3.9.0-8.3 +- Fix %%post to be rhel6 only (#1101849) + +* Mon May 19 2014 Mark Wielaard - 3.9.0-8.2 +- Fix colon typo in make nonexp-regtest. + +* Mon May 12 2014 Mark Wielaard - 3.9.0-8.1 +- Rebase to 3.9.0-8. +- Don't cleanup fake 32-bit libgcc created in %%build. make regtest + might depend on it to build -m32 binaries. +- Use nonexp-regtest in check so gdbserver_tests are not run. + They might hang the build. + +* Wed Dec 11 2013 Mark Wielaard - 3.8.1-30.8 +- Remove nonexp-regtest check hack. (#1019750) + +* Mon Nov 4 2013 Mark Wielaard - 3.8.1-30.7 +- Add valgrind-3.8.1-amd64-sigstack.patch (#1026230) + +* Mon Oct 14 2013 Mark Wielaard - 3.8.1-30.6 +- Fix colon typo in make nonexp-regtest. + +* Mon Oct 14 2013 Mark Wielaard - 3.8.1-30.5 +- Use nonexp-regtest in check so gdbserver_tests are not run. + They might hang the build. + +* Mon Oct 14 2013 Mark Wielaard - 3.8.1-30.4 +- Fix multilib issue with HAVE_PTRACE_GETREGS in config.h. + +* Fri Oct 04 2013 Mark Wielaard - 3.8.1-30.3 +- Rebuilt for i386 and x86_64. + +* Thu Oct 03 2013 Mark Wielaard - 3.8.1-30.2 +- Fixup selinux labels even on RHEL6 in post. (#1014726). + +* Tue Oct 01 2013 Mark Wielaard - 3.8.1-30.1 +- Resync with 3.8.1-30 +- Filter out -mcpu= so tests are compiled with the right flags. (#996927). +- Implement SSE4 MOVNTDQA insn (valgrind-3.8.1-movntdqa.patch) +- Don't BuildRequire /bin/ps, just BuildRequire procps + (procps-ng provides procps). +- 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 +- Allow building against glibc 2.18. (#999169) +- Add valgrind-3.8.1-s390-STFLE.patch + s390 message-security assist (MSA) instruction extension not implemented. +- 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. +- tests/check_isa-2_07_cap should be executable. +- Add valgrind-3.8.1-initial-power-isa-207.patch + Initial ISA 2.07 support for POWER8-tuned libc. +- Don't depend on docdir location and version in openmpi subpackage + description (#993938). +- Enable openmpi subpackage also on arm. +- Add valgrind-3.8.1-ptrace-include-configure.patch (#992847) +- 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 +- Add valgrind-3.8.1-zero-size-sections.patch. Resolves issues with zero + sized .eh_frame sections on ppc64. + +* Fri Aug 02 2013 Lubos Kocman - 3.8.1-14.4 +- Fixing incorrect dist-tag el5_6 -> el5 + +* Thu Aug 1 2013 Frank Ch. Eigler 3.8.1-14.3 +- bz988640, selinux context fix + +* Fri Jun 28 2013 Mark Wielaard 3.8.1-14.2 +- selinux context fixup only needed for RHEL5 scl build. (#979412) + +* Thu Apr 18 2013 Mark Wielaard 3.8.1-14.1 +- Resync with fedora 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 Mar 12 2013 Mark Wielaard 3.8.1-13.1 +- Resync with fedora 3.8.1-13 + - Add valgrind-3.8.1-text-segment.patch + - Don't undefine _missing_build_ids_terminate_build. + - Fix quoting in valgrind valgrind-3.8.1-enable-armv5.patch + - Add valgrind-3.8.1-regtest-fixlets.patch. + +* Tue Mar 12 2013 Mark Wielaard 3.8.1-11.1 +- Resync with fedora 3.8.1-11 + Mark Wielaard + - Add valgrind-3.8.1-manpages.patch + - Don't disable -debuginfo package generation, but do undefine + _missing_build_ids_terminate_build. + - Add valgrind-3.8.1-sendmsg-flags.patch + - Add valgrind-3.8.1-ptrace-setgetregset.patch + - Add valgrind-3.8.1-static-variables.patch + Jon Ciesla + - Merge review fixes, BZ 226522. + +* Wed Jan 16 2013 Mark Wielaard 3.8.1-6.1 +- Allow building against glibc-2.17. + +* Mon Jan 14 2013 Mark Wielaard 3.8.1-5.1 +- 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) +- Rebase on fedora valgrind 3.8.1-5 + +* Tue Oct 16 2012 Mark Wielaard 3.8.1-3.2 +- Add valgrind-3.8.1-xaddb.patch (#866943, KDE#307106) + +* Mon Oct 15 2012 Mark Wielaard 3.8.1-3.1 +- Rebase on fedora valgrind 3.8.1-3 + +* Fri Sep 14 2012 Mark Wielaard 3.8.0-8.2 +- Only use DTS binutils and gdb for new asm and test checks, not gcc. + +* Wed Sep 12 2012 Mark Wielaard 3.8.0-8.1 +- Rebase on fedora 3.8.0-8. + - Add valgrind-3.8.0-avx2-bmi-fma.patch (KDE#305728) + - Add configure fixup valgrind-3.8.0-bmi-conf-check.patch +- Use scl gcc and binutils also for build to pick up new instruction support. + +* Wed Sep 12 2012 Mark Wielaard - 3.8.0-6.2 +- libmpiwrapper should not require a particular libmpi.so version (#854542) + +* Tue Sep 11 2012 Mark Wielaard - 3.8.0-6.1 +- Rebase on fedora 3.8.0-6. + - tweak up to allow simultaneous installation + of valgrind-devel.{i686,x86_64} (#848146) + - Add valgrind-3.8.0-find-buildid.patch workaround bug #849435 (KDE#305431). + - Add valgrind-3.8.0-abbrev-parsing.patch for #849783 (KDE#305513). + - Add valgrind-3.8.0-lzcnt-tzcnt-bugfix.patch (KDE#295808) + - Add valgrind-3.8.0-avx-alignment-check.patch (KDE#305926) + +* Fri Aug 10 2012 Mark Wielaard - 3.8.0-1.1 +- update to 3.8.0 release, based on fedora 3.8.0-1. + +* Mon Jul 23 2012 Mark Wielaard - 3.7.0-4.2 +- Enable devtoolset-1.1-gcc build requires again for check. + +* Mon Jul 16 2012 Mark Wielaard - 3.7.0-4.1 +- Add SCL macros +- Temporarily disable gcc requires, devtoolset-1.1-gcc not yet there. + +* 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