diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2007-11-21 11:56:14 +1100 |
---|---|---|
committer | Jon Loeliger <jdl@freescale.com> | 2007-11-26 15:57:58 -0600 |
commit | 67b6b33b9b413a450a72135b5dc59c0a1e33e647 (patch) | |
tree | 1a0896d7e11904459a7cf028d771631e0ff938a6 /libfdt | |
parent | 3ce53633871584ad93528fdf5cdcb939bb24ffc3 (diff) | |
download | dtc-67b6b33b9b413a450a72135b5dc59c0a1e33e647.zip dtc-67b6b33b9b413a450a72135b5dc59c0a1e33e647.tar.gz dtc-67b6b33b9b413a450a72135b5dc59c0a1e33e647.tar.bz2 |
dtc: Add valgrind support to testsuite
This patch adds some options to the run_tests.sh script allowing it to
run all the testcases under valgrind to check for pointer corruption
bugs and memory leaks. Invoking "make checkm" will run the testsuite
with valgrind.
It include a mechanism for specifying valgrind errors to be suppressed
on a per-testcase basis, and adds a couple of such suppression files
for the mangle-layout and open_pack testcases which dump for use by
other testcases a buffer which may contain uninitialized sections. We
use suppressions rather than initializing the buffer so that valgrind
will catch any internal access s to the uninitialized data, which
would be a bug.
The patch also fixes one genuine bug caught by valgrind -
_packblocks() in fdt_rw.c was using memcpy() where it should have been
using memmove().
At present the valgrinding won't do anything useful for testcases
invoked via a shell script - which includes all the dtc testcases. I
plan to fix that later.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'libfdt')
-rw-r--r-- | libfdt/fdt_rw.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libfdt/fdt_rw.c b/libfdt/fdt_rw.c index dfe5628..6673f8e 100644 --- a/libfdt/fdt_rw.c +++ b/libfdt/fdt_rw.c @@ -358,12 +358,12 @@ static void _packblocks(const void *fdt, void *buf, memmove(buf + mem_rsv_off, fdt + fdt_off_mem_rsvmap(fdt), mem_rsv_size); fdt_set_off_mem_rsvmap(buf, mem_rsv_off); - memcpy(buf + struct_off, fdt + fdt_off_dt_struct(fdt), struct_size); + memmove(buf + struct_off, fdt + fdt_off_dt_struct(fdt), struct_size); fdt_set_off_dt_struct(buf, struct_off); fdt_set_size_dt_struct(buf, struct_size); - memcpy(buf + strings_off, fdt + fdt_off_dt_strings(fdt), - fdt_size_dt_strings(fdt)); + memmove(buf + strings_off, fdt + fdt_off_dt_strings(fdt), + fdt_size_dt_strings(fdt)); fdt_set_off_dt_strings(buf, strings_off); fdt_set_size_dt_strings(buf, fdt_size_dt_strings(fdt)); } |