Commit Graph

2427 Commits

Author SHA1 Message Date
Julian Seward
4ba003ee3e ppc32-linux: reinstate sys_fsync, sys_sched_setscheduler
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4894
2005-10-07 23:06:13 +00:00
Julian Seward
5a97c3afc7 Make --log-socket= work on ppc32.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4893
2005-10-07 23:04:17 +00:00
Julian Seward
614c6418c4 ppc32-linux: handle sys_madvise.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4892
2005-10-07 19:12:18 +00:00
Julian Seward
5027b7a30e Enable sys_ftruncate64 on ppc32.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4891
2005-10-07 13:30:48 +00:00
Julian Seward
8559d79377 Disable ppc32 altivec pro tem (just temporarily).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4889
2005-10-07 12:11:12 +00:00
Tom Hughes
193e4670fc When looking for a heap segment to extend look for the heap limit
address rather than the base address as the heap may have been split
into more than one segment by using mprotect on it...


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4882
2005-10-06 14:49:21 +00:00
Tom Hughes
c0893e8f7d Stop memalign crashing if it fails to allocate the memory. Bug 112538.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4879
2005-10-06 12:04:26 +00:00
Nicholas Nethercote
85545d1a1c Changed some overflow-prone counters from UInt to ULong.
Changed some printf specifiers accordingly, plus some more that were
incorrect.

Also put commas in various output numbers, eg. the leak check stats.  
This makes them much easier to read when they get big.  One
exception is in XML number-only fields such as <leakedbytes>.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4874
2005-10-06 03:32:42 +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
47130dd9f9 Adjustments to the sync-checker:
* show the filename, if any, when printing out disagreeing mappings

* if the kernel offers us a mapping to a file with the name 
  "/dev/zero (deleted)", don't do a /dev/ino comparison.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4872
2005-10-06 03:04:22 +00:00
Julian Seward
4ce62c9445 If the launcher can't figure out what it's own name is, don't bail
out.  Instead, print a warning message, continue, and cause any
attempt to trace into a child process to fail with ECHILD.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4861
2005-10-04 23:07:33 +00:00
Julian Seward
4a47f441f2 Rewrite ML_(fd_allowed):
* include explaination from Tom
* make logic easier to follow, and add comments
* remove veto on the -d file descriptor (detailed comments in code)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4860
2005-10-04 22:27:22 +00:00
Tom Hughes
1b42aba084 Make sure we have all the DWARF2 sections before trying to decode
any DWARF2 debug information. All make sure we don't fall over if
the .debug_info is less than four bytes long. Fixed bug 113642.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4856
2005-10-04 16:54:54 +00:00
Tom Hughes
65bd3eb367 Create a new SkShmC segment type for shared memory segments so that we
can ensure they are never merged with adjacent segments. This makes
sure that we can find the right piece of memory to release when the
shmdt system call occurs.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4854
2005-10-04 15:59:54 +00:00
Tom Hughes
a31e921b7e Check permissions when sanity checking the segment list against
the kernel's memory map.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4853
2005-10-04 13:02:31 +00:00
Tom Hughes
760dbdc42a Get the SHM_RDONLY test the right way round. Fixes bug #113796.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4852
2005-10-04 12:04:06 +00:00
Tom Hughes
2b5092f64c Allow scripts less that a page in length to be executed.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4849
2005-10-03 09:06:36 +00:00
Nicholas Nethercote
72dd8496df compile fix for an Ubuntu box I just tried
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4846
2005-10-02 17:50:31 +00:00
Julian Seward
45b7830107 Unbreak compilation. Duh.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4845
2005-10-02 17:33:07 +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
Nicholas Nethercote
4ef4aabbd0 Make the dispatch files platform-specific, not just arch-specific,
as requested by Greg Parker.  (The ppc32/Darwin dispatch loop is
different to the ppc32/Linux one, for example.)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4843
2005-10-02 14:48:09 +00:00
Julian Seward
f0f1b729c9 ppc32-linux only: redirect strcmp right from the start.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4841
2005-10-01 19:12:08 +00:00
Tom Hughes
9bddb4c141 Document mmap insanity in a comment.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4840
2005-09-30 16:09:12 +00:00
Julian Seward
7672845acb ML_(generic_PRE_sys_mmap): reject non-page-aligned offsets.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4838
2005-09-30 10:48:27 +00:00
Julian Seward
773c32d9c6 When a sector is full, debug-print TC/TT loading for it, so as to give
better info on sizing decisions.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4837
2005-09-30 10:34:06 +00:00
Julian Seward
3564f53893 Placate gcc.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4836
2005-09-30 10:32:39 +00:00
Tom Hughes
babdf0de71 Removed surplus parenthesis.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4835
2005-09-30 08:12:54 +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
Nicholas Nethercote
06e8adae1a add missing file
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4832
2005-09-30 02:17:16 +00:00
Julian Seward
69a3fadbde Placate memcheck/tests/x86/scalar, which objected to the rewrite of
the sys_readlink wrapper.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4831
2005-09-30 01:47:12 +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
44e0ab593a In PRE(sys_readlink), fix up handling of /proc/<pid>/exe and
/proc/self/exe.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4828
2005-09-30 01:09:50 +00:00
Nicholas Nethercote
00a4e0b162 Enable sys_iopl on AMD64.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4826
2005-09-30 01:05:53 +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
1f46368c98 Changes to sys_mmap2 wrapper:
- update comment re offset scaling

- ppc32 offset is in bytes, not pages

- 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@4823
2005-09-30 00:37:04 +00:00
Nicholas Nethercote
d0b346939c Future-proof a piece of conditional compilation.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4822
2005-09-30 00:06:09 +00:00
Tom Hughes
734ffbfb60 On x86 and ppc32 the offset argument to mmap2 is specified in pages
not bytes. This is a horrible kludge of a fix and it should probably
be fixed properly with a separate sys_mmap for amd64.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4821
2005-09-29 23:26:06 +00:00
Julian Seward
a8627dede8 Fix a very stupid bug in the new aspacemgr, in which mmap "hint-style"
requests were being granted at the requested address when they should
not have been.  This was causing ppc32-linux to crash at startup
(since the wrongly-granted mapping annihilated 5 others).  This shows
the value of a multiplatform approach -- the bug applies to all
targets, yet x86 and amd64 appeared to work perfectly.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4820
2005-09-29 21:20:41 +00:00
Julian Seward
e0a5f54cf9 Make ppc32-linux build again following aspacem merge. Doesn't work, though:
programs crash before reaching main.  I don't know why.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4819
2005-09-29 11:09:56 +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
Nicholas Nethercote
c8792e1e81 Add an explanatory message for when instruction decoding fails.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4817
2005-09-29 00:35:18 +00:00
Nicholas Nethercote
65e1e0b804 Remove redundant function call.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4816
2005-09-29 00:31:40 +00:00
Nicholas Nethercote
21f31418f0 Fix up vg_preload_core.so vs. vgpreload_core.so confusion introduced
during the ASPACEM merge.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4815
2005-09-29 00:25:07 +00:00
Julian Seward
e2f8cc1393 Fix subtle bug in ML_(generic_POST_sys_shmdt) caused by new aspacem.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4814
2005-09-28 20:05:31 +00:00
Julian Seward
81852e9bf5 Fix command-line printing.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4812
2005-09-28 19:59:19 +00:00
Julian Seward
e8dc60215c Make --log-socket= work on amd64-linux.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4811
2005-09-28 19:58:58 +00:00
Julian Seward
40f6598ba4 Increase some sizes to deal better with the new multigigabyte world:
- on 64-bit platforms, double the size of the supported address
  space to 32G.

- Increase the size of the ExeContext table 6 times.  Some very
  large apps have been observed to have been doing a lot of 
  searching in the old 4999 entry table.  This table may be
  OSetified in the fullness of time.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4808
2005-09-28 11:50:20 +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
a03a1fa3bd Privatise parse_procselfmaps() and move it into aspacemgr.c in order
to benefit from the module-cycle-breaking functions in aspacemgr.c.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4805
2005-09-28 09:37:16 +00:00