stacktrace.cc revision 11793
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 3111793Sbrandon.potter@amd.com#include "arch/power/stacktrace.hh" 3211793Sbrandon.potter@amd.com 338792Sgblack@eecs.umich.edu#include <string> 348792Sgblack@eecs.umich.edu 358792Sgblack@eecs.umich.edu#include "base/trace.hh" 368792Sgblack@eecs.umich.edu 378792Sgblack@eecs.umich.eduusing namespace std; 388792Sgblack@eecs.umich.edu 398792Sgblack@eecs.umich.edunamespace PowerISA { 408792Sgblack@eecs.umich.edu 418792Sgblack@eecs.umich.eduProcessInfo::ProcessInfo(ThreadContext *_tc) 428792Sgblack@eecs.umich.edu{ 438792Sgblack@eecs.umich.edu panic("ProcessInfo constructor not implemented.\n"); 448792Sgblack@eecs.umich.edu} 458792Sgblack@eecs.umich.edu 468792Sgblack@eecs.umich.eduAddr 478792Sgblack@eecs.umich.eduProcessInfo::task(Addr ksp) const 488792Sgblack@eecs.umich.edu{ 498792Sgblack@eecs.umich.edu panic("ProcessInfo::task not implemented.\n"); 508792Sgblack@eecs.umich.edu return 0; 518792Sgblack@eecs.umich.edu} 528792Sgblack@eecs.umich.edu 538792Sgblack@eecs.umich.eduint 548792Sgblack@eecs.umich.eduProcessInfo::pid(Addr ksp) const 558792Sgblack@eecs.umich.edu{ 568792Sgblack@eecs.umich.edu panic("ProcessInfo::pid not implemented.\n"); 578792Sgblack@eecs.umich.edu return 0; 588792Sgblack@eecs.umich.edu} 598792Sgblack@eecs.umich.edu 608792Sgblack@eecs.umich.edustring 618792Sgblack@eecs.umich.eduProcessInfo::name(Addr ksp) const 628792Sgblack@eecs.umich.edu{ 638792Sgblack@eecs.umich.edu panic("ProcessInfo::name not implemented.\n"); 648792Sgblack@eecs.umich.edu return ""; 658792Sgblack@eecs.umich.edu} 668792Sgblack@eecs.umich.edu 678792Sgblack@eecs.umich.eduStackTrace::StackTrace() 688792Sgblack@eecs.umich.edu : tc(0), stack(64) 698792Sgblack@eecs.umich.edu{ 708792Sgblack@eecs.umich.edu panic("StackTrace constructor not implemented.\n"); 718792Sgblack@eecs.umich.edu} 728792Sgblack@eecs.umich.edu 7310417Sandreas.hansson@arm.comStackTrace::StackTrace(ThreadContext *_tc, const StaticInstPtr &inst) 748792Sgblack@eecs.umich.edu : tc(0), stack(64) 758792Sgblack@eecs.umich.edu{ 768792Sgblack@eecs.umich.edu panic("StackTrace constructor not implemented.\n"); 778792Sgblack@eecs.umich.edu} 788792Sgblack@eecs.umich.edu 798792Sgblack@eecs.umich.eduStackTrace::~StackTrace() 808792Sgblack@eecs.umich.edu{ 818792Sgblack@eecs.umich.edu panic("StackTrace destructor not implemented.\n"); 828792Sgblack@eecs.umich.edu} 838792Sgblack@eecs.umich.edu 848792Sgblack@eecs.umich.eduvoid 858792Sgblack@eecs.umich.eduStackTrace::trace(ThreadContext *_tc, bool is_call) 868792Sgblack@eecs.umich.edu{ 878792Sgblack@eecs.umich.edu panic("StackTrace::trace not implemented.\n"); 888792Sgblack@eecs.umich.edu} 898792Sgblack@eecs.umich.edu 908792Sgblack@eecs.umich.edubool 918792Sgblack@eecs.umich.eduStackTrace::isEntry(Addr addr) 928792Sgblack@eecs.umich.edu{ 938792Sgblack@eecs.umich.edu panic("StackTrace::isEntry not implemented.\n"); 948792Sgblack@eecs.umich.edu return false; 958792Sgblack@eecs.umich.edu} 968792Sgblack@eecs.umich.edu 978792Sgblack@eecs.umich.edubool 988792Sgblack@eecs.umich.eduStackTrace::decodeStack(MachInst inst, int &disp) 998792Sgblack@eecs.umich.edu{ 1008792Sgblack@eecs.umich.edu panic("StackTrace::decodeStack not implemented.\n"); 1018792Sgblack@eecs.umich.edu return false; 1028792Sgblack@eecs.umich.edu} 1038792Sgblack@eecs.umich.edu 1048792Sgblack@eecs.umich.edubool 1058792Sgblack@eecs.umich.eduStackTrace::decodeSave(MachInst inst, int ®, int &disp) 1068792Sgblack@eecs.umich.edu{ 1078792Sgblack@eecs.umich.edu panic("StackTrace::decodeSave not implemented.\n"); 1088792Sgblack@eecs.umich.edu return true; 1098792Sgblack@eecs.umich.edu} 1108792Sgblack@eecs.umich.edu 1118792Sgblack@eecs.umich.edu/* 1128792Sgblack@eecs.umich.edu * Decode the function prologue for the function we're in, and note 1138792Sgblack@eecs.umich.edu * which registers are stored where, and how large the stack frame is. 1148792Sgblack@eecs.umich.edu */ 1158792Sgblack@eecs.umich.edubool 1168792Sgblack@eecs.umich.eduStackTrace::decodePrologue(Addr sp, Addr callpc, Addr func, int &size, 1178792Sgblack@eecs.umich.edu Addr &ra) 1188792Sgblack@eecs.umich.edu{ 1198792Sgblack@eecs.umich.edu panic("StackTrace::decodePrologue not implemented.\n"); 1208792Sgblack@eecs.umich.edu return true; 1218792Sgblack@eecs.umich.edu} 1228792Sgblack@eecs.umich.edu 1238792Sgblack@eecs.umich.edu#if TRACING_ON 1248792Sgblack@eecs.umich.eduvoid 1258792Sgblack@eecs.umich.eduStackTrace::dump() 1268792Sgblack@eecs.umich.edu{ 1278792Sgblack@eecs.umich.edu panic("StackTrace::dump not implemented.\n"); 1288792Sgblack@eecs.umich.edu} 1298792Sgblack@eecs.umich.edu#endif 1308792Sgblack@eecs.umich.edu 1318792Sgblack@eecs.umich.edu} // namespace PowerISA 132