1a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm/* libunwind - a platform-independent unwind library 2a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm Copyright (c) 2002-2003 Hewlett-Packard Development Company, L.P. 3a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 4a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm 5a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmThis file is part of libunwind. 6a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm 7a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmPermission is hereby granted, free of charge, to any person obtaining 8a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidma copy of this software and associated documentation files (the 9a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm"Software"), to deal in the Software without restriction, including 10a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmwithout limitation the rights to use, copy, modify, merge, publish, 11a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmdistribute, sublicense, and/or sell copies of the Software, and to 12a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmpermit persons to whom the Software is furnished to do so, subject to 13a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmthe following conditions: 14a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm 15a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmThe above copyright notice and this permission notice shall be 16a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmincluded in all copies or substantial portions of the Software. 17a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm 18a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 21a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 22a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 23a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 24a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 25a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm 26a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm#include "unwind_i.h" 27a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm 28a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmPROTECTED int 29a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidmunw_get_proc_info (unw_cursor_t *cursor, unw_proc_info_t *pi) 30a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm{ 31a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm struct cursor *c = (struct cursor *) cursor; 32a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm 33a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm if (dwarf_make_proc_info (&c->dwarf) < 0) 34a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm { 35a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm /* On x86, it's relatively common to be missing DWARF unwind 36a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm info. We don't want to fail in that case, because the 37a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm frame-chain still would let us do a backtrace at least. */ 38a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm memset (pi, 0, sizeof (*pi)); 39a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm pi->start_ip = c->dwarf.ip; 40a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm pi->end_ip = c->dwarf.ip + 1; 41a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm return 0; 42a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm } 43a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm *pi = c->dwarf.pi; 44a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm return 0; 45a4279b380844ae29b0fa18636e73268ddc38d864homeip.net!davidm} 46