• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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