Skip to content

Commit 9ee6db2

Browse files
committed
Adding debug printer version of macros and fixing segfault
1 parent b3c05c5 commit 9ee6db2

17 files changed

+479
-405
lines changed

CMakeLists.txt

+30-28
Original file line numberDiff line numberDiff line change
@@ -30,38 +30,40 @@ ELSEIF(MSVC)
3030
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
3131

3232
###############################################################################
33-
############################ DEBUG MACROS #####################################
34-
#ADD_DEFINITIONS(-DBUILD_NEW_MACRO_LIST)
35-
#ADD_DEFINITIONS(-DDEBUG_MACRO_USE_CASE)
36-
#ADD_DEFINITIONS(-DDEBUG_PARSER)
37-
#ADD_DEFINITIONS(-DDEBUG_CONDITIONALS)
38-
#ADD_DEFINITIONS(-DDEBUG_CONDITIONALS1)
39-
#ADD_DEFINITIONS(-DDEBUG_CONDITIONALS2)
40-
#ADD_DEFINITIONS(-DDEBUG_DEMACROFIER)
41-
#ADD_DEFINITIONS(-DDEBUG_RLPARSER)
42-
#ADD_DEFINITIONS(-DDEBUG_RLPARSER2)
43-
#ADD_DEFINITIONS(-DDEBUG_TREE)
44-
#ADD_DEFINITIONS(-DBUILD_NEW_MACRO_LIST)
45-
#ADD_DEFINITIONS(-DDEBUG_MACRO_DEPENDENCY)
46-
#ADD_DEFINITIONS(-DDEBUG_MACRO_DEPENDENCY2)
47-
#ADD_DEFINITIONS(-DENABLE_WARNING)
48-
#ADD_DEFINITIONS(-DDEBUG_MACRO_CLASS)
49-
#ADD_DEFINITIONS(-DDEBUG_MACRO_CLASS2)
50-
#ADD_DEFINITIONS(-DDEBUG_MACRO_USE_CASE)
51-
#ADD_DEFINITIONS(-DDEBUG_CLEANUP_CODE)
52-
#ADD_DEFINITIONS(-DDEBUG_VALIDATOR)
53-
#ADD_DEFINITIONS(-DDEBUG_SUGGESTION)
54-
#ADD_DEFINITIONS(-DGMACROS="${HEADER_OUTPUT_PATH}/gMacros.dat")
55-
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -std=c++0x -D BUILD_NEW_MACRO_LIST")
56-
###############################################################################
57-
33+
#INCLUDE OTHER SUBDIRECTORIES HERE WHICH ARE FINE WITH -fno-rtti.
34+
ADD_SUBDIRECTORY(general_utilities)
5835

36+
###############################################################################
37+
INCLUDE_DIRECTORIES("${UTILITIES_PREFIX_PATH}/general_utilities")
38+
INCLUDE_DIRECTORIES("${CFE_PREFIX_PATH}/include")
5939

6040
############## INCLUDE DIRECTORIES RELATED TO CLANG ###########################
61-
6241
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}")
6342
INCLUDE_DIRECTORIES("${CMAKE_SOURCE_DIR}/ClangInterface")
6443

44+
############################ DEBUG MACROS #####################################
45+
#ADD_DEFINITIONS(-DBUILD_NEW_MACRO_LIST)
46+
ADD_DEFINITIONS(-DDEBUG_MACRO_USE_CASE_PRINT)
47+
ADD_DEFINITIONS(-DDEBUG_PARSER_PRINT)
48+
ADD_DEFINITIONS(-DDEBUG_CONDITIONALS_PRINT)
49+
ADD_DEFINITIONS(-DDEBUG_CONDITIONALS1_PRINT)
50+
ADD_DEFINITIONS(-DDEBUG_CONDITIONALS2_PRINT)
51+
ADD_DEFINITIONS(-DDEBUG_DEMACROFIER_PRINT)
52+
ADD_DEFINITIONS(-DDEBUG_RLPARSER_PRINT)
53+
ADD_DEFINITIONS(-DDEBUG_RLPARSER2_PRINT)
54+
ADD_DEFINITIONS(-DDEBUG_TREE_PRINT)
55+
ADD_DEFINITIONS(-DBUILD_NEW_MACRO_LIST_PRINT)
56+
ADD_DEFINITIONS(-DDEBUG_MACRO_DEPENDENCY_PRINT)
57+
ADD_DEFINITIONS(-DDEBUG_MACRO_DEPENDENCY2_PRINT)
58+
ADD_DEFINITIONS(-DENABLE_WARNING_PRINT)
59+
ADD_DEFINITIONS(-DDEBUG_MACRO_CLASS_PRINT)
60+
ADD_DEFINITIONS(-DDEBUG_MACRO_CLASS2_PRINT)
61+
ADD_DEFINITIONS(-DDEBUG_MACRO_USE_CASE_PRINT)
62+
ADD_DEFINITIONS(-DDEBUG_CLEANUP_CODE_PRINT)
63+
ADD_DEFINITIONS(-DDEBUG_VALIDATOR_PRINT)
64+
ADD_DEFINITIONS(-DDEBUG_SUGGESTION_PRINT)
65+
#ADD_DEFINITIONS(-DGMACROS="${HEADER_OUTPUT_PATH}/gMacros.dat")
66+
6567
############## DEFINITIONS RELATED TO CLANG ###################################
6668
ADD_DEFINITIONS(-D__STDC_CONSTANT_MACROS)
6769
ADD_DEFINITIONS(-D__STDC_FORMAT_MACROS)
@@ -107,9 +109,9 @@ FILE(COPY "gMacros.dat" DESTINATION ${HEADER_OUTPUT_PATH})
107109
#ADD_LIBRARY()
108110
#FIND_LIBRARY()
109111
TARGET_LINK_LIBRARIES(cpp2cxx-suggest cpp2cxx-core boost_system boost_wave
110-
boost_program_options ASTConsumer clang
112+
boost_program_options ASTConsumer cpp2cxx-debug clang
111113
)
112114

113115
TARGET_LINK_LIBRARIES(cpp2cxx-finalize cpp2cxx-core boost_system boost_wave
114-
boost_program_options ASTConsumer clang
116+
boost_program_options ASTConsumer cpp2cxx-debug clang
115117
)

ClangInterface/TrackMacro.cpp

+36-43
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "TrackMacro.hpp"
2+
#include "debug.h"
23

34
std::ostream& operator<<(std::ostream& os, const CollectedMacroInfo& cmi)
45
{
@@ -15,22 +16,22 @@ std::ostream& operator<<(std::ostream& os, const CollectedMacroInfo& cmi)
1516
return os;
1617
}
1718

18-
//#define CLANG_AST_DEBUG
19-
2019
namespace clang {
2120

2221
void TrackMacro::MacroExpands(const Token &MacroNameTok, const MacroInfo* MI,
2322
SourceRange Range)
2423
{
25-
//std::cout<<"Macro "<<tok::getTokenName(MacroNameTok.getKind())<< " has expanded here\n\t";
24+
CLANG_AST_DEBUG(dbgs() << "Macro "
25+
<< tok::getTokenName(MacroNameTok.getKind())
26+
<< " has expanded here\n\t";);
27+
2628
/// Testing if the macro is defined in the same file
2729
/// so that global macros can be skipped
2830
if(sm->isInMainFile(MI->getDefinitionLoc())) {
2931
PresumedLoc presumed = sm->getPresumedLoc(Range.getBegin());
30-
#ifdef CLANG_AST_DEBUG
31-
std::cout<<"\nMacro "<<MacroNameTok.getIdentifierInfo()->getNameStart()
32-
<<" has expanded at line# "<<presumed.getLine();
33-
#endif
32+
CLANG_AST_DEBUG(dbgs() << "\nMacro "
33+
<< MacroNameTok.getIdentifierInfo()->getNameStart()
34+
<< " has expanded at line# " << presumed.getLine(););
3435

3536
//NOTE PresumedLoc can be modified by the LINE directive
3637

@@ -41,13 +42,10 @@ void TrackMacro::MacroExpands(const Token &MacroNameTok, const MacroInfo* MI,
4142
// i think it is not useful anymore
4243
m_istat->insert(presumed.getLine());
4344

44-
#ifdef CLANG_AST_DEBUG
45-
std::cout<<"arguments are:";
46-
auto arg_it = MI->arg_begin();
47-
for(; arg_it != MI->arg_end(); ++arg_it){
48-
std::cout<<(*arg_it)->getNameStart()<<"\t";
49-
}
50-
#endif
45+
CLANG_AST_DEBUG(dbgs() << "arguments are:";
46+
for(auto arg_it = MI->arg_begin();
47+
arg_it != MI->arg_end(); ++arg_it)
48+
dbgs() << (*arg_it)->getNameStart() << "\t";);
5149

5250
//if(MacroIsLocal(Range.getBegin())) {
5351
if(MI->isFunctionLike()){
@@ -72,12 +70,10 @@ void TrackMacro::MacroDefined(const Token &MacroNameTok, const MacroInfo* MI)
7270
if(sm->isInMainFile(MI->getDefinitionLoc())) {
7371
PresumedLoc presumed = sm->getPresumedLoc(MI->getDefinitionLoc());
7472

75-
#ifdef CLANG_AST_DEBUG
76-
std::cout<<"Macro "
77-
<<MacroNameTok.getIdentifierInfo()->getNameStart()
78-
<<" is defined at line number: "
79-
<<presumed.getLine()<<"\n";
80-
#endif
73+
CLANG_AST_DEBUG(dbgs() << "Macro "
74+
<< MacroNameTok.getIdentifierInfo()->getNameStart()
75+
<< " is defined at line number: "
76+
<< presumed.getLine() << "\n";);
8177

8278
cmi.defined_line = presumed.getLine();
8379
//std::cout<<"Macro "<<tok::getTokenName(MacroNameTok.getKind())<<" is defined here\n\t";
@@ -176,12 +172,11 @@ void TrackMacro::VerifyMacroScopeFast(std::map<std::string, ParsedDeclInfo>const
176172
const int start = 0;
177173
const int end = 1;
178174
/// collect all the start line numbers of function, and sort them
179-
for( ; fi_iter != FunctionInfo.end(); ++fi_iter)
180-
{
181-
#ifdef CLANG_AST_DEBUG
182-
std::cout<<"Function: "<<fi_iter->first<<"definition range is: ("
183-
<<(fi_iter->second).start_line<<","<<(fi_iter->second).end_line<<")\n";
184-
#endif
175+
for( ; fi_iter != FunctionInfo.end(); ++fi_iter) {
176+
CLANG_AST_DEBUG(dbgs() << "Function: " << fi_iter->first
177+
<< "definition range is: ("
178+
<<(fi_iter->second).start_line << ","
179+
<< (fi_iter->second).end_line << ")\n";);
185180
FunctionDefinitionRange[(fi_iter->second).start_line] = start;
186181
FunctionDefinitionRange[(fi_iter->second).end_line] = end;
187182
}
@@ -196,35 +191,33 @@ void TrackMacro::VerifyMacroScopeFast(std::map<std::string, ParsedDeclInfo>const
196191
// no need to check if fdr_iter is FunctionDefinitionRange.end() or not
197192
// because of an extra entry
198193

199-
#ifdef CLANG_AST_DEBUG
200-
std::cout<<"For macro: "<<ms->first
201-
<<"Defined line is: "<<(ms->second).defined_line
202-
<<", the range returned is: ("
203-
<< fdr_iter->first<<","<<fdr_iter->second<<")\n";
204-
#endif
194+
CLANG_AST_DEBUG(dbgs() << "For macro: " << ms->first
195+
<< "Defined line is: " << (ms->second).defined_line
196+
<< ", the range returned is: ("
197+
<< fdr_iter->first << ","
198+
<< fdr_iter->second << ")\n";);
199+
205200
if(fdr_iter->second == end) {
206201
(ms->second).s_cat.inside_function = true;
207-
#ifdef CLANG_AST_DEBUG
208-
std::cout<<"Macro: "<<ms->first<<" is inside function\n";
209-
#endif
202+
CLANG_AST_DEBUG(dbgs() << "Macro: " << ms->first
203+
<< " is inside function\n";);
210204
}
211205
}
212206
}
213207

214-
void TrackMacro::VerifyMacroScope(std::map<std::string, ParsedDeclInfo>const & FunctionInfo)
208+
void TrackMacro::
209+
VerifyMacroScope(std::map<std::string, ParsedDeclInfo>const & FunctionInfo)
215210
{
216211
std::map<std::string, ParsedDeclInfo>::const_iterator fi = FunctionInfo.begin();
217212
std::map<std::string, CollectedMacroInfo>::iterator ms;
218-
for( ; fi != FunctionInfo.end(); ++fi)
219-
{
213+
for( ; fi != FunctionInfo.end(); ++fi) {
220214
ms = ASTMacroStat.begin();
221-
for( ; ms != ASTMacroStat.end(); ++ms){
215+
for( ; ms != ASTMacroStat.end(); ++ms) {
222216
if((ms->second).defined_line > (fi->second).start_line
223-
&& (ms->second).defined_line < (fi->second).end_line){
217+
&& (ms->second).defined_line < (fi->second).end_line) {
224218
(ms->second).s_cat.inside_function = true;
225-
#ifdef CLANG_AST_DEBUG
226-
std::cout<<"Macro: "<<ms->first<<" is inside function "<<fi->first<<"\n";
227-
#endif
219+
CLANG_AST_DEBUG(dbgs() << "Macro: " << ms->first
220+
<< " is inside function " << fi->first << "\n";);
228221
}
229222
}
230223
}

0 commit comments

Comments
 (0)