Commit Graph

48 Commits

Author SHA1 Message Date
Julian Seward
19e8e951e5 Counterpart to r5202: restore previous assembler state with .previous
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5204
2005-11-19 02:02:57 +00:00
Julian Seward
418aae5c97 Hmm. Perhaps all those top-level pieces of assembly weren't such a
clever idea.  There's no reason to assume the assembler is in
.text-mode when it encounters them, and as gcc 2.96 rudely
demonstrates, sometimes it isn't.  So put .text in front of all of
them.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5202
2005-11-18 23:50:43 +00:00
Nicholas Nethercote
057061d2ae Try to avoid compiler warnings on AMD64.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5065
2005-11-10 04:02:19 +00:00
Nicholas Nethercote
8a58b97fbb Factor out some common code in m_syswrap.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5062
2005-11-10 02:48:04 +00:00
Nicholas Nethercote
bf21ecfdb0 Factor out some common code in m_syswrap.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5049
2005-11-09 04:49:28 +00:00
Julian Seward
6510569558 Liberalise x86 clone flag handling, so it's as per amd64/ppc32.
However, leave the old code in place, disabled, for documentary
reasons.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5023
2005-11-05 15:13:23 +00:00
Tom Hughes
2b553e2835 Add support for the mbind system call on x86 and amd64. Fixes bug #114756.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4958
2005-10-20 17:00:23 +00:00
Tom Hughes
fa32067e45 Fix x86 specific declaration-before-statement warnings.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4907
2005-10-12 10:50:56 +00:00
Julian Seward
287d92271f The m_syswrap subsystem is Valgrind's model of how the kernel behaves
with respect to syscalls.  It is detailed and comprehensive but does
not offer a way to deal with minor deviations in behaviour from the
vanilla kernel sources, either due to running a hacked kernel or
running a vanilla kernel with a custom kernel module loaded.

This commit adds a flexible way to handle such cases without polluting
the vanilla handler syswrap-*.c files or their supporting vki_*.h
header files.  For each OS, a syswrap-OS-variants.c file is added,
containing wrappers for variants of OS.  A new command line flag
--kernel-variants= carries a comma separated list of variant names
that apply to the current run.  There are no other changes.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4873
2005-10-06 03:19:49 +00:00
Julian Seward
b7cd9cb3de Plumb 64-bit file offsets throughout the address space manager.
Untested.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4844
2005-10-02 17:01:41 +00:00
Tom Hughes
6c610b89c7 Rationalise the mmap system call handling - after examining the kernel
source it turns out that there are five different versions of mmap for
the three platforms we currently support:

  - On x86-linux there is mmap (aka old_mmap) which takes the
    arguments in a memory block and the offset in bytes; and
    mmap2 (aka sys_mmap2) which takes the arguments in the normal
    way and the offset in pages.

  - On ppc32-linux there is mmap (aka sys_mmap) which takes the
    arguments in the normal way and the offset in bytes; and
    mmap2 (aka sys_mmap2) which takes the arguments in the normal
    way and the offset in pages.

  - On amd64-linux everything is simple and there is just the one
    call, mmap (aka sys_mmap)  which takes the arguments in the normal
    way and the offset in bytes.

To reconcile all this I have created a generic handler and then
written five platform specific wrappers which normalise all the
arguments and then call the generic handler.

I have also modified the address space manager to use mmap2 rather
than mmap on x86 and ppc32 so that large offsets can be correctly
handled.

There is still an issue of OffT truncating offsets as we go through
the address space manager that will need to be addressed.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4834
2005-09-30 08:07:53 +00:00
Julian Seward
9f5c43b405 Get rid of duplicated STRINGIFY macros.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4829
2005-09-30 01:20:47 +00:00
Julian Seward
9d61e685ef Oh Arse. This'll teach me to edit the x86-specific sources on a ppc32
box.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4825
2005-09-30 00:49:01 +00:00
Julian Seward
98e527a62c A corresponding fix to 4823: don't deal with MAP_FIXED case directly
here; instead uniformly pass all requests to VG_(am_get_advisory), so
that layout policy is controlled from one place only.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4824
2005-09-30 00:45:47 +00:00
Julian Seward
002bc6c7e7 Comment-only changes
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4818
2005-09-29 10:24:17 +00:00
Julian Seward
b98ac01c9f Get rid of pub_core_main.h, so that m_main is not imported by anyone,
and so is not part of a module cycle.  This requires a moderately
grotty hack of passing a continuation-function pointer in a global
variable.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4806
2005-09-28 10:47:38 +00:00
Julian Seward
cc8ccbbfb4 This commit merges in changes from branches/ASPACEM (specifically,
changes from r4341 through r4787 inclusive).  That branch is now dead.
Please do not commit anything else to it.

For the most part the merge was not troublesome.  The main areas of
uncertainty are:

- build system: I had to import by hand Makefile.core-AM_CPPFLAGS.am
  and include it in a couple of places.  Building etc seems to still
  work, but I haven't tried building the documentation.

- syscall wrappers: Following analysis by Greg & Nick, a whole lot of
  stuff was moved from -generic to -linux after the branch was created.
  I think that is satisfactorily glued back together now.

- Regtests: although this appears to work, no .out files appear, which
  is strange, and makes it hard to diagnose regtest failures.  In
  particular memcheck/tests/x86/scalar.stderr.exp remains in a 
  conflicted state.

- amd64 is broken (slightly), and ppc32 will be unbuildable.  I'll
  attend to the former shortly.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4789
2005-09-27 19:20:21 +00:00
Nicholas Nethercote
1394091f86 Moved sys_mmap2 wrapper from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4595
2005-08-31 03:00:40 +00:00
Nicholas Nethercote
c198b967b3 Moved some more syscall wrappers from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4594
2005-08-31 02:44:31 +00:00
Nicholas Nethercote
b79e7281d4 Moved sched_* from "generic" to "linux"; Darwin doesn't have them.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4576
2005-08-30 02:17:23 +00:00
Nicholas Nethercote
40eb28bec1 Move *xattr from "generic" to "linux". Darwin has them, but with an extra
parameter.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4575
2005-08-30 01:53:54 +00:00
Nicholas Nethercote
45fc4050f8 Move *chown16 syscalls from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4523
2005-08-26 04:36:10 +00:00
Nicholas Nethercote
1fa6f9bf7a Move get*16 and set*16 syscalls from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4521
2005-08-26 04:27:54 +00:00
Nicholas Nethercote
7fd1f02169 Move cap{get,set} syscalls from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4520
2005-08-26 04:03:04 +00:00
Nicholas Nethercote
832989d4af Move timer_* syscalls from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4519
2005-08-26 03:54:30 +00:00
Nicholas Nethercote
c42361bf17 Move clock_* syscalls from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4518
2005-08-26 03:49:43 +00:00
Nicholas Nethercote
c710281899 Move mq_* syscalls from "generic" to "linux".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4517
2005-08-26 03:43:28 +00:00
Tom Hughes
606bd75025 Fix system call name in error messages.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4346
2005-08-08 16:50:16 +00:00
Tom Hughes
ebe67e6134 Check the fields of the new structure passed to sigaction individually
and only check sa_restorer if the SA_RESTORER flag is set.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4338
2005-08-07 15:16:59 +00:00
Tom Hughes
3f28625849 Implement the waitid system call. Fixes bug #110202.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4329
2005-08-05 07:32:04 +00:00
Tom Hughes
03bc2deb25 Add support for the inotify system calls based on a patch
from John McCutchan <ttb@tentacle.dhs.org>.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4250
2005-07-25 15:21:41 +00:00
Julian Seward
1bafc58697 Get rid of --support-elan3=. This flag wasn't doing anything since
the Elan3 user-space driver now works on unmodified Valgrind.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4238
2005-07-24 07:15:44 +00:00
Tom Hughes
a74aa1e74d Yet more system calls.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4227
2005-07-22 15:04:14 +00:00
Tom Hughes
5e7b1d48c7 More system call fixups.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4213
2005-07-20 09:24:04 +00:00
Tom Hughes
6e11d22b74 Fix mistaken comments.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4202
2005-07-19 23:01:56 +00:00
Tom Hughes
d1d9783242 Return success when get_thread_area succeeds.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4199
2005-07-19 22:44:33 +00:00
Tom Hughes
1426576c53 Preserve %esi across VG_(clone) as the caller may be relying on it
not being changed. Fix to bug #106713.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4160
2005-07-18 12:02:45 +00:00
Nicholas Nethercote
88b532de40 Simplify atfork to only provide the functionality we need.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4032
2005-06-26 15:11:37 +00:00
Nicholas Nethercote
8d861507df Remove out-of-date comments.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4013
2005-06-24 15:40:01 +00:00
Cerion Armour-Brown
c259dd1e6d VG_() -> ML() for ppc32, amd64
(plus a few scattered ones in comments etc)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4003
2005-06-23 07:52:54 +00:00
Nicholas Nethercote
d463dd2292 Removed the VGA_/VGO_/VGP_ prefixes for arch/OS/platform-specific
things.  These made sense when the arch/OS/platform-specific code was in
one module, but as that code got mixed in with generic code the boundary
between generic and non-generic blurred, and the distinction made less
sense.  So let's get rid of them.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4002
2005-06-23 03:27:57 +00:00
Julian Seward
9cb0696641 For symbols which have C-level global scope but which we regard as
module-local, use the new ML_ prefix instead of VG_.  This makes it
trivial to see which names are those exported from public module
interfaces: precisely those using VG_.

/* VG_ is for symbols exported from modules.  ML_ (module-local) is
   for symbols which are not intended to be visible outside modules,
   but which cannot be declared as C 'static's since they need to be
   visible across C files within a given module.  It is a mistake for
   a ML_ name to appear in a pub_core_*.h or pub_tool_*.h file.
   Likewise it is a mistake for a VG_ name to appear in a priv_*.h
   file. 
*/



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4000
2005-06-23 01:02:53 +00:00
Nicholas Nethercote
fc38860306 Don't #include pub_core_debuginfo.h in pub_core_aspacemgr.h. So have
to #include it explicitly in lots of other places, but at least the 
dependency is clear now.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3974
2005-06-21 00:28:11 +00:00
Cerion Armour-Brown
d5f7c8aed3 Finally, valgrind on ppc32.
Plenty still to do, but simple programs like ls seem to run ok

Thanks, Paul, for having your ppc port of valgrind 2.4 to work from!




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3969
2005-06-20 15:51:07 +00:00
Nicholas Nethercote
0100346c9d Remove some unnecessary #includes, comment some others.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3968
2005-06-20 14:18:12 +00:00
Nicholas Nethercote
f174930b23 Final commit for the initial modularisation pass:
- Broke part of m_scheduler off into a new module m_threadstate.  It
  contains ThreadState, VG_(threads)[] and some basic operations on the
  thread table.  All simple stuff, the complex stuff stays in m_scheduler.
  This avoids lots of circular dependencies between m_scheduler and other
  modules.

- Managed to finally remove core.h and tool.h, double hurrah!

- Introduced pub_tool_basics.h and pub_core_basics.h, one of which is
  include by every single C file.

- Lots of little cleanups and changes related to the above.

- I even did a small amount of documentation updating.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3944
2005-06-19 01:24:32 +00:00
Nicholas Nethercote
6404b199cb Moved call_on_new_stack_0_1 and jump_and_switch_stacks to better places.
This enabled the removal of $ARCH/jmp_with_stack.c, hurrah!


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3938
2005-06-18 15:54:25 +00:00
Nicholas Nethercote
b54b42c310 Rename m_syscalls/ as m_syswrap/ to complete the module renaming.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3924
2005-06-17 22:27:21 +00:00