From fed64a3b3634315bce420b2bc63312c1fa62bb8f Mon Sep 17 00:00:00 2001 From: Steve Reinhardt Date: Mon, 15 Nov 2004 01:56:40 -0500 Subject: Add support for sampled PC profiling to FullCPU. Simple text list of symbol (or address) and count will be dumped to m5prof. if the cpu's pc_sample_interval param is set. SConscript: Add cpu/full_cpu/pc_sample_profile.cc base/callback.hh: Add a comment about MakeCallback. Fix type in another comment. base/loader/symtab.cc: Revamp findNearestSymbol() to provide addresses of both nearest symbols (preceding and following) as well as string for former. Move global definition of debugSymbolTable here too. base/loader/symtab.hh: Revamp findNearestSymbol() to provide addresses of both nearest symbols (preceding and following) as well as string for former. Move global declaration of debugSymbolTable here too. cpu/exetrace.cc: Use new findNearestSymbol() interface for trace symbols. kern/linux/linux_system.cc: sim/system.cc: Remove extern of debugSymbolTable (now in symtab.hh) sim/process.cc: Initialize debugSymbolTable if binary has a symbol table. --HG-- extra : convert_revision : 0b5393dc39c40ac88c953684708f1125da550671 --- sim/process.cc | 13 +++++++++++++ sim/system.cc | 2 -- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'sim') diff --git a/sim/process.cc b/sim/process.cc index 98db1f2e0..bd1a2d8fd 100644 --- a/sim/process.cc +++ b/sim/process.cc @@ -34,6 +34,7 @@ #include "base/intmath.hh" #include "base/loader/object_file.hh" +#include "base/loader/symtab.hh" #include "base/statistics.hh" #include "cpu/exec_context.hh" #include "cpu/full_cpu/smt.hh" @@ -263,6 +264,18 @@ LiveProcess::LiveProcess(const string &name, ObjectFile *objFile, // load object file into target memory objFile->loadSections(memory); + // load up symbols, if any... these may be used for debugging or + // profiling. + if (!debugSymbolTable) { + debugSymbolTable = new SymbolTable(); + if (!objFile->loadGlobalSymbols(debugSymbolTable) || + !objFile->loadLocalSymbols(debugSymbolTable)) { + // didn't load any symbols + delete debugSymbolTable; + debugSymbolTable = NULL; + } + } + // Set up stack. On Alpha, stack goes below text section. This // code should get moved to some architecture-specific spot. stack_base = text_base - (409600+4096); diff --git a/sim/system.cc b/sim/system.cc index 1b1a145c6..c6a65f9d9 100644 --- a/sim/system.cc +++ b/sim/system.cc @@ -44,8 +44,6 @@ vector System::systemList; int System::numSystemsRunning = 0; -extern SymbolTable *debugSymbolTable; - System::System(Params *p) : SimObject(p->name), memctrl(p->memctrl), physmem(p->physmem), init_param(p->init_param), params(p) -- cgit v1.2.3