/* Copyright (C) 2021 Free Software Foundation, Inc. Contributed by Oracle. This file is part of GNU Binutils. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ /* Lineage events for process fork, exec, etc. */ #ifndef DESCENDANTS_H #define DESCENDANTS_H #include <dlfcn.h> #include <errno.h> #include <fcntl.h> #include <alloca.h> #include <assert.h> #include "gp-defs.h" #include "gp-experiment.h" #include "collector.h" #include "memmgr.h" #include "cc_libcollector.h" #include "tsd.h" /* configuration, not changed after init. */ typedef enum { LM_DORMANT = -2, /* env vars preserved, not recording */ LM_CLOSED = -1, /* env vars cleared, not recording */ LM_TRACK_LINEAGE = 1, /* env vars preserved, recording */ } line_mode_t; extern line_mode_t line_mode; extern int user_follow_mode; extern int java_mode; extern int dbg_current_mode; /* for debug only */ extern unsigned line_key; extern char **sp_env_backup; #define INIT_REENTRANCE(x) ((x) = __collector_tsd_get_by_key (line_key)) #define CHCK_REENTRANCE(x) (((INIT_REENTRANCE(x)) == NULL) || (*(x) != 0)) #define PUSH_REENTRANCE(x) ((*(x))++) #define POP_REENTRANCE(x) ((*(x))--) /* environment variables that must be forwarded to descendents */ #define SP_COLLECTOR_PARAMS "SP_COLLECTOR_PARAMS" #define SP_COLLECTOR_EXPNAME "SP_COLLECTOR_EXPNAME" #define SP_COLLECTOR_FOLLOW_SPEC "SP_COLLECTOR_FOLLOW_SPEC" #define SP_COLLECTOR_FOUNDER "SP_COLLECTOR_FOUNDER" #define SP_PRELOAD_STRINGS "SP_COLLECTOR_PRELOAD" #define LD_PRELOAD_STRINGS "LD_PRELOAD" #define SP_LIBPATH_STRINGS "SP_COLLECTOR_LIBRARY_PATH" #define LD_LIBPATH_STRINGS "LD_LIBRARY_PATH" #define JAVA_TOOL_OPTIONS "JAVA_TOOL_OPTIONS" #define COLLECTOR_JVMTI_OPTION "-agentlib:gp-collector" extern int __collector_linetrace_shutdown_hwcs_6830763_XXXX; extern void __collector_env_unset (char *envp[]); extern void __collector_env_save_preloads (); extern char ** __collector_env_backup (); extern void __collector_env_backup_free (); extern void __collector_env_update (char *envp[]); extern void __collector_env_print (char *label); extern void __collector_env_printall (char *label, char *envp[]); extern char ** __collector_env_allocate (char *const old_env[], int allocate_env); #endif |