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 &reg, 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