14499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino/* libunwind - a platform-independent unwind library 24499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino Copyright (C) 2006-2007 IBM 34499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino Contributed by 44499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino Corey Ashford <cjashfor@us.ibm.com> 54499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino Jose Flavio Aguilar Paulino <jflavio@br.ibm.com> <joseflavio@gmail.com> 64499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 74499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoThis file is part of libunwind. 84499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 94499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoPermission is hereby granted, free of charge, to any person obtaining 104499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulinoa copy of this software and associated documentation files (the 114499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino"Software"), to deal in the Software without restriction, including 124499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulinowithout limitation the rights to use, copy, modify, merge, publish, 134499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulinodistribute, sublicense, and/or sell copies of the Software, and to 144499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulinopermit persons to whom the Software is furnished to do so, subject to 154499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulinothe following conditions: 164499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 174499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoThe above copyright notice and this permission notice shall be 184499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulinoincluded in all copies or substantial portions of the Software. 194499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 204499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 214499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 224499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 234499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 244499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 254499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 264499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar PaulinoWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 274499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 284499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino#include "unwind_i.h" 294499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 304499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino/* Here is the "common" init, for remote and local debuging" */ 314499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 324499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulinostatic inline int 33a9dce3c06e6ffcb83957e734d960505415118f00Lassi Tuuracommon_init_ppc32 (struct cursor *c, unsigned use_prev_instr) 344499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino{ 354499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino int ret; 364499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino int i; 374499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 384499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino for (i = UNW_PPC32_R0; i <= UNW_PPC32_R31; i++) { 394499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.loc[i] = DWARF_REG_LOC (&c->dwarf, i); 404499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino } 414499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino for (i = UNW_PPC32_F0; i <= UNW_PPC32_F31; i++) { 424499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.loc[i] = DWARF_FPREG_LOC (&c->dwarf, i); 434499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino } 444499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 454499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.loc[UNW_PPC32_CTR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC32_CTR); 464499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.loc[UNW_PPC32_XER] = DWARF_REG_LOC (&c->dwarf, UNW_PPC32_XER); 479ea6af8ed5ee7b07f8de6d774bc6df2b7320f0e8Jose Flavio Aguilar Paulino c->dwarf.loc[UNW_PPC32_CCR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC32_CCR); 484499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.loc[UNW_PPC32_LR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC32_LR); 499ea6af8ed5ee7b07f8de6d774bc6df2b7320f0e8Jose Flavio Aguilar Paulino c->dwarf.loc[UNW_PPC32_FPSCR] = DWARF_REG_LOC (&c->dwarf, UNW_PPC32_FPSCR); 504499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 519ea6af8ed5ee7b07f8de6d774bc6df2b7320f0e8Jose Flavio Aguilar Paulino ret = dwarf_get (&c->dwarf, c->dwarf.loc[UNW_PPC32_LR], &c->dwarf.ip); 524499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino if (ret < 0) 534499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino return ret; 544499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 554499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino ret = dwarf_get (&c->dwarf, DWARF_REG_LOC (&c->dwarf, UNW_PPC32_R1), 564499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino &c->dwarf.cfa); 574499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino if (ret < 0) 584499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino return ret; 594499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 604499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->sigcontext_format = PPC_SCF_NONE; 614499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->sigcontext_addr = 0; 624499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 634499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.args_size = 0; 644499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.ret_addr_column = 0; 659e98f15e9aee12e67cd5956d06ccb559f6a06213Lassi Tuura c->dwarf.stash_frames = 0; 66a9dce3c06e6ffcb83957e734d960505415118f00Lassi Tuura c->dwarf.use_prev_instr = use_prev_instr; 674499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.pi_valid = 0; 684499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.pi_is_dynamic = 0; 694499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.hint = 0; 704499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino c->dwarf.prev_rs = 0; 711c82a52129ceced9f271dd782057351275c38a41Christopher Ferris /* ANDROID support update. */ 721c82a52129ceced9f271dd782057351275c38a41Christopher Ferris c->dwarf.frame = 0; 731c82a52129ceced9f271dd782057351275c38a41Christopher Ferris /* End of ANDROID update. */ 744499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino 754499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino return 0; 764499bb29a6214b5df5b3b21e03c6b4f3c8f26cfdJose Flavio Aguilar Paulino} 77