11682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm/* libunwind - a platform-independent unwind library 21682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm Copyright (C) 2003 Hewlett-Packard Co 31682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 41682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 51682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmThis file is part of libunwind. 61682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 71682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmPermission is hereby granted, free of charge, to any person obtaining 81682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidma copy of this software and associated documentation files (the 91682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm"Software"), to deal in the Software without restriction, including 101682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmwithout limitation the rights to use, copy, modify, merge, publish, 111682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmdistribute, sublicense, and/or sell copies of the Software, and to 121682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmpermit persons to whom the Software is furnished to do so, subject to 131682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmthe following conditions: 141682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 151682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmThe above copyright notice and this permission notice shall be 161682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmincluded in all copies or substantial portions of the Software. 171682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 181682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 191682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 201682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 211682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 221682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 231682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 241682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 251682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 261682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm#include <stdlib.h> 271682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 281682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm#include "unwind_i.h" 291682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 30bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov#if defined(_LITTLE_ENDIAN) && !defined(__LITTLE_ENDIAN) 31bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov#define __LITTLE_ENDIAN _LITTLE_ENDIAN 32bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov#endif 33bb41eba56c44306e5bc2dcf8eeba574bd5a3702fKonstantin Belousov 341682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmPROTECTED unw_addr_space_t 351682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidmunw_create_addr_space (unw_accessors_t *a, int byte_order) 361682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm{ 371682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm#ifdef UNW_LOCAL_ONLY 381682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm return NULL; 391682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm#else 405fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala unw_addr_space_t as; 411682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 425fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala /* 435fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala * x86 supports only little-endian. 445fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala */ 455fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala if (byte_order != 0 && byte_order != __LITTLE_ENDIAN) 465fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala return NULL; 475fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala 485fef17c05dd20ea6c0a6e3532177a916ef022a3cTommi Rantala as = malloc (sizeof (*as)); 491682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm if (!as) 501682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm return NULL; 511682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 521682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm memset (as, 0, sizeof (*as)); 531682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 541682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm as->acc = *a; 551682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm 561682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm return as; 571682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm#endif 581682f9745ee23dcf002da8a0775820270f7da1a0homeip.net!davidm} 59