1d4e76214Sopenharmony_ci/* libunwind - a platform-independent unwind library
2d4e76214Sopenharmony_ci   Copyright (C) 2004 Hewlett-Packard Co
3d4e76214Sopenharmony_ci	Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
4d4e76214Sopenharmony_ci
5d4e76214Sopenharmony_ciThis file is part of libunwind.
6d4e76214Sopenharmony_ci
7d4e76214Sopenharmony_ciCopyright (c) 2003 Hewlett-Packard Co.
8d4e76214Sopenharmony_ci
9d4e76214Sopenharmony_ciPermission is hereby granted, free of charge, to any person obtaining
10d4e76214Sopenharmony_cia copy of this software and associated documentation files (the
11d4e76214Sopenharmony_ci"Software"), to deal in the Software without restriction, including
12d4e76214Sopenharmony_ciwithout limitation the rights to use, copy, modify, merge, publish,
13d4e76214Sopenharmony_cidistribute, sublicense, and/or sell copies of the Software, and to
14d4e76214Sopenharmony_cipermit persons to whom the Software is furnished to do so, subject to
15d4e76214Sopenharmony_cithe following conditions:
16d4e76214Sopenharmony_ci
17d4e76214Sopenharmony_ciThe above copyright notice and this permission notice shall be
18d4e76214Sopenharmony_ciincluded in all copies or substantial portions of the Software.
19d4e76214Sopenharmony_ci
20d4e76214Sopenharmony_ciTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21d4e76214Sopenharmony_ciEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22d4e76214Sopenharmony_ciMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23d4e76214Sopenharmony_ciNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24d4e76214Sopenharmony_ciLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25d4e76214Sopenharmony_ciOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26d4e76214Sopenharmony_ciWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
27d4e76214Sopenharmony_ci
28d4e76214Sopenharmony_ci#include <stdio.h>
29d4e76214Sopenharmony_ci
30d4e76214Sopenharmony_ci#include <libunwind.h>
31d4e76214Sopenharmony_ci
32d4e76214Sopenharmony_ciextern int verbose;
33d4e76214Sopenharmony_ci
34d4e76214Sopenharmony_cistatic void *funcs[] =
35d4e76214Sopenharmony_ci  {
36d4e76214Sopenharmony_ci    (void *) &unw_get_reg,
37d4e76214Sopenharmony_ci    (void *) &unw_get_fpreg,
38d4e76214Sopenharmony_ci    (void *) &unw_set_reg,
39d4e76214Sopenharmony_ci    (void *) &unw_set_fpreg,
40d4e76214Sopenharmony_ci    (void *) &unw_resume,
41d4e76214Sopenharmony_ci    (void *) &unw_create_addr_space,
42d4e76214Sopenharmony_ci    (void *) &unw_destroy_addr_space,
43d4e76214Sopenharmony_ci    (void *) &unw_get_accessors,
44d4e76214Sopenharmony_ci    (void *) &unw_flush_cache,
45d4e76214Sopenharmony_ci    (void *) &unw_set_caching_policy,
46d4e76214Sopenharmony_ci    (void *) &unw_set_cache_size,
47d4e76214Sopenharmony_ci    (void *) &unw_regname,
48d4e76214Sopenharmony_ci    (void *) &unw_get_proc_info,
49d4e76214Sopenharmony_ci    (void *) &unw_get_save_loc,
50d4e76214Sopenharmony_ci    (void *) &unw_is_signal_frame,
51d4e76214Sopenharmony_ci    (void *) &unw_get_proc_name
52d4e76214Sopenharmony_ci  };
53d4e76214Sopenharmony_ci
54d4e76214Sopenharmony_ciint
55d4e76214Sopenharmony_citest_generic (void)
56d4e76214Sopenharmony_ci{
57d4e76214Sopenharmony_ci  if (verbose)
58d4e76214Sopenharmony_ci    printf (__FILE__": funcs[0]=%p\n", funcs[0]);
59d4e76214Sopenharmony_ci
60d4e76214Sopenharmony_ci#ifndef UNW_REMOTE_ONLY
61d4e76214Sopenharmony_ci  {
62d4e76214Sopenharmony_ci    unw_context_t uc;
63d4e76214Sopenharmony_ci    unw_cursor_t c;
64d4e76214Sopenharmony_ci
65d4e76214Sopenharmony_ci    unw_getcontext (&uc);
66d4e76214Sopenharmony_ci    unw_init_local (&c, &uc);
67d4e76214Sopenharmony_ci    unw_init_remote (&c, unw_local_addr_space, &uc);
68d4e76214Sopenharmony_ci
69d4e76214Sopenharmony_ci    return unw_step (&c);
70d4e76214Sopenharmony_ci  }
71d4e76214Sopenharmony_ci#else
72d4e76214Sopenharmony_ci  return 0;
73d4e76214Sopenharmony_ci#endif
74d4e76214Sopenharmony_ci}
75