diff options
author | dfr <dfr@FreeBSD.org> | 2001-10-29 12:04:23 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2001-10-29 12:04:23 +0000 |
commit | 19a2ddc6e324b8f562037edb5a5bdbb1e885adf8 (patch) | |
tree | f6b7b575cc4479a23538627864c10192b9bd1485 /sys/ia64/include | |
parent | 53c1fbf1060e42c85190bbb679f613e63df1fead (diff) | |
download | FreeBSD-src-19a2ddc6e324b8f562037edb5a5bdbb1e885adf8.zip FreeBSD-src-19a2ddc6e324b8f562037edb5a5bdbb1e885adf8.tar.gz |
* Factor out common code for manipulating the RSE backing store.
* Implement a fairly simplistic parser for unwinding stack frames.
* Use unwind records for DDB's 'trace' command. Also add support for
tracing past exceptions to the context which generated the exception.
The stack unwind code requires a toolchain based on binutils-2.11.2 or
later and gcc-3.0.1 or later.
Diffstat (limited to 'sys/ia64/include')
-rw-r--r-- | sys/ia64/include/rse.h | 35 | ||||
-rw-r--r-- | sys/ia64/include/unwind.h | 41 |
2 files changed, 76 insertions, 0 deletions
diff --git a/sys/ia64/include/rse.h b/sys/ia64/include/rse.h new file mode 100644 index 0000000..fabebb5 --- /dev/null +++ b/sys/ia64/include/rse.h @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2001 Doug Rabson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MACHINE_RSE_H_ +#define _MACHINE_RSE_H_ + +u_int64_t *ia64_rse_register_address(u_int64_t *bsp, int regno); +u_int64_t *ia64_rse_previous_frame(u_int64_t *bsp, int size); + +#endif /* _MACHINE_RSE_H_ */ diff --git a/sys/ia64/include/unwind.h b/sys/ia64/include/unwind.h new file mode 100644 index 0000000..cc00b61 --- /dev/null +++ b/sys/ia64/include/unwind.h @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2001 Doug Rabson + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +struct ia64_unwind_table; + +struct ia64_unwind_table *ia64_add_unwind_table(u_int64_t *base, + u_int64_t *start, + u_int64_t *end); +void ia64_free_unwind_table(struct ia64_unwind_table *ut); +struct ia64_unwind_state *ia64_create_unwind_state(struct trapframe *framep); +void ia64_free_unwind_state(struct ia64_unwind_state *us); +u_int64_t ia64_unwind_state_get_ip(struct ia64_unwind_state *us); +u_int64_t ia64_unwind_state_get_sp(struct ia64_unwind_state *us); +u_int64_t ia64_unwind_state_get_cfm(struct ia64_unwind_state *us); +u_int64_t *ia64_unwind_state_get_bsp(struct ia64_unwind_state *us); +int ia64_unwind_state_previous_frame(struct ia64_unwind_state *us); |