10d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm/* libunwind - a platform-independent unwind library
20f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm   Copyright (C) 2004 Hewlett-Packard Co
30f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
40d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm
50d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmThis file is part of libunwind.
60d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm
70d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmPermission is hereby granted, free of charge, to any person obtaining
80d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidma copy of this software and associated documentation files (the
90d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm"Software"), to deal in the Software without restriction, including
100d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmwithout limitation the rights to use, copy, modify, merge, publish,
110d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmdistribute, sublicense, and/or sell copies of the Software, and to
120d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmpermit persons to whom the Software is furnished to do so, subject to
130d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmthe following conditions:
140d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm
150d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmThe above copyright notice and this permission notice shall be
160d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmincluded in all copies or substantial portions of the Software.
170d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm
180d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
190d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
200d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
210d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
220d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
230d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
240d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
250d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm
260d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm#include "unwind_i.h"
270d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm
280d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmPROTECTED int
290d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidmunw_get_proc_info (unw_cursor_t *cursor, unw_proc_info_t *pi)
300d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm{
310d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm  struct cursor *c = (struct cursor *) cursor;
320d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm
330f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm  if (dwarf_make_proc_info (&c->dwarf) < 0)
340f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm    {
350f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm      /* On hppa, some key routines such as _start() and _dl_start()
360f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm	 are missing DWARF unwind info.  We don't want to fail in that
370f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm	 case, because those frames are uninteresting and just mark
380f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm	 the end of the frame-chain anyhow.  */
390f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm      memset (pi, 0, sizeof (*pi));
400f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm      pi->start_ip = c->dwarf.ip;
410f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm      pi->end_ip = c->dwarf.ip + 4;
420f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm      return 0;
430f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm    }
440f27732d35ef19932410f448cf0aba3df2720de1mostang.com!davidm  *pi = c->dwarf.pi;
450d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm  return 0;
460d07482a2e917bb4589eb3c98283eb11e66dccc2homeip.net!davidm}
47