342353 Allow dumping full massif output while valgrind is still running
342603 Add I2C_SMBUS ioctl support
342635 OS X 10.10 (Yosemite) - missing system calls and fcntl code
+342683 Mark memory past the initial brk limit as unaddressable
342795 Internal glibc __GI_mempcpy call should be intercepted
343012 Unhandled syscall 319 (memfd_create)
343069 Patch updating v4l2 API support
VG_TRACK(post_reg_write, Vg_CoreStartup, /*tid*/1, VG_O_STACK_PTR, 8);
VG_TRACK(post_reg_write, Vg_CoreStartup, /*tid*/1, VG_O_FPC_REG, 4);
VG_TRACK(post_reg_write, Vg_CoreStartup, /*tid*/1, VG_O_INSTR_PTR, 8);
- return;
+
+ /* At the end of this function there is code to mark all guest state
+ registers as defined. For s390 that would be wrong, because the ABI
+ says that all registers except SP, IA, and FPC are undefined upon
+ process startup. */
+#define PRECISE_GUEST_REG_DEFINEDNESS_AT_STARTUP 1
# elif defined(VGP_mips32_linux)
vg_assert(0 == sizeof(VexGuestMIPS32State) % 16);
# error Unknown platform
# endif
+# if !defined(PRECISE_GUEST_REG_DEFINEDNESS_AT_STARTUP)
/* Tell the tool that we just wrote to the registers. */
VG_TRACK( post_reg_write, Vg_CoreStartup, /*tid*/1, /*offset*/0,
sizeof(VexGuestArchState));
+# endif
+
+ /* Tell the tool about the client data segment and then kill it which will
+ make it inaccessible/unaddressable. */
+ const NSegment *seg = VG_(am_find_nsegment)(VG_(brk_base));
+ vg_assert(seg);
+ vg_assert(seg->kind == SkAnonC);
+ VG_TRACK(new_mem_brk, VG_(brk_base), seg->end + 1 - VG_(brk_base),
+ 1/*tid*/);
+ VG_TRACK(die_mem_brk, VG_(brk_base), seg->end + 1 - VG_(brk_base));
}
#endif // defined(VGO_linux)
by 0x........: main (dw4.c:82)
Address 0x........ is in a rw- mapped file valgrind-dw4-test.PID segment
-Uninitialised byte(s) found during client check request
- at 0x........: croak (dw4.c:32)
+Unaddressable byte(s) found during client check request
+ at 0x........: croak (dw4.c:25)
by 0x........: main (dw4.c:87)
Address 0x........ is 0 bytes after the brk data segment limit 0x........