3.15.0-0.4.RC2

- Update to 3.15.0.RC2.
- Drop upstreamed patches:
  - valgrind-3.15.0-s390x-get-startregs-constraint.patch
  - valgrind-3.15.0-missing-a-c.patch
  - valgrind-3.15.0-libstdc++-supp.patch
  - valgrind-3.15.0-dhat-x86.patch
  - valgrind-3.15.0-gdb-output1.patch
  - valgrind-3.15.0-gdb-output2.patch
- Update valgrind-3.15.0-mmap-32bit.patch to upstream version.
- gdb on f30 and rawhide is currently broken, don't run_full_regtest.
- Any glibc-devel version is.
- Drop rhel5 special case for tools-devel.
- Use /bin/true --help as sanity test.
This commit is contained in:
Mark Wielaard 2019-04-11 20:34:49 +02:00
parent 375230e95f
commit afdb1bdaba
10 changed files with 47 additions and 341 deletions

1
.gitignore vendored
View File

@ -32,3 +32,4 @@
/valgrind-3.14.0.RC2.tar.bz2 /valgrind-3.14.0.RC2.tar.bz2
/valgrind-3.14.0.tar.bz2 /valgrind-3.14.0.tar.bz2
/valgrind-3.15.0.RC1.tar.bz2 /valgrind-3.15.0.RC1.tar.bz2
/valgrind-3.15.0.RC2.tar.bz2

View File

@ -1 +1 @@
SHA512 (valgrind-3.15.0.RC1.tar.bz2) = 597173ada0989ad4ee8cf3b120b87d6575377101db9f6514458e86f6a743b9514f5b1469486a297ca7b46da70d3c91bc1a19ac0ee19bf50f4fdb645b689df20e SHA512 (valgrind-3.15.0.RC2.tar.bz2) = 8c8d6fc82e26b3c02a042279f1b135b65299772ebd7103e8159f26d83482ea8e8f8917a6be7fd5bcdce84e5193fa163d39e631db6fb8cb11fe750c3d60813756

View File

@ -1,18 +0,0 @@
commit e63d90d66e8de6d6ec2c92e3b0a32cc165b83369
Author: Mark Wielaard <mark@klomp.org>
Date: Wed Apr 10 01:22:37 2019 +0200
dhat is broken on x86 (32bit)
diff --git a/dhat/dh_main.c b/dhat/dh_main.c
index 47a9327..a933328 100644
--- a/dhat/dh_main.c
+++ b/dhat/dh_main.c
@@ -794,6 +794,7 @@ void dh_handle_noninsn_write ( CorePart part, ThreadId tid,
{
switch (part) {
case Vg_CoreSysCall:
+ case Vg_CoreClientReq:
dh_handle_write(base, size);
break;
case Vg_CoreSignal:

View File

@ -1,164 +0,0 @@
commit 12addd06445a1685e91ff091867ae27d6eac733f
Author: Alexandra Hájková <ahajkova@redhat.com>
Date: Tue Apr 9 11:09:56 2019 +0200
gdbserver_tests: adjust filtering for the new gdb output
mcsigpass and mcsignopass tests fails due to the slightly different
gdb output. Filter the tests output to make it the same for different
gdb version. Change mcsigpass and mcsignopass .exp to fit filtered
.out.
More generic regexp by Stefan Maksimovic <stefan.maksimovic@rt-rk.com>.
https://bugs.kde.org/show_bug.cgi?id=406355
diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb
index 05bbe4c..947e7bc 100755
--- a/gdbserver_tests/filter_gdb
+++ b/gdbserver_tests/filter_gdb
@@ -139,6 +139,7 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d'
-e 's/VgTs_WaitSys) 0x/VgTs_WaitSys) 0x/' \
-e '/Cannot access memory at address 0x......../d' \
-e '/\[New Thread/d' \
+ -e 's/^0x........ in \(\w\+ (\)/\1/' \
-e '/^$/d' |
# remove all the lines telling where the SIGFPE was trapped.
diff --git a/gdbserver_tests/mcbreak.stdoutB.exp b/gdbserver_tests/mcbreak.stdoutB.exp
index ba526da..7559037 100644
--- a/gdbserver_tests/mcbreak.stdoutB.exp
+++ b/gdbserver_tests/mcbreak.stdoutB.exp
@@ -43,11 +43,11 @@ Breakpoint 3, main (argc=1, argv=0x........) at t.c:120
Delete all breakpoints? (y or n) [answered Y; input not from terminal]
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
-0x........ in make_error (s=0x........ "called from level") at t.c:41
+make_error (s=0x........ "called from level") at t.c:41
41 if (int_und == 0)
44 printf ("%s int_und is not zero\n", s);
old_pc has changed after step
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
-0x........ in make_error (s=0x........ "called from main") at t.c:41
+make_error (s=0x........ "called from main") at t.c:41
41 if (int_und == 0)
diff --git a/gdbserver_tests/mcinfcallWSRU.stderrB.exp b/gdbserver_tests/mcinfcallWSRU.stderrB.exp
index a2f2b87..06dc433 100644
--- a/gdbserver_tests/mcinfcallWSRU.stderrB.exp
+++ b/gdbserver_tests/mcinfcallWSRU.stderrB.exp
@@ -14,7 +14,7 @@ Breakpoint 1, sleeper_or_burner (v=0x........) at sleepers.c:74
74 int i = 0;
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
-0x........ in do_burn () at sleepers.c:41
+do_burn () at sleepers.c:41
41 for (i = 0; i < burn; i++) loopnr++;
[Switching to thread 1 (Thread ....)]
#0 0x........ in do_burn ()
diff --git a/gdbserver_tests/mcsignopass.stdoutB.exp b/gdbserver_tests/mcsignopass.stdoutB.exp
index d77f983..18c830b 100644
--- a/gdbserver_tests/mcsignopass.stdoutB.exp
+++ b/gdbserver_tests/mcsignopass.stdoutB.exp
@@ -6,54 +6,54 @@ Signal Stop Print Pass to program Description
SIGFPE Yes Yes Yes Arithmetic exception
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Signal Stop Print Pass to program Description
SIGSEGV No Yes Yes Segmentation fault
Continuing.
Program received signal SIGSEGV, Segmentation fault.
Program received signal SIGBUS, Bus error.
-0x........ in test3 () at faultstatus.c:126
+test3 () at faultstatus.c:126
126 mapping[FILESIZE+10];
Continuing.
Program received signal SIGFPE, Arithmetic exception.
diff --git a/gdbserver_tests/mcsigpass.stdoutB.exp b/gdbserver_tests/mcsigpass.stdoutB.exp
index de6c263..6800358 100644
--- a/gdbserver_tests/mcsigpass.stdoutB.exp
+++ b/gdbserver_tests/mcsigpass.stdoutB.exp
@@ -1,14 +1,14 @@
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test1 () at faultstatus.c:116
+test1 () at faultstatus.c:116
116 *BADADDR = 'x';
Continuing.
Program received signal SIGSEGV, Segmentation fault.
-0x........ in test2 () at faultstatus.c:121
+test2 () at faultstatus.c:121
121 mapping[0] = 'x';
Continuing.
Program received signal SIGBUS, Bus error.
-0x........ in test3 () at faultstatus.c:126
+test3 () at faultstatus.c:126
126 mapping[FILESIZE+10];
Continuing.
Program received signal SIGFPE, Arithmetic exception.
diff --git a/gdbserver_tests/nlcontrolc.stdoutB.exp b/gdbserver_tests/nlcontrolc.stdoutB.exp
index e334fd0..e8a5ff8 100644
--- a/gdbserver_tests/nlcontrolc.stdoutB.exp
+++ b/gdbserver_tests/nlcontrolc.stdoutB.exp
@@ -9,7 +9,7 @@ $4 = 0
changed burning parameters
Continuing.
Program received signal SIGTRAP, Trace/breakpoint trap.
-0x........ in do_burn () at sleepers.c:41
+do_burn () at sleepers.c:41
41 for (i = 0; i < burn; i++) loopnr++;
$5 = 0
$6 = 0

View File

@ -1,19 +0,0 @@
commit 983cb6ab1d60c79a8a9c6723815468fc59c4f248
Author: Mark Wielaard <mark@klomp.org>
Date: Wed Apr 10 01:28:24 2019 +0200
Bug 406357
diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb
index 05bbe4c..d0ab11d 100755
--- a/gdbserver_tests/filter_gdb
+++ b/gdbserver_tests/filter_gdb
@@ -92,7 +92,7 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d'
-e 's/^Thread .... received /Program received /' \
-e 's/#[0-9]\( 0x........ in sleeper_or_burner\)/#.\1/' \
-e 's/\(#0 0x........ in do_burn ()\) at sleepers.c:41/\1/' \
- -e '/^Reading symbols from .*\.\.\.done\./d' \
+ -e '/^Reading symbols from .*\.\.\.\(done\.\)\?/d' \
-e '/^Loaded symbols for .*$/d' \
-e '/^Current language.*/d' \
-e '/^The current source language is.*/d' \

View File

@ -1,51 +0,0 @@
commit 751b5736bb597210c5d9de40cb586d4b341bf29a
Author: Mark Wielaard <mark@klomp.org>
Date: Tue Apr 9 16:09:50 2019 +0200
More memcheck/tests/libstdc++.supp suppressions
diff --git a/memcheck/tests/libstdc++.supp b/memcheck/tests/libstdc++.supp
index fad537f..28ab182 100644
--- a/memcheck/tests/libstdc++.supp
+++ b/memcheck/tests/libstdc++.supp
@@ -49,6 +49,9 @@
# still reachable: 72,704 bytes in 1 blocks
# suppressed: 0 bytes in 0 blocks
+# All the following suppressions are variants of
+# _dl_init -> call_init which calls the DT_INIT_ARRAY functions
+
{
malloc-leaks-cxx-stl-string-classes
Memcheck:Leak
@@ -61,6 +64,16 @@
obj:*lib*/ld-2.*.so
}
{
+ malloc-leaks-cxx-stl-string-classes-2
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:malloc
+ obj:*lib*/libstdc++.so*
+ fun:call_init.part.0
+ fun:_dl_init
+ obj:*lib*/ld-2.*.so
+}
+{
malloc-leaks-cxx-stl-string-classes-debug
Memcheck:Leak
match-leak-kinds: reachable
@@ -73,3 +86,13 @@
fun:_dl_init
obj:*lib*/ld-2.*.so
}
+{
+ malloc-leaks-cxx-stl-string-classes-debug2
+ Memcheck:Leak
+ match-leak-kinds: reachable
+ fun:malloc
+ obj:*
+ fun:call_init
+ fun:_dl_init
+ fun:_dl_start_user
+}

View File

@ -1,19 +0,0 @@
commit e5ff7e633a768a421dafbc115c3a3c2f713338db
Author: Mark Wielaard <mark@klomp.org>
Date: Wed Apr 10 00:33:26 2019 +0200
add missing a.c
diff --git a/cachegrind/tests/a.c b/cachegrind/tests/a.c
new file mode 100644
index 0000000..cd1c66e
--- /dev/null
+++ b/cachegrind/tests/a.c
@@ -0,0 +1,7 @@
+int main(void) {
+ int z = 0;
+ for (int i = 0; i < 1000000; i++) {
+ z += i;
+ }
+ return z % 256;
+}

View File

@ -1,11 +1,29 @@
commit 535d2ff4f2f755faa8b1a9e467833eca455bd2d7
Author: Mark Wielaard <mark@klomp.org>
Date: Thu Apr 11 18:06:34 2019 +0200
none/tests/amd64-linux/map_32bits.vgtest fails too easily
On various systems none/tests/amd64-linux/map_32bits.vgtest fails with:
first mmap: Cannot allocate memory.
The problem is that the --aspace-minaddr is too tight. Newer glibc seem
to mmap some memory and so even our first mmap with MMAP_32BIT will fail.
The solution is to make a bit more memory < 2GB available.
If there is 16MB available the test always seems to succeed without
needing too many tries. The original 256K is too low.
https://bugs.kde.org/show_bug.cgi?id=406422
diff --git a/none/tests/amd64-linux/map_32bits.vgtest b/none/tests/amd64-linux/map_32bits.vgtest diff --git a/none/tests/amd64-linux/map_32bits.vgtest b/none/tests/amd64-linux/map_32bits.vgtest
index 2b7f3a0..2c17854 100644 index 2b7f3a0..43011e3 100644
--- a/none/tests/amd64-linux/map_32bits.vgtest --- a/none/tests/amd64-linux/map_32bits.vgtest
+++ b/none/tests/amd64-linux/map_32bits.vgtest +++ b/none/tests/amd64-linux/map_32bits.vgtest
@@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
prog: map_32bits prog: map_32bits
# take a big aspacemgr minaddr, to quickly reach the 2GB limit # take a big aspacemgr minaddr, to quickly reach the 2GB limit
-vgopts: -q --aspace-minaddr=0x7ff60000 -vgopts: -q --aspace-minaddr=0x7ff60000
+vgopts: -q --aspace-minaddr=0x70000000 +vgopts: -q --aspace-minaddr=0x7f000000
stderr_filter: filter_stderr stderr_filter: filter_stderr

View File

@ -1,19 +0,0 @@
commit b2d2da64b0de1c4d657b63187967b68606e84711
Author: Julian Seward <jseward@acm.org>
Date: Mon Apr 8 14:16:48 2019 +0200
GET_STARTREGS for s390: fix register constraint (per comments from Andreas Arnez).
diff --git a/coregrind/m_libcassert.c b/coregrind/m_libcassert.c
index 6d1cd4c..bb9b92b 100644
--- a/coregrind/m_libcassert.c
+++ b/coregrind/m_libcassert.c
@@ -180,7 +180,7 @@
"std %%f6, 72(%1);" \
"std %%f7, 80(%1);" \
: /* out */ "=r" (ia) \
- : /* in */ "r" (&block[0]) \
+ : /* in */ "a" (&block[0]) \
: /* trash */ "memory" \
); \
(srP)->r_pc = ia; \

View File

@ -3,7 +3,7 @@
Summary: Tool for finding memory management bugs in programs Summary: Tool for finding memory management bugs in programs
Name: %{?scl_prefix}valgrind Name: %{?scl_prefix}valgrind
Version: 3.15.0 Version: 3.15.0
Release: 0.3.RC1%{?dist} Release: 0.4.RC2%{?dist}
Epoch: 1 Epoch: 1
License: GPLv2+ License: GPLv2+
URL: http://www.valgrind.org/ URL: http://www.valgrind.org/
@ -45,11 +45,12 @@ URL: http://www.valgrind.org/
# and experimental tools. # and experimental tools.
# Only run full regtests on fedora, but not on older rhel # Only run full regtests on fedora, but not on older rhel
# or when creating scl, the gdb_server tests might hang. # or when creating scl, the gdb_server tests might hang.
# Currently gdb on f30 and rawhide is broken.
%if %{is_scl} %if %{is_scl}
%global run_full_regtest 0 %global run_full_regtest 0
%else %else
%if 0%{?fedora} %if 0%{?fedora}
%global run_full_regtest 1 %global run_full_regtest (%fedora < 30)
%endif %endif
%if 0%{?rhel} %if 0%{?rhel}
%global run_full_regtest (%rhel >= 7) %global run_full_regtest (%rhel >= 7)
@ -63,7 +64,7 @@ URL: http://www.valgrind.org/
# So those will already have their full symbol table. # So those will already have their full symbol table.
%undefine _include_minidebuginfo %undefine _include_minidebuginfo
Source0: ftp://sourceware.org/pub/valgrind/valgrind-%{version}.RC1.tar.bz2 Source0: ftp://sourceware.org/pub/valgrind/valgrind-%{version}.RC2.tar.bz2
# Needs investigation and pushing upstream # Needs investigation and pushing upstream
Patch1: valgrind-3.9.0-cachegrind-improvements.patch Patch1: valgrind-3.9.0-cachegrind-improvements.patch
@ -79,41 +80,14 @@ Patch3: valgrind-3.9.0-ldso-supp.patch
# same directory is used independent of arch. # same directory is used independent of arch.
Patch4: valgrind-3.15.0-pkglibexecdir.patch Patch4: valgrind-3.15.0-pkglibexecdir.patch
# valgrind commit b2d2da64b0de1c4d657b63187967b68606e84711
# GET_STARTREGS for s390: fix register constraint
Patch5: valgrind-3.15.0-s390x-get-startregs-constraint.patch
# KDE#406352 RC1 fails cachegrind/callgrind ann tests because of missing a.c
Patch6: valgrind-3.15.0-missing-a-c.patch
# KDE#406360 memcheck/tests/libstdc++.supp needs more supression variants
Patch7: valgrind-3.15.0-libstdc++-supp.patch
# KDE#406354 dhat is broken on x86 (32bit)
Patch8: valgrind-3.15.0-dhat-x86.patch
# KDE#406355 mcsignopass and mcsigpass fails due to a difference in gdb output
Patch9: valgrind-3.15.0-gdb-output1.patch
# KDE#406357 RC1 fails gdbserver_tests because of gdb output change
Patch10: valgrind-3.15.0-gdb-output2.patch
# KDE#405205 filter_libc: remove the futex syscall error line entirely # KDE#405205 filter_libc: remove the futex syscall error line entirely
Patch11: valgrind-3.15.0-filter-libc-futex.patch Patch5: valgrind-3.15.0-filter-libc-futex.patch
# KDE#406422 none/tests/amd64-linux/map_32bits.vgtest fails too easily # KDE#406422 none/tests/amd64-linux/map_32bits.vgtest fails too easily
Patch12: valgrind-3.15.0-mmap-32bit.patch Patch6: valgrind-3.15.0-mmap-32bit.patch
%if 0%{?fedora} >= 15 BuildRequires: glibc-devel
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} %if %{build_openmpi}
BuildRequires: openmpi-devel >= 1.3.3 BuildRequires: openmpi-devel >= 1.3.3
@ -230,7 +204,7 @@ Valgrind User Manual for details.
%endif %endif
%prep %prep
%setup -q -n %{?scl:%{pkg_name}}%{!?scl:%{name}}-%{version}.RC1 %setup -q -n %{?scl:%{pkg_name}}%{!?scl:%{name}}-%{version}.RC2
%patch1 -p1 %patch1 -p1
%patch2 -p1 %patch2 -p1
@ -238,14 +212,6 @@ Valgrind User Manual for details.
%patch4 -p1 %patch4 -p1
%patch5 -p1 %patch5 -p1
%patch6 -p1 %patch6 -p1
# a.c cannot be "newer" than cgout-test
touch cachegrind/tests/cgout-test
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%build %build
CC=gcc CC=gcc
@ -327,11 +293,7 @@ popd
%ifarch %{ix86} x86_64 %ifarch %{ix86} x86_64
# To avoid multilib clashes in between i?86 and x86_64, # To avoid multilib clashes in between i?86 and x86_64,
# tweak installed <valgrind/config.h> a little bit. # tweak installed <valgrind/config.h> a little bit.
for i in HAVE_PTHREAD_CREATE_GLIBC_2_0 HAVE_PTRACE_GETREGS HAVE_AS_AMD64_FXSAVE64 \ for i in HAVE_PTHREAD_CREATE_GLIBC_2_0 HAVE_PTRACE_GETREGS HAVE_AS_AMD64_FXSAVE64; do
%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,' \ 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 $RPM_BUILD_ROOT%{_includedir}/valgrind/config.h
done done
@ -365,7 +327,7 @@ LD_SHOW_AUXV=1 /bin/true
cat /proc/cpuinfo cat /proc/cpuinfo
# Make sure a basic binary runs. There should be no errors. # Make sure a basic binary runs. There should be no errors.
./vg-in-place --error-exitcode=1 /bin/true ./vg-in-place --error-exitcode=1 /bin/true --help
# Build the test files with the software collection compiler if available. # Build the test files with the software collection compiler if available.
%{?scl:PATH=%{_bindir}${PATH:+:${PATH}}} %{?scl:PATH=%{_bindir}${PATH:+:${PATH}}}
@ -458,6 +420,21 @@ fi
%endif %endif
%changelog %changelog
* Thu Apr 11 2019 Mark Wielaard <mjw@fedoraproject.org> - 3.15.0-0.4.RC2
- Update to 3.15.0.RC2.
- Drop upstreamed patches:
- valgrind-3.15.0-s390x-get-startregs-constraint.patch
- valgrind-3.15.0-missing-a-c.patch
- valgrind-3.15.0-libstdc++-supp.patch
- valgrind-3.15.0-dhat-x86.patch
- valgrind-3.15.0-gdb-output1.patch
- valgrind-3.15.0-gdb-output2.patch
- Update valgrind-3.15.0-mmap-32bit.patch to upstream version.
- gdb on f30 and rawhide is currently broken, don't run_full_regtest.
- Any glibc-devel version is.
- Drop rhel5 special case for tools-devel.
- Use /bin/true --help as sanity test.
* Wed Apr 10 2019 Mark Wielaard <mjw@fedoraproject.org> - 3.15.0-0.3.RC1 * Wed Apr 10 2019 Mark Wielaard <mjw@fedoraproject.org> - 3.15.0-0.3.RC1
- Enable full regtest on all fedora arches. - Enable full regtest on all fedora arches.
- Make sure that patched a.c is not newer than cgout-test. - Make sure that patched a.c is not newer than cgout-test.