Warning cleanup. Applying RH's Dyninst patches to 8.1, this one originally by Willia...
[dyninst.git] / dataflowAPI / src / debug_dataflow.C
1 /*
2  * See the dyninst/COPYRIGHT file for copyright information.
3  * 
4  * We provide the Paradyn Tools (below described as "Paradyn")
5  * on an AS IS basis, and do not warrant its validity or performance.
6  * We reserve the right to update, modify, or discontinue this
7  * software at any time.  We shall have no obligation to supply such
8  * updates or modifications or any other form of support to you.
9  * 
10  * By your use of Paradyn, you understand and agree that we (or any
11  * other person or entity with proprietary rights in Paradyn) are
12  * under no obligation to provide either maintenance services,
13  * update services, notices of latent defects, or correction of
14  * defects for Paradyn.
15  * 
16  * This library is free software; you can redistribute it and/or
17  * modify it under the terms of the GNU Lesser General Public
18  * License as published by the Free Software Foundation; either
19  * version 2.1 of the License, or (at your option) any later version.
20  * 
21  * This library is distributed in the hope that it will be useful,
22  * but WITHOUT ANY WARRANTY; without even the implied warranty of
23  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24  * Lesser General Public License for more details.
25  * 
26  * You should have received a copy of the GNU Lesser General Public
27  * License along with this library; if not, write to the Free Software
28  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
29  */
30
31 // $Id: debug.C,v 1.6 2008/02/23 02:09:05 jaw Exp $
32
33 #include <stdio.h>
34 #include <stdarg.h>
35 #include <assert.h>
36 #include <string>
37 #include "debug_dataflow.h"
38 #include <stdlib.h>
39
40 #include <iostream>
41
42 // Internal debugging
43
44 int df_debug_slicing= 0;
45 int df_debug_stackanalysis = 0;
46 int df_debug_convert = 0;
47 int df_debug_expand = 0;
48 int df_debug_liveness = 0;
49
50 bool df_init_debug() {
51
52   static bool init = false;
53   if (init) return true;
54   init = true;
55
56 #if defined(_MSC_VER)
57 #pragma warning(push)
58 #pragma warning(disable:4996) 
59 #endif
60
61   if ((getenv("DATAFLOW_DEBUG_STACKANALYSIS"))) {
62     fprintf(stderr, "Enabling DataflowAPI stack analysis debugging\n");
63     df_debug_stackanalysis = 1;
64   }
65
66   if ((getenv("DATAFLOW_DEBUG_SLICING"))) {
67     fprintf(stderr, "Enabling DataflowAPI slicing debugging\n");
68     df_debug_slicing = 1;
69   }
70
71   if ((getenv("DATAFLOW_DEBUG_CONVERT"))) {
72     fprintf(stderr, "Enabling DataflowAPI->ROSE conversion debugging\n");
73     df_debug_convert = 1;
74   }
75
76   if ((getenv("DATAFLOW_DEBUG_EXPAND"))) {
77     fprintf(stderr, "Enabling DataflowAPI symbolic expansion debugging\n");
78     df_debug_expand = 1;
79   }
80
81   if ((getenv("DATAFLOW_DEBUG_LIVENESS"))) {
82     fprintf(stderr, "Enabling DataflowAPI liveness debugging\n");
83     df_debug_liveness = 1;
84   }
85
86 #if defined(_MSC_VER)
87 #pragma warning(pop)    
88 #endif
89
90   return true;
91 }
92
93 bool slicing_debug_on() {
94     return df_debug_slicing != 0;
95 }
96
97 int stackanalysis_printf_int(const char *format, ...)
98 {
99   if (!df_debug_stackanalysis) return 0;
100   if (NULL == format) return -1;
101
102   va_list va;
103   va_start(va, format);
104   int ret = vfprintf(stderr, format, va);
105   va_end(va);
106
107   return ret;
108 }
109
110 int slicing_printf_int(const char *format, ...)
111 {
112   if (!df_debug_slicing) return 0;
113   if (NULL == format) return -1;
114
115   va_list va;
116   va_start(va, format);
117   int ret = vfprintf(stderr, format, va);
118   va_end(va);
119
120   return ret;
121 }
122
123 int convert_printf_int(const char *format, ...)
124 {
125   if (!df_debug_convert) return 0;
126   if (NULL == format) return -1;
127
128   va_list va;
129   va_start(va, format);
130   int ret = vfprintf(stderr, format, va);
131   va_end(va);
132
133   return ret;
134 }
135
136 int expand_printf_int(const char *format, ...)
137 {
138   if (!df_debug_expand) return 0;
139   if (NULL == format) return -1;
140
141   va_list va;
142   va_start(va, format);
143   int ret = vfprintf(stderr, format, va);
144   va_end(va);
145
146   return ret;
147 }
148
149 int liveness_printf_int(const char *format, ...)
150 {
151   if (!df_debug_liveness) return 0;
152   if (NULL == format) return -1;
153
154   va_list va;
155   va_start(va, format);
156   int ret = vfprintf(stderr, format, va);
157   va_end(va);
158
159   return ret;
160 }