Commit Graph

3549 Commits

Author SHA1 Message Date
Julian Seward
fac69dba30 on MacOSX, correctly propagate failure code of system() call.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11147
2010-06-03 20:27:19 +00:00
Julian Seward
45c194f25d (for linux):
* pass --build-id=none to ld to stop it creating a.note.gnu.build-id
  exactly where we don't want it
 
* propagate error code from system() properly



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11146
2010-06-03 08:19:59 +00:00
Julian Seward
2bf5ac57cd Make link_tool_exe.c work for MacOSX. This un-breaks the MacOS build
following r11141.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11142
2010-06-02 00:46:58 +00:00
Julian Seward
c46347280b Add a new program (link_tool_exe.c) and use this to link the tool
executables.  Gets rid of the linker script kludgery and uniformly
uses -Ttext=0x38000000 (or whatever) on Linux, so as to accomodate
both traditional ld and gold.  Should fix #193413 although I have
been unable to test it.  Using a whole new program seems like
overkill, but this is infrastructure to support static linking of
the tool executables on MacOS too.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11141
2010-06-02 00:31:34 +00:00
Tom Hughes
6d2c5d0342 Set VG_(args_the_exename) to the full path to the script when
loading a script as client. Closes #238345.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11134
2010-05-25 08:45:44 +00:00
Tom Hughes
f26002da90 Fix amd64 and ppc64 to correctly mark mq_timedreceive as LINXY so that
the post handler is run to mark the retrieved message as correct.

Also change the post handler to only mark the number of bytes actually
returned as defined, rather than the whole buffer.

Fixes #238679.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11133
2010-05-24 13:40:10 +00:00
Julian Seward
2e6b7655d1 New flag --require-text-symbol=:sopatt:fnpatt, to be used to check
that specified shared objects contain specified symbols.  Along with a
couple of regtests that unfortunately will fail on MacOSX.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11125
2010-05-09 22:30:43 +00:00
Tom Hughes
ef5b3e48b6 Add support for some EVIO ioctls. These are a bit abnormal because
the length part of the ioctl is not fixed so they are essentially
families of ioctls.

Based on patch from Peter Korsgaard. Fixes #235642.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11124
2010-05-07 15:32:04 +00:00
Julian Seward
d4a18f87cc Add a method to get the contents of an XArray so we can index in
it really fast, or iterate over it.  This is dangerous and breaks
the nice abstraction (sigh).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11122
2010-05-05 09:23:41 +00:00
Julian Seward
9b0574dff8 Update copyright dates to 2010.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11121
2010-05-03 21:37:12 +00:00
Tom Hughes
ee1b05c562 Include valgrind headers before system headers to avoid problems
with the system headers #defining things which are used as names
of structure members in vki headers.

This is needed to allow valgrind to build on Fedora 13 and Rawhide.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11113
2010-04-29 09:01:21 +00:00
Tom Hughes
25b8be58ad Add some basic DWARF4 support. Based on patch from Jakub Jelinek
but with support for VLIW architectures with multiple opcodes per
instruction removed. Fixes #233595.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11106
2010-04-28 08:09:30 +00:00
Julian Seward
448fa2462a search_all_symtabs: when mapping addresses to text symbols, consider
any symbol in the r-x mapped segment to be a valid candidate.  This
relaxes the filtering criterion slightly, makes it consistent with
other is-it-text? checks.  Some addresses which before didn't get
mapped to anything are now correctly mapped to "vtable for Foo"
symbols.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11104
2010-04-12 20:56:56 +00:00
Bart Van Assche
53596eaf4a The help text printed by command-line option -h does now show the default
value for option --read-var-info. Fixes bug #231458.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11097
2010-03-27 07:38:39 +00:00
Julian Seward
8177e0722f Inline most functions in VG_(use_CF_info). May or may not give a
3% performance increase for Helgrind in default (detailed-history)
mode.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11093
2010-03-14 17:19:02 +00:00
Julian Seward
10a6d4b0f6 Improve performance of the fallback path when a translation is not
found in the fast-cache.

* reduce max loading of the per-sector TT hash tables from 80% to 65%.
  This reduces the number of required probes by a factor of 3.

* when searching for a translation, don't visit the sectors in a fixed
  order.  Instead, use an MTF array in which the most popular sectors
  (in terms of most likely to hold the translation we're looking for)
  are visited first.  This reduces the number of required probes by
  another factor of 2.

These improvements have no effect on small programs, but improve
scalability on big apps.  For an application comprising 300k
translations, runtime on Memcheck is reduced by 3% and on None by
about 20%.  The average number of probes per fast-cache miss is
reduced from around 22 to less than 5.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11091
2010-03-14 15:09:27 +00:00
Julian Seward
578d74d4fa Fix the definedness handling of the last argument of sys_socketpair.
The last argument is really a pointer to an array of two ints and so
we need to say it is an int* and not an int [2].  This just happens to
work on amd64-linux because sizeof(int [2]) == 8 == sizeof(int*).  On
arm-linux it duly craps out w/ an assertion because sizeof(int [2]) !=
sizeof(UWord).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11083
2010-03-08 14:45:26 +00:00
Tom Hughes
2373f0c096 On amd64 all IPC calls behave as if the IPC_64 flag is set in the
command, so pretend that it is set when calling the generic wrapper
functions in pre and post handlers. Fixes #229509.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11064
2010-03-05 10:11:41 +00:00
Julian Seward
7ae2079a71 Show the requesting thread (tid) for each translation.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11060
2010-03-03 22:55:42 +00:00
Julian Seward
68448f1567 Fix out-of-date comment.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11058
2010-03-01 16:42:56 +00:00
Tom Hughes
0e95308259 Add a wrapper for the splice system call and wire it up on
x86 and amd64 systems. Closes #205788.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11055
2010-02-23 10:49:48 +00:00
Tom Hughes
2a70cf0b01 Add support for the getcpu system call on x86, ppc32 and ppc64. There
is no support for amd64 because there is no getcpu system call on that
platform - it is always done as a vsyscall in user space.

Based on patch from Aleksander Salwa. Closes #223758.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11054
2010-02-23 10:02:55 +00:00
Julian Seward
e6c318c531 When creating a child thread, initially set its os_state.threadgroup
to have the same value as the parent.  This avoids exit races leading
to hangs and strange behaviour in heavily multithreaded apps, in the
situation where threads are rapidly being created, and at the same
time an existing thread does sys_exit_group so as to terminate the
entire process.  Thanks to Konstantin S for chasing this down to a
small test case.  Fixes #226116.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11053
2010-02-22 11:03:10 +00:00
Tom Hughes
4219823412 Add parentheses round the "zzarg" macro argument when using it as it
may expand to an expression which may mean we wind up doing the cast
before evaluating the expression... Closes #227570.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11051
2010-02-19 16:50:45 +00:00
Tom Hughes
3985923259 Fix up a few issues with OSS ioctls. Fixes #227325.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11050
2010-02-18 15:54:45 +00:00
Tom Hughes
e548bda0ec Neither FUTEX_WAKE or FUTEX_WAKE_BITSET actually dereference the
futex at all (they just use the address) so we shouldn't insist on
it's contents being define. Fixes #224723.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11048
2010-02-16 15:05:55 +00:00
Julian Seward
811fdfeae2 Guard new debug print statement in r11045 correctly (at all!)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11047
2010-02-15 12:00:28 +00:00
Julian Seward
0dd0fb1f2f Get rid of kludgey and non-functional PID caching in the printing
mechanism.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11046
2010-02-15 10:07:05 +00:00
Julian Seward
22f52b5836 Make -v messages w.r.t. finding of auxiliary debuginfo files less confusing.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11045
2010-02-15 10:05:40 +00:00
Julian Seward
e73c751ccd Add debug printing for the env-mashing machinery, to help investigate
#215914 ("Valgrind inserts bogus empty environment variable").



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11041
2010-02-15 09:54:37 +00:00
Julian Seward
be103bbcfc Reduce verbosity of the PDB reader a bit. Original verbosity is still
available using "-v".



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11040
2010-02-12 12:19:36 +00:00
Julian Seward
5686e8d89d Try to find the PDB file for a given PE file by the totally kludgey
method of doing "strings file.dll | egrep '\.pdb|\.PDB'".

Distantly derived from a patch by leiz@ucla.edu.  Fixes #222902,
although I still would prefer to do this the proper way, by parsing
the PE file properly.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11039
2010-02-12 12:12:39 +00:00
Julian Seward
66e628a398 Fix bogus comparisons of PDB vs PE timestamps, so as to avoid
signed vs unsigned confusion.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11038
2010-02-10 13:37:37 +00:00
Julian Seward
5df7c91476 The client request VG_USERREQ__LOAD_PDB_DEBUGINFO that we get from
Wine as a notification to read PDB/PE debug info, contains a parameter
'reloc' whose purpose is unknown, and which is unused.  Rename it
accordingly, to 'unknown_purpose__reloc'.  (a non-functional change)




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11036
2010-01-30 13:40:27 +00:00
Julian Seward
34016f514a Fix up obviously-bogus FPO biasing a bit. Not that I have any idea if
this helps at all.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11035
2010-01-30 13:36:37 +00:00
Julian Seward
09e143240d Make the FPO reader much more robust against apparently nonsensical
FPO tables.  Also, improve debug printing for FPO reading.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11034
2010-01-30 13:07:08 +00:00
Julian Seward
69944232f8 PE/PDB handling: allow the PDB (the debuginfo file) to be up to 1
minute older than the PE (the .exe/.dll it describes) even though this
doesn't seem particularly safe.  Partially fixes #190675.
(patch from Dan Kegel)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11033
2010-01-29 22:37:02 +00:00
Julian Seward
eb5d6433bd Followup fix to r11006. Don't pass va_list by value through client
requests, since there's no guarantee it is the same size as a machine
word.

This renames the private client request VG_USERREQ__INTERNAL_PRINTF to
VG_USERREQ__INTERNAL_PRINTF_VALIST_BY_REF and changes the
argument-passing accordingly.

The public client requests VG_USERREQ__PRINTF and
VG_USERREQ__PRINTF_BACKTRACE are now deprecated, and handled only in
the case where sizeof(UWord) == sizeof(va_list).  In all other cases V
will now print a detailed error message and abort.  This breaks binary
compatibility of apps compiled using VALGRIND_PRINTF and
VALGRIND_PRINTF_BACKTRACE, but that's not easy to avoid.

VG_USERREQ__PRINTF and VG_USERREQ__PRINTF_BACKTRACE are now replaced
by VG_USERREQ__PRINTF_VALIST_BY_REF and
VG_USERREQ__PRINTF_BACKTRACE_VALIST_BY_REF.  The end-user macros
VALGRIND_PRINTF and VALGRIND_PRINTF_BACKTRACE have been adjusted to
use these new requests instead.

Overall result is that source level compatibility of code using
VALGRIND_PRINTF{,_BACKTRACE} is retained, but binary level
compatibility may be broken, necessitating a rebuild of code using
these macros.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11032
2010-01-28 15:23:54 +00:00
Julian Seward
59ee7ebc94 Fix up debug printing for the PDB reader, so it can be properly
controlled from the command line.  Recommended flags are

-v --trace-symtab=yes "--trace-symtab-patt=*nameofinteresting.exe" 

Also print entry/exit information for DEBUG_SnarfCodeView and
DEBUG_SnarfLinetab.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11030
2010-01-26 13:26:41 +00:00
Tom Hughes
e877852408 DW_OP_mod should do unsigned arithmetic. Closes #223656.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11028
2010-01-21 10:19:46 +00:00
Julian Seward
977b0eaeaa Add command line flag --vex-guest-chase-cond=no|yes [no] to control
whether front ends should speculatively chase through conditional
branches.  Disabled by default.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11026
2010-01-15 10:57:57 +00:00
Julian Seward
6b95f1cd4c arm-linux: remove wrappers for __NR_ipc, __NR_mmap, __NR_sigsuspend
and __NR_sigaction, which all did I_die_here and therefore can never
have been used.  I think they were here as a result of this file being
derived from the x86-linux version, and that arm-linux uses more
modern equivalents (mmap2, rt_sig*, and the broken-out versions of
ipc).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11019
2010-01-06 11:08:18 +00:00
Julian Seward
5d80fe2bdc Pass sys_cacheflush along to VG_(discard_translations), so we have
transparent zero-cost self-modifying code support on ARM.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11018
2010-01-06 10:22:25 +00:00
Julian Seward
5c21cd2532 Disable pid caching for print output: it's wrong in a child after
a fork() and is very confusing.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11017
2010-01-04 21:49:25 +00:00
Julian Seward
9ff9c8291a Enable pread64 on arm-linux.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11016
2010-01-04 21:05:42 +00:00
Julian Seward
a72ca74730 Don't assume that va_list can be casted to an unsigned word. Fixes
the build on arm-linux with gcc-4.4 or later.  Patch from Dmitry
Zhurikhin.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11006
2010-01-04 01:01:02 +00:00
Julian Seward
cc732d641a arm-linux: handle sys_signalfd4 and sys_eventfd2. Makes
memcheck/tests/linux-syscalls-2007 succeed on this platform.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10996
2010-01-03 11:46:50 +00:00
Julian Seward
99857994dd Handle sys_pipe2 on arm-linux; also add some missing numbers to
vki-scnums-arm-linux.h.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10994
2010-01-03 11:29:35 +00:00
Julian Seward
ef87f94e94 arm-linux: fake up the commpage entry at a lower level (in
parse_procselfmaps) so that the sync checker still works.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10993
2010-01-03 10:14:03 +00:00
Julian Seward
6a9a4015c7 Various minor fixups to make ppc32/64-linux work again following
recent ARM-Linux merge.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10992
2010-01-02 13:24:58 +00:00