lot to one. This required two basic changes.
1. Tools are responsible for telling the tool about any functions they
provide that the tool may call. This includes basic functions like
TL_(instrument)(), functions that assist core services such as
TL_(pp_Error)(), and malloc-replacement-related functions like
TL_(malloc)().
2. Tools that replace malloc now specify the size of the heap block redzones
through an arg to the VG_(malloc_funcs)() function, rather than with a
variable VG_(vg_malloc_redzone_szB).
One consequence of these changes is that VG_(tool_init_dlsym)() no longer
needs to be generated by gen_toolint.pl.
There are a number of further improvements that could follow on from this one.
- Avoid the confusingly different definitions of the TL_() macro in the
core vs. for tools. Indeed, the functions provided by the tools now don't
need to use the TL_() macro at all, as they can have arbitrary names.
- Remove a lot of the auto-generated stuff in vg_toolint.c and vg_toolint.h
(indeed, it might be possible to not auto-generate these at all, which
would be nice).
- The handling of VgToolInterface is currently split across vg_needs.c and
vg_toolint.c, which isn't nice.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3487
valgrind-listener.c, don't use the VG_ prefix on its equivalent, because
it's a local definition.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3454
two halves: stacktrace.c, which deals with getting, traversing and printing
stack traces; and execontext.c, which deals with storing stack traces
permanently in a way that avoids duplicates, and comparing them.
One nice outcome: previously we were often creating ExeContexts, which live
forever, even when they were only needed temporarily. Ie. this was a memory
leak, which has been removed.
As part of this, new headers have been created, carved off core.h and
tool.h. Lots of function names have changed, too.
In Massif, I also changed a lot of "eip" names to "ip" to make them less
x86-specific.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3429
vg_main.c, where it doesn't also really belong but at least it's now next to
VG_(get_stack_pointer)() which is very similar.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3395
Move others that are only used in one file, out of core.h into that file.
Remove the "VG_" prefixes while doing it.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3337
--TOOLNAME:option=foo. If you use --trace-children=yes, the child
Valgrinds are passed the mangled options and fail as a result.
This patch makes sure that process_cmd_line_options makes a copy of
the option before mangling it.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3318
avoid warnings from -fwarn-missing-prototypes. vg_replace_malloc.c
has not been done yet though.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3298
overhaul of the thread support. Many things are now probably broken,
but at least with --tool=none, simple and not-so-simple threaded and
non-thread programs work.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3265
works on x86 -- and I can't make any analogous version work on amd64.
Hence return to a delay loop for the time being.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3231
table/cache management. Two main changes. (1) Translation areas are
recorded using VexGuestExtents, so that Vex is now properly supported
and code deletion works correctly. (2) Low overhead BB profiling,
enabled by the --profile-flags=<XXXXXXXX> option. This finds the top
N bbs at exit and shows them, so as to give a basis from which to do
performane tuning.
To support this, the way tt/tc work is changed. It is still a
sectored arrangement, but now each sector has its own hash table.
This simplifies a lot of things.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3226
tedious but necessary to support. Also, get rid of the have_ssestate
variable. The new valgrind will not work on x86s which do not have at
least fxsave/fxrstor available; this rules all CPUs prior to Pentium
II. No big deal.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3210
string in valgrind.pc.in, so that they describe Valgrind as a "dynamic
binary instrumentation framework", and don't mention platforms at all.
I had to tweak the regtest filters a bit for this.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3178
through once, failing to find the translation, and falling back to the
scheduler.
Did a couple of minor associated cleanups too.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3171
- Fix bogus assertion in vg_transtab.c
- Do null implementation of --pointercheck
We now reach the dispatch loop!
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3166
- implemented VG_(clone)()
- implemented PLATFORM_DO_MMAP()
- implemented VG_(init_thread1state)() [will need to be updated as the
Vex AMD64 guest state is updated]
- implemented OYNK, because it's useful
Also a couple of general cleaning up things.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3165