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