aboutsummaryrefslogtreecommitdiff
path: root/libfdt
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2007-11-21 11:56:14 +1100
committerJon Loeliger <jdl@freescale.com>2007-11-26 15:57:58 -0600
commit67b6b33b9b413a450a72135b5dc59c0a1e33e647 (patch)
tree1a0896d7e11904459a7cf028d771631e0ff938a6 /libfdt
parent3ce53633871584ad93528fdf5cdcb939bb24ffc3 (diff)
downloaddtc-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.c6
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));
}