13eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm/* libunwind - a platform-independent unwind library
23eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm   Copyright (C) 2002, 2004 Hewlett-Packard Co
3e6b9f350f78ecd9ef3b8a3e721f9435c94fc2562David Mosberger-Tang   Copyright (C) 2007 David Mosberger-Tang
4e6b9f350f78ecd9ef3b8a3e721f9435c94fc2562David Mosberger-Tang	Contributed by David Mosberger-Tang <dmosberger@gmail.com>
53eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
63eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmThis file is part of libunwind.
73eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
83eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmPermission is hereby granted, free of charge, to any person obtaining
93eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidma copy of this software and associated documentation files (the
103eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm"Software"), to deal in the Software without restriction, including
113eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmwithout limitation the rights to use, copy, modify, merge, publish,
123eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmdistribute, sublicense, and/or sell copies of the Software, and to
133eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmpermit persons to whom the Software is furnished to do so, subject to
143eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmthe following conditions:
153eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
163eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmThe above copyright notice and this permission notice shall be
173eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmincluded in all copies or substantial portions of the Software.
183eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
193eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
203eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
213eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
223eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
233eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
243eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
253eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
263eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
273eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm#include <stdlib.h>
283eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm#include <string.h>
293eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
303eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm#include "unwind_i.h"
313eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
323eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm#ifdef UNW_REMOTE_ONLY
333eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
343eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm/* unw_local_addr_space is a NULL pointer in this case.  */
353eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmPROTECTED unw_addr_space_t unw_local_addr_space;
363eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
373eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm#else /* !UNW_REMOTE_ONLY */
383eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
393eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmstatic struct unw_addr_space local_addr_space;
403eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
413eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmPROTECTED unw_addr_space_t unw_local_addr_space = &local_addr_space;
423eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
433eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmstatic inline void *
443eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmuc_addr (ucontext_t *uc, int reg)
453eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
463eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  void *addr;
473eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
4868edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  if ((unsigned) (reg - UNW_HPPA_GR) < 32)
4968edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm    addr = &uc->uc_mcontext.sc_gr[reg - UNW_HPPA_GR];
5068edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  else if ((unsigned) (reg - UNW_HPPA_FR) < 32)
5168edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm    addr = &uc->uc_mcontext.sc_fr[reg - UNW_HPPA_FR];
5268edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  else
5368edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm    addr = NULL;
543eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return addr;
553eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
563eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
573eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm# ifdef UNW_LOCAL_ONLY
583eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
593eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmvoid *
6068edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm_Uhppa_uc_addr (ucontext_t *uc, int reg)
613eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
623eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return uc_addr (uc, reg);
633eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
643eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
653eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm# endif /* UNW_LOCAL_ONLY */
663eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
673eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmHIDDEN unw_dyn_info_list_t _U_dyn_info_list;
683eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
693eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm/* XXX fix me: there is currently no way to locate the dyn-info list
703eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm       by a remote unwinder.  On ia64, this is done via a special
713eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm       unwind-table entry.  Perhaps something similar can be done with
723eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm       DWARF2 unwind info.  */
733eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
743eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmstatic void
753eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmput_unwind_info (unw_addr_space_t as, unw_proc_info_t *proc_info, void *arg)
763eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
773eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  /* it's a no-op */
783eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
793eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
803eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmstatic int
813eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmget_dyn_info_list_addr (unw_addr_space_t as, unw_word_t *dyn_info_list_addr,
823eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm			void *arg)
833eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
843eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  *dyn_info_list_addr = (unw_word_t) &_U_dyn_info_list;
853eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return 0;
863eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
873eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
883eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmstatic int
893eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmaccess_mem (unw_addr_space_t as, unw_word_t addr, unw_word_t *val, int write,
903eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm	    void *arg)
913eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
923eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  if (write)
933eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    {
947d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris      /* ANDROID support update. */
95cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#ifdef UNW_LOCAL_ONLY
96f4a8df5f4f338f1a12c25213227e98b34b42447fChristopher Ferris      if (map_local_is_writable (addr))
977d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        {
98cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#endif
997d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          Debug (12, "mem[%x] <- %x\n", addr, *val);
1007d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          *(unw_word_t *) addr = *val;
101cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#ifdef UNW_LOCAL_ONLY
1027d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        }
1037d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris      else
1047d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        {
1057d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          Debug (12, "Unwritable memory mem[%x] <- %x\n", addr, *val);
1067d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          return -1;
1077d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        }
108cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#endif
1097d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris      /* End of ANDROID update. */
1103eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    }
1113eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  else
1123eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    {
1137d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris      /* ANDROID support update. */
114cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#ifdef UNW_LOCAL_ONLY
115f4a8df5f4f338f1a12c25213227e98b34b42447fChristopher Ferris      if (map_local_is_readable (addr))
1167d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        {
117cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#endif
1187d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          *val = *(unw_word_t *) addr;
1197d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          Debug (12, "mem[%x] -> %x\n", addr, *val);
120cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#ifdef UNW_LOCAL_ONLY
1217d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        }
1227d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris      else
1237d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        {
1247d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          Debug (12, "Unreadable memory mem[%x] -> XXX\n", addr);
1257d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris          return -1;
1267d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris        }
127cdf9ee587b78148c5d48dae1b5ea72ec8df64c96Christopher Ferris#endif
1287d46a21e0a2cb561e4cad57b101a7137e01023dcChristopher Ferris      /* End of ANDROID update. */
1293eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    }
1303eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return 0;
1313eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
1323eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1333eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmstatic int
1343eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmaccess_reg (unw_addr_space_t as, unw_regnum_t reg, unw_word_t *val, int write,
1353eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm	    void *arg)
1363eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
1373eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  unw_word_t *addr;
1383eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  ucontext_t *uc = arg;
1393eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
14068edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  if ((unsigned int) (reg - UNW_HPPA_FR) < 32)
1413eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    goto badreg;
1423eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1433eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  addr = uc_addr (uc, reg);
1443eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  if (!addr)
1453eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    goto badreg;
1463eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1473eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  if (write)
1483eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    {
1493eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm      *(unw_word_t *) addr = *val;
15068edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm      Debug (12, "%s <- %x\n", unw_regname (reg), *val);
1513eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    }
1523eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  else
1533eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    {
1543eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm      *val = *(unw_word_t *) addr;
15568edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm      Debug (12, "%s -> %x\n", unw_regname (reg), *val);
1563eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    }
1573eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return 0;
1583eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1593eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm badreg:
1603eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  Debug (1, "bad register number %u\n", reg);
1613eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return -UNW_EBADREG;
1623eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
1633eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1643eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmstatic int
1653eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmaccess_fpreg (unw_addr_space_t as, unw_regnum_t reg, unw_fpreg_t *val,
1663eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm	      int write, void *arg)
1673eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
1683eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  ucontext_t *uc = arg;
1693eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  unw_fpreg_t *addr;
1703eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
17168edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  if ((unsigned) (reg - UNW_HPPA_FR) > 32)
1723eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    goto badreg;
1733eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1743eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  addr = uc_addr (uc, reg);
1753eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  if (!addr)
1763eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    goto badreg;
1773eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1783eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  if (write)
1793eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    {
18068edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm      Debug (12, "%s <- %08x.%08x\n",
1813eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm	     unw_regname (reg), val->raw.bits[1], val->raw.bits[0]);
1823eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm      *(unw_fpreg_t *) addr = *val;
1833eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    }
1843eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  else
1853eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    {
1863eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm      *val = *(unw_fpreg_t *) addr;
18768edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm      Debug (12, "%s -> %08x.%08x\n",
1883eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm	     unw_regname (reg), val->raw.bits[1], val->raw.bits[0]);
1893eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm    }
1903eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return 0;
1913eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
1923eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm badreg:
1933eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  Debug (1, "bad register number %u\n", reg);
1943eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  /* attempt to access a non-preserved register */
1953eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  return -UNW_EBADREG;
19668edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm}
19768edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm
19868edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidmstatic int
19968edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidmget_static_proc_name (unw_addr_space_t as, unw_word_t ip,
20068edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm		      char *buf, size_t buf_len, unw_word_t *offp,
20168edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm		      void *arg)
20268edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm{
203e6b9f350f78ecd9ef3b8a3e721f9435c94fc2562David Mosberger-Tang  return _Uelf32_get_proc_name (as, getpid (), ip, buf, buf_len, offp);
2043eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
2053eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
2063eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidmHIDDEN void
20768edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidmhppa_local_addr_space_init (void)
2083eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm{
2093eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  memset (&local_addr_space, 0, sizeof (local_addr_space));
2103eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  local_addr_space.caching_policy = UNW_CACHE_GLOBAL;
21168edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  local_addr_space.acc.find_proc_info = dwarf_find_proc_info;
2123eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  local_addr_space.acc.put_unwind_info = put_unwind_info;
2133eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  local_addr_space.acc.get_dyn_info_list_addr = get_dyn_info_list_addr;
2143eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  local_addr_space.acc.access_mem = access_mem;
2153eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  local_addr_space.acc.access_reg = access_reg;
2163eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm  local_addr_space.acc.access_fpreg = access_fpreg;
21768edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  local_addr_space.acc.resume = hppa_local_resume;
21868edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  local_addr_space.acc.get_proc_name = get_static_proc_name;
21968edb681d88e33715e3337027c9b416d9dee4a61hp.com!davidm  unw_flush_cache (&local_addr_space, 0, 0);
220f4a8df5f4f338f1a12c25213227e98b34b42447fChristopher Ferris
221f4a8df5f4f338f1a12c25213227e98b34b42447fChristopher Ferris  map_local_init ();
2223eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm}
2233eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm
2243eb5704c20acb444c4c15c754b8cecc41835dc55homeip.net!davidm#endif /* !UNW_REMOTE_ONLY */
225