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