Commit Graph

2985 Commits

Author SHA1 Message Date
Nicholas Nethercote
d95559802b Changed Massif to record the 'slop' heap bytes caused by rounding asked-for
sizes up to a multiple of 8 (or whatever --alignment is).  This is combined
with the "admin" bytes, resulting in the "extra" bytes.  Added
VG_(malloc_usable_size) to the tool interface to support this.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7133
2007-11-10 04:08:08 +00:00
Julian Seward
6e9e59f46b Allow VG_(atoll16) to accept a leading "0x".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7125
2007-11-09 23:25:46 +00:00
Julian Seward
33e93b4514 Oops (a second time), this was missed out of r7118 (Merge (from
branches/THRCHECK) the following amd64-linux stack unwind kludges)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7124
2007-11-09 23:24:09 +00:00
Julian Seward
06666933d9 Merge (from branches/THRCHECK) the following two changes to the core-tool
interface:

r6805: Modify two thread-notification events in the core-tool
interface.  This removes track_post_thread_create and
track_post_thread_join.  The core can only see low level thread
creation and exiting, and has no idea about pthread-level concepts
like "pthread_create" and "pthread_join", so these are a bit
ambiguous.

Replace them with track_pre_thread_ll_create, which is notified before
a new thread makes any memory references, and
track_pre_thread_ll_exit, which is notified just before the new thread
exits, that is, after it has made its last memory reference.

r6823: Core-tool interface: give 'needs_tool_errors' an extra Boolean
indicating whether or not the core should print thread id's on error
messages.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7123
2007-11-09 23:21:44 +00:00
Julian Seward
30238ecdb2 Merge (from branches/THRCHECK) r6804:
Split the scheduler initialisation into two phases, for reasons I
can't exactly remember.  But I think it was so that the tool can be
told of the initial thread's TID before it is notified of any initial
address range permissions.  Or something like that.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7121
2007-11-09 23:13:22 +00:00
Julian Seward
75fd9878c9 Merge (from branches/THRCHECK) the following amd64-linux stack unwind
kludges^H^H^H^H^H^H^Henhancements:

r6802: For VG_(record_ExeContext) et al, add a new parameter
(first_ip_delta) which is added to the initial IP value before the
stack is unwound.  A safe value to pass is zero, which causes the
existing behaviour to be unchanged.  This is a kludge needed to work
around the incomplete amd64 stack unwind info in glibc-2.5's clone()
routine.

r7059: Add a last-ditch heuristic-hack to the amd64-linux stack
unwinder, which is used when all other methods fail.  Seems like GDB
has something similar.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7118
2007-11-09 23:02:28 +00:00
Julian Seward
5b02b70476 Add Bryan Meredith's Omega tool as an experimental tool. Maintainer
is Rich Coe.  Also, a minor mod to Makefile.install.am to handle tool
names with dashes in.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7112
2007-11-09 12:30:36 +00:00
Nicholas Nethercote
d4afc89b08 Add comment about 32-bit UIDs/GIDs.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7030
2007-10-23 22:26:12 +00:00
Tom Hughes
a985431199 Use geteuid32/getegid32 on those platforms which have them.
Fixes bug #151209.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7028
2007-10-23 08:03:59 +00:00
Nicholas Nethercote
cd95227e38 Add a comment.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7009
2007-10-16 23:18:06 +00:00
Dirk Mueller
ab6ac6192c readd right adjustment.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6948
2007-10-04 21:36:40 +00:00
Dirk Mueller
76b90cdeb9 fix a few format string warnings
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6928
2007-10-01 10:33:41 +00:00
Nicholas Nethercote
7cb817e078 Fix various format string errors, courtesy of Florian Krohm.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6902
2007-09-23 00:51:24 +00:00
Nicholas Nethercote
2455b7eaf8 Add VG_(atoll).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6899
2007-09-22 06:23:07 +00:00
Nicholas Nethercote
0974a299f5 Split the OSet interface into two parts: "OSetGen_", which is the existing
interface and provides full power;  and "OSetWord_", which is an
easier-to-use interface for if you just want to store words.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6841
2007-09-17 05:30:48 +00:00
Julian Seward
6e8fce1548 ppc64-linux equivalent to r6813 (use sigframe return stub in
m_trampoline, not on the stack)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6814
2007-09-10 16:52:09 +00:00
Julian Seward
cd13fc1af8 ppc32-linux signal handling: don't place the sigframe return stub on
the stack; instead use a stub in m_trampoline.S.  This makes it
possible to deliver signals on non-executable stacks, and makes the
behaviour consistent with x86-linux and amd64-linux.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6813
2007-09-10 16:28:38 +00:00
Julian Seward
8629b74b36 Handle DW_OP_deref in DWARF3 expressions. Fixes #147285.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6793
2007-08-31 23:08:39 +00:00
Julian Seward
9648774382 Valgrind-side changes to track vx1786 (which was: Support x86 $int
0x40 .. 0x43 instructions on Linux.  Apparently these generate a
segfault and then restart the instruction.)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6791
2007-08-29 09:11:35 +00:00
Julian Seward
4f00b6d36d Make the --max-stackframe machinery 64-bit clean.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6788
2007-08-28 17:03:01 +00:00
Julian Seward
0ed8fc0ce0 Merge, from CGTUNE branch, a cleaned up version of r6742:
Another optimisation: allow tools to provide a final_tidy function
which they can use to mess with the final post-tree-built IR before it
is handed off to instruction selection.

In memcheck, use this to remove redundant calls to
MC_(helperc_value_check0_fail) et al.  Gives a 6% reduction in code
size for Memcheck on x86 and a smaller (3% ?) speedup.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6787
2007-08-28 06:05:20 +00:00
Julian Seward
2cf4a1813a Fix silly bug.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6786
2007-08-28 05:19:16 +00:00
Julian Seward
05a5279b93 Followup to r6783: supply a correct index/strchr replacement for
ppc32-linux/ppc64-linux.
 


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6784
2007-08-27 11:50:39 +00:00
Julian Seward
f44a25e141 This module supplies various replacement functions, amongst them a
replacement for index/strchr in ld.so.  Unfortunately the replacement
functionality was actually rindex/strrchr and amazingly it has taken
about 2.5 years for anyone to notice.

This fixes the x86-linux case; ppc32-linux and ppc64-linux fixes to
follow.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6783
2007-08-27 10:46:39 +00:00
Julian Seward
0e70d01bdd Changes to m_hashtable:
Allow hashtables to dynamically resize (patch from Christoph
Bartoschek).  Results in the following interface changes:

* HT_construct: no need to supply an initial table size.
  Instead, supply a text string used to "name" the table, so
  that debugging messages ("resizing the table") can say which
  one they are resizing.

* Remove VG_(HT_get_node).  This exposes the chain structure to 
  callers (via the next_ptr parameter), which is a problem since
  callers could get some info about the chain structure which then
  changes when the table is resized.  Fortunately is not used.

* Remove VG_(HT_first_match) and VG_(HT_apply_to_all_nodes) as
  they are unused.

* Make the iteration mechanism more paranoid, so any adding or
  deleting of nodes part way through an iteration causes VG_(HT_next)
  to assert.

* Fix the comment on VG_(HT_to_array) so it no longer speaks 
  specifically about MC's leak detector.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6778
2007-08-25 07:19:08 +00:00
Julian Seward
57793cffdc gcc-4.3 compile fixes.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6777
2007-08-24 20:37:09 +00:00
Julian Seward
9546ed460c Dynamically expand the ExeContext hash table, rather than using a
fixed size.  Partial commit of a patch from Christoph Bartoschek.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6776
2007-08-23 10:24:30 +00:00
Julian Seward
3773a4d6c2 The drastic increase in the number of per-arena freelists in r6771
exposes a performance problem with doing m_mallocfree.c sanity checks
(at --sanity-level=3, at least), caused by slowness in
listNo_to_pszB_min.  This commit fixes the problem by caching the
results of queries to listNo_to_pszB_min.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6775
2007-08-23 10:22:44 +00:00
Julian Seward
7315effc53 Make the ExeContext hash table a whole lot bigger.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6774
2007-08-22 23:51:33 +00:00
Julian Seward
f65fd40ae0 Previously, each Arena has a linked list of Superblocks, which can
make VG_(arena_free) expensive if many superblocks have to be checked
before the right one is found.  This change gives the arena a
dynamically expanding sorted array of superblocks, so that finding the
superblock containing an about-to-be-freed block (findSb) is now
O(log2 n) rather than linear in the number of superblocks in the
arena.  Patch from Christoph Bartoschek.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6771
2007-08-21 10:55:26 +00:00
Julian Seward
0f312746f1 Some improvements for malloc/free intensive programs, inspired by
performance studies by Christoph Bartoschek:

* Increase the number of freelists per arena from 18 to 112, so as
  to (drastically) cut down on the amount of freelist searching that
  happens.

* Increase the size of the client and tool arenas, so as to reduce
  the cost of finding arenas during freeing.  This is a kludge; a
  better solution would be to use binary search on superblocks, as
  Christoph's patches do.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6770
2007-08-20 22:57:56 +00:00
Julian Seward
3d25b440fe All platforms: make it clearer that missing syscalls constitute
reportable bugs.

AIX only: print name of missing syscall as well as number -- important
because there is no fixed name/number binding.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6765
2007-07-10 00:18:46 +00:00
Julian Seward
32a6fb4fec Get rid of VG_(getcwd) and replace it with a pair of functions,
VG_(record_startup_wd) which records the working directory at startup,
and VG_(get_startup_wd) which later tells you what value was recorded.
This works because all uses of VG_(getcwd) serve only to record the
directory at process start anyway.  The motivation is that AIX does
not support sys_getcwd directly, so it's easier for the launcher to
ship in the required value using an environment variable.  On Linux
sys_getcwd is used as before.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6764
2007-07-09 23:13:07 +00:00
Julian Seward
696fb88c46 Fix stack overflow which lead to totally mysterious .bss corruption
and hence to segfaulting in vex on ppc32/64-linux in obscure
circumstances.  VKI_MAX_PAGE_SIZE is 64k in recent Valgrinds.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6728
2007-05-05 11:40:35 +00:00
Julian Seward
504e19fb9d Fix regression in new/new[]/delete/delete[] intercepts for gcc-2.96.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6726
2007-05-02 16:24:30 +00:00
Julian Seward
d18e63eb42 Avoid compilation warnings with gcc-4.2.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6722
2007-05-01 14:18:48 +00:00
Julian Seward
984e45e88f Add disclaimers.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6709
2007-04-29 09:06:40 +00:00
Nicholas Nethercote
bb2eae844c augment previous commit
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6708
2007-04-20 02:15:28 +00:00
Nicholas Nethercote
2005fbaa40 It's generally a good idea to set call-by-reference arguments, especially
when the function comments says that they always are set.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6707
2007-04-19 23:35:42 +00:00
Nicholas Nethercote
802b418634 Fix some copyright notices:
- extend some to 2007
- use njn@valgrind.org instead of njn25@cam.ac.uk
- use "tool" instead of "skin"


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6703
2007-04-15 22:15:57 +00:00
Julian Seward
7a897aa86d When doing 'demo' translations for --profile-flags=, make at least
some attempt to discard existing translations first.  Otherwise
Cachegrind (rightly) asserts on the basis that it is seeing duplicate
translation requests for the same entry point.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6698
2007-04-09 22:24:57 +00:00
Julian Seward
5c59b39513 Fix out of date comment.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6696
2007-04-07 14:46:13 +00:00
Nicholas Nethercote
742ae56613 Remove duplicate code -- make XArray use VG_(ssort).
Had to change XArray's comparison function to return an Int rather than a
Word so it's consistent with the rest of the world.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6680
2007-03-28 01:27:05 +00:00
Nicholas Nethercote
ab3351f6a9 Fix bug 142197: don't free --toolname:foo options after they've been munged,
because tools should be able to assume that they are never freed, just like
other options.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6668
2007-03-26 23:38:42 +00:00
Nicholas Nethercote
39c78c7e8b Fix 142488: don't read ./.valgrindrc if CWD==HOME.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6665
2007-03-26 22:05:30 +00:00
Nicholas Nethercote
38fd939a14 Clarify the "out of memory" message.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6656
2007-03-22 03:36:55 +00:00
Julian Seward
63d002a2cd Unbreak the build on ppc64-linux.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6654
2007-03-21 02:27:38 +00:00
Julian Seward
14b9b8b8d2 Make ptrace-based launchers able to handle --help, --version etc.
Problem is that --help etc are handled by the tool exe.  But a
ptrace-based launch scheme can't run "no program" if the user just
types "valgrind --help" because the launcher depends on starting the
client first and only then attaching valgrind to it using ptrace.  So
instead provide a dummy do-nothing program to run when no program is
specified.  m_main notices this and acts as if there really had been
no program specified.

This has no effect at all on Linux/ELF program launching.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6653
2007-03-19 18:38:55 +00:00
Julian Seward
a64b0bfb0c Followup to r6650: tidy up sys_sigreturn/sys_rt_sigreturn on ppc32/64-linux.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6652
2007-03-19 15:29:23 +00:00
Julian Seward
1d31d0b60c Followup to r6650: tidy up sys_sigreturn/sys_rt_sigreturn on ppc32/64-linux.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@6651
2007-03-19 14:34:08 +00:00