- Add valgrind-3.13.0-arm-index-hardwire.patch (#1466017)
- Add valgrind-3.13.0-ucontext_t.patch
- Add valgrind-3.13.0-gdb-8-testfix.patch
- Add valgrind-3.13.0-disable-vgdb-child.patch
This commit is contained in:
Mark Wielaard 2017-06-29 20:34:46 +02:00
parent 39ca09ac42
commit bd144c9e1a
5 changed files with 354 additions and 1 deletions

View File

@ -0,0 +1,86 @@
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
index b8cc022..d54cae7 100644
--- a/coregrind/m_redir.c
+++ b/coregrind/m_redir.c
@@ -1485,6 +1485,17 @@ void VG_(redir_initialise) ( void )
(Addr)&VG_(arm_linux_REDIR_FOR_strcmp),
complain_about_stripped_glibc_ldso
);
+ /* index */
+ add_hardwired_spec(
+ "ld-linux.so.3", "index",
+ (Addr)&VG_(arm_linux_REDIR_FOR_index),
+ complain_about_stripped_glibc_ldso
+ );
+ add_hardwired_spec(
+ "ld-linux-armhf.so.3", "index",
+ (Addr)&VG_(arm_linux_REDIR_FOR_index),
+ complain_about_stripped_glibc_ldso
+ );
}
# elif defined(VGP_arm64_linux)
diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
index a532071..0488b54 100644
--- a/coregrind/m_trampoline.S
+++ b/coregrind/m_trampoline.S
@@ -625,26 +625,26 @@ VG_(arm_linux_REDIR_FOR_strlen):
bx lr
UD2_4
-//.global VG_(arm_linux_REDIR_FOR_index)
-//VG_(arm_linux_REDIR_FOR_index):
-// ldrb r3, [r0, #0] @ zero_extendqisi2
-// and r1, r1, #255
-// cmp r3, r1
-// @ lr needed for prologue
-// bne .L9
-// bx lr
-//.L12:
-// ldrb r3, [r0, #1]! @ zero_extendqisi2
-// cmp r3, r1
-// beq .L11
-//.L9:
-// cmp r3, #0
-// bne .L12
-// mov r0, #0
-// bx lr
-//.L11:
-// bx lr
-// UD2_4
+.global VG_(arm_linux_REDIR_FOR_index)
+VG_(arm_linux_REDIR_FOR_index):
+ ldrb r3, [r0, #0] @ zero_extendqisi2
+ and r1, r1, #255
+ cmp r3, r1
+ @ lr needed for prologue
+ bne .L9
+ bx lr
+.L12:
+ ldrb r3, [r0, #1]! @ zero_extendqisi2
+ cmp r3, r1
+ beq .L11
+.L9:
+ cmp r3, #0
+ bne .L12
+ mov r0, #0
+ bx lr
+.L11:
+ bx lr
+ UD2_4
.global VG_(arm_linux_REDIR_FOR_memcpy)
VG_(arm_linux_REDIR_FOR_memcpy):
diff --git a/coregrind/pub_core_trampoline.h b/coregrind/pub_core_trampoline.h
index 3a9bafe..e29427d 100644
--- a/coregrind/pub_core_trampoline.h
+++ b/coregrind/pub_core_trampoline.h
@@ -100,7 +100,7 @@ extern Addr VG_(ppctoc_magic_redirect_return_stub);
extern Addr VG_(arm_linux_SUBST_FOR_sigreturn);
extern Addr VG_(arm_linux_SUBST_FOR_rt_sigreturn);
extern UInt VG_(arm_linux_REDIR_FOR_strlen)( void* );
-//extern void* VG_(arm_linux_REDIR_FOR_index) ( void*, Int );
+extern void* VG_(arm_linux_REDIR_FOR_index) ( void*, Int );
extern void* VG_(arm_linux_REDIR_FOR_memcpy)( void*, void*, Int );
extern void* VG_(arm_linux_REDIR_FOR_strcmp)( void*, void* );
#endif

View File

@ -0,0 +1,36 @@
commit 59af5db9c15d8ea03c1521736fb1f107d66bce08
Author: philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Sun Jun 25 20:25:50 2017 +0000
After fork, vgdb activity is polled according to the nr of bbs done :
once the nr of bbs done reaches the next vgdb poll, a check for vgdb
activity is done.
This might lead to the activation of gdbserver after fork.
Such poll is however not expected, unless the children is
to be trace.
This spurious poll in the forked child can cause failures
depending on the nr of bbs done before the fork, and the
nr of bbs done between the fork and the exec.
=> disable vgdb poll in the child in the cleanup after fork
in the child, unless the children have to be traced.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16454 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_gdbserver/m_gdbserver.c b/coregrind/m_gdbserver/m_gdbserver.c
index 87fbce2..648d543 100644
--- a/coregrind/m_gdbserver/m_gdbserver.c
+++ b/coregrind/m_gdbserver/m_gdbserver.c
@@ -646,6 +646,10 @@ static void gdbserver_cleanup_in_child_after_fork(ThreadId me)
if (VG_(clo_trace_children)) {
VG_(gdbserver_prerun_action) (me);
+ } else {
+ /* After fork, if we do not trace the children, disable vgdb
+ poll to avoid gdbserver being called unexpectedly. */
+ VG_(disable_vgdb_poll) ();
}
}

View File

@ -0,0 +1,183 @@
commit 21788250c945713fa25c16f2683e1f9cd0bb6ccf
Author: philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Sun Jun 25 12:40:53 2017 +0000
Fix some tests failure with GDB 8.0
At the beginning of a Valgrind gdbserver test,
2 messages are produced when launching the command
target remote | vgdb
A message output by vgdb:
relaying data between gdb and process <pid>
(this message is read by GDB from the vgdb pipe, and re-output
on stderr)
and a message produced by GDB:
Remote debugging using | ./vgdb
GDB 8.0 changes the order in which the above messages are output.
This causes 2 tests to fail, as the 'relaying' line appears
then in a part of the output deleted by a filter script.
To avoid this, change the filter scripts to always remove
this 'relaying line', which is not particularly interesting to check.
All the .exp files containining such a 'relaying' line are updated
accordingly.
This has been tested with various gdb versions (7.5, 7.7, 7.12, 8.0)
on amd64 and/or ppc64.
Thanks to Mark Wielaard, which helped to investigate this problem
by bisecting the GDB patches in GDB 8.0 causing this change of
behaviour.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16453 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/gdbserver_tests/filter_gdb b/gdbserver_tests/filter_gdb
index 7177720..ed78cfe 100755
--- a/gdbserver_tests/filter_gdb
+++ b/gdbserver_tests/filter_gdb
@@ -72,7 +72,7 @@ sed -e '/Remote debugging using/,/vgdb launched process attached/d'
-e '/^Missing separate debuginfo/d' \
-e '/\/_exit.c: No such file or directory/d' \
-e '/^Try: zypper install -C/d' \
- -e 's/\(relaying data between gdb and process \)[0-9][0-9]*/\1..../' \
+ -e '/relaying data between gdb and process/d' \
-e 's/pid [0-9][0-9]*/pid ..../g' \
-e 's/Thread [0-9][0-9]*/Thread ..../g' \
-e '/\[Switching to Thread ....\]/d' \
diff --git a/gdbserver_tests/filter_vgdb b/gdbserver_tests/filter_vgdb
index 2442ec5..f8028a3 100755
--- a/gdbserver_tests/filter_vgdb
+++ b/gdbserver_tests/filter_vgdb
@@ -11,7 +11,7 @@ $dir/../tests/filter_addresses |
# pid
# gdb 7.2 sometimes tries to access address 0x0 (same as with standard gdbserver)
# filter a debian 6.0/ppc32 line
-sed -e 's/\(relaying data between gdb and process \)[0-9][0-9]*/\1..../' \
+sed -e '/relaying data between gdb and process/d' \
-e 's/\(sending command .* to pid \)[0-9][0-9]*/\1..../' \
-e '/Cannot access memory at address 0x......../d' \
-e '/^[1-9][0-9]* \.\.\/sysdeps\/powerpc\/powerpc32\/dl-start\.S: No such file or directory\./d' |
diff --git a/gdbserver_tests/hginfo.stderrB.exp b/gdbserver_tests/hginfo.stderrB.exp
index df47f11..669ff92 100644
--- a/gdbserver_tests/hginfo.stderrB.exp
+++ b/gdbserver_tests/hginfo.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
Lock ga 0x........ {
Address 0x........ is 0 bytes inside data symbol "mx"
diff --git a/gdbserver_tests/mcblocklistsearch.stderrB.exp b/gdbserver_tests/mcblocklistsearch.stderrB.exp
index 312d776..1313321 100644
--- a/gdbserver_tests/mcblocklistsearch.stderrB.exp
+++ b/gdbserver_tests/mcblocklistsearch.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
Breakpoint 1 at 0x........: file leak-tree.c, line 42.
Breakpoint 2 at 0x........: file leak-tree.c, line 67.
diff --git a/gdbserver_tests/mcbreak.stderrB.exp b/gdbserver_tests/mcbreak.stderrB.exp
index 65281d2..0f051d1 100644
--- a/gdbserver_tests/mcbreak.stderrB.exp
+++ b/gdbserver_tests/mcbreak.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
vgdb-error value changed from 999999 to 0
n_errs_found 1 n_errs_shown 1 (vgdb-error 0)
diff --git a/gdbserver_tests/mcclean_after_fork.stderrB.exp b/gdbserver_tests/mcclean_after_fork.stderrB.exp
index 995b42f..e812b8e 100644
--- a/gdbserver_tests/mcclean_after_fork.stderrB.exp
+++ b/gdbserver_tests/mcclean_after_fork.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
monitor command request to kill this process
Remote connection closed
diff --git a/gdbserver_tests/mcinfcallWSRU.stderrB.exp b/gdbserver_tests/mcinfcallWSRU.stderrB.exp
index 7789123..a2f2b87 100644
--- a/gdbserver_tests/mcinfcallWSRU.stderrB.exp
+++ b/gdbserver_tests/mcinfcallWSRU.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
Breakpoint 1 at 0x........: file sleepers.c, line 74.
Continuing.
diff --git a/gdbserver_tests/mcleak.stderrB.exp b/gdbserver_tests/mcleak.stderrB.exp
index 7782119..7ed3920 100644
--- a/gdbserver_tests/mcleak.stderrB.exp
+++ b/gdbserver_tests/mcleak.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
10 bytes in 1 blocks are still reachable in loss record ... of ...
at 0x........: malloc (vg_replace_malloc.c:...)
diff --git a/gdbserver_tests/mcmain_pic.stderrB.exp b/gdbserver_tests/mcmain_pic.stderrB.exp
index c90e1fa..53ec0ce 100644
--- a/gdbserver_tests/mcmain_pic.stderrB.exp
+++ b/gdbserver_tests/mcmain_pic.stderrB.exp
@@ -1,2 +1 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
diff --git a/gdbserver_tests/mcvabits.stderrB.exp b/gdbserver_tests/mcvabits.stderrB.exp
index bdabb1e..f9ced7a 100644
--- a/gdbserver_tests/mcvabits.stderrB.exp
+++ b/gdbserver_tests/mcvabits.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
Address 0x........ len 10 addressable
Address 0x........ is 0 bytes inside data symbol "undefined"
diff --git a/gdbserver_tests/mssnapshot.stderrB.exp b/gdbserver_tests/mssnapshot.stderrB.exp
index 8bee8fc..e419ce6 100644
--- a/gdbserver_tests/mssnapshot.stderrB.exp
+++ b/gdbserver_tests/mssnapshot.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
diff --git a/gdbserver_tests/nlgone_abrt.stderrB.exp b/gdbserver_tests/nlgone_abrt.stderrB.exp
index c8b2024..e69de29 100644
--- a/gdbserver_tests/nlgone_abrt.stderrB.exp
+++ b/gdbserver_tests/nlgone_abrt.stderrB.exp
@@ -1 +0,0 @@
-relaying data between gdb and process ....
diff --git a/gdbserver_tests/nlgone_exit.stderrB.exp b/gdbserver_tests/nlgone_exit.stderrB.exp
index c8b2024..e69de29 100644
--- a/gdbserver_tests/nlgone_exit.stderrB.exp
+++ b/gdbserver_tests/nlgone_exit.stderrB.exp
@@ -1 +0,0 @@
-relaying data between gdb and process ....
diff --git a/gdbserver_tests/nlgone_return.stderrB.exp b/gdbserver_tests/nlgone_return.stderrB.exp
index c8b2024..e69de29 100644
--- a/gdbserver_tests/nlgone_return.stderrB.exp
+++ b/gdbserver_tests/nlgone_return.stderrB.exp
@@ -1 +0,0 @@
-relaying data between gdb and process ....
diff --git a/gdbserver_tests/nlpasssigalrm.stderrB.exp b/gdbserver_tests/nlpasssigalrm.stderrB.exp
index c90e1fa..53ec0ce 100644
--- a/gdbserver_tests/nlpasssigalrm.stderrB.exp
+++ b/gdbserver_tests/nlpasssigalrm.stderrB.exp
@@ -1,2 +1 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
diff --git a/gdbserver_tests/nlself_invalidate.stderrB.exp b/gdbserver_tests/nlself_invalidate.stderrB.exp
index c8b2024..e69de29 100644
--- a/gdbserver_tests/nlself_invalidate.stderrB.exp
+++ b/gdbserver_tests/nlself_invalidate.stderrB.exp
@@ -1 +0,0 @@
-relaying data between gdb and process ....
diff --git a/gdbserver_tests/nlsigvgdb.stderrB.exp b/gdbserver_tests/nlsigvgdb.stderrB.exp
index 672fea5..ed5bb61 100644
--- a/gdbserver_tests/nlsigvgdb.stderrB.exp
+++ b/gdbserver_tests/nlsigvgdb.stderrB.exp
@@ -1,4 +1,3 @@
-relaying data between gdb and process ....
vgdb-error value changed from 0 to 999999
gdbserver: continuing in 5000 ms ...
gdbserver: continuing after wait ...

View File

@ -0,0 +1,25 @@
commit 9b37074f7609cd496c067e88ef8c436981aa7267
Author: mjw <mjw@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Date: Thu Jun 29 15:26:30 2017 +0000
memcheck/tests: Use ucontext_t instead of struct ucontext
glibc 2.26 does not expose struct ucontext anymore.
Signed-off-by: Khem Raj <raj.khem@gmail.com>
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16457 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/memcheck/tests/linux/stack_changes.c b/memcheck/tests/linux/stack_changes.c
index a978fc2..7f97b90 100644
--- a/memcheck/tests/linux/stack_changes.c
+++ b/memcheck/tests/linux/stack_changes.c
@@ -10,7 +10,7 @@
// This test is checking the libc context calls (setcontext, etc.) and
// checks that Valgrind notices their stack changes properly.
-typedef struct ucontext mycontext;
+typedef ucontext_t mycontext;
mycontext ctx1, ctx2, oldc;
int count;

View File

@ -3,7 +3,7 @@
Summary: Tool for finding memory management bugs in programs
Name: %{?scl_prefix}valgrind
Version: 3.13.0
Release: 3%{?dist}
Release: 4%{?dist}
Epoch: 1
License: GPLv2+
URL: http://www.valgrind.org/
@ -105,6 +105,19 @@ Patch6: valgrind-3.13.0-ppc64-diag.patch
# Workaround that masks CPUID support in HWCAP on aarch64 (#1464211)
Patch7: valgrind-3.13.0-arm64-hwcap.patch
# RHBZ#1466017 ARM ld.so index warnings.
# KDE#381805 arm32 needs ld.so index hardwire for new glibc security fixes
Patch8: valgrind-3.13.0-arm-index-hardwire.patch
# KDE#381769 Use ucontext_t instead of struct ucontext
Patch9: valgrind-3.13.0-ucontext_t.patch
# valgrind svn r16453 Fix some tests failure with GDB 8.0
Patch10: valgrind-3.13.0-gdb-8-testfix.patch
# valgrind svn r16454. disable vgdb poll in the child after fork
Patch11: valgrind-3.13.0-disable-vgdb-child.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
@ -226,6 +239,10 @@ Valgrind User Manual for details.
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%build
# We need to use the software collection compiler and binutils if available.
@ -428,6 +445,12 @@ echo ===============END TESTING===============
%endif
%changelog
* Thu Jun 29 2017 Mark Wielaard <mjw@fedoraproject.org> 3.13.0-4
- Add valgrind-3.13.0-arm-index-hardwire.patch (#1466017)
- Add valgrind-3.13.0-ucontext_t.patch
- Add valgrind-3.13.0-gdb-8-testfix.patch
- Add valgrind-3.13.0-disable-vgdb-child.patch
* Fri Jun 23 2017 Mark Wielaard <mjw@fedoraproject.org> 3.13.0-3
- Add valgrind-3.13.0-arm64-hwcap.patch (#1464211)