stacktrace.cc revision 10417
18792Sgblack@eecs.umich.edu/* 28792Sgblack@eecs.umich.edu * Copyright (c) 2005 The Regents of The University of Michigan 38792Sgblack@eecs.umich.edu * All rights reserved. 48792Sgblack@eecs.umich.edu * 58792Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 68792Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 78792Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 88792Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 98792Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 108792Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 118792Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 128792Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 138792Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 148792Sgblack@eecs.umich.edu * this software without specific prior written permission. 158792Sgblack@eecs.umich.edu * 168792Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 178792Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 188792Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 198792Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 208792Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 218792Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 228792Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 238792Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 248792Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258792Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 268792Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278792Sgblack@eecs.umich.edu * 288792Sgblack@eecs.umich.edu * Authors: Nathan Binkert 298792Sgblack@eecs.umich.edu */ 308792Sgblack@eecs.umich.edu 318792Sgblack@eecs.umich.edu#include <string> 328792Sgblack@eecs.umich.edu 338792Sgblack@eecs.umich.edu#include "arch/power/stacktrace.hh" 348792Sgblack@eecs.umich.edu#include "base/trace.hh" 358792Sgblack@eecs.umich.edu 368792Sgblack@eecs.umich.eduusing namespace std; 378792Sgblack@eecs.umich.edu 388792Sgblack@eecs.umich.edunamespace PowerISA { 398792Sgblack@eecs.umich.edu 408792Sgblack@eecs.umich.eduProcessInfo::ProcessInfo(ThreadContext *_tc) 418792Sgblack@eecs.umich.edu{ 428792Sgblack@eecs.umich.edu panic("ProcessInfo constructor not implemented.\n"); 438792Sgblack@eecs.umich.edu} 448792Sgblack@eecs.umich.edu 458792Sgblack@eecs.umich.eduAddr 468792Sgblack@eecs.umich.eduProcessInfo::task(Addr ksp) const 478792Sgblack@eecs.umich.edu{ 488792Sgblack@eecs.umich.edu panic("ProcessInfo::task not implemented.\n"); 498792Sgblack@eecs.umich.edu return 0; 508792Sgblack@eecs.umich.edu} 518792Sgblack@eecs.umich.edu 528792Sgblack@eecs.umich.eduint 538792Sgblack@eecs.umich.eduProcessInfo::pid(Addr ksp) const 548792Sgblack@eecs.umich.edu{ 558792Sgblack@eecs.umich.edu panic("ProcessInfo::pid not implemented.\n"); 568792Sgblack@eecs.umich.edu return 0; 578792Sgblack@eecs.umich.edu} 588792Sgblack@eecs.umich.edu 598792Sgblack@eecs.umich.edustring 608792Sgblack@eecs.umich.eduProcessInfo::name(Addr ksp) const 618792Sgblack@eecs.umich.edu{ 628792Sgblack@eecs.umich.edu panic("ProcessInfo::name not implemented.\n"); 638792Sgblack@eecs.umich.edu return ""; 648792Sgblack@eecs.umich.edu} 658792Sgblack@eecs.umich.edu 668792Sgblack@eecs.umich.eduStackTrace::StackTrace() 678792Sgblack@eecs.umich.edu : tc(0), stack(64) 688792Sgblack@eecs.umich.edu{ 698792Sgblack@eecs.umich.edu panic("StackTrace constructor not implemented.\n"); 708792Sgblack@eecs.umich.edu} 718792Sgblack@eecs.umich.edu 7210417Sandreas.hansson@arm.comStackTrace::StackTrace(ThreadContext *_tc, const StaticInstPtr &inst) 738792Sgblack@eecs.umich.edu : tc(0), stack(64) 748792Sgblack@eecs.umich.edu{ 758792Sgblack@eecs.umich.edu panic("StackTrace constructor not implemented.\n"); 768792Sgblack@eecs.umich.edu} 778792Sgblack@eecs.umich.edu 788792Sgblack@eecs.umich.eduStackTrace::~StackTrace() 798792Sgblack@eecs.umich.edu{ 808792Sgblack@eecs.umich.edu panic("StackTrace destructor not implemented.\n"); 818792Sgblack@eecs.umich.edu} 828792Sgblack@eecs.umich.edu 838792Sgblack@eecs.umich.eduvoid 848792Sgblack@eecs.umich.eduStackTrace::trace(ThreadContext *_tc, bool is_call) 858792Sgblack@eecs.umich.edu{ 868792Sgblack@eecs.umich.edu panic("StackTrace::trace not implemented.\n"); 878792Sgblack@eecs.umich.edu} 888792Sgblack@eecs.umich.edu 898792Sgblack@eecs.umich.edubool 908792Sgblack@eecs.umich.eduStackTrace::isEntry(Addr addr) 918792Sgblack@eecs.umich.edu{ 928792Sgblack@eecs.umich.edu panic("StackTrace::isEntry not implemented.\n"); 938792Sgblack@eecs.umich.edu return false; 948792Sgblack@eecs.umich.edu} 958792Sgblack@eecs.umich.edu 968792Sgblack@eecs.umich.edubool 978792Sgblack@eecs.umich.eduStackTrace::decodeStack(MachInst inst, int &disp) 988792Sgblack@eecs.umich.edu{ 998792Sgblack@eecs.umich.edu panic("StackTrace::decodeStack not implemented.\n"); 1008792Sgblack@eecs.umich.edu return false; 1018792Sgblack@eecs.umich.edu} 1028792Sgblack@eecs.umich.edu 1038792Sgblack@eecs.umich.edubool 1048792Sgblack@eecs.umich.eduStackTrace::decodeSave(MachInst inst, int ®, int &disp) 1058792Sgblack@eecs.umich.edu{ 1068792Sgblack@eecs.umich.edu panic("StackTrace::decodeSave not implemented.\n"); 1078792Sgblack@eecs.umich.edu return true; 1088792Sgblack@eecs.umich.edu} 1098792Sgblack@eecs.umich.edu 1108792Sgblack@eecs.umich.edu/* 1118792Sgblack@eecs.umich.edu * Decode the function prologue for the function we're in, and note 1128792Sgblack@eecs.umich.edu * which registers are stored where, and how large the stack frame is. 1138792Sgblack@eecs.umich.edu */ 1148792Sgblack@eecs.umich.edubool 1158792Sgblack@eecs.umich.eduStackTrace::decodePrologue(Addr sp, Addr callpc, Addr func, int &size, 1168792Sgblack@eecs.umich.edu Addr &ra) 1178792Sgblack@eecs.umich.edu{ 1188792Sgblack@eecs.umich.edu panic("StackTrace::decodePrologue not implemented.\n"); 1198792Sgblack@eecs.umich.edu return true; 1208792Sgblack@eecs.umich.edu} 1218792Sgblack@eecs.umich.edu 1228792Sgblack@eecs.umich.edu#if TRACING_ON 1238792Sgblack@eecs.umich.eduvoid 1248792Sgblack@eecs.umich.eduStackTrace::dump() 1258792Sgblack@eecs.umich.edu{ 1268792Sgblack@eecs.umich.edu panic("StackTrace::dump not implemented.\n"); 1278792Sgblack@eecs.umich.edu} 1288792Sgblack@eecs.umich.edu#endif 1298792Sgblack@eecs.umich.edu 1308792Sgblack@eecs.umich.edu} // namespace PowerISA 131