1From ff95fda912df85087fcc3159a9f2fb662401c531 Mon Sep 17 00:00:00 2001 2From: cs1111 <chenshi51@huawei.com> 3Date: Thu, 2 Jan 2025 16:33:48 +0800 4Subject: [PATCH] ohos-configure 5 6Signed-off-by: cs1111 <chenshi51@huawei.com> 7--- 8 include/config.h | 235 +++++++++++++++++++++++++++++ 9 include/libunwind-common.h | 292 +++++++++++++++++++++++++++++++++++++ 10 2 files changed, 527 insertions(+) 11 create mode 100644 include/config.h 12 create mode 100644 include/libunwind-common.h 13 14diff --git a/include/config.h b/include/config.h 15new file mode 100644 16index 00000000..816b017f 17--- /dev/null 18+++ b/include/config.h 19@@ -0,0 +1,235 @@ 20+/* include/config.h. Generated from config.h.in by configure. */ 21+/* include/config.h.in. Generated from configure.ac by autoheader. */ 22+ 23+/* Block signals before mutex operations */ 24+/* #undef CONFIG_BLOCK_SIGNALS */ 25+ 26+/* Enable Debug Frame */ 27+/* #undef CONFIG_DEBUG_FRAME */ 28+ 29+/* Support for Microsoft ABI extensions */ 30+/* #undef CONFIG_MSABI_SUPPORT */ 31+ 32+/* Define to 1 if you want every memory access validated */ 33+#define CONSERVATIVE_CHECKS 1 34+ 35+/* Define to 1 if you have the <asm/ptrace_offsets.h> header file. */ 36+/* #undef HAVE_ASM_PTRACE_OFFSETS_H */ 37+ 38+/* Define to 1 if you have the <byteswap.h> header file. */ 39+#define HAVE_BYTESWAP_H 1 40+ 41+/* Define to 1 if you have the declaration of `PTRACE_CONT', and to 0 if you 42+ don't. */ 43+#define HAVE_DECL_PTRACE_CONT 1 44+ 45+/* Define to 1 if you have the declaration of `PTRACE_POKEDATA', and to 0 if 46+ you don't. */ 47+#define HAVE_DECL_PTRACE_POKEDATA 1 48+ 49+/* Define to 1 if you have the declaration of `PTRACE_POKEUSER', and to 0 if 50+ you don't. */ 51+#define HAVE_DECL_PTRACE_POKEUSER 1 52+ 53+/* Define to 1 if you have the declaration of `PTRACE_SETREGSET', and to 0 if 54+ you don't. */ 55+#define HAVE_DECL_PTRACE_SETREGSET 1 56+ 57+/* Define to 1 if you have the declaration of `PTRACE_SINGLESTEP', and to 0 if 58+ you don't. */ 59+#define HAVE_DECL_PTRACE_SINGLESTEP 1 60+ 61+/* Define to 1 if you have the declaration of `PTRACE_SYSCALL', and to 0 if 62+ you don't. */ 63+#define HAVE_DECL_PTRACE_SYSCALL 1 64+ 65+/* Define to 1 if you have the declaration of `PTRACE_TRACEME', and to 0 if 66+ you don't. */ 67+#define HAVE_DECL_PTRACE_TRACEME 1 68+ 69+/* Define to 1 if you have the declaration of `PT_CONTINUE', and to 0 if you 70+ don't. */ 71+#define HAVE_DECL_PT_CONTINUE 0 72+ 73+/* Define to 1 if you have the declaration of `PT_GETFPREGS', and to 0 if you 74+ don't. */ 75+#define HAVE_DECL_PT_GETFPREGS 1 76+ 77+/* Define to 1 if you have the declaration of `PT_GETREGS', and to 0 if you 78+ don't. */ 79+#define HAVE_DECL_PT_GETREGS 0 80+ 81+/* Define to 1 if you have the declaration of `PT_IO', and to 0 if you don't. 82+ */ 83+#define HAVE_DECL_PT_IO 0 84+ 85+/* Define to 1 if you have the declaration of `PT_STEP', and to 0 if you 86+ don't. */ 87+#define HAVE_DECL_PT_STEP 1 88+ 89+/* Define to 1 if you have the declaration of `PT_SYSCALL', and to 0 if you 90+ don't. */ 91+#define HAVE_DECL_PT_SYSCALL 1 92+ 93+/* Define to 1 if you have the declaration of `PT_TRACE_ME', and to 0 if you 94+ don't. */ 95+#define HAVE_DECL_PT_TRACE_ME 1 96+ 97+/* Define to 1 if you have the <dlfcn.h> header file. */ 98+#define HAVE_DLFCN_H 1 99+ 100+/* Define to 1 if you have the `dlmodinfo' function. */ 101+/* #undef HAVE_DLMODINFO */ 102+ 103+/* Define to 1 if you have the `dl_iterate_phdr' function. */ 104+#define HAVE_DL_ITERATE_PHDR 1 105+ 106+/* Define to 1 if you have the `dl_phdr_removals_counter' function. */ 107+/* #undef HAVE_DL_PHDR_REMOVALS_COUNTER */ 108+ 109+/* Define to 1 if you have the <elf.h> header file. */ 110+#define HAVE_ELF_H 1 111+ 112+/* Define to 1 if you have the <endian.h> header file. */ 113+#define HAVE_ENDIAN_H 1 114+ 115+/* Define to 1 if you have the <execinfo.h> header file. */ 116+/* #undef HAVE_EXECINFO_H */ 117+ 118+/* Define to 1 if you have the `getunwind' function. */ 119+/* #undef HAVE_GETUNWIND */ 120+ 121+/* Define to 1 if you have the <ia64intrin.h> header file. */ 122+/* #undef HAVE_IA64INTRIN_H */ 123+ 124+/* Define to 1 if you have the <inttypes.h> header file. */ 125+#define HAVE_INTTYPES_H 1 126+ 127+/* Define to 1 if you have the `uca' library (-luca). */ 128+/* #undef HAVE_LIBUCA */ 129+ 130+/* Define to 1 if you have the <link.h> header file. */ 131+#define HAVE_LINK_H 1 132+ 133+/* Define if you have liblzma */ 134+/* #undef HAVE_LZMA */ 135+ 136+/* Define to 1 if you have the <memory.h> header file. */ 137+#define HAVE_MEMORY_H 1 138+ 139+/* Define to 1 if you have the `mincore' function. */ 140+/* #undef HAVE_MINCORE */ 141+ 142+/* Define to 1 if you have the `pipe2' function. */ 143+#define HAVE_PIPE2 1 144+ 145+/* Define to 1 if you have the <signal.h> header file. */ 146+#define HAVE_SIGNAL_H 1 147+ 148+/* Define to 1 if you have the <stdint.h> header file. */ 149+#define HAVE_STDINT_H 1 150+ 151+/* Define to 1 if you have the <stdlib.h> header file. */ 152+#define HAVE_STDLIB_H 1 153+ 154+/* Define to 1 if you have the <strings.h> header file. */ 155+#define HAVE_STRINGS_H 1 156+ 157+/* Define to 1 if you have the <string.h> header file. */ 158+#define HAVE_STRING_H 1 159+ 160+/* Define to 1 if `dlpi_subs' is a member of `struct dl_phdr_info'. */ 161+/* #undef HAVE_STRUCT_DL_PHDR_INFO_DLPI_SUBS */ 162+ 163+/* Define to 1 if the system has the type `struct elf_prstatus'. */ 164+/* #undef HAVE_STRUCT_ELF_PRSTATUS */ 165+ 166+/* Define to 1 if the system has the type `struct prstatus'. */ 167+/* #undef HAVE_STRUCT_PRSTATUS */ 168+ 169+/* Define to 1 if you have the <sys/elf.h> header file. */ 170+/* #undef HAVE_SYS_ELF_H */ 171+ 172+/* Define to 1 if you have the <sys/endian.h> header file. */ 173+/* #undef HAVE_SYS_ENDIAN_H */ 174+ 175+/* Define to 1 if you have the <sys/link.h> header file. */ 176+/* #undef HAVE_SYS_LINK_H */ 177+ 178+/* Define to 1 if you have the <sys/procfs.h> header file. */ 179+/* #undef HAVE_SYS_PROCFS_H */ 180+ 181+/* Define to 1 if you have the <sys/ptrace.h> header file. */ 182+#define HAVE_SYS_PTRACE_H 1 183+ 184+/* Define to 1 if you have the <sys/stat.h> header file. */ 185+#define HAVE_SYS_STAT_H 1 186+ 187+/* Define to 1 if you have the <sys/syscall.h> header file. */ 188+#define HAVE_SYS_SYSCALL_H 1 189+ 190+/* Define to 1 if you have the <sys/types.h> header file. */ 191+#define HAVE_SYS_TYPES_H 1 192+ 193+/* Define to 1 if you have the <sys/uc_access.h> header file. */ 194+/* #undef HAVE_SYS_UC_ACCESS_H */ 195+ 196+/* Define to 1 if you have the `ttrace' function. */ 197+/* #undef HAVE_TTRACE */ 198+ 199+/* Define to 1 if you have the <unistd.h> header file. */ 200+#define HAVE_UNISTD_H 1 201+ 202+/* Defined if __builtin_unreachable() is available */ 203+#define HAVE__BUILTIN_UNREACHABLE 1 204+ 205+/* Defined if __builtin___clear_cache() is available */ 206+#define HAVE__BUILTIN___CLEAR_CACHE 1 207+ 208+/* Define to 1 if --enable-per-thread-cache */ 209+/* #undef HAVE___CACHE_PER_THREAD */ 210+ 211+/* Define to the sub-directory where libtool stores uninstalled libraries. */ 212+#define LT_OBJDIR ".libs/" 213+ 214+/* Name of package */ 215+#define PACKAGE "libunwind" 216+ 217+/* Define to the address where bug reports for this package should be sent. */ 218+#define PACKAGE_BUGREPORT "libunwind-devel@nongnu.org" 219+ 220+/* Define to the full name of this package. */ 221+#define PACKAGE_NAME "libunwind" 222+ 223+/* Define to the full name and version of this package. */ 224+#define PACKAGE_STRING "libunwind 1.6.2" 225+ 226+/* Define to the one symbol short name of this package. */ 227+#define PACKAGE_TARNAME "libunwind" 228+ 229+/* Define to the home page for this package. */ 230+#define PACKAGE_URL "" 231+ 232+/* Define to the version of this package. */ 233+#define PACKAGE_VERSION "1.6.2" 234+ 235+/* The size of `off_t', as computed by sizeof. */ 236+#define SIZEOF_OFF_T 8 237+ 238+/* Define to 1 if you have the ANSI C header files. */ 239+#define STDC_HEADERS 1 240+ 241+/* Version number of package */ 242+#define VERSION "1.6.2" 243+ 244+/* Define to empty if `const' does not conform to ANSI C. */ 245+/* #undef const */ 246+ 247+/* Define to `__inline__' or `__inline' if that's what the C compiler 248+ calls it, or to nothing if 'inline' is not supported under any name. */ 249+#ifndef __cplusplus 250+/* #undef inline */ 251+#endif 252+ 253+/* Define to `unsigned int' if <sys/types.h> does not define. */ 254+/* #undef size_t */ 255diff --git a/include/libunwind-common.h b/include/libunwind-common.h 256new file mode 100644 257index 00000000..9de37c1d 258--- /dev/null 259+++ b/include/libunwind-common.h 260@@ -0,0 +1,292 @@ 261+/* libunwind - a platform-independent unwind library 262+ Copyright (C) 2001-2004 Hewlett-Packard Co 263+ Contributed by David Mosberger-Tang <davidm@hpl.hp.com> 264+ 265+This file is part of libunwind. 266+ 267+Permission is hereby granted, free of charge, to any person obtaining 268+a copy of this software and associated documentation files (the 269+"Software"), to deal in the Software without restriction, including 270+without limitation the rights to use, copy, modify, merge, publish, 271+distribute, sublicense, and/or sell copies of the Software, and to 272+permit persons to whom the Software is furnished to do so, subject to 273+the following conditions: 274+ 275+The above copyright notice and this permission notice shall be 276+included in all copies or substantial portions of the Software. 277+ 278+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 279+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 280+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 281+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 282+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 283+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 284+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 285+ 286+#define UNW_VERSION_MAJOR 1 287+#define UNW_VERSION_MINOR 6 288+#define UNW_VERSION_EXTRA 2 289+ 290+#define UNW_VERSION_CODE(maj,min) (((maj) << 16) | (min)) 291+#define UNW_VERSION UNW_VERSION_CODE(UNW_VERSION_MAJOR, UNW_VERSION_MINOR) 292+ 293+#ifdef __sun 294+// On SmartOS, gcc fails with the following error: 295+// 296+// ../include/libunwind-common.h:43:41: error: expected identifier or '(' before numeric constant 297+// # define UNW_PREFIX UNW_PASTE(UNW_PASTE(_U,UNW_TARGET),_) 298+// ^ 299+// 300+// workaround is to undefine _U explicitly. 301+// see https://github.com/libunwind/libunwind/issues/118 for more details. 302+// 303+#undef _U 304+#endif 305+ 306+#define UNW_PASTE2(x,y) x##y 307+#define UNW_PASTE(x,y) UNW_PASTE2(x,y) 308+#define UNW_OBJ(fn) UNW_PASTE(UNW_PREFIX, fn) 309+#define UNW_ARCH_OBJ(fn) UNW_PASTE(UNW_PASTE(UNW_PASTE(_U,UNW_TARGET),_), fn) 310+ 311+#ifdef UNW_LOCAL_ONLY 312+# define UNW_PREFIX UNW_PASTE(UNW_PASTE(_UL,UNW_TARGET),_) 313+#else /* !UNW_LOCAL_ONLY */ 314+# define UNW_PREFIX UNW_PASTE(UNW_PASTE(_U,UNW_TARGET),_) 315+#endif /* !UNW_LOCAL_ONLY */ 316+ 317+/* Error codes. The unwind routines return the *negated* values of 318+ these error codes on error and a non-negative value on success. */ 319+typedef enum 320+ { 321+ UNW_ESUCCESS = 0, /* no error */ 322+ UNW_EUNSPEC, /* unspecified (general) error */ 323+ UNW_ENOMEM, /* out of memory */ 324+ UNW_EBADREG, /* bad register number */ 325+ UNW_EREADONLYREG, /* attempt to write read-only register */ 326+ UNW_ESTOPUNWIND, /* stop unwinding */ 327+ UNW_EINVALIDIP, /* invalid IP */ 328+ UNW_EBADFRAME, /* bad frame */ 329+ UNW_EINVAL, /* unsupported operation or bad value */ 330+ UNW_EBADVERSION, /* unwind info has unsupported version */ 331+ UNW_ENOINFO /* no unwind info found */ 332+ } 333+unw_error_t; 334+ 335+/* The following enum defines the indices for a couple of 336+ (pseudo-)registers which have the same meaning across all 337+ platforms. (RO) means read-only. (RW) means read-write. General 338+ registers (aka "integer registers") are expected to start with 339+ index 0. The number of such registers is architecture-dependent. 340+ The remaining indices can be used as an architecture sees fit. The 341+ last valid register index is given by UNW_REG_LAST. */ 342+typedef enum 343+ { 344+ UNW_REG_IP = UNW_TDEP_IP, /* (rw) instruction pointer (pc) */ 345+ UNW_REG_SP = UNW_TDEP_SP, /* (ro) stack pointer */ 346+ UNW_REG_EH = UNW_TDEP_EH, /* (rw) exception-handling reg base */ 347+ UNW_REG_LAST = UNW_TDEP_LAST_REG 348+ } 349+unw_frame_regnum_t; 350+ 351+/* Number of exception-handler argument registers: */ 352+#define UNW_NUM_EH_REGS UNW_TDEP_NUM_EH_REGS 353+ 354+typedef enum 355+ { 356+ UNW_CACHE_NONE, /* no caching */ 357+ UNW_CACHE_GLOBAL, /* shared global cache */ 358+ UNW_CACHE_PER_THREAD /* per-thread caching */ 359+ } 360+unw_caching_policy_t; 361+ 362+typedef enum 363+ { 364+ UNW_INIT_SIGNAL_FRAME = 1, /* We know this is a signal frame */ 365+ } 366+unw_init_local2_flags_t; 367+ 368+typedef int unw_regnum_t; 369+ 370+/* The unwind cursor starts at the youngest (most deeply nested) frame 371+ and is used to track the frame state as the unwinder steps from 372+ frame to frame. It is safe to make (shallow) copies of variables 373+ of this type. */ 374+typedef struct unw_cursor 375+ { 376+ unw_word_t opaque[UNW_TDEP_CURSOR_LEN]; 377+ } 378+unw_cursor_t; 379+ 380+/* This type encapsulates the entire (preserved) machine-state. */ 381+typedef unw_tdep_context_t unw_context_t; 382+ 383+/* unw_getcontext() fills the unw_context_t pointed to by UC with the 384+ machine state as it exists at the call-site. For implementation 385+ reasons, this needs to be a target-dependent macro. It's easiest 386+ to think of unw_getcontext() as being identical to getcontext(). */ 387+#define unw_getcontext(uc) unw_tdep_getcontext(uc) 388+ 389+/* Return 1 if register number R is a floating-point register, zero 390+ otherwise. 391+ This routine is signal-safe. */ 392+#define unw_is_fpreg(r) unw_tdep_is_fpreg(r) 393+ 394+typedef unw_tdep_fpreg_t unw_fpreg_t; 395+ 396+typedef struct unw_addr_space *unw_addr_space_t; 397+ 398+/* Each target may define it's own set of flags, but bits 0-15 are 399+ reserved for general libunwind-use. */ 400+#define UNW_PI_FLAG_FIRST_TDEP_BIT 16 401+/* The information comes from a .debug_frame section. */ 402+#define UNW_PI_FLAG_DEBUG_FRAME 32 403+ 404+typedef struct unw_proc_info 405+ { 406+ unw_word_t start_ip; /* first IP covered by this procedure */ 407+ unw_word_t end_ip; /* first IP NOT covered by this procedure */ 408+#if defined(NEED_LAST_IP) 409+ unw_word_t last_ip; /* first IP that could begin another procedure */ 410+#endif 411+ unw_word_t lsda; /* address of lang.-spec. data area (if any) */ 412+ unw_word_t handler; /* optional personality routine */ 413+ unw_word_t gp; /* global-pointer value for this procedure */ 414+ unw_word_t flags; /* misc. flags */ 415+ 416+ int format; /* unwind-info format (arch-specific) */ 417+ int unwind_info_size; /* size of the information (if applicable) */ 418+ void *unwind_info; /* unwind-info (arch-specific) */ 419+ unw_tdep_proc_info_t extra; /* target-dependent auxiliary proc-info */ 420+ } 421+unw_proc_info_t; 422+ 423+typedef int (*unw_reg_states_callback)(void *token, 424+ void *reg_states_data, 425+ size_t reg_states_data_size, 426+ unw_word_t start_ip, unw_word_t end_ip); 427+ 428+/* These are backend callback routines that provide access to the 429+ state of a "remote" process. This can be used, for example, to 430+ unwind another process through the ptrace() interface. */ 431+typedef struct unw_accessors 432+ { 433+ /* Look up the unwind info associated with instruction-pointer IP. 434+ On success, the routine fills in the PROC_INFO structure. */ 435+ int (*find_proc_info) (unw_addr_space_t, unw_word_t, unw_proc_info_t *, 436+ int, void *); 437+ 438+ /* Release any resources (e.g., memory) that were allocated for 439+ the unwind info returned in by a previous call to 440+ find_proc_info() with NEED_UNWIND_INFO set to 1. */ 441+ void (*put_unwind_info) (unw_addr_space_t, unw_proc_info_t *, void *); 442+ 443+ /* Return the list-head of the dynamically registered unwind 444+ info. */ 445+ int (*get_dyn_info_list_addr) (unw_addr_space_t, unw_word_t *, void *); 446+ 447+ /* Access aligned word at address ADDR. The value is returned 448+ according to the endianness of the host (e.g., if the host is 449+ little-endian and the target is big-endian, access_mem() needs 450+ to byte-swap the value before returning it). */ 451+ int (*access_mem) (unw_addr_space_t, unw_word_t, unw_word_t *, int, 452+ void *); 453+ 454+ /* Access register number REG at address ADDR. */ 455+ int (*access_reg) (unw_addr_space_t, unw_regnum_t, unw_word_t *, int, 456+ void *); 457+ 458+ /* Access register number REG at address ADDR. */ 459+ int (*access_fpreg) (unw_addr_space_t, unw_regnum_t, 460+ unw_fpreg_t *, int, void *); 461+ 462+ int (*resume) (unw_addr_space_t, unw_cursor_t *, void *); 463+ 464+ /* Optional call back to obtain the name of a (static) procedure. 465+ Dynamically generated procedures are handled automatically by 466+ libunwind. This callback is optional and may be set to 467+ NULL. */ 468+ int (*get_proc_name) (unw_addr_space_t, unw_word_t, char *, size_t, 469+ unw_word_t *, void *); 470+ } 471+unw_accessors_t; 472+ 473+typedef enum unw_save_loc_type 474+ { 475+ UNW_SLT_NONE, /* register is not saved ("not an l-value") */ 476+ UNW_SLT_MEMORY, /* register has been saved in memory */ 477+ UNW_SLT_REG /* register has been saved in (another) register */ 478+ } 479+unw_save_loc_type_t; 480+ 481+typedef struct unw_save_loc 482+ { 483+ unw_save_loc_type_t type; 484+ union 485+ { 486+ unw_word_t addr; /* valid if type==UNW_SLT_MEMORY */ 487+ unw_regnum_t regnum; /* valid if type==UNW_SLT_REG */ 488+ } 489+ u; 490+ unw_tdep_save_loc_t extra; /* target-dependent additional information */ 491+ } 492+unw_save_loc_t; 493+ 494+/* These routines work both for local and remote unwinding. */ 495+ 496+#define unw_local_addr_space UNW_OBJ(local_addr_space) 497+#define unw_create_addr_space UNW_OBJ(create_addr_space) 498+#define unw_destroy_addr_space UNW_OBJ(destroy_addr_space) 499+#define unw_get_accessors UNW_ARCH_OBJ(get_accessors) 500+#define unw_get_accessors_int UNW_ARCH_OBJ(get_accessors_int) 501+#define unw_init_local UNW_OBJ(init_local) 502+#define unw_init_local2 UNW_OBJ(init_local2) 503+#define unw_init_remote UNW_OBJ(init_remote) 504+#define unw_step UNW_OBJ(step) 505+#define unw_resume UNW_OBJ(resume) 506+#define unw_get_proc_info UNW_OBJ(get_proc_info) 507+#define unw_get_proc_info_by_ip UNW_OBJ(get_proc_info_by_ip) 508+#define unw_reg_states_iterate UNW_OBJ(reg_states_iterate) 509+#define unw_apply_reg_state UNW_OBJ(apply_reg_state) 510+#define unw_get_reg UNW_OBJ(get_reg) 511+#define unw_set_reg UNW_OBJ(set_reg) 512+#define unw_get_fpreg UNW_OBJ(get_fpreg) 513+#define unw_set_fpreg UNW_OBJ(set_fpreg) 514+#define unw_get_save_loc UNW_OBJ(get_save_loc) 515+#define unw_is_signal_frame UNW_OBJ(is_signal_frame) 516+#define unw_get_proc_name UNW_OBJ(get_proc_name) 517+#define unw_set_caching_policy UNW_OBJ(set_caching_policy) 518+#define unw_set_cache_size UNW_OBJ(set_cache_size) 519+#define unw_regname UNW_ARCH_OBJ(regname) 520+#define unw_flush_cache UNW_ARCH_OBJ(flush_cache) 521+#define unw_strerror UNW_ARCH_OBJ(strerror) 522+ 523+extern unw_addr_space_t unw_create_addr_space (unw_accessors_t *, int); 524+extern void unw_destroy_addr_space (unw_addr_space_t); 525+extern unw_accessors_t *unw_get_accessors (unw_addr_space_t); 526+extern unw_accessors_t *unw_get_accessors_int (unw_addr_space_t); 527+extern void unw_flush_cache (unw_addr_space_t, unw_word_t, unw_word_t); 528+extern int unw_set_caching_policy (unw_addr_space_t, unw_caching_policy_t); 529+extern int unw_set_cache_size (unw_addr_space_t, size_t, int); 530+extern const char *unw_regname (unw_regnum_t); 531+ 532+extern int unw_init_local (unw_cursor_t *, unw_context_t *); 533+extern int unw_init_local2 (unw_cursor_t *, unw_context_t *, int); 534+extern int unw_init_remote (unw_cursor_t *, unw_addr_space_t, void *); 535+extern int unw_step (unw_cursor_t *); 536+extern int unw_resume (unw_cursor_t *); 537+extern int unw_get_proc_info (unw_cursor_t *, unw_proc_info_t *); 538+extern int unw_get_proc_info_by_ip (unw_addr_space_t, unw_word_t, 539+ unw_proc_info_t *, void *); 540+extern int unw_reg_states_iterate (unw_cursor_t *, unw_reg_states_callback, void *); 541+extern int unw_apply_reg_state (unw_cursor_t *, void *); 542+extern int unw_get_reg (unw_cursor_t *, int, unw_word_t *); 543+extern int unw_set_reg (unw_cursor_t *, int, unw_word_t); 544+extern int unw_get_fpreg (unw_cursor_t *, int, unw_fpreg_t *); 545+extern int unw_set_fpreg (unw_cursor_t *, int, unw_fpreg_t); 546+extern int unw_get_save_loc (unw_cursor_t *, int, unw_save_loc_t *); 547+extern int unw_is_signal_frame (unw_cursor_t *); 548+extern int unw_get_proc_name (unw_cursor_t *, char *, size_t, unw_word_t *); 549+extern const char *unw_strerror (int); 550+extern int unw_backtrace (void **, int); 551+ 552+extern unw_addr_space_t unw_local_addr_space; 553-- 5542.34.1 555 556