|
From: <sv...@va...> - 2007-02-19 11:51:20
|
Author: njn Date: 2007-02-19 11:51:16 +0000 (Mon, 19 Feb 2007) New Revision: 6605 Log: Improved things. Now detecting origins of undefined values on the stack, albeit with stack traces containing only one entry (but that's way better than zero entries). Creating the necessary ExeContexts at instrumentation-time, as opposed to the run-time ones for heap blocks. Preliminary experiments with SPEC show that it doesn't cause much more slow-down than what we've already got, eg. usually around the 3--8% range, although a couple are more like 25%. This required adding an alternative way for tools to instrument SP updates, one that it more powerful than the new_mem_stack/die_mem_stack events. This new mechanism is powerful but not particularly elegant. I also turned off the larger new_mem_stack/die_mem_stack cases (112, 128, 144, 160 bytes) because I don't think they make any difference. Added: branches/ORIGIN_TRACKING/include/pub_tool_stacks.h branches/ORIGIN_TRACKING/include/pub_tool_translate.h Modified: branches/ORIGIN_TRACKING/coregrind/m_execontext.c branches/ORIGIN_TRACKING/coregrind/m_stacks.c branches/ORIGIN_TRACKING/coregrind/m_tooliface.c branches/ORIGIN_TRACKING/coregrind/m_translate.c branches/ORIGIN_TRACKING/coregrind/pub_core_stacks.h branches/ORIGIN_TRACKING/coregrind/pub_core_tooliface.h branches/ORIGIN_TRACKING/coregrind/pub_core_translate.h branches/ORIGIN_TRACKING/include/pub_tool_execontext.h branches/ORIGIN_TRACKING/include/pub_tool_tooliface.h branches/ORIGIN_TRACKING/memcheck/mc_include.h branches/ORIGIN_TRACKING/memcheck/mc_main.c branches/ORIGIN_TRACKING/memcheck/mc_translate.c branches/ORIGIN_TRACKING/memcheck/tests/badloop.stderr.exp branches/ORIGIN_TRACKING/memcheck/tests/inits.stderr.exp branches/ORIGIN_TRACKING/memcheck/tests/origin-no.c branches/ORIGIN_TRACKING/memcheck/tests/origin-not-quite.c branches/ORIGIN_TRACKING/memcheck/tests/origin-not-quite.stderr.exp branches/ORIGIN_TRACKING/memcheck/tests/origin-yes.c branches/ORIGIN_TRACKING/memcheck/tests/origin-yes.stderr.exp [... diff too large to include ...] |