30 Commits

Author SHA1 Message Date
Nicholas Nethercote
b859182c44 Removed the need for the user to generate a cache simulation -- now do
automatic cache configuration detection using the CPUID instruction.
This can be overridden from the command-line if necessary.

vg_include.h:
    - added the cache_t type and UNDEFINED_CACHE macro

    - added command line args (of type cache_t) allowing manual override of
      I1/D1/L2 configuration

    - added log2(), which is generally useful

vg_main.c, valgrind.in, cachegrind.in:
    - added handling of the new --{I1,D1,L2}=<size>,<assoc>,<line_size>
      options

vg_cachesim.c:
    - lots of stuff for auto-detecting cache configuration with CPUID.
      Only handles Intel and AMD chips at the moment, and possibly not all of
      them.  Falls back onto defaults if anything goes wrong, and the configs
      can be manually overridden from the command line anyway.

    - now not printing cache summary stats if verbosity == 0.  Still writing
      cachegrind.out, though.

vg_cachesim_gen.c:
    - new file containing stuff shared by the I1/D1/L2 simulations

vg_cachesim_{I1,D1,L2}:
    - removed most of it;  each now just calls a macro defined in
      vg_cachesim_gen.c

vg_cachegen:
    - has been cvs removed as it is no longer needed.

Makefile.am:
    - added vg_cachesim_gen.c

    - removed vg_cachegen

configure.in:
    - removed vg_cachegen


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@400
2002-06-08 13:36:03 +00:00
Julian Seward
a487ef1ce7 A new kind of error: PThread errors. Used to report detected misuse in
the pthread_* API.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@379
2002-06-04 22:54:20 +00:00
Julian Seward
96b04d4f30 Fix fork/exec stuff so it works again. We have to mangle LD_LIBRARY_PATH
as well as LD_PRELOAD, so as to make our libpthread.so go out of scope
when a child which we don't want to trace, is exec'd.  Otherwise the
child can wind up being connected to our libpthread.so but not to
valgrind.so, which is an unworkable combination; you have to be connected
to both or neither.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@291
2002-05-18 13:14:17 +00:00
Frédéric Gobry
460d2313d2 Use $(srcdir) to specify the location of the linker script
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@268
2002-05-13 07:50:45 +00:00
Julian Seward
59ff40a36c Insert hacks, only partially successful, to make 'make distcheck' work
with the new vg_libpthread.vs linker script.  Problem is that builds
where builddir != srcdir don't work now.  Don't know how to fix.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@253
2002-05-10 03:03:57 +00:00
Julian Seward
aa02efa1a0 More symbol versioning stuff
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@250
2002-05-10 01:52:58 +00:00
Julian Seward
ee775d8b61 Add a version script so as to create the right versioned symbols for
libpthread.so.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@249
2002-05-10 01:42:33 +00:00
Julian Seward
ebe11593f2 Build and install 'cachegrind' along with 'valgrind'.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@181
2002-05-01 01:25:45 +00:00
Julian Seward
7558b43cf5 Config/build/install vg_annotate and vg_cachegen correctly.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@169
2002-04-29 17:27:07 +00:00
Nicholas Nethercote
fcc45a9e85 New files:
- vg_cachesim.c
  - vg_cachesim_{I1,D1,L2}.c
  - vg_annotate.in
  - vg_cachegen.in

Changes to existing files:

  - valgrind/valgrind.in, added option:

        --cachesim=no|yes       [no]

  - Makefile/Makefile.am:
        * added vg_cachesim.c to valgrind_so_SOURCES var
        * added vg_cachesim_I1.c, vg_cachesim_D1.c, vg_cachesim_L2.c to
          noinst_HEADERS var
        * added vg_annotate, vg_cachegen to 'bin_SCRIPTS' var, and added empty
          targets for them

  - vg_main.c:
        * added two offsets for cache sim functions (put in positions 17a,17b)
        * added option handling (detection of --cachesim=yes which turns off of
          --instrument);
        * added calls to cachesim initialisation/finalisation functions

  - vg_mylibc: added some system call wrappers (for chmod, open_write, etc) for
    file writing

  - vg_symtab2.c:
        * allow it to read symbols if either of --instrument or --cachesim is
          used
        * made vg_symtab2.c:vg_what_{line,fn}_is_this extern, renaming it as
          VG_(what_line_is_this) (and added to vg_include.h)
        * completely rewrote the read loop in vg_read_lib_symbols, fixing
          several bugs.  Much better now, although probably not perfect.  It's
          also relatively fragile -- I'm using the "die immediately if anything
          unexpected happens" approach.

  - vg_to_ucode.c:
        * in VG_(disBB), patching in x86 instruction size into extra4b field of
          JMP instructions at the end of basic blocks if --cachesim=yes.
          Shifted things around to do this;  also had to fiddle around with
          single-step stuff to get this to work, by not sticking extra JMPs on
          the end of the single-instruction block if there was already one
          there (to avoid breaking an assertion in vg_cachesim.c).  Did a
          similar thing to avoid an extra JMP on huge basic blocks that are
          split.

  - vg_translate.c:
        * if --cachesim=yes call the cachesim instrumentation phase
        * made some functions extern and renamed:
                allocCodeBlock() --> VG_(allocCodeBlock)()
                freeCodeBlock()  --> VG_(freeCodeBlock)()
                copyUInstr()     --> VG_(copyUInstr)()
          (added to vg_include.h too)

  - vg_include.c: declared
        * cachesim offsets
        * exports of vg_cachesim.c
        * added four new profiling events (increasing VGP_M_CCS to 24 -- I kept
          the spare ones)
        * added comment about UInstr.extra4b field being used for instr size in
          JMPs for cache simulation

  - docs/manual.html:
        * Added --cachesim option to section 2.5.
        * Added cache profiling stuff as section 7.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@168
2002-04-29 16:03:24 +00:00
Julian Seward
c81d619159 Administrivia.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@154
2002-04-26 14:30:52 +00:00
Julian Seward
c107508a0f Try and give at least some minimal binding for all functions exported
by the real libpthread.so.  In the process fix a bunch of stuff, including
adding thread-specific h_errno and resolver state storage.  This fixes
licq crashing at startup.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@149
2002-04-25 20:17:29 +00:00
Julian Seward
66e3ae4b8f - Use CFLAGS in demangle/Makefile.am
- Get rid of -Werror; it breaks to many people's builds.  It can be
  passed in with make variable WERROR if needed.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@127
2002-04-24 11:14:22 +00:00
Dirk Mueller
4cf90f4696 - don't check if the compiler supports const. No compiler we care
about doesn't support it
- readd -Werror
- move setting of CFLAGS to the Makefile instead of the configure
  script, to avoid that the custom flags we use screw up configure checks


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@113
2002-04-21 13:32:28 +00:00
Julian Seward
d972c3452c Compile flags += -Werror. I'm tired of looking carefully for warnings.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@97
2002-04-18 10:03:02 +00:00
Julian Seward
da6c025074 malloc() and friends have moved to vg_clientfuncs.c, so move the
-fno-omit-frame-pointer flag there too.  Otherwise they are invisible
in backtraces.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@72
2002-04-15 14:27:48 +00:00
Dirk Mueller
5515a58af0 fix initial installation problem
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@71
2002-04-15 00:54:13 +00:00
Dirk Mueller
4b7f632edd some workarounds for newer automake
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@70
2002-04-15 00:31:58 +00:00
Frédéric Gobry
d44c060e37 use install-exec-hook to create the .so.0 symlink.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@69
2002-04-14 15:31:19 +00:00
Julian Seward
c5d0d4a965 Fix problems to do with make dist/make distcheck not finding the source
file vg_libpthread.so.0.c.  Now:

* libpthread.so is built as just-another-so, like valgrind.so and
  valgrinq.so.

* there is a new dummy target libpthread.so.0 which is build just
  by a symlink.

Unfortunately for some reason, when the .so.0 is installed, it gets
a complete copy rather than just the symlink being copied.  But it
works, at least.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@68
2002-04-14 14:32:54 +00:00
Julian Seward
6885b33e91 * external namespace check
* VG_(printf) format strings check


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@65
2002-04-14 13:01:38 +00:00
Frédéric Gobry
9158ab04e5 added rules to generate libpthread.so
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@54
2002-04-12 13:32:11 +00:00
Julian Seward
d9f72279d7 Oops! An important file I forgot to add (is part of the pthread_
mega-merge).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@53
2002-04-12 11:49:29 +00:00
Julian Seward
7a36f60133 Mega-merge of my last 2 weeks hacking. This basically does the groundwork
for pthread_* support.  Major changes:

* Valgrind now contains a (skeletal!) user-space pthreads
  implementation.  The exciting bits are in new file vg_scheduler.c.
  This contains thread management and scheduling, including nasty crud
  to do with making some syscalls (read,write,nanosleep) nonblocking.
  Also implementation of pthread_ functions: create join
  mutex_{create,destroy,lock,unlock} and cancel.

* As a side effect of the above, major improvements to signal handling
  and to the client-request machinery.  This is now used to intercept
  malloc/free etc too; the hacky way this is done before is gone.
  Another side effect is that vg_dispatch.S is greatly simplified.
  Also, the horrible hacks to do with delivering signals to threads
  blocked in syscalls are gone, since the new mechanisms cover this case
  easily.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@52
2002-04-12 11:12:52 +00:00
Frédéric Gobry
8185e4582f splitted the suppression files so that default.supp can be created by picking
from the library specific supp files.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@45
2002-04-04 09:18:39 +00:00
Frédéric Gobry
94f4cbf5ad Applied patch from Simon Hausmann <hausmann@kde.org> to enable automake1.5
compilation, except for the use of $(EXEEXT) which generates annoying warnings.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@34
2002-03-26 20:44:55 +00:00
Frédéric Gobry
61a11f917a added a bzdist target
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@31
2002-03-24 18:01:46 +00:00
Julian Seward
990cfcba30 Remove mention of vg_version.h.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@28
2002-03-24 12:32:13 +00:00
Frédéric Gobry
b17d5d40a3 improved the build system
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9
2002-03-22 13:38:30 +00:00
Julian Seward
72a784f3b1 Initial revision
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@2
2002-03-22 01:27:54 +00:00