blob: 1bb27baabd44847512a5de5ff7617eda1e4c38f4 [file] [log] [blame]
njnf39e9a32005-06-12 02:43:17 +00001
2/*--------------------------------------------------------------------*/
3/*--- Process-related libc stuff. pub_core_libcproc.h ---*/
4/*--------------------------------------------------------------------*/
5
6/*
7 This file is part of Valgrind, a dynamic binary instrumentation
8 framework.
9
sewardjb3a1e4b2015-08-21 11:32:26 +000010 Copyright (C) 2000-2015 Julian Seward
njnf39e9a32005-06-12 02:43:17 +000011 jseward@acm.org
12
13 This program is free software; you can redistribute it and/or
14 modify it under the terms of the GNU General Public License as
15 published by the Free Software Foundation; either version 2 of the
16 License, or (at your option) any later version.
17
18 This program is distributed in the hope that it will be useful, but
19 WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21 General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software
25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26 02111-1307, USA.
27
28 The GNU General Public License is contained in the file COPYING.
29*/
30
31#ifndef __PUB_CORE_LIBCPROC_H
32#define __PUB_CORE_LIBCPROC_H
33
34//--------------------------------------------------------------------
35// PURPOSE: This module contains libc code related to the process.
36// It's a bit of a mixed bag.
37//--------------------------------------------------------------------
38
sewardj45f4e7c2005-09-27 19:20:21 +000039#include "config.h" // Crucial: ensure we get ENABLE_INNER
njnf39e9a32005-06-12 02:43:17 +000040#include "pub_tool_libcproc.h"
41
njned8b05d2005-06-12 20:51:09 +000042/* The directory we look for all our auxillary files in. Useful for
sewardj45f4e7c2005-09-27 19:20:21 +000043 running Valgrind out of a build tree without having to do "make
44 install". Inner valgrinds require a different lib variable, else
45 they end up picking up .so's etc intended for the outer
46 valgrind. */
47#ifdef ENABLE_INNER
48# define VALGRIND_LIB "VALGRIND_LIB_INNER"
49#else
50# define VALGRIND_LIB "VALGRIND_LIB"
51#endif
njnf39e9a32005-06-12 02:43:17 +000052
53/* Additional command-line arguments; they are overridden by actual
54 command-line option. Each argument is separated by spaces. There
55 is no quoting mechanism. */
sewardj45f4e7c2005-09-27 19:20:21 +000056#define VALGRIND_OPTS "VALGRIND_OPTS"
njnf39e9a32005-06-12 02:43:17 +000057
sewardj45f4e7c2005-09-27 19:20:21 +000058/* The full name of Valgrind's stage1 (launcher) executable. This is
59 set by stage1 and read by stage2, and is used for recursive
60 invocations of Valgrind on child processes.
61
62 For self-hosting, the inner and outer Valgrinds must use different
63 names to avoid collisions. */
64#ifdef ENABLE_INNER
65# define VALGRIND_LAUNCHER "VALGRIND_LAUNCHER_INNER"
66#else
67# define VALGRIND_LAUNCHER "VALGRIND_LAUNCHER"
68#endif
njnf39e9a32005-06-12 02:43:17 +000069
njnf39e9a32005-06-12 02:43:17 +000070
71// Environment manipulations
florian19f91bb2012-11-10 22:29:54 +000072extern HChar **VG_(env_setenv) ( HChar ***envp, const HChar* varname,
73 const HChar *val );
sewardj8eb8bab2015-07-21 14:44:28 +000074extern void VG_(env_unsetenv) ( HChar **env, const HChar *varname,
75 void (*free_fn) ( void *) );
76extern void VG_(env_remove_valgrind_env_stuff) ( HChar** env,
77 Bool ro_strings,
78 void (*free_fn) (void *) );
florian19f91bb2012-11-10 22:29:54 +000079extern HChar **VG_(env_clone) ( HChar **env_clone );
njnf39e9a32005-06-12 02:43:17 +000080
81// misc
sewardj45f4e7c2005-09-27 19:20:21 +000082extern Int VG_(getgroups)( Int size, UInt* list );
83extern Int VG_(ptrace)( Int request, Int pid, void *addr, void *data );
njnf39e9a32005-06-12 02:43:17 +000084
85// atfork
njne9ba34a2008-10-13 04:19:15 +000086extern void VG_(do_atfork_pre) ( ThreadId tid );
87extern void VG_(do_atfork_parent) ( ThreadId tid );
88extern void VG_(do_atfork_child) ( ThreadId tid );
njnf39e9a32005-06-12 02:43:17 +000089
sewardj291849f2012-04-20 23:58:55 +000090// icache invalidation
91extern void VG_(invalidate_icache) ( void *ptr, SizeT nbytes );
92
sewardjc76d0e52014-05-03 21:22:55 +000093// dcache flushing
94extern void VG_(flush_dcache) ( void *ptr, SizeT nbytes );
sewardj291849f2012-04-20 23:58:55 +000095
njnf39e9a32005-06-12 02:43:17 +000096#endif // __PUB_CORE_LIBCPROC_H
97
98/*--------------------------------------------------------------------*/
99/*--- end ---*/
100/*--------------------------------------------------------------------*/