the ioctls complained about in bug 93096 as well as one that came up
on the mailing list a few weeks ago.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2982
patch attempts to follow the same rules that gdb uses and is based on the
fact that there appear to be three places where :: can appear:
- In the name of a undefined struct/union/enum after an x type
marker. In this case we follow a simplified version of the old
rules and only allow :: inside <> characters.
- In a method name. These are mangled so :: will never appear as
part of the name but will always occurs as the terminator. We
handle this by stopping at the first :: sequence.
- In a symbol/type name. This can include :: but can only be ended
by a single colon so we simply carry on until we see that.
I suspect this will resolve a number of bugs but I'm still waiting for
the submitters to confirm exactly which ones it resolves.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2981
being killed from the threads rather than marking them as inaccessible.
This should fix the problem with the environment (and other data from the
stacks of other threads) causing warnings after a fork. I believe that
VG_(nuke_all_threads) is only called in places where this is the behaviour
that we want or where it doesn't matter because we're about to exit anyway.
I believe this fixes bug 85625 but I'm still waiting for confirmation.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2980
rather than giving the warning about the syscall being missing. (Nb: this only
applies to syscall numbers for which the kernel has no corresponding syscall;
Valgrind will still give that warning if new syscalls are added to the kernel.)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2962
- Folded special_sys[] into sys_info[], which is cleaner and allows the one
table to have the __NR_ constants in order. An extra per-syscall flag
(Special) was added to distinguish the special ones.
- Started moving the per-syscall flags attribute from being associated with the
sys_info[] table, to being associated with the PRE/POST wrappers, since
that's what the flags really apply to.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2956
- Reordered the table according to the __NR_xxx numbering order, which is the
order the final versions (there will be one per architecture) will be in.
This shows clearly which syscalls we don't have wrappers for.
- Annotated each entry with its number and the sys_foo() function that it
calls. This will be useful as I convert them all to the new regime.
For the same reason, I marked the ones that are generic across all Linux's
architectures.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2955
1. Make the output deterministic; different thread interleaving from expected
was causing failures for me.
2. Make it actually use the condition variable -- the condvar stupidly wasn't
actually being used in the expected case, because the other threads finished
all their work before pthread_cond_wait() even got called, and this prevented
the condition guarding pthread_cond_wait() from succeeding.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2952
- All memory-related errors are now clear whether they are caused by
unaddressable or uninitialised memory. (Previously, writes were
clearly addressability errors, but reads could be either.) Mostly
done by replacing the 'isWrite' field in MAC_Error with 'isUnaddr'.
Also, mc_check_readable() now indicates not just if an error occurred,
but what kind of error (ie. addressability or definedness).
- Put machinery into place in the core to inform tools when registers
are being read by the core -- ie. a 'pre_reg_read' event. Most
notably, this facilitates syscall scalar arg definedness checking for
Memcheck. Currently this is only working for read(), write(), exit()
and exit_group(), but it will be extended as the syscalls are
overhauled as part of the arch-abstraction work.
A consequence of this is that the ParamErr messages have changed. This:
Syscall param write(buf) contains uninitialised byte(s)
now means that the pointer 'buf' is partially undefined. If the memory
pointed to by 'buf' is partially undefined or unaddressable, it says one of:
Syscall param write(buf) points to uninitialised byte(s)
Syscall param write(buf) points to unaddressable byte(s)
The docs have been updated accordingly.
I also added a couple of regression tests.
These two change sare notable for being the first improvements to
Memcheck's checking/errors in a long time.
I also folded mc_clientreqs.c into mc_main.c, which saves exporting a
whole bunch of things that are not used anywhere else.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2949
- Started overhauling the syscalls to account for different architectures;
in particular, accounts for the fact that the __NR_foo syscall number
often doesn't directly match with the sys_foo() function that implements the
function in the Linux kernel. So started introducing this indirection as
needed. Currently, only read() and write() have been done; the transition
will be staged, since doing all syscalls in one hit is a total pain.
This will also pave the way for scalar syscall arg checking with Memcheck,
now that it is clear what the prototypes of the relevant syscalls are.
- Removed support for 2.2 kernels in the configure test, after discussion with
Julian. If it causes major problems, we can consider reverting.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2948
- made pre_mem_read etc. calls more concise by improving the macros used
- made printing calls more concise by renaming the macro used
- updated README_MISSING_SYSCALL_OR_IOCTL
- improved --trace-syscalls=yes; a bit neater, and now prints return values
for all syscalls.
- introduced LOHI64 macro for 64-bit args that are created from 2 32-bit args
- 64-bit cleanness tweaks for *xattr* syscall printing
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2941