aboutsummaryrefslogtreecommitdiff
path: root/gprofng/src/debug.h
diff options
context:
space:
mode:
Diffstat (limited to 'gprofng/src/debug.h')
-rw-r--r--gprofng/src/debug.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/gprofng/src/debug.h b/gprofng/src/debug.h
new file mode 100644
index 0000000..9761f2a
--- /dev/null
+++ b/gprofng/src/debug.h
@@ -0,0 +1,89 @@
+/* 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. */
+
+#ifndef _PERFAN_DEBUG_H
+#define _PERFAN_DEBUG_H
+
+extern unsigned int mpmt_debug_opt;
+// To set mpmt_debug_opt use:
+// MPMT_DEBUG=4095 ; export MPMT_DEBUG
+#define DEBUG_FLAG (mpmt_debug_opt & 1)
+#define DUMP_ELF_SEC (mpmt_debug_opt & 2)
+#define DUMP_ELF_SYM (mpmt_debug_opt & 4)
+#define DUMP_RELA_SEC (mpmt_debug_opt & 8)
+#define DUMP_ELF_RELOC DUMP_RELA_SEC
+#define DUMP_DWARFLIB (mpmt_debug_opt & 16)
+#define DUMP_DWR_LINE_REGS (mpmt_debug_opt & 32)
+#define DUMP_USER_LABELS (mpmt_debug_opt & 64)
+#define DEBUG_MAPS (mpmt_debug_opt & 128)
+#define DEBUG_DBE_FILE (mpmt_debug_opt & 256)
+#define DEBUG_DATA_WINDOW (mpmt_debug_opt & 512)
+#define DEBUG_STABS (mpmt_debug_opt & 1024)
+#define DEBUG_DATAOBJ (mpmt_debug_opt & 2048)
+#define DEBUG_LOADOBJ (mpmt_debug_opt & 4096)
+#define DEBUG_SAXPARSER (mpmt_debug_opt & 8192)
+#define DUMP_JAVA_CLASS (mpmt_debug_opt & 16384)
+#define DEBUG_COMPARISON (mpmt_debug_opt & 32768)
+#define DEBUG_READ_AR (mpmt_debug_opt & 65536)
+#define DEBUG_ERR_MSG (mpmt_debug_opt & 131072)
+#define DUMP_JCLASS_READER (mpmt_debug_opt & 262144)
+#define DEBUG_DBE (mpmt_debug_opt & 524288)
+#define DEBUG_ARCHIVE (mpmt_debug_opt & 1048576)
+#define DEBUG_IO (mpmt_debug_opt & 2097152)
+#define DUMP_DYN_FILE (mpmt_debug_opt & 4194304)
+#define DUMP_JAR_FILE (mpmt_debug_opt & 8388608)
+#define DUMP_CALL_STACK (mpmt_debug_opt & 16777216)
+#define DEBUG_THREADS (mpmt_debug_opt & 33554432)
+#define DBE_USE_MMAP (mpmt_debug_opt & 67108864)
+
+#ifdef DEBUG
+
+// Turn on assertion checking whenever debugging
+#define ASSERTS 1
+
+// debug macro - provides a clean way of inserting debugging code without
+// having the distracting #ifdef DEBUG ... #else ... #endif directives
+// interspersed throughout the code. It also provides an easy way
+// to turn them off with no loss of efficiency. It is not limited
+// to printf() commands; any code may be inserted. Variables
+// needed only by the debugging code can be declared inside a
+// debug { ... } statement.
+//
+// usage:
+// debug <statement>
+// or, debug { <statements> }
+// If DEBUG is on, map "DEBUG_CODE" to nothing!
+// This results in the <statement> being executed normally
+
+#define DEBUG_CODE
+
+#else
+// If DEBUG is off, map "DEBUG_CODE" to something harmless.
+// The clever hack used here is to use a conditional with a
+// constant condition, which is optimized out by the compiler,
+// so that <statement> is not present in the compiled code!
+
+#define DEBUG_CODE if (0)
+
+#endif /*DEBUG*/
+
+#define Dprintf(x, ...) DEBUG_CODE if(x) fprintf(stderr, __VA_ARGS__)
+
+#endif /* ! _DEBUG_H */