1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-12-27 21:43:42 +01:00
Commit graph

1712 commits

Author SHA1 Message Date
mostang.com!davidm
9a2039fe01 Protect against multiple inclusion. Define IA64_UNW_DEBUG based on DEBUG. Document
that in the UNW_LOCAL_ONLY-case, bit 2 in register save locations is unused.  If
UNW_LOCAL_ONLY is defined, define stream-lined versions of IA64_REG_LOC(),
IA64_FPREG_LOC(), ia64_acquire_unwind_info(), ia64_release_unwind_info(), ia64_get(),
ia64_put(), ia64_getfp(), and ia64_putfp().  Drop convenience macros and declarations for
ia64_glibc_{acquire,release}_unwind_info().  Add convenience macro and declaration for
ia64_local_resume().

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
59f4f0d4c1 Move sharable stuff into shared.c.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
0c897ad858 Make this file sharable by using exported names that do not depend on UNW_LOCAL_ONLY.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
3083f40842 Initial revision 2002-02-28 16:24:48 +00:00
mostang.com!davidm
78a71343b5 Enable building of local-only version of the code. Applications get this version
by defining UNW_LOCAL_ONLY before including <libunwind.h>.

BKrev: 3c7e59d0_BxB6JTA5slt2sbN5jkx8Q
2002-02-28 16:24:48 +00:00
mostang.com!davidm
97ae3ba79a Define UNW_LOCAL_ONLY before including libunwind.h.
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
ede7c575f9 Adjust for fact that IA64_REG_LOC now takes two arguments.
Special case access of NaT bits.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
f6cd0daa97 Added src/ia64/Linit.c~ src/ia64/Lscript.c~ src/ia64/Lregs.c~ src/ia64/Lparser.c~ src/ia64/Lunw_get_reg.c~ src/ia64/Lunw_init_local.c~ src/ia64/Lunw_init_remote.c~ src/ia64/Lunw_resume.c~ src/ia64/Lunw_set_reg.c~ src/ia64/Lunw_step.c~ src/ia64/init.h~ src/ia64/shared.c~ to the ignore list
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
83b038d4aa Add local-only variants of files (Lfoo.c).
Add ia64/shared.c and ia64/init.h.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
525afd5676 Add AM_MAINTAINER_MODE.
Add command-line option --enable-debug to enable debugging.
In CPPFLAGS, define DEBUG when debugging, NDEBUG otherwise.
Add CPPFLAGS to ASFLAGS.


(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
2353a19c67 (unw_resume): If UNW_LOCAL_ONLY is defined, directly call ia64_local_resume().
(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
155b35c2cf (unw_init_remote): If UNW_LOCAL_ONLY is defined, return -UNW_EINVAL. Use common_init()
to handle most of the cursor initialization.

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
503d83fa69 (uc_addr): New function to translate a register number into a ucontext address.
(_U_ia64_uc_addr): New function.
(access_reg): Use uc_addr() to calculate ucontext address.  Use uc->sc_rbs_base
	when accessing ar.bsp or ar.bspstore (see comments for unw_init_local()).
(access_fpreg): Ditto.
(ia64_local_resume): Renamed from resume().  Read NaT bits via ia64_access_reg().
	Call abort() instead of fprintf() when encountering a signal trampoline.
(unw_init_local): Initialize uc->sc_rbs_base to the bsp value of the current function.
	For UNW_LOCAL_ONLY case, just initialize c->uc and then call
	common_init() to do the remaining initialization.  For the general case,
	just initialize the accessor and then also call common_init().

(Logical change 1.8)
2002-02-28 16:24:48 +00:00
mostang.com!davidm
5e34685f18 (Logical change 1.8) 2002-02-28 16:24:48 +00:00
mostang.com!davidm
468db8fdea mvdir
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
0660b2b7bb mvdir
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
354f1c77b1 Update version number and build instructions.
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
cc4d70dfe6 Switch build environment to automake + autoconf + libtool.
BKrev: 3c77fb17m0Es9xJjHhx0sCGyqBmVIA
2002-02-23 20:27:03 +00:00
mostang.com!davidm
97c6919cd3 Rename: src/ia64/unwind_decoder.c -> src/ia64/unwind_decoder.h
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
de7b9f4912 Rename: src/ia64/unwind_decoder.c -> src/ia64/unwind_decoder.h
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
bbc09de14d Rename: NOTES -> doc/NOTES
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
be72029dac Rename: NOTES -> doc/NOTES
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
96e3133a62 Remove include of libunwind-config.h. Include libunwind-tdep.h instead of
opencoding an architecture-specific include.

2002/02/23 12:16:40-08:00 mostang.com!davidm
Rename: include/libunwind.h.in -> include/libunwind.h

(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
95ce9146a7 Initial revision 2002-02-23 20:27:03 +00:00
mostang.com!davidm
2f69df1d92 Include unwind_decoder.h instead of unwind_decoder.c.
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
1888c151fc Delete: tests/Makefile
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
02acb8d4dd Delete: src/Makefile
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
9da5d9e6ec Delete: include/libunwind-config.h
}(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
99afd3edc1 Added Makefile.in configure doc/Makefile.in include/libunwind-tdep.h include/stamp-h include/stamp-h1 libunwind-0.2.tar.gz src/Makefile-orig src/Makefile.in tests/Makefile.in to the ignore list
(Logical change 1.7)
2002-02-23 20:27:03 +00:00
mostang.com!davidm
1a9fe6168d (Logical change 1.7) 2002-02-23 20:27:03 +00:00
(none)!davidm
0d1108748f Delete: include/config.h
}(Logical change 1.6)
2002-02-22 22:09:28 +00:00
(none)!davidm
36c22aa3ef Delete include/config.h; it's no longer needed.
BKrev: 3c76c198B2QHDakzsFDqg1LkZT1y9Q
2002-02-22 22:09:28 +00:00
(none)!davidm
68ffdc1fce When printing a value of type unw_word_t, use the %lu format and
cast the value to (long).

(struct ia64_labeled_state): New type.
(alloc_labeled_state): New macro.
(free_labeled_state): Ditto.
(push, pop): Update for new ia64_state_record layout.
(dup_state_stack): New function.
(free_state_stack): Ditto.
(desc_copy_state): Make it restore the entire stack of states, not
	just the current one.
(desc_label_state): Make it save the entire stack of states, not
	just the current one.
(ia64_free_state_record): Free the list of labeled states.

(desc_prologue): Terminate parsing at end of region regardless of
	whether the next region is a body or a prologue.

(lookup): Verify that unwind table entry found by binary search
	really includes the desired IP.  If not, return NULL.
(get_proc_info): Adjust for move of start/end from unwind table
	to the unwind table info.  Return -UNW_ENOMEM if unable
	to allocate a new table.  If unwind entry does not exist
	for desired IP, clear the procedure info to zero.  Check
	the unwind version number and return -UNW_EBADVERSION if
	it is not 1.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
8dbd577e05 To simplify cross-compilation, use unw_word_t instead of long pointers
for backing store addresses.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
a8d1c7c6e9 Set HOSTARCH to the host architecture and pass it on to subdirectories.
Build backtrace.o only when doing a native (local) build.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
6a4f3b23c1 Rename IA64_UNW_ACCESSORS to UNW_LOCAL_ONLY. Drop weak_alias() and
alias() macros.

(struct ia64_cursor): Rearrange order of members a bit to group
	things that logicall belong together.  Rename rp_loc to
	ip_loc.
(struct ia64_unwind_table): Drop start and end members (they are now
	in unw_ia64_table_t).
(struct ia64_reg_state): Break declaration out of declaration for
	ia64_state_record and add "next" member.
(struct ia64_state_record): Add member "labeled_states", drop
	members "stack", and "reg_state_list".

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
143ace01a8 Rename IA64_INSN_MOVE_SIGCONTEXT to IA64_INSN_MOVE_SCRATCH.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
60cbd737ab Reformat preg_index initialization to GNU Coding standard.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
3fd31aa7f2 Logging to logging@openlogging.org accepted
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
4224f76cfd Initial revision 2002-02-22 21:58:53 +00:00
(none)!davidm
cfdd6ece84 Include architecture-specific header file first and then define
various other types and constants based on it.
(unw_error_t): A UNW_EINVAL, UNW_EBADVERSION, and UNW_ENOINFO.
(unw_frame_regnum_t): Instead of hardcoding the numbers for the
	well-known frame registers, use the architecture-specific
	(target-dependent) values instead.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
7820abd977 Include "offsets.h" to get offsets for various structures (such
as sigcontext).  Adjust for the fact that the RSE arithmetic
is now done on values of type unw_word_t rather than long pointers.

(ia64_scratch_loc): Rename from ia64_get_sigcontext() and expand
	it such that it returns a scratch register location if
	the current frame is not a sigcontext frame.
(ia64_access_reg): Read the address of the personality routine with
	ia64_get() rather than trying to dereference the address
	directly.  When writing the IP or the PR, update the cached
	values, too.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
3790561497 Include "offsets.h" instead of <signal.h> to enable cross-compilation.
Use offsets defined in this file instead of calculating the offsets
from sigcontext structure.

(update_frame_state): Rename from ia64_get_frame_state() and make it
static and inlined.

(unw_step): Call update_frame_state() instead of ia64_get_frame_state().

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
172cc2ba9b If UNW_REMOTE_ONLY is defined, make unw_init_local() a stub that
unconditionally returns -UNW_EINVAL.

(access_reg): IP is now read via UNW_IA64_IP (instead of
	UNW_IA64_BR+0).  CFM is now read via UNW_IA64_CFM
	instead of UNW_IA64_AR_PFS.  For UNW_IA64_AR_BSP
	(and UNW_IA64_AR_BSPSTORE), adjust the pointer so
	that it points to the first stacked register in
	the current frame.
(resume): "rp_loc" has been renamed to "ip_loc".
(unw_init_local): Add an #error directive to prevent compilation
	with UNW_LOCAL_ONLY until this case has been implemented.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
7c934e9308 For now, add #error directive to ensure compilation fails when
attempting to compile with UNW_LOCAL_ONLY.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
79106f9923 Fine-tune the API for remote-unwinding support. Fix up the
implementation to support cross-compilation (e.g., to build the
IA-64 unwinder on x86).

BKrev: 3c76bf1dI_YzKWI7-5-E3JJ_fhW7mg
2002-02-22 21:58:53 +00:00
(none)!davidm
fb5ed0d939 Compile only if UNW_REMOTE_ONLY is not defined.
(get_kernel_table): Return -UNW_ENOMEM if unable to allocate buffer
	for kernel's unwind info.  Initialize the start and end
	members in unw_ia64_table_t.
(callback): Initialize the start and end members.

(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
4588bf926d Build only if UNW_REMOTE_ONLY is not defined.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
fcb6a7d272 Build bt and exc programs only during native builds.
(Logical change 1.5)
2002-02-22 21:58:53 +00:00
(none)!davidm
f275c38236 Added src/Makefile.bak src/ia64/init.o src/ia64/offsets.h~ src/ia64/parser.o src/ia64/regs.o src/ia64/script.o src/ia64/unw_get_reg.o src/ia64/unw_init_local.o src/ia64/unw_init_remote.o src/ia64/unw_resume.o src/ia64/unw_set_reg.o src/ia64/unw_step.o src/libunwind.a to the ignore list
(Logical change 1.5)
2002-02-22 21:58:53 +00:00