Commit Graph

4003 Commits

Author SHA1 Message Date
Julian Seward
b33a0b0bc9 Don't be spooked by DW_TAG_{structure,class,union}_type that has only
a DW_AT_declaration but no name.  Just make up a name and add the
type.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12691
2012-06-30 20:21:58 +00:00
Petar Jovanovic
4898947711 Removing the warning about defined yet unused function on MIPS.
Getting rid of the warning for the function handler_unsup_insn which is not
used on MIPS.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12686
2012-06-30 02:12:13 +00:00
Florian Krohm
5dec28d4af Increase allowed size of a back-trace to 500 frames.
This limit is large enough for all practical purposes. It exists
only to sanity check the value specified with --num-callers.
Be frugal in record_ExeContext_wrk and only allocate on the stack 
as many frames as needed. 
Testcase included.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12685
2012-06-29 21:20:52 +00:00
Julian Seward
22e556aef7 Remove an extraneous "extern".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12682
2012-06-28 19:29:01 +00:00
Petar Jovanovic
ac1b8d6512 Correcting sys_shmdt wrapper for MIPS Linux.
This patch fixes incorrect handling of sys_shmdt for MIPS. Linux wrappers have
been added for sys_sigprocmask, sys_timerfd_create, sys_timerfd_gettime, and
sys_timerfd_settime on MIPS.
The bug has been reported at https://bugs.kde.org/show_bug.cgi?id=270777 as
sh_mat issue, and it can be reproduced with shmat-sample.c from 
https://bugs.kde.org/show_bug.cgi?id=222545.
The change also fixes sigprocmask from memcheck tests.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12658
2012-06-21 17:33:35 +00:00
Petar Jovanovic
42924b29d2 Adding MIPS-specific wrapper for syscall pipe.
Syscall pipe returns two descriptors in two registers, and thus a generic
Linux wrapper is not sufficient. This fixes none/tests/fdleak_pipe.
MIPS port is currently tracked as bug #270777.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12655
2012-06-19 18:30:23 +00:00
Bart Van Assche
728b053d69 Align VG_(threads)[]
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12648
2012-06-17 05:51:48 +00:00
Philippe Waroquiers
e46d2abe7e Fix 203877 and 301229 increase to 16Mb maximum allowed alignment for memalign() and posix_memalign
Note that VG_(arena_memalign) is not used by core or tools for the moment.
We have one single maxima for both the V core/tools and the client.
Enhanced memcheck/tests/memalign2.c to test 4 Mb and 16 Mb alignments.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12642
2012-06-15 22:19:59 +00:00
Julian Seward
a79244113d Add a hack (disabled by default) that attempts to unwind the stack on
ARM by simply scanning up and looking for words that look like they
might be return addresses.  Last-ditch hack for when the CFI trail
goes cold.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12641
2012-06-15 16:20:23 +00:00
Philippe Waroquiers
40ecbb08e6 Have the inner Valgrind registering the interim_stack asap.
This is needed to have the outer valgrind able to do stack
traces of the inner Valgrind before the main thread runs.
Without this, the outer crashes (segv) when doing a stack trace.
In mtV.txt, an ugly kludge was described to avoid this crash.
This is the clean solution replacing the kludge.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12638
2012-06-14 22:18:50 +00:00
Philippe Waroquiers
3f6aae03c9 Fix assert in gdbserver for watchpoints watching the same address
GDB can create watchpoints watching the same address.
This was causing assertion failures.
To handle this, hash table (with key watched address) is replaced
by an xarray of address/lengh/kind.
Fully identical watches are ignored (either not inserted, and
not causing a problem if already deleted).

gdbserver_tests/mcwatchpoint enhanced to test duplicated watchpoints



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12637
2012-06-14 19:56:20 +00:00
Philippe Waroquiers
66becf2eec Avoid unused warning for ptrace_write_memory in vgdb.c (only used on some platforms)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12630
2012-06-10 12:26:26 +00:00
Philippe Waroquiers
ebf880ae83 Fix typo/merge problem (replace s390x by mips32 in target.c)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12627
2012-06-09 09:31:43 +00:00
Julian Seward
d971e9300f Merge in a port for mips32-linux, by Petar Jovanovic and Dejan Jevtic,
mips-valgrind@rt-rk.com, Bug 270777.

Valgrind: new non-test files for mips32-linux.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12617
2012-06-07 09:23:23 +00:00
Julian Seward
3e344c57f6 Merge in a port for mips32-linux, by Petar Jovanovic and Dejan Jevtic,
mips-valgrind@rt-rk.com, Bug 270777.

Valgrind: changes to existing files.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12616
2012-06-07 09:13:21 +00:00
Julian Seward
76d7802c9f m_machine: add new function VG_(machine_get_size_of_largest_guest_register)
cachegrind: use the new function to abort startup if the minumum line
  size is smaller than the size of the largest guest register.
Partially derived from a patch by Josef Weidendorfer.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12605
2012-06-03 22:40:07 +00:00
Julian Seward
eadaa02566 Track the change to IRDirty guest state effect annotations introduced
in vex r2362.

mc_translate.c: also do PCast 64->32 a bit more efficiently.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12598
2012-06-01 16:11:41 +00:00
Florian Krohm
bb6b4f1bbe Reduce size of an IRStmt from 40 bytes to 32 bytes on LP64
by allocating the details of a PutI statement into a struct
of its own and link to that (as is being done for Dirty and CAS).

These are the valgrind bits (see also VEX r2361).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12596
2012-05-31 15:48:13 +00:00
Christian Borntraeger
554b2fe91b Let valgrind check the tls argument if the appropriate flag is set
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12591
2012-05-28 11:51:50 +00:00
Philippe Waroquiers
4f5b963f49 Fix false positive in sys_clone on amd64 when optional args are not given (e.g. child_tidptr)
rev 10493 fixed bug 117564 in syswrap-x86-linux.c.
This commit fixes the same problem in syswrap-amd64-linux.c.
The problem makes memcheck/tests/linux/stack_switch fails (at least on gcc20)
with unexpected
   ==802== Syscall param clone(child_tidptr) contains uninitialised byte(s)
The problem originates from always checking 3 optional args PRE_read,
while these should be checked only if the corresponding flags are set.

syswrap-{arm,ppc32,ppc64}-linux.c seems to have the same problem
(but no visible effect) : VKI_CLONE_PARENT_SETTID,VKI_CLONE_CHILD_SETTID
and VKI_CLONE_SETTLS not properly handled in the PRE part.

syswrap-s390x-linux.c seems to have the VKI_CLONE_SETTLS part wrong,
but VKI_CLONE_PARENT_SETTID and VKI_CLONE_CHILD_SETTID correct.

Commiting a fix just for amd64 for now.
We probably better make some common code in syswrap-generic.c
to regroup all similar platforms.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12586
2012-05-26 23:08:41 +00:00
Philippe Waroquiers
266ed99f13 Add missing gdbserver xml files for shadow registers for ppc32
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12585
2012-05-25 23:22:39 +00:00
Philippe Waroquiers
2478728636 gdbserver: introduce support to show the AVX registers.
This implies to change the interface between the
arch independent gdbserver files and the arch dependent files
as AVX implies a choice of xml files at run time.

In valgrind-low-amd64.c, the xml files and the nr of registers
are different depending on AVX support or not.

Other platforms still have a fully static nr of registers.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12581
2012-05-24 21:33:17 +00:00
Philippe Waroquiers
4e5a6025dd Prepare for AVX support : restructure gdbsrv/target/valgrind-low/arch low
AVX support implies to have target xml files which are selected
according to the machine hwcaps.
This change improves the structure of the gdbserver software layering
to prepare for this.

Basically, the protocol files (e.g. server.c) are now calling directly
the valgrind target operations which are now defined in target.h/target.c
(before, there was a level of indirection inheritated from the GDB
structure which was useless for valgrind gdbserver).
+ clarified some comments



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12579
2012-05-23 21:50:36 +00:00
Christian Borntraeger
188189536d add some intial kvm ioctls (low hanging fruits). This gets rid of some valgrind
warnings regarding KVM ioctl without a length/direction specifier.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12578
2012-05-23 15:59:40 +00:00
Julian Seward
bd6eb116da Fix fallout from recent AVX commit (guest_XMMn no longer exist;
use guest_YMMn instead)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12574
2012-05-21 22:53:06 +00:00
Julian Seward
8ebb8c30e5 Add initial support for Intel AVX instructions (Valgrind side).
Tracker bug is #273475.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12569
2012-05-21 10:18:10 +00:00
Philippe Waroquiers
0563f8bb0b name_of_sched_event was missing some values and returning "??UNKNOWN??" instead.
* re-ordered the values to match the declaration order in
  libvex_trc_values.h and pub_core_dispatch_asm.h
* added missing values



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12566
2012-05-17 14:31:13 +00:00
Philippe Waroquiers
0ea6d36f1d fix 219156 support static malloc or alternate malloc lib (e.g. tcmalloc) with new option --soname-synonyms
* pub_tool_redir.h : define the prefix to be used for "soname synonym"
  place holder
* vg_replace_malloc.c : define synonym place holder for malloc related
  functions
* m_redir.c : when detecting a soname synonym place holder redir spec, search
  in clo_soname_synonyms if there is a synonym pattern.
  If yes, replace the soname pattern. If not, ignore the redir spec.
* various files: implement or document the new clo --soname-synonyms
* new test memcheck/tests/static_malloc.vgtest



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12559
2012-05-11 19:33:46 +00:00
Julian Seward
1a3a9c7d99 Support DWARF version 4 DW_AT_high_pc constant form. #299053.
(Mark Wielaard, mjw@redhat.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12558
2012-05-09 23:09:05 +00:00
Philippe Waroquiers
adf73d7410 Avoid duplicate primary names when merging identical symbol table entries.
--trace-redir=yes shows that there are duplicated redir entries e.g.
--32537--    TOPSPECS of soname NONE filename /home/philippe/valgrind/m_redir_trace/memcheck/vgpreload_memcheck-amd64-linux.so
--32537--      libc.so*                  strcasecmp_l                   R-> (2014.0) 0x04c28bf0
--32537--      libc.so*                  strcasecmp_l                   R-> (2014.0) 0x04c28bf0
--32537--      libc.so*                  __GI_strcasecmp_l              R-> (2014.0) 0x04c28b70
--32537--      libc.so*                  __GI_strcasecmp_l              R-> (2014.0) 0x04c28b70

These are caused by the merging of identical debug entries always
adding the two primary names, even if the entries are exactly the same.

This patch avoids duplicated names in debug info if the entry to merge
has only one name identical to the entry name to which we are merging.

This avoids the useless duplicated redir entries, and slightly decreases
the "dinfo" memory usage.
 


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12554
2012-05-05 22:18:24 +00:00
Philippe Waroquiers
35b77cecf7 Improve m_redir.c debug trace by adding filename.
Many objects (shared or non shared) have no soname.
In such case, showing the filename clarifies where the
redir spec is coming from.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12552
2012-05-03 21:09:51 +00:00
Florian Krohm
3f94a793ae Add ETF3 facility (valgrind bits). Part of fixing Bugzilla #289839.
Patch by Divya Vyas (divyvyas@linux.vnet.ibm.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12550
2012-05-03 01:31:24 +00:00
Julian Seward
3ba809deb6 Correctly parse DW_FORM_ref_addr -- its format is different in Dwarf2
vs Dwarf3 and later.  Fixes #298864.  (Tom Tromey, tromey@redhat.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12545
2012-04-29 11:35:37 +00:00
Philippe Waroquiers
f53053e7c9 add optional arg [aspacemgr] to v.info memory to show aspacemgr segments.
When investigating Valgrind out of memory situation,
it is useful to be able to output the list of segments of the
aspacemgr at any moment.
The GDB monitor command "v.info memory" has now an optional
argument allowing to output this list of segments



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12544
2012-04-27 22:59:43 +00:00
Julian Seward
a62fcf1d85 Add feature detection for amd64.avx, and (potentially) FMA.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12543
2012-04-26 14:17:50 +00:00
Julian Seward
bd9f3bb750 For --profile-flags=, weight the counts by the number of guest insns
in each IRSB, rather than considering each IRSB to have a weight of 1.
This probably gives more representative profiles, especially post
t-chain merge, which made inter-SB transitions more or less free
compared to what they were before.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12542
2012-04-24 11:50:49 +00:00
Julian Seward
05c4080690 Disable debug printing w.r.t. sector unlinking.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12539
2012-04-23 09:53:20 +00:00
Florian Krohm
77e2a06efd tchain optimisation for s390 (valgrind bits)
Companion of VEX r2308
Move address arithmetic to recover place to patch into VEX.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12537
2012-04-22 17:39:37 +00:00
Florian Krohm
692fb9efff Followup to r12527. Use 32-bit arithmetic to increment xindir
performance counters. Remove #ifdef'ery.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12536
2012-04-22 15:37:15 +00:00
Florian Krohm
f5ce342333 Be lenient if the machine model could not be determined. Assume it's
a new machine as opposed to a too old machine.
Patch by Christian Borntraeger (borntraeger@de.ibm.com) with additional
commentary. Fixes 298394.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12534
2012-04-22 03:50:20 +00:00
Florian Krohm
d135100a42 Consolidate and update information about dependencies of
VG_(machine_get_hwcaps) for all architectures in pub_core_machine.h
and avoid double maintenance.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12532
2012-04-22 02:48:20 +00:00
Julian Seward
00e1ebb540 Use 32-bit XIndir counter incs, instead of 64-bit, as per r12527.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12530
2012-04-21 23:37:16 +00:00
Julian Seward
3bf14f967a Use 32-bit XIndir counter incs, instead of 64-bit, as per r12527.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12529
2012-04-21 23:28:34 +00:00
Julian Seward
4deeeb4aa6 Use 32-bit XIndir counter incs, instead of 64-bit, as per r12527.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12528
2012-04-21 23:12:07 +00:00
Julian Seward
09bcae8ec8 Last optimisation for the day: change VG_(stats__n_xindirs) in such a
way that the fast-path through VG_(disp_cp_xindir) only has to
increment a 32 bit counter, saving memory bandwidth on 32 bit
platforms compared to a 64-bit inc.  The overall numbers of XIndirs
can still be 64 bit though.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12527
2012-04-21 23:05:57 +00:00
Julian Seward
e32523416e Kludge around a compiler warning, and add explanatory comment.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12526
2012-04-21 22:33:44 +00:00
Florian Krohm
10962f4094 Set VEX_HWCAPS_S390X_STFLE if available.
This should have been part of r12335.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12525
2012-04-21 15:43:25 +00:00
Julian Seward
efa16bac80 (post-tchain-merge cleanup): fix call to handle_syscall on x86-darwin.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12524
2012-04-21 15:35:12 +00:00
Julian Seward
406c75d202 Fix assertion failure on x86-darwin following r12504 (pread fix)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12523
2012-04-21 15:33:26 +00:00
Julian Seward
9b090c6bb2 (post-tchain-merge cleanup): un-break the build on OSX by fixing up
the dispatcher code accordingly.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12522
2012-04-21 13:55:28 +00:00