Commit Graph

179 Commits

Author SHA1 Message Date
Nicholas Nethercote
61448c507d We have a nice little collection of text files describing various high
level things.  But they're all over the place.  This commits moves
them all to the new docs/internals/ directory, and gives them 
a consistent naming scheme.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4196
2005-07-19 21:46:19 +00:00
Nicholas Nethercote
37a45c37b9 Added a file containing Josef's explanation of Calltree's function
entry/exit tracking.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4176
2005-07-19 03:30:31 +00:00
Nicholas Nethercote
0274f91dfe wibbles
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4173
2005-07-19 00:40:16 +00:00
Dirk Mueller
e674c875f1 remove the version script, doesn't work for executables
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4170
2005-07-18 23:52:10 +00:00
Nicholas Nethercote
fbf8653c8b Removed the remnants of the attempt at an ARM port, because it had
bit-rotted badly and was clogging up the code.

I put the useful remnants in docs/porting-to-ARM in case anyone ever
wants to try porting to ARM again.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4092
2005-07-02 23:13:59 +00:00
Nicholas Nethercote
128115f4df "make dist" fixes from Ralf Wildenhues.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4010
2005-06-24 13:45:56 +00:00
Nicholas Nethercote
f4ee5eee2a Moved Robert's stack tracking code out of m_aspacemgr into a new module
m_stacks, because it's a nicely distinct and stand-alone piece of
functionality.  This happily removes m_aspacemgr's dependence on
m_mallocfree (there was an apparent dependence due to the #include, even if
it didn't manifest itself in practice -- very important!) and m_options (not
so important).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@4009
2005-06-24 03:28:30 +00:00
Nicholas Nethercote
82a9510ad7 Rename ume.c/ume.h as m_ume.c/pub_core_ume.h to be consistent with
all the other modules.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3992
2005-06-21 22:47:54 +00:00
Nicholas Nethercote
493731937c Attempt to fix the stage2.lds borkage.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3980
2005-06-21 03:30:51 +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
1b3a92639e Moved VG_(start_debugger) out of m_main.c into its own module,
m_debugger.  This removes the dependence of m_signals.c and m_errormgr.c
on m_main.c.  It required also moving VG_(clexecfd) out of m_main.c;  I put
it in m_libcproc.c which seemed like an ok-but-not-great choice.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3957
2005-06-19 19:25:44 +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
f4871f2c72 Move CPUID functions into their own module, m_cpuid.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3940
2005-06-18 18:31:26 +00:00
Nicholas Nethercote
a0a6af2854 Make the stage2.lds building platform-independent by not trying to match
an exact address (idea from Paul Mackerras' PPC port).  Thus it could be
moved into coregrind/Makefile.am.

Let me know if this breaks anything on other platforms.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3939
2005-06-18 16:41:30 +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
1279058c7c Renamed tool_asm.h as pub_basics_asm.h. Removed core_asm.h.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3931
2005-06-18 04:10:56 +00:00
Nicholas Nethercote
2f407d612c Moved the code trampoline stuff into a new module, m_trampoline. Not
certain this was the right thing to do, but that stuff sure as hell
didn't fit in any of the existing modules.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3929
2005-06-18 03:27:58 +00:00
Nicholas Nethercote
c5a38c663b Created coregrind.h, a counterpart to valgrind.h containing the internal
client requests.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3927
2005-06-18 02:18:04 +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
Nicholas Nethercote
626d5c129c Renamed the m_syscalls module m_syswrap, which better describes what it
does and better distinguishes it from m_syscall.  Did everything for this
except renaming the m_syscalls/ directory -- I'll do that shortly, I don't
think Subversion can handle renaming a directory and files within that
directory at the same time.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3923
2005-06-17 22:19:06 +00:00
Nicholas Nethercote
cfbf606ac5 Moved the basic syscall stuff out of m_libcbase.c into a new module
m_syscall.c.  Plus some associated cleanups.

Moved VG_(sigreturn) into m_signals.c and made it local.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3922
2005-06-17 21:31:45 +00:00
Nicholas Nethercote
3ae4d1a0ab A cleanup of the redirection stuff.
- Renamed VG_INTERCEPT as VG_REPLACE_FUNCTION to make its purpose
  clearer.

- Renamed VG_WRAPPER as VG_NOTIFY_ON_LOAD to make its purpose cleare.
  Started calling that stuff "load notification".

- Moved various things into m_redir.c, a much more sensible place for
  them.  This reduced the number of exported functions overall.  Renamed
  intercept_demangle() as Z_decode() as part of this.

- Improved the documentation of this stuff, especially in
  pub_core_redir.c.

- Got --run-libc-freeres=yes working again.  It was doing nothing.

- Renamed vg_inject.so as vg_preload_core.so to match
  vg_preload_<tool>.so

- Renamed vg_intercept.c as vg_preloaded.c.  (I kept the "vg_" prefix
  because this filename can appear in stack traces, so the "vg_" is a
  useful hint for users that it belongs to Valgrind.)

- Removed all the Memcheck-specific calls to add_redirect_sym_to_sym()
  from VG_(setup_redirect_table)(), instead using VG_REPLACE_FUNCTION in
  mac_replace_strmem.c, just like vg_replace_malloc.c.  This is the
  right way to do it.  This required moving some of
  coregrind/pub_core_redir.h into the newly added
  include/pub_tool_redir.h.  add_redirect_sym_to_sym() is no longer
  used...

- Now only handing off symbols to m_redir for inspection/decoding after
  they have been deemed to be interesting by the symbol table reader.

- Factored out commonality between the add_redirect_*_to_* functions
  into add_redirect_X_to_X().

- Added "Zh", meaning '-' ('h' for "hyphen"), to the Z-decoding scheme,
  to handle sonames like "ld-linux-x86-64.so.2".

- Added a FAQ explaining the newly found issue of glibc aliasing 
  sometimes causing the wrong function name to appear in stack traces.

- Added a new regtest strchr.c.  It's possible this will fail on some
  platforms.  If so, an alternative output file can be provided, but
  I'd like to see it in practice first.

It's possible that there will be minor breakage on other
platforms/setups, but it should be minimal and easily fixable.

Plus some ordinary cleanups in symtab.c:

- Removed the old optimisation from VG_(addStr)() whereby it kept track
  of the previous 5 added strings and avoiding duplicating any of them.
  Turns out it was barely having any effect any more, and just
  complicated things.

- Made read_symtab() more readable, by introducing a new variable
  "sym_name" and introducing the auxiliary function
  is_symbol_interesting().

- renamed the module variable 'segInfo' as 'segInfo_list' to make it
  more obvious it's a module variable and not just some ordinary local
  variable (which was an easy mistake to make).

-----------------------------------------------------------------------------

XXX: [later] remove add_redirect_sym_to_sym, and everything related to
     X_to_sym?  (ie. only need X_to_addr)

XXX: better function names?  all those 'resolved' names...
     [later...]




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3916
2005-06-16 03:56:58 +00:00
Nicholas Nethercote
1d0e2e6e41 Created m_machine, for various machine-related things.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3903
2005-06-13 04:21:38 +00:00
Nicholas Nethercote
b842a8f27b Moved the last two functions out of linux/core_os.c, and removed it.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3900
2005-06-12 17:26:29 +00:00
Nicholas Nethercote
e3abdc62d5 Finished the modularisation of vg_mylibc.c, which meant it could be removed.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3894
2005-06-12 02:43:17 +00:00
Nicholas Nethercote
82860347b1 Modularised the libc low-level memory management stuff (mmap, etc).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3891
2005-06-11 15:51:30 +00:00
Nicholas Nethercote
0e57f4956f Modularised the thread/pthread modelling stuff.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3877
2005-06-11 01:07:00 +00:00
Nicholas Nethercote
17bb449c9e Modularised signal libc stuff into m_libcsignal.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3870
2005-06-10 22:08:14 +00:00
Nicholas Nethercote
face101a47 Modularised file and socket libc stuff in m_libcfile.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3844
2005-06-04 20:03:55 +00:00
Nicholas Nethercote
eb2d0a7d06 Modularised assertions and panics in m_libcassert.
As part of this, killed the VG_STRINGIFY macro, which was used to expand
out names like "VG_(foo)" and "vgPlain_foo" in assertion failure
messages.  This is good since we actually want the "VG_(foo)" form used
in these messages.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3842
2005-06-04 19:16:06 +00:00
Nicholas Nethercote
dbc8c6d99c Modularise printing functions in m_libcprint.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3840
2005-06-03 03:08:39 +00:00
Nicholas Nethercote
09980587a9 Started modularising vg_mylibc. Put all the standalone stuff -- ie. not
relying on any other modules -- in m_libcbase.

Also converted the 'size' parameters to functions like VG_(memcpy) and
VG_(strncpy) from Int to SizeT, as they should be.

Also removed VG_(atoll16) and VG_(toupper), which weren't being used.

Also made VG_(atoll36) less flexible -- it now only does base-36 numbers
instead of any base in the range 2..36, since base-36 is the only one we
need.  As part of that, I fixed a horrible bug in it which caused it to
return incorrect answers for any number containing the digits 'A'..'I'!
(Eg. for "A; it would return 17 instead of 10!)

Had to disable the assertions in VG_(string_match), since this module can't
see vg_assert, which wasn't ideal but also isn't a disaster.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3838
2005-06-02 03:39:33 +00:00
Nicholas Nethercote
5bdf595e70 Modularised the profiling stuff as m_profile.c. It's much more
sensible now -- no vg_dummy_profile.c, no silly #including of
vg_profile.c from tools.  

Unfortunately, it still doesn't work, due to bad interactions
with signal handling that I don't understand.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3833
2005-06-01 03:09:59 +00:00
Nicholas Nethercote
d01259a1d0 Modularised all the debug info stuff as m_debuginfo/. It's a mess
and needs further cleaning up, but it's a start.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3821
2005-05-31 02:38:09 +00:00
Nicholas Nethercote
02df24345a Modularised vg_signals.c as m_signals.c.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3820
2005-05-31 01:00:08 +00:00
Nicholas Nethercote
d13bacd9cd Modularised vg_main.c as m_main.c. Moved some stuff out of it to reduce the
number of files that depend on it, but there are still some which should be
removed in the future.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3819
2005-05-31 00:23:43 +00:00
Nicholas Nethercote
27e51698af Modularised m_scheduler.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3817
2005-05-30 23:20:51 +00:00
Nicholas Nethercote
5198d87cbe Renamed the $PLATFORM/vki_unistd.h files as vki_unistd-$PLATFORM.h, to
match the headers files in include/.

As a consequence, coregrind/$PLATFORM directories are no longer needed,
hooray!





git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3814
2005-05-29 23:30:48 +00:00
Nicholas Nethercote
e6f34bdb71 Modularised m_redir. As a side-effect, managed to remove
$PLATFORM/core_platform.c and $PLATFORM/libplatform.a, hooray.





git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3808
2005-05-29 17:01:48 +00:00
Tom Hughes
ccae44d317 Get rid of all the duplicated settings of AM_CFLAGS in the makefiles
for the various core modules and use a single global setting so that
the flags are actually consistent everywhere.

Also get rid of most the USE_PIE blocks in the makefiles by having
configure pass expand a variable in the new global AM_CFLAGS to one
of "-fpie" or "" depending on whether PIE is in use.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3760
2005-05-17 16:11:40 +00:00
Nicholas Nethercote
937a49ea05 Added module m_options for holding all the command-line option stuff.
Perhaps parts of process_cmd_line_option() should go in here, but I've
not done that for now.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3751
2005-05-16 23:31:24 +00:00
Nicholas Nethercote
dee67271fb Whoops, a little premature in removing core_asm.h -- still need it
because it #includes tool_asm.h.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3712
2005-05-14 21:51:49 +00:00
Nicholas Nethercote
8e0e03d480 Created pub_core_transtab_asm.h, killing core_asm.h in the process.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3711
2005-05-14 21:44:20 +00:00
Nicholas Nethercote
357303aebf Modularised vg_hashtable.c as m_hashtable.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3710
2005-05-14 21:28:43 +00:00
Nicholas Nethercote
648e4fade2 Modularised vg_transtab.c as m_transtab.
Renamed add_to_trans_tab() as add_to_transtab() for consistency
with the other names.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3703
2005-05-13 23:40:55 +00:00
Nicholas Nethercote
c3a55acd80 Forgot to add pub_core_translate.h to the Makefile.am.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3701
2005-05-13 23:14:40 +00:00
Nicholas Nethercote
a08637efe9 Modularised vg_translate.c as m_translate.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3700
2005-05-13 23:11:40 +00:00
Nicholas Nethercote
660675fc55 Unbreak build by moving creating pub_core_dispatch_asm.h for holding
asm-only constants.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3677
2005-05-12 13:15:38 +00:00
Nicholas Nethercote
8e2169edd9 Modularised the dispatchers in m_dispatch.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3672
2005-05-12 05:13:04 +00:00
Nicholas Nethercote
4cb3e8a7e4 Modularised vg_skiplist.c as m_skiplist.c.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3671
2005-05-12 04:37:27 +00:00