17fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm/* libunwind - a platform-independent unwind library
247c32cd07f10fb2c40e7639aa68f0fee1998790cmostang.com!davidm   Copyright (C) 2001-2004 Hewlett-Packard Co
37fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
47fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
57fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidmThis file is part of libunwind.
67fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
7aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmPermission is hereby granted, free of charge, to any person obtaining
8aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidma copy of this software and associated documentation files (the
9aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidm"Software"), to deal in the Software without restriction, including
10aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmwithout limitation the rights to use, copy, modify, merge, publish,
11aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmdistribute, sublicense, and/or sell copies of the Software, and to
12aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmpermit persons to whom the Software is furnished to do so, subject to
13aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmthe following conditions:
14aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidm
15aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmThe above copyright notice and this permission notice shall be
16aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmincluded in all copies or substantial portions of the Software.
17aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidm
18aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24aca3843d6f53f2b36cb66c167a10e3e30e8ebd3amostang.com!davidmWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
257fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
261f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm#ifndef LIBUNWIND_H
271f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm#define LIBUNWIND_H
281f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm
2947c70d7858d94b18e0828fa1b23e15d0c13ef0damostang.com!davidm#include <inttypes.h>
307fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm#include <ucontext.h>
317fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
32337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidm#if defined(__cplusplus) || defined(c_plusplus)
33337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidmextern "C" {
34337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidm#endif
35337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidm
3643652d9deaa65d1fa1aca67ea3ac3a6f6d852086hp.com!davidm#ifdef ia64
3743652d9deaa65d1fa1aca67ea3ac3a6f6d852086hp.com!davidm  /* This works around a bug in Intel's ECC v7.0 which defines "ia64"
3843652d9deaa65d1fa1aca67ea3ac3a6f6d852086hp.com!davidm     as "1".  */
3943652d9deaa65d1fa1aca67ea3ac3a6f6d852086hp.com!davidm# undef ia64
4043652d9deaa65d1fa1aca67ea3ac3a6f6d852086hp.com!davidm#endif
4143652d9deaa65d1fa1aca67ea3ac3a6f6d852086hp.com!davidm
4289c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm#ifdef __hpux
4389c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm  /* On HP-UX, there is no hope of supporting UNW_LOCAL_ONLY, because
4489c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm     it's impossible to obtain the address of the members in the
4589c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm     sigcontext structure.  */
4689c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm# undef UNW_LOCAL_ONLY
4789c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm# define UNW_GENERIC_ONLY
4889c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm#endif
4989c081cd846d49f6f9d467f94eac9c64b6fabecamostang.com!davidm
501f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm#define UNW_TARGET	ia64
5193daa3b08df88abd959e2318b2abff094413e9d5mostang.com!davidm#define UNW_TARGET_IA64	1
521f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm
539df94711bf2f5d3ed6664edd97bdb504399b1ca0mostang.com!davidm#define _U_TDEP_QP_TRUE	0	/* see libunwind-dynamic.h  */
549df94711bf2f5d3ed6664edd97bdb504399b1ca0mostang.com!davidm
55b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm/* This needs to be big enough to accommodate "struct cursor", while
56b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm   leaving some slack for future expansion.  Changing this value will
57b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm   require recompiling all users of this library.  Stack allocation is
58b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm   relatively cheap and unwind-state copying is relatively rare, so we
59b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm   want to err on making it rather too big than too small.  */
60b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm#define UNW_TDEP_CURSOR_LEN	511
61b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm
62b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm/* If this bit is it indicates that the procedure saved all of ar.bsp,
63b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm   ar.bspstore, and ar.rnat.  If, additionally, ar.bsp != saved ar.bsp,
64b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm   then this procedure has performed a register-backing-store switch.  */
65b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm#define UNW_PI_FLAG_IA64_RBS_SWITCH_BIT	(UNW_PI_FLAG_FIRST_TDEP_BIT + 0)
66b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm
67b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm#define UNW_PI_FLAG_IA64_RBS_SWITCH	(1 << UNW_PI_FLAG_IA64_RBS_SWITCH_BIT)
68b5fe317cc85781d11fba59e2a13dd59d5c73e95emostang.com!davidm
6977b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidmtypedef uint64_t unw_word_t;
7011ea1275bd188ea48f5d834ca504f8d84d751983Arun Sharmatypedef int64_t unw_sword_t;
71cd66944a2c0f6e897e28af64e778973c60dd329d(none)!davidm
728c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm/* On IA-64, we want to access the contents of floating-point
738c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm   registers as a pair of "words", but to ensure 16-byte alignment, we
748c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm   make it a union that contains a "long double".  This will do the
758c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm   Right Thing on all known IA-64 platforms, including HP-UX.  */
768c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidmtypedef union
778c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm  {
7877b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidm    struct { unw_word_t bits[2]; } raw;
798c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm    long double dummy;	/* dummy to force 16-byte alignment */
808c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm  }
818c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidmunw_tdep_fpreg_t;
828c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm
8377b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidmtypedef struct
8477b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidm  {
8577b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidm    /* no ia64-specific auxiliary proc-info */
8677b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidm  }
8777b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidmunw_tdep_proc_info_t;
8877b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidm
897fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidmtypedef enum
907fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm  {
917fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    /* Note: general registers are excepted to start with index 0.
927fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm       This convention facilitates architecture-independent
937fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm       implementation of the C++ exception handling ABI.  See
947fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm       _Unwind_SetGR() and _Unwind_GetGR() for details.  */
957fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    UNW_IA64_GR = 0,			/* general registers (r0..r127) */
967fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_GP = UNW_IA64_GR + 1,
977fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_TP = UNW_IA64_GR + 13,
987fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
997fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    UNW_IA64_NAT = UNW_IA64_GR + 128,	/* NaT registers (nat0..nat127) */
1007fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
1017fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    UNW_IA64_FR = UNW_IA64_NAT + 128,	/* fp registers (f0..f127) */
1027fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
1037fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    UNW_IA64_AR = UNW_IA64_FR + 128,	/* application registers (ar0..r127) */
1047fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_RSC = UNW_IA64_AR + 16,
1057fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_BSP = UNW_IA64_AR + 17,
1067fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_BSPSTORE = UNW_IA64_AR + 18,
1077fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_RNAT = UNW_IA64_AR + 19,
108644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm     UNW_IA64_AR_CSD = UNW_IA64_AR + 25,
109644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm     UNW_IA64_AR_26 = UNW_IA64_AR + 26,
11018626b8def9998164faf369edfdc03865785ffe7hp.com!davidm     UNW_IA64_AR_SSD = UNW_IA64_AR_26,
1117fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_CCV = UNW_IA64_AR + 32,
1127fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_UNAT = UNW_IA64_AR + 36,
1137fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_FPSR = UNW_IA64_AR + 40,
1147fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_PFS = UNW_IA64_AR + 64,
1157fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_LC = UNW_IA64_AR + 65,
1167fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm     UNW_IA64_AR_EC = UNW_IA64_AR + 66,
1177fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
1187fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    UNW_IA64_BR = UNW_IA64_AR + 128,	/* branch registers (b0..p7) */
1199df94711bf2f5d3ed6664edd97bdb504399b1ca0mostang.com!davidm      UNW_IA64_RP = UNW_IA64_BR + 0,	/* return pointer (rp) */
1207fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    UNW_IA64_PR = UNW_IA64_BR + 8,	/* predicate registers (p0..p63) */
1217fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm    UNW_IA64_CFM,
1227fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
123b47b9aa232a2b127a4fa8abe68c5272adf3e4cf5hp.com!davidm    /* frame info: */
12499639fb162e8ed476b1d572d18404791a406e3ecmostang.com!davidm    UNW_IA64_BSP,
125cd66944a2c0f6e897e28af64e778973c60dd329d(none)!davidm    UNW_IA64_IP,
126cd66944a2c0f6e897e28af64e778973c60dd329d(none)!davidm    UNW_IA64_SP,
127cd66944a2c0f6e897e28af64e778973c60dd329d(none)!davidm
128b1c1f146cc00b2fb3ae7791a52eb1043689f897fmostang.com!davidm    UNW_TDEP_LAST_REG = UNW_IA64_SP,
129cd66944a2c0f6e897e28af64e778973c60dd329d(none)!davidm
130cd66944a2c0f6e897e28af64e778973c60dd329d(none)!davidm    UNW_TDEP_IP = UNW_IA64_IP,
1318c2740cfe324131373afa75fec4abb3fd9d44e24mostang.com!davidm    UNW_TDEP_SP = UNW_IA64_SP,
132a6e367131b3d0cff995f7bc6decb9d08433d8cbdmostang.com!davidm    UNW_TDEP_EH = UNW_IA64_GR + 15
1337fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm  }
1347fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidmia64_regnum_t;
1357fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
136a6e367131b3d0cff995f7bc6decb9d08433d8cbdmostang.com!davidm#define UNW_TDEP_NUM_EH_REGS	4	/* r15-r18 are exception args */
137a6e367131b3d0cff995f7bc6decb9d08433d8cbdmostang.com!davidm
138f1d10c0fb34f593a0c546c40fc1a740cdb1cae46hp.com!davidmtypedef struct unw_tdep_save_loc
139f1d10c0fb34f593a0c546c40fc1a740cdb1cae46hp.com!davidm  {
140f1d10c0fb34f593a0c546c40fc1a740cdb1cae46hp.com!davidm    /* Additional target-dependent info on a save location.  On IA-64,
1411c00cf562e8c328dad84fbfe24c11f431951bafdmostang.com!davidm       we use this to provide the bit number in which a NaT bit gets
1421c00cf562e8c328dad84fbfe24c11f431951bafdmostang.com!davidm       saved.  */
1431c00cf562e8c328dad84fbfe24c11f431951bafdmostang.com!davidm    uint8_t nat_bitnr;
1441c00cf562e8c328dad84fbfe24c11f431951bafdmostang.com!davidm
1451c00cf562e8c328dad84fbfe24c11f431951bafdmostang.com!davidm    /* Padding reserved for future use.  */
1461c00cf562e8c328dad84fbfe24c11f431951bafdmostang.com!davidm    uint8_t reserved[7];
147f1d10c0fb34f593a0c546c40fc1a740cdb1cae46hp.com!davidm  }
148f1d10c0fb34f593a0c546c40fc1a740cdb1cae46hp.com!davidmunw_tdep_save_loc_t;
149f1d10c0fb34f593a0c546c40fc1a740cdb1cae46hp.com!davidm
1507fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm/* On IA-64, we can directly use ucontext_t as the unwind context.  */
1517fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidmtypedef ucontext_t unw_tdep_context_t;
1527fbfe0a255eb7ff3f27efa5adc6ed69dab471ecfmostang.com!davidm
1535c6360b856e53436acf1833d8e192dbf69843a6dmostang.com!davidm#define unw_tdep_is_fpreg(r)		((unsigned) ((r) - UNW_IA64_FR) < 128)
1541f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm
15577b06d67aa7fba8fdd6935f8dd79035b54bc10a4hp.com!davidm#include "libunwind-dynamic.h"
1561f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm#include "libunwind-common.h"
1571f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm
158ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm#ifdef __hpux
159ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm  /* In theory, we could use _Uia64_getcontext() on HP-UX as well, but
160ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm     the benefit of doing so would be marginal given that it can't
161ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm     support UNW_LOCAL_ONLY.  */
162ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm# define unw_tdep_getcontext		getcontext
163ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm#else
164ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm# define unw_tdep_getcontext		UNW_ARCH_OBJ (getcontext)
165ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm  extern int unw_tdep_getcontext (unw_tdep_context_t *);
166ad6f2319b966f0464c0651e9a5d459570d500988mostang.com!davidm#endif
167a1ce4c307e9a6cc98404eca9500c8cc10e812273mostang.com!davidm
168644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm/* This is a helper routine to search an ia64 unwind table.  If the
169644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm   address-space argument AS points to something other than the local
170644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm   address-space, the memory for the unwind-info will be allocated
171644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm   with malloc(), and should be free()d during the put_unwind_info()
172644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm   callback.  This routine is signal-safe for the local-address-space
173644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm   case ONLY.  */
1747915b799c8f9034502dd40234f951d41ada84848mostang.com!davidm#define unw_search_ia64_unwind_table	UNW_OBJ(search_unwind_table)
1757915b799c8f9034502dd40234f951d41ada84848mostang.com!davidmextern int unw_search_ia64_unwind_table (unw_addr_space_t, unw_word_t,
1767915b799c8f9034502dd40234f951d41ada84848mostang.com!davidm					 unw_dyn_info_t *, unw_proc_info_t *,
1777915b799c8f9034502dd40234f951d41ada84848mostang.com!davidm					 int, void *);
178644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm
1791c8ee38936b364114cd13660221fc4dfba94c274mostang.com!davidm/* This is a helper routine which the get_dyn_info_list_addr()
1801c8ee38936b364114cd13660221fc4dfba94c274mostang.com!davidm   callback can use to locate the special dynamic-info list entry in
1811c8ee38936b364114cd13660221fc4dfba94c274mostang.com!davidm   an IA-64 unwind table.  If the entry exists in the table, the
1821c8ee38936b364114cd13660221fc4dfba94c274mostang.com!davidm   list-address is returned.  In all other cases, 0 is returned.  */
1837915b799c8f9034502dd40234f951d41ada84848mostang.com!davidmextern unw_word_t _Uia64_find_dyn_list (unw_addr_space_t, unw_dyn_info_t *,
1847915b799c8f9034502dd40234f951d41ada84848mostang.com!davidm					void *);
185644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm
186644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm/* This is a helper routine to obtain the kernel-unwind info.  It is
187644c9193453c17afe4187ad5a0310b1d7481eeafhp.com!davidm   signal-safe.  */
1887915b799c8f9034502dd40234f951d41ada84848mostang.com!davidmextern int _Uia64_get_kernel_table (unw_dyn_info_t *);
1891c8ee38936b364114cd13660221fc4dfba94c274mostang.com!davidm
190337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidm#if defined(__cplusplus) || defined(c_plusplus)
191337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidm}
192337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidm#endif
193337c0ad98914f06256358ad887f53062cdedd141mostang.com!davidm
1941f3b87ad500cb34e4a4a4ac298267cb73ad47c1ehp.com!davidm#endif /* LIBUNWIND_H */
195