Julian Seward [Fri, 20 Feb 2015 12:29:59 +0000 (12:29 +0000)]
canonicaliseSymtab: fix silly logic that could cause the function to
loop forever. In particular, it will do that when two symbols have
exactly the same address range but differ in their .isText attribute.
Fixes #342117.
Escape newlines in command arguments for "cmd:" header field in dumps
We could do unescaping in callgrind_annotate, but a escaped command
even seems better there.
Julian Seward [Wed, 18 Feb 2015 12:57:06 +0000 (12:57 +0000)]
Improve string table reading for MSVC2010 compiled code. Also seems
to help with MSVC2013 compiled code. Variant of a patch from
Mark Browning (mabrowningrr@gmail.com). Fixes #211529.
Julian Seward [Tue, 17 Feb 2015 13:46:26 +0000 (13:46 +0000)]
ML_(find_name_of_pdb_file): bit a bit more careful when grepping the
output from /usr/bin/strings, so as to not get confused by substrings
".pdb" and ".PDB" when they don't appear at the end of a line.
Florian Krohm [Mon, 16 Feb 2015 23:04:53 +0000 (23:04 +0000)]
Update comment for VG_(am_find_nsegment) to match the code.
Likewise for VG_(am_next_nsegment). Also make the code similar to
VG_(am_find_nsegment) for easier comprehension.
Florian Krohm [Mon, 16 Feb 2015 22:58:30 +0000 (22:58 +0000)]
Translations are allowed from all client segments. Update comments
and rename VG_(am_set_segment_hasT_if_SkFileC_or_SkAnonC) to
VG_(am_set_segment_hasT_if_client_segment). Change it so it handles
all client segments.
Florian Krohm [Sat, 14 Feb 2015 21:17:46 +0000 (21:17 +0000)]
Misc tweaks in segAddr_to_index:
(1) It is always invalid for the incoming segment pointer to be
out of range. Assert that.
(2) Let the compiler do the address arithmetic. They're good at that
and therefore:
(3) No asserts needed to check the result.
Florian Krohm [Fri, 13 Feb 2015 19:08:26 +0000 (19:08 +0000)]
Add command line flag --max-threads=<integer> to increase the number of
threads that valgrind can handle. No recompile is needed.
Part of fixing BZ #337869.
Julian Seward [Wed, 11 Feb 2015 19:46:27 +0000 (19:46 +0000)]
arm32-linux: for the magic-call CALL_FN_* macros, add r12 to the asm
trash list. Not doing so was causing r12 to get corrupted by the
called function, which lead to some very strange failures in Helgrind
on arm32. Fixes #344033.
Julian Seward [Wed, 11 Feb 2015 00:49:45 +0000 (00:49 +0000)]
arm32-linux: GET_STARTREGS has always been wrong on this target,
confusing SP and LR and resulting in no backtraces during internal
assertion failures etc on this platform. Fixes #343219. Noticed by
dimitry@google.com.
Julian Seward [Wed, 11 Feb 2015 00:41:48 +0000 (00:41 +0000)]
arm32: local_sys_write_stderr and local_sys_getpid: don't trash r7
in the inline assembly, because gcc doesn't like that when compiling
for Thumb. And this file is compiled for Thumb during "make check".
Mark Wielaard [Tue, 10 Feb 2015 13:39:04 +0000 (13:39 +0000)]
Bug #344007 accept4 syscall unhandled on arm64 (242) and ppc64 (344)
ppc64 might fall back to socketcall in some cases, but arm64 always uses
accept4 syscall directly. Some (confusing) background on when/how glibc
(wrongly) decides to use a direct accept4 or the socketcall system call:
https://sourceware.org/ml/libc-alpha/2013-12/msg00014.html
Ensure vgdb gets the nr of threads from Valgrind via shared memory,
rather than using a compile time constant.
This is in preparation for a future change by Florian, to have
the max nr of threads specifiable at startup via a clo
Fix debug output of aspacemgr
The list of segnames was shown with a seq nr,
while each segment was referencing its segname with an offset.
The patch ensures that at all places, both the seq nr and the
offset is output
Julian Seward [Thu, 5 Feb 2015 12:59:46 +0000 (12:59 +0000)]
Allow the user to specify precise-exception behaviour for translations
made from file-backed mappings (AOT code, basically) that is different
from the default behaviour as specified by --vex-iropt-register-updates.
New flag is --px-file-backed=, with the same possible args as
--vex-iropt-register-updates has.
Add a new flag --px-default, which is a short alias for
--vex-iropt-register-updates.
Add one line of stats output when --stats=yes, showing counts of how
many translations have been made under each of the 4 different PX
optimisation settings.
No user-visible change if you don't use the new flags.
Julian Seward [Thu, 5 Feb 2015 10:05:43 +0000 (10:05 +0000)]
Fix some inconsistent uses of the VG_XACT_CLO macro, by putting an
empty then-body after the condition rather than merely ";", which is
confusing and is inconsistent with the rest of the arg handling code.
No functional change.
Florian Krohm [Sat, 31 Jan 2015 00:29:50 +0000 (00:29 +0000)]
Replace the SegName array with a simple string table.
The validity of this change follows from the following observations:
(1) There is a single source for allocating and storing segment names,
namely allocate_segname.
(2) For all invocations of allocate_segname the returned value (which
represents the segmant name) is assigned to NSegment::fnIdx.
(3) All but one assignments to NSegment::fnIdx assign allocate_segname.
The single exception assigns -1 in init_nsegment. That function is
called whenever a new segment (named or unnamed) is allocated.
For a segment name to become unused there must be an assignment to
NSegment::fnIdx which was previously assigned a return value from
allocate_segname. There is no such assignment.
It follows that all segment names are in use at all times, hence
SegName::inUse == True for all SegNames. So we can constant fold it
and don't need to represent it.
Pass 3 in preen_nsegments is obsolete as there are no segment names to
garbage collect.
Rhys Kidd [Mon, 26 Jan 2015 03:27:01 +0000 (03:27 +0000)]
Partial fix for bz339745. Mac OS: Further progress worker queue thread support. Additional magic constants have been checked against OS X 10.9 and 10.10
Florian Krohm [Sat, 24 Jan 2015 18:26:05 +0000 (18:26 +0000)]
Followup to r14886. So it turned out that in m_addrinfo we were already
strduping the filename which I failed to spot. Thanks to Philippe for
pointing that out.
Florian Krohm [Sat, 24 Jan 2015 00:02:19 +0000 (00:02 +0000)]
VG_(am_get_filename) returns a pointer to memory that belongs to the
address space manager. Callers should neither modify the string nor
free it (as the string resides is statically allocated memory). That
calls for a const HChar *
The type change exposed two bugs. One in m_addrinfo.c and one in
m_debuginfo.c. In both cases the returned string could possibly be freed later
on. So we need to strdup it first. Now fixed.
Florian Krohm [Tue, 13 Jan 2015 17:33:59 +0000 (17:33 +0000)]
Export VG_(discard_tranalsations_safely) to the tools. It is
only allowed to be called in certain contexts which is
enforced at runtime.
Change callgrind accordingly.
New header file pub_tool_transtab.h added.
Rhys Kidd [Mon, 12 Jan 2015 13:29:29 +0000 (13:29 +0000)]
Add to svn ignore auxprogs/getoff-*-darwin files created on OS X. The equivalent files are ignored from other architectures in this folder. Simple change, no-BZ.
Rhys Kidd [Sun, 11 Jan 2015 07:04:20 +0000 (07:04 +0000)]
Add to svn ignore gdbserver_tests/*.dSYM intermediate files created on OS X. These files are ignored in all other sub folders where created. Simple change, no-BZ.
Rhys Kidd [Fri, 9 Jan 2015 15:41:15 +0000 (15:41 +0000)]
Darwin13.supp should include suppression for known uninitialised read in pthread_rwlock_init() as required to pass the memcheck/tests/darwin/pth-supp test. Patch and discussion per BZ #339780.
When the info struct for a BB is created, we use the first guest
instruction address as key to insert the info into a hash table.
We should do the same when discarding.
This actually is not a real problem, as Callgrind obviously
is used very rarely with redirections. But we should be consistent
with cachegrind.
Florian Krohm [Wed, 7 Jan 2015 14:47:15 +0000 (14:47 +0000)]
When creating a log-file (xml or otherwise) give everybody
read permission. Previously, only user could read which was
incovenient for some typical workflows.
Suggested in BZ #339542.
Florian Krohm [Wed, 7 Jan 2015 14:42:11 +0000 (14:42 +0000)]
Add command line option --max-connect=INT to allow the user to provide
an upper bound for the number of connected processes.
Part of fixing BZ #337869.
Florian Krohm [Sun, 4 Jan 2015 11:30:11 +0000 (11:30 +0000)]
TyEnt::TyStOrUn::fieldRs is never NULL as VG_(newXA) always returns
something != NULL. Testing fieldRs for NULL-ness was confusing static
analysis. It usually takes such tests as evidence that the pointer
can in fact be NULL and may report false positives as a consequence.