Commit Graph

3927 Commits

Author SHA1 Message Date
Julian Seward
9431a48f77 gcc-4.7.0 complains about some __attribute__((always_inline)) here,
so change them back to vanilla ones.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12473
2012-03-31 00:06:04 +00:00
Julian Seward
658fb95bfc Fix #ifdef vs { mismatch in r12471, that broke compilation on MacOS.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12472
2012-03-31 00:04:59 +00:00
Philippe Waroquiers
72933b25a0 Further fix 297078 : implement conversion between vki and gdb real time sig nr.
* gdbserver_tests/nlpasssigalrm
   modify test so as to test also a real time signal

* coregrind/m_gdbserver/signals.c
  - implement translation between gdb real time signal numbers
    and vki real time signal numbers
  - ensure non-convertible signals are giving an error



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12471
2012-03-30 20:25:26 +00:00
Philippe Waroquiers
323ba3d8f0 Fix bug 297078 gdbserver signal handling problems caused by diff vki nr/gdb nr and
non reset of "C-ontinued" signal

* To allow vki signame to be used in debuglog:
  - pub_core_signals.h : added prototype for Char *VG_(signame)
  - m_signals.c : changed static const Char *signame(Int sigNo)
                      to const Char *VG_(signame)(Int sigNo)

* valgrind-low.c : when the signal to report to gdb has
  been reported, clear it so that it is not reported anymore
  afterwards.

* m_gdbserver.c: when checking in pass_signals if signal
  can be passed without gdb interaction, do a conversion
  from vki nr to gdb nr when indexing
  (as pass_signals[] is indexed by gdb_nr).

* various gdbserver files:
  - used vki_ prefix for some args and variables to clarify
  - better debuglog tracing

* modified nlpasssigalrm.vgtest to test SIGCHLD signal
  handling followed by a break (to see SIGTRAP is properly
  given to gdb).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12470
2012-03-29 21:56:47 +00:00
Julian Seward
b5fc5d0a06 Add a nasty kludge in the handling of mmap on Darwin. Does not apply
to any other platforms.  Prevent mmap(ANON) from returning zero (zero
with success, that is) since (a) some programs are observed to be
spooked by getting zero from a successful call to mmap, and (b) it's
pretty stupid from the point of view of program safety and possibly
security, since it causes page zero to become accessible.  So don't.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12466
2012-03-27 10:06:31 +00:00
Julian Seward
d49ffc6930 Fix up debug printing -- no functional change.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12463
2012-03-27 09:39:04 +00:00
Julian Seward
5adc4486d5 Keep the stack properly 16 aligned when delivering signals on x86-darwin.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12462
2012-03-27 09:38:23 +00:00
Julian Seward
98653c1338 Keep the stack properly 16-aligned when delivering signals on
amd64-darwin.  Fixes the failure shown in 
https://bugs.kde.org/show_bug.cgi?id=254646#c13



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12461
2012-03-27 09:24:54 +00:00
Julian Seward
4be341c2e6 Fill in missing signal handling macros for amd64-darwin.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12460
2012-03-27 08:44:17 +00:00
Bart Van Assche
ba416f24c6 Darwin: Fix a copy/paste error that was introduced in r12458
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12459
2012-03-26 18:13:29 +00:00
Bart Van Assche
563f0acd21 Check whether the big lock is held before invoking pre_thread_ll_create.
If the pre_thread_ll_create tracking function would be invoked without the
big lock being held, that would trigger a race condition in the tools that
implement this tracking function.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12458
2012-03-25 17:51:59 +00:00
Julian Seward
f0e4d8eb14 Support sys_fallocate on arm-linux.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12454
2012-03-21 19:37:41 +00:00
Philippe Waroquiers
39e18a06af (for x86 and amd64): Change the type of the shadow regs for floating point registers
Similar to r12444 (see Log below), but this is doing it for x86 and amd64.
The xmm registers are using uint32 or uint64 for their float
union components. For the i387 80 bits float registers, as there is
no uint80, a struct uint16 + uint64 is defined.


  Log:
    Change the type of the shadow regs for floating point registers
    to be uint64. Previously the value in such a shadow reg would
    be interpreted by gdb as a floating point value which would 
    produce non-sensible output for e.g   p/x $f1s1.
    This patch covers the power and arm architectures.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12445
2012-03-14 21:27:35 +00:00
Florian Krohm
99443be85e Change the type of the shadow regs for floating point registers
to be uint64. Previously the value in such a shadow reg would
be interpreted by gdb as a floating point value which would 
produce non-sensible output for e.g   p/x $f1s1.
This patch covers the power and arm architectures.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12444
2012-03-14 01:15:59 +00:00
Florian Krohm
c62ecdb55b Add s390x register decsription to vgdb. This enables examination
of V bits in vgdb.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12443
2012-03-13 02:13:50 +00:00
Philippe Waroquiers
c25dc78c78 Fix leak in debuginfo.c
di->soname was not freed, so was leaked when debug info is removed.
free(soname) added in free_Debuginfo, after having verified
and then ensured that all soname are allocated in dinfo.

regtested on deb6/amd64



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12442
2012-03-12 22:06:57 +00:00
Philippe Waroquiers
aa50a7e4df Allows to run regression tests in an outer/inner setup.
A '3 lines how to':
   perl tests/vg_regtest --outer-valgrind=../trunk_untouched/install/bin/valgrind --all
           (the outer results for a test xxx is in xxx.outer.log)
   To run with another tool (e.g. drd), add the argument --outer-tool=drd


Still to do/things to improve:

* Most (inner) tests are successful when running under an outer
  memcheck. Need to analyse the reasons of remaining failures.

* The memcheck annotations in m_mallocfree.c can be improved:
  - A superblock is marked 'undefined', it should rather be marked
    'no access'.
  - When a free block is splitted, the remaining free block is
    not made 'no access'. Instead, it is made 'undefined'.
      => this decreases the chance to find bugs.
      => this is not very efficient (e.g. the rest of a superblock
         is often marked undefined repetitively).
    Similarly, the free block created by VG_(arena_memalign)
    is marked 'undefined'. 'No access' would be preferrable.
  - mkInuseBlock marks the new block as undefined. This is probably
    not needed, as VALGRIND_MALLOCLIKE_BLOCK will do it already.
  - VG_(arena_malloc) should give the requested size to
    VALGRIND_MALLOCLIKE_BLOCK, not the malloc usable size,
    as this decreases the chance to find buffer overrun bugs.
    But giving the requested size is tricky (see comments in
    the code).

* need to do memcheck annotations in m_poolalloc.c
   so as to allow leak checking for pool allocated elements.

* vg_regtest.in
  - should analyse the results of the outer and should
    produce a separate result for the tests for which
    the outer detects an error or a memory leak or ...


Changes done:
   README_DEVELOPERS: document the new outer/inner features.
   manual-core.xml: document the new sim-hint no-inner-prefix
   tests/outer_inner.supp: new file, containing the suppressions for inner.
   vg_regtest.in: implement new args --outer-valgrind, --outer-tool, --outer-args.
   m_mallocfree.c: annotations for memcheck.
   m_libcprint.c: handle the new sim-hint no-inner-prefix
   m_main.c: do an (early) parse of --sim-hints




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12441
2012-03-11 22:24:03 +00:00
Philippe Waroquiers
6fe6c23808 Finally understood why an outer on inner on a 32 bit application
is failing on a 64 bit host.

The bug might or might not be related to some
errors "failed in UME with error 22"
(such as bug https://bugs.kde.org/show_bug.cgi?id=138424).

The bug is: when aspacem_maxAddr is very close to the upper limit,
and aspacem_minAddr is somewhat not close to 0, then
the computation of  
   aspacem_vStart = VG_PGROUNDUP((aspacem_minAddr + aspacem_maxAddr + 1) / 2);
can overflow.
The vStart value will then silently wrap around.
(please, give me my Ada language back :).

When overflowing, vStart will then be below the client cStart.
At least when running outer on inner on a 32 bit application on
a 64 bit system, this was causing strange problems.

I suppose that on a 64 bit system, a 32 bit application can use more
of the 4 Gb, and then the max address is higher and can more easily
overflow than on a 32 bit system.

Tested on f12/x86, debian6/amd64 (bi-arch).
+ run a few outer on inner x86 regression tests : these were all failing
and are now succesfully running.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12438
2012-03-08 23:42:05 +00:00
Bart Van Assche
938bb79e0c Suppress race reports on ticket lock state variables
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12437
2012-03-08 19:17:56 +00:00
Bart Van Assche
ab206e6e4c Suppress race reports on VG_(threads)[tid].os_state.exitcode
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12436
2012-03-08 19:07:08 +00:00
Bart Van Assche
ced3c8876d Use ANNOTATE_BENIGN_RACE_SIZED() to suppress race reports on owner_lwpid
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12435
2012-03-08 19:02:39 +00:00
Bart Van Assche
4e36be3285 When analyzing Valgrind with drd, suppress uninteresting race reports on VG_(threads)[].status
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12432
2012-03-08 14:59:25 +00:00
Bart Van Assche
f8d739e8d9 Suppress uninteresting race reports on sema->owner_lwpid
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12428
2012-03-08 10:14:12 +00:00
Julian Seward
95808ccd1a Ah, the joys of applying patches by hand. Redo r12424 but get the
patch in the right place this time.  re #295428.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12425
2012-03-07 16:38:12 +00:00
Julian Seward
08aacc2598 x86-darwin: _start: keep the stack 16-aligned. Fixes #295428.
(Jack Howarth, howarth@nitro.med.uc.edu)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12424
2012-03-07 15:56:29 +00:00
Julian Seward
7578739156 MacOS only: VG_(get_changed_segments) callback
remove_mapping_callback: if the kernel tells us of a gap that
partially, but does not exactly, overlap a V segment, only record
directives to remove that part of the segment that actually falls
within the gap.  Removing the entire V segment is incorrect and can
cause Memcheck to believe that memory not within the hole is
inaccessible, leading to floods of invalid errors.  Fixes
https://bugzilla.mozilla.org/show_bug.cgi?id=715750



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12422
2012-03-07 13:28:05 +00:00
Tom Hughes
1e1da9ff38 Add support for the HCIINQUIRY ioctl.
Patch from Andrew Brampton to fix BZ#283961.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12421
2012-03-07 11:22:42 +00:00
Tom Hughes
137aace5a3 Add support for the I2C_RDWR ioctl.
Patch from arnaud mouiche to fix BZ#286261.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12420
2012-03-07 10:21:33 +00:00
Philippe Waroquiers
308074c716 Fix leak of range_list (see below an example) in readdwarf3.c.
(found by running regression tests with an outer memcheck).

(validated by running all regression tests "natively" on x86 and amd64,
and re-running regressions tests with outer memcheck).

==7500== 160 bytes in 2 blocks are definitely lost in loss record 75 of 246
==7500==    at 0x2803CEF7: vgPlain_arena_malloc (m_mallocfree.c:1599)
==7500==    by 0x280AAFA5: vgModuleLocal_dinfo_zalloc (misc.c:48)
==7500==    by 0x2804E2A4: vgPlain_newXA (m_xarray.c:68)
==7500==    by 0x280B3CD6: unitary_range_list (readdwarf3.c:703)
==7500==    by 0x280B66CF: parse_var_DIE (readdwarf3.c:1631)
==7500==    by 0x280BA0A6: read_DIE (readdwarf3.c:3248)
==7500==    by 0x280BA170: read_DIE (readdwarf3.c:3269)
==7500==    by 0x280BABC4: T.364 (readdwarf3.c:3611)
==7500==    by 0x280BC634: vgModuleLocal_new_dwarf3_reader (readdwarf3.c:4035)
==7500==    by 0x280609F4: vgModuleLocal_read_elf_debug_info (readelf.c:2529)
==7500==    by 0x2805BD31: vgPlain_di_notify_mmap (debuginfo.c:610)
==7500==    by 0x280362E3: valgrind_main (m_main.c:1944)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12419
2012-03-06 20:35:20 +00:00
Philippe Waroquiers
74d44d1764 * README_DEVELOPERS : complete/enhance the section about outer/inner
* manual-core.xml : fix a typo
* include/pub_tool_inner.h : new file, defining macros for inner annotation
  include/Makefile.am : reference this new file.
* syswrap-linux.c : when ENABLE_INNER, register the stacks for the outer.
   (otherwise, nothing works properly).
* m_redir.c : avoid inner interpreting the outer vgpreload instructions.
* sema.c : annotate the semaphore with RWLOCK annotations for helgrind
* ticket-lock-linux.c : similar.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12414
2012-03-03 12:01:48 +00:00
Tom Hughes
35cc294c29 Handle prlimit64 the same way we do getrlimit and setrlimit, with
some requests trapped and handled by valgrind.

Patch from Matthias Schwarzott via BZ#294047.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12411
2012-03-01 13:42:18 +00:00
Philippe Waroquiers
0eb5c19d3f After a fork, gdbserver_init can be called again.
Buffers should not be re-allocated in such a case.
(memory leak detected by running memcheck on memcheck)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12410
2012-02-28 22:37:44 +00:00
Philippe Waroquiers
ea0d3b9bf4 Fix leak found by running memcheck/tests/varinfo[1-6].vgtest
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12409
2012-02-28 20:10:05 +00:00
Julian Seward
adf73152fb Increase the size of buffers used for showing names when
--trace-flags= is set.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12408
2012-02-28 18:02:41 +00:00
Julian Seward
1533236a47 Android only: make the debuginfo mapping hack more flexible.
Previously it looked for the debuginfo object for "/system/X" in
"/sdcard/symbols/system/X".  This commit removes the requirement for
"system" as the first path component, so the mapping is now "/X" (viz,
any absolute path) to "/sdcard/symbols/X".


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12406
2012-02-27 11:02:20 +00:00
Philippe Waroquiers
1d7a774336 Fix some memory leaks found by running memcheck on annotated memcheck.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12405
2012-02-26 21:26:00 +00:00
Florian Krohm
0f282be925 Tighten up initial guest/shodow state on s390x.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12404
2012-02-26 17:51:28 +00:00
Philippe Waroquiers
fab0c4b100 Fix buffer overflow bug when building the target file.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12402
2012-02-24 11:25:58 +00:00
Philippe Waroquiers
8bdfefff73 Revision 12396 (replacing pkglib_DATA by vglib_DATA) missed
once place. This was breaking vg-in-place on platforms
needing gdbserver target description files.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12401
2012-02-24 08:33:56 +00:00
Julian Seward
a3e81d0d83 Implement malloc_size for the vg_default_zone on Darwin.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12399
2012-02-23 07:36:03 +00:00
Philippe Waroquiers
564e685793 Avoid having holes in the VgdbShared struct.
These holes are not initialized,
and writing these uninitialised bytes to the mapped file
causes an error being reported when running Valgrind
inside Valgrind. Having no holes avoid having this error.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12397
2012-02-22 19:47:27 +00:00
Tom Hughes
e9f922b442 Hide our use of pkglibdir to stop automake 1.11.2 and later complaining.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12396
2012-02-21 15:53:35 +00:00
Julian Seward
6b43662deb x86: don't forget to initialise guest %es from the host %es when
constructing the initial guest register state.  Fixes #291253.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12394
2012-02-21 08:38:04 +00:00
Julian Seward
5786c979e6 ARM/Thumb only: fix a bug in which stack unwinding halts in some
functions that do FP arithmetic.  This is due to the Dwarf3 CFI
mentioning Dwarf registers above N_CFI_REGS, in particular FP
registers, which have values of about 80.  This fixes the problem by
increasing N_CFI_REGS to a level that covers all known registers.
(n-i-bz)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12393
2012-02-20 15:33:24 +00:00
Philippe Waroquiers
b66672b48f * compare vgdb-error with n_errs_shown, not with n_errs_found.
Using n_errs_shown allows the user to stop on an error
  identified in a previous run by counting errors shown.
* shows also n_errs_shown in monitor command v.info n_errs_found
* slightly clarified the manual, updated to new output of v.info n_errs_found



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12388
2012-02-15 22:29:30 +00:00
Florian Krohm
1900c241eb Wire up a few more syscalls.
Patch by Christian Borntraeger (borntraeger@de.ibm.com).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12385
2012-02-15 03:32:50 +00:00
Tom Hughes
3925f2d664 Only mark data which has actually been filled in by recvmsg as defined.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12380
2012-02-10 16:45:01 +00:00
Tom Hughes
b7ec723aa8 Improve messages for mmsg calls.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12379
2012-02-10 11:54:16 +00:00
Tom Hughes
3e8d8f5087 Correct system call name.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12378
2012-02-10 11:50:36 +00:00
Tom Hughes
0080aa8368 It turns out sendmmsg also updates the msg_len fields.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12377
2012-02-10 11:48:01 +00:00