1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-22 15:47:37 +01:00

(get_accessors): Make it an arch-obj.

(flush_cache): Ditto.
(set_caching_policy): Ditto.
(regname): Ditto.

(Logical change 1.32)
This commit is contained in:
mostang.com!davidm 2002-12-19 07:16:50 +00:00
parent 93daa3b08d
commit 20a6c1adf1

View file

@ -28,6 +28,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
#define UNW_OBJ(fn) UNW_PASTE(UNW_PREFIX, fn) #define UNW_OBJ(fn) UNW_PASTE(UNW_PREFIX, fn)
#define UNW_ARCH_OBJ(fn) UNW_PASTE(UNW_PASTE(UNW_PASTE(_U,UNW_TARGET),_), fn) #define UNW_ARCH_OBJ(fn) UNW_PASTE(UNW_PASTE(UNW_PASTE(_U,UNW_TARGET),_), fn)
#ifdef UNW_LOCAL_ONLY #ifdef UNW_LOCAL_ONLY
# define UNW_PREFIX UNW_PASTE(UNW_PASTE(_UL,UNW_TARGET),_) # define UNW_PREFIX UNW_PASTE(UNW_PASTE(_UL,UNW_TARGET),_)
#else /* !UNW_LOCAL_ONLY */ #else /* !UNW_LOCAL_ONLY */
@ -205,8 +206,14 @@ extern unw_addr_space_t UNW_OBJ(local_addr_space);
extern unw_addr_space_t UNW_OBJ(create_addr_space) (unw_accessors_t *a, extern unw_addr_space_t UNW_OBJ(create_addr_space) (unw_accessors_t *a,
int byte_order); int byte_order);
extern unw_accessors_t *UNW_OBJ(get_accessors) (unw_addr_space_t as);
extern void UNW_OBJ(destroy_addr_space) (unw_addr_space_t as); extern void UNW_OBJ(destroy_addr_space) (unw_addr_space_t as);
extern unw_accessors_t *UNW_ARCH_OBJ(get_accessors) (unw_addr_space_t as);
extern void UNW_ARCH_OBJ(flush_cache)(unw_addr_space_t as,
unw_word_t lo, unw_word_t hi);
extern int UNW_ARCH_OBJ(set_caching_policy)(unw_addr_space_t as,
unw_caching_policy_t policy);
extern const char *UNW_ARCH_OBJ(regname) (int regnum);
extern int UNW_OBJ(init_local) (unw_cursor_t *c, ucontext_t *u); extern int UNW_OBJ(init_local) (unw_cursor_t *c, ucontext_t *u);
extern int UNW_OBJ(init_remote) (unw_cursor_t *c, unw_addr_space_t as, extern int UNW_OBJ(init_remote) (unw_cursor_t *c, unw_addr_space_t as,
void *as_arg); void *as_arg);
@ -221,11 +228,6 @@ extern int UNW_OBJ(get_save_loc) (unw_cursor_t *c, int regnum,
unw_save_loc_t *loc); unw_save_loc_t *loc);
extern int UNW_OBJ(is_signal_frame) (unw_cursor_t *c); extern int UNW_OBJ(is_signal_frame) (unw_cursor_t *c);
extern int UNW_OBJ(get_proc_name) (unw_cursor_t *c, char *buf, size_t buf_len); extern int UNW_OBJ(get_proc_name) (unw_cursor_t *c, char *buf, size_t buf_len);
extern const char *UNW_ARCH_OBJ(regname) (int regnum);
extern void UNW_OBJ(flush_cache)(unw_addr_space_t as,
unw_word_t lo, unw_word_t hi);
extern int UNW_OBJ(set_caching_policy)(unw_addr_space_t as,
unw_caching_policy_t policy);
#define unw_local_addr_space UNW_OBJ(local_addr_space) #define unw_local_addr_space UNW_OBJ(local_addr_space)
@ -239,65 +241,65 @@ extern int UNW_OBJ(set_caching_policy)(unw_addr_space_t as,
This routine is NOT signal-safe. */ This routine is NOT signal-safe. */
#define unw_create_addr_space(a,b) UNW_OBJ(create_addr_space)(a,b) #define unw_create_addr_space(a,b) UNW_OBJ(create_addr_space)(a,b)
/* Retrieve a pointer to the accessors structure associated with
address space AS.
This routine is signal-safe. */
#define unw_get_accessors(as) UNW_OBJ(get_accessors)(as)
/* Destroy an address space. /* Destroy an address space.
This routine is NOT signal-safe. */ This routine is NOT signal-safe. */
#define unw_destroy_addr_space(as) UNW_OBJ(destroy_addr_space)(as) #define unw_destroy_addr_space(as) UNW_OBJ(destroy_addr_space)(as)
/* Retrieve a pointer to the accessors structure associated with
address space AS.
This routine is signal-safe. */
#define unw_get_accessors(as) UNW_ARCH_OBJ(get_accessors)(as)
/* Initialize cursor C such that unwinding starts at the point /* Initialize cursor C such that unwinding starts at the point
represented by the context U. Returns zero on success, negative represented by the context U. Returns zero on success, negative
value on failure. value on failure.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_init_local(c,u) UNW_OBJ(init_local)(c, u) #define unw_init_local(c,u) UNW_OBJ(init_local)(c, u)
/* Initialize cursor C such that it accesses the unwind target through /* Initialize cursor C such that it accesses the unwind target through
accessors A. accessors A.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_init_remote(c,a,arg) UNW_OBJ(init_remote)(c, a, arg) #define unw_init_remote(c,a,arg) UNW_OBJ(init_remote)(c, a, arg)
/* Move cursor up by one step (up meaning toward earlier, less deeply /* Move cursor up by one step (up meaning toward earlier, less deeply
nested frames). Returns positive number if there are more frames nested frames). Returns positive number if there are more frames
to unwind, 0 if last frame has been reached, negative number in to unwind, 0 if last frame has been reached, negative number in
case of an error. case of an error.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_step(c) UNW_OBJ(step)(c) #define unw_step(c) UNW_OBJ(step)(c)
/* Resume execution at the point identified by the cursor. /* Resume execution at the point identified by the cursor.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_resume(c) UNW_OBJ(resume)(c) #define unw_resume(c) UNW_OBJ(resume)(c)
/* Return the proc-info associated with the cursor. /* Return the proc-info associated with the cursor.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_get_proc_info(c,p) UNW_OBJ(get_proc_info)(c,p) #define unw_get_proc_info(c,p) UNW_OBJ(get_proc_info)(c,p)
/* Register accessor routines. Return zero on success, negative value /* Register accessor routines. Return zero on success, negative value
on failure. on failure.
These routines are signal-safe. */ These routines are signal-safe. */
#define unw_get_reg(c,r,v) UNW_OBJ(get_reg)(c,r,v) #define unw_get_reg(c,r,v) UNW_OBJ(get_reg)(c,r,v)
#define unw_set_reg(c,r,v) UNW_OBJ(set_reg)(c,r,v) #define unw_set_reg(c,r,v) UNW_OBJ(set_reg)(c,r,v)
/* Floating-point accessor routines. Return zero on success, negative /* Floating-point accessor routines. Return zero on success, negative
value on failure. value on failure.
These routines are signal-safe. */ These routines are signal-safe. */
#define unw_get_fpreg(c,r,v) UNW_OBJ(get_fpreg)(c,r,v) #define unw_get_fpreg(c,r,v) UNW_OBJ(get_fpreg)(c,r,v)
#define unw_set_fpreg(c,r,v) UNW_OBJ(set_fpreg)(c,r,v) #define unw_set_fpreg(c,r,v) UNW_OBJ(set_fpreg)(c,r,v)
/* Get the save-location of register R. /* Get the save-location of register R.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_get_save_loc(c,r,l) UNW_OBJ(get_save_loc)(c,r,l) #define unw_get_save_loc(c,r,l) UNW_OBJ(get_save_loc)(c,r,l)
/* Return 1 if register number R is a floating-point register, zero /* Return 1 if register number R is a floating-point register, zero
otherwise. otherwise.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_is_fpreg(r) unw_tdep_is_fpreg(r) #define unw_is_fpreg(r) unw_tdep_is_fpreg(r)
/* Returns non-zero value if the cursor points to a signal frame. /* Returns non-zero value if the cursor points to a signal frame.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_is_signal_frame(c) UNW_OBJ(is_signal_frame)(c) #define unw_is_signal_frame(c) UNW_OBJ(is_signal_frame)(c)
/* Return the name of the procedure that created the frame identified /* Return the name of the procedure that created the frame identified
by the cursor. The returned string is ASCII NUL terminated. If the by the cursor. The returned string is ASCII NUL terminated. If the
@ -312,7 +314,7 @@ extern int UNW_OBJ(set_caching_policy)(unw_addr_space_t as,
this one is re-entrant (i.e., the returned string must be a string this one is re-entrant (i.e., the returned string must be a string
constant. constant.
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_regname(r) UNW_ARCH_OBJ(regname)(r) #define unw_regname(r) UNW_ARCH_OBJ(regname)(r)
/* Sets the caching policy of address space AS. Caching can be /* Sets the caching policy of address space AS. Caching can be
disabled completely by setting the policy to UNW_CACHE_NONE. With disabled completely by setting the policy to UNW_CACHE_NONE. With
@ -321,7 +323,7 @@ extern int UNW_OBJ(set_caching_policy)(unw_addr_space_t as,
cache, which can improve performance thanks to less locking and cache, which can improve performance thanks to less locking and
better locality. By default, UNW_CACHE_GLOBAL is in effect. better locality. By default, UNW_CACHE_GLOBAL is in effect.
This routine is NOT signal-safe. */ This routine is NOT signal-safe. */
#define unw_set_caching_policy(as, p) UNW_OBJ(set_caching_policy)(as, p) #define unw_set_caching_policy(as, p) UNW_ARCH_OBJ(set_caching_policy)(as, p)
/* Flush all caches (global, per-thread, or any other caches that /* Flush all caches (global, per-thread, or any other caches that
might exist) in address-space AS of information at least relating might exist) in address-space AS of information at least relating
@ -333,4 +335,4 @@ extern int UNW_OBJ(set_caching_policy)(unw_addr_space_t as,
changed (e.g., because a library might have been removed via a call changed (e.g., because a library might have been removed via a call
to dlclose()). to dlclose()).
This routine is signal-safe. */ This routine is signal-safe. */
#define unw_flush_cache(as,lo,hi) UNW_OBJ(flush_cache)(as, lo, hi) #define unw_flush_cache(as,lo,hi) UNW_ARCH_OBJ(flush_cache)(as, lo, hi)