|
From: <sv...@va...> - 2015-07-07 13:01:47
|
Author: mjw
Date: Tue Jul 7 14:01:40 2015
New Revision: 15398
Log:
349941 di_notify_mmap might create wrong start/size DebugInfoMapping
Use seg->start instead of a as DebugInfoMapping avma. Normally seg->start
equals a. But when it is not then the size of the map might extend beyond
the segment (and not actually cover the start of the segment). When another
ELF file is them mapped right after this then it triggers an overlap purge
of the DebugInfo. In the case the mapping was for libc or ld.so this then
removes all intercepts causing "bad things".
Modified:
trunk/NEWS
trunk/coregrind/m_debuginfo/debuginfo.c
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Tue Jul 7 14:01:40 2015
@@ -250,6 +250,7 @@
349626 Implemented additional Xen hypercalls
349874 Fix typos in source code
349828 memcpy intercepts memmove causing src/dst overlap error (ppc64 ld.so)
+349941 di_notify_mmap might create wrong start/size DebugInfoMapping
n-i-bz Provide implementations of certain compiler builtins to support
compilers who may not provide those
n-i-bz Old STABS code is still being compiled, but never used. Remove it.
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
==============================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c (original)
+++ trunk/coregrind/m_debuginfo/debuginfo.c Tue Jul 7 14:01:40 2015
@@ -1038,7 +1038,7 @@
/* Note the details about the mapping. */
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;
|