1b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project/* libunwind - a platform-independent unwind library 2b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 3b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project Contributed by Max Asbock <masbock@us.ibm.com> 4b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 5b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectThis file is part of libunwind. 6b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 7b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectPermission is hereby granted, free of charge, to any person obtaining 8b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projecta copy of this software and associated documentation files (the 9b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project"Software"), to deal in the Software without restriction, including 10b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectwithout limitation the rights to use, copy, modify, merge, publish, 11b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectdistribute, sublicense, and/or sell copies of the Software, and to 12b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectpermit persons to whom the Software is furnished to do so, subject to 13b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectthe following conditions: 14b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 15b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectThe above copyright notice and this permission notice shall be 16b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectincluded in all copies or substantial portions of the Software. 17b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 18b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 24b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 25b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 26b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project#include "unwind_i.h" 27b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 28b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectstatic const char *regname[] = 29b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project { 30b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RAX", 31b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RDX", 32b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RCX", 33b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RBX", 34b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RSI", 35b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RDI", 36b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RBP", 37b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RSP", 38b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R8", 39b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R9", 40b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R10", 41b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R11", 42b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R12", 43b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R13", 44b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R14", 45b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "R15", 46b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project "RIP", 47b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project }; 48b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project 49b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source ProjectPROTECTED const char * 50b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Projectunw_regname (unw_regnum_t reg) 51b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project{ 52b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project if (reg < (unw_regnum_t) ARRAY_SIZE (regname)) 53b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project return regname[reg]; 54b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project else 55b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project return "???"; 56b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project} 57b07e1d9fd8d9e4e03698e0bd9bf77154c5390326The Android Open Source Project