| /* Copyright (C) 2021-2024 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 */ |