HPCToolkit
Struct.cpp File Reference
#include <sys/types.h>
#include <sys/resource.h>
#include <sys/time.h>
#include <stdlib.h>
#include <string.h>
#include <include/uint.h>
#include <algorithm>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <mutex>
#include <ostream>
#include <sstream>
#include <lib/binutils/BinUtils.hpp>
#include <lib/binutils/VMAInterval.hpp>
#include <lib/support/FileNameMap.hpp>
#include <lib/support/FileUtil.hpp>
#include <lib/support/RealPathMgr.hpp>
#include <lib/support/StringTable.hpp>
#include <CFG.h>
#include <CodeObject.h>
#include <CodeSource.h>
#include <Function.h>
#include <Instruction.h>
#include <Module.h>
#include <Region.h>
#include <Symtab.h>
#include <include/hpctoolkit-config.h>
#include "ElfHelper.hpp"
#include "InputFile.hpp"
#include "Struct.hpp"
#include "Struct-Inline.hpp"
#include "Struct-Output.hpp"
#include "Struct-Skel.hpp"
Include dependency graph for Struct.cpp:

Go to the source code of this file.

Classes

class  BAnal::Struct::HeaderInfo
 
class  BAnal::Struct::WorkEnv
 
class  BAnal::Struct::WorkItem
 
class  BAnal::Struct::LineMapCache
 

Namespaces

 BAnal
 
 BAnal::Struct
 

Macros

#define SYMTAB_ARCH_CUDA(symtab)   0
 
#define DEBUG_CFG_SOURCE   0
 
#define DEBUG_MAKE_SKEL   0
 
#define DEBUG_SHOW_GAPS   0
 
#define DEBUG_SKEL_SUMMARY   0
 
#define DEBUG_ANY_ON   0
 
#define WORK_LIST_PCT   0.05
 
#define MIN_BYTES_GLOBAL_VARIABLE   1024
 
#define DEBUG_ANY(expr)
 
#define DEBUG_CFG(expr)
 
#define DEBUG_SKEL(expr)
 
#define DEBUG_GAPS(expr)
 

Typedefs

typedef map< Block *, bool > BAnal::Struct::BlockSet
 
typedef map< VMA, HeaderInfo > BAnal::Struct::HeaderList
 
typedef map< VMA, Region * > BAnal::Struct::RegionMap
 
typedef vector< Statement::Ptr > BAnal::Struct::StatementVector
 
typedef vector< WorkItem * > BAnal::Struct::WorkList
 

Functions

static FileMap * BAnal::Struct::makeSkeleton (CodeObject *, const string &)
 
static void BAnal::Struct::doWorkItem (WorkItem *, string &, bool, bool)
 
static void BAnal::Struct::makeWorkList (FileMap *, WorkList &, WorkList &)
 
static void BAnal::Struct::makeVariables (ostream *outFile)
 
static void BAnal::Struct::printWorkList (WorkList &, uint &, ostream *, ostream *, string &)
 
static void BAnal::Struct::doFunctionList (WorkEnv &, FileInfo *, GroupInfo *, bool)
 
static LoopListBAnal::Struct::doLoopTree (WorkEnv &, FileInfo *, GroupInfo *, ParseAPI::Function *, BlockSet &, LoopTreeNode *)
 
static TreeNodeBAnal::Struct::doLoopLate (WorkEnv &, GroupInfo *, ParseAPI::Function *, BlockSet &, Loop *, const string &)
 
static void BAnal::Struct::doBlock (WorkEnv &, GroupInfo *, ParseAPI::Function *, BlockSet &, Block *, TreeNode *)
 
static void BAnal::Struct::doCudaList (WorkEnv &, FileInfo *, GroupInfo *)
 
static void BAnal::Struct::doCudaFunction (WorkEnv &, GroupInfo *, ParseAPI::Function *, TreeNode *)
 
static void BAnal::Struct::addGaps (WorkEnv &env, FileInfo *, GroupInfo *)
 
static void BAnal::Struct::getStatement (StatementVector &, Offset, SymtabAPI::Function *)
 
static LoopInfoBAnal::Struct::findLoopHeader (WorkEnv &env, FileInfo *, GroupInfo *, ParseAPI::Function *, TreeNode *, Loop *, const string &)
 
static TreeNodeBAnal::Struct::deleteInlinePrefix (WorkEnv &, TreeNode *, Inline::InlineSeqn)
 
static void BAnal::Struct::mergeIrredLoops (WorkEnv &, LoopInfo *)
 
static void BAnal::Struct::computeGaps (VMAIntervalSet &, VMAIntervalSet &, VMA, VMA)
 
static bool BAnal::Struct::BlockLessThan (Block *b1, Block *b2)
 
static bool BAnal::Struct::EdgeLessThan (Edge *e1, Edge *e2)
 
static bool BAnal::Struct::WorkItemGreaterThan (WorkItem *w1, WorkItem *w2)
 
static VMA BAnal::Struct::LoopMinEntryAddr (Loop *loop)
 
static bool BAnal::Struct::LoopTreeLessThan (LoopTreeNode *n1, LoopTreeNode *n2)
 
static bool BAnal::Struct::LoopInfoLessThan (LoopInfo *l1, LoopInfo *l2)
 
static void BAnal::Struct::printTime (const char *label, struct timeval *tv_prev, struct rusage *ru_prev, struct timeval *tv_now, struct rusage *ru_now)
 
void BAnal::Struct::makeStructure (string filename, ostream *outFile, ostream *gapsFile, string gaps_filenm, string search_path, Struct::Options &structOpts)
 
static void BAnal::Struct::makeCodeMap (RegionMap &codeMap)
 
static Region * BAnal::Struct::findCodeRegion (RegionMap &codeMap, VMA vma)
 
static void BAnal::Struct::getProcLineMap (StatementVector &svec, Offset vma, Offset end, SymtabAPI::Function *sym_func)
 
static void BAnal::Struct::addProc (FileMap *fileMap, ProcInfo *pinfo, string &filenm, SymtabAPI::Function *sym_func, VMA start, VMA end, bool alt_file=false)
 
static void BAnal::Struct::getFuncNames (SymtabAPI::Function *sym_func, string &prettynm, string &linknm, bool ourDemangle)
 

Variables

static int merge_irred_loops = 1
 
static const string & unknown_file = "<unknown file>"
 
static const string & unknown_proc = "<unknown proc>"
 
static const string & unknown_link = "_unknown_proc_"
 
static Symtab * the_symtab = NULL
 
static BAnal::Struct::Options opts
 

Macro Definition Documentation

◆ DEBUG_ANY

#define DEBUG_ANY (   expr)

Definition at line 263 of file Struct.cpp.

◆ DEBUG_ANY_ON

#define DEBUG_ANY_ON   0

Definition at line 138 of file Struct.cpp.

◆ DEBUG_CFG

#define DEBUG_CFG (   expr)

Definition at line 270 of file Struct.cpp.

◆ DEBUG_CFG_SOURCE

#define DEBUG_CFG_SOURCE   0

Definition at line 130 of file Struct.cpp.

◆ DEBUG_GAPS

#define DEBUG_GAPS (   expr)

Definition at line 282 of file Struct.cpp.

◆ DEBUG_MAKE_SKEL

#define DEBUG_MAKE_SKEL   0

Definition at line 131 of file Struct.cpp.

◆ DEBUG_SHOW_GAPS

#define DEBUG_SHOW_GAPS   0

Definition at line 132 of file Struct.cpp.

◆ DEBUG_SKEL

#define DEBUG_SKEL (   expr)

Definition at line 276 of file Struct.cpp.

◆ DEBUG_SKEL_SUMMARY

#define DEBUG_SKEL_SUMMARY   0

Definition at line 133 of file Struct.cpp.

◆ MIN_BYTES_GLOBAL_VARIABLE

#define MIN_BYTES_GLOBAL_VARIABLE   1024

Definition at line 143 of file Struct.cpp.

◆ SYMTAB_ARCH_CUDA

#define SYMTAB_ARCH_CUDA (   symtab)    0

Definition at line 127 of file Struct.cpp.

◆ WORK_LIST_PCT

#define WORK_LIST_PCT   0.05

Definition at line 141 of file Struct.cpp.

Variable Documentation

◆ merge_irred_loops

int merge_irred_loops = 1
static

Definition at line 145 of file Struct.cpp.

◆ opts

Definition at line 160 of file Struct.cpp.

◆ the_symtab

Symtab* the_symtab = NULL
static

Definition at line 158 of file Struct.cpp.

◆ unknown_file

const string& unknown_file = "<unknown file>"
static

Definition at line 153 of file Struct.cpp.

◆ unknown_link

const string& unknown_link = "_unknown_proc_"
static

Definition at line 155 of file Struct.cpp.

◆ unknown_proc

const string& unknown_proc = "<unknown proc>"
static

Definition at line 154 of file Struct.cpp.