1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-15 04:38:12 +01:00
Commit graph

1243 commits

Author SHA1 Message Date
mostang.com!davidm
424ffd0db8 Initial revision 2003-04-24 20:45:07 +00:00
mostang.com!davidm
fe2dfccdf9 Include <alloca.h>.
(access_reg) [HAVE_SYS_UC_ACCESS_H]: Sanitize and simplify this routine.  Turns out
	uc_access(3) works pretty much the way we need it, the only problem is that
	the unwind info for getcontext() seems to be missing as of HP-UX 11.22.
(ia64_uc_access_reg): New function.
(ia64_uc_access_fpreg): Ditto.
(ia64_local_addr_space_init): Initialize "abi" member of local address space based
	on the platform we're compiling on.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
f3ca36f42d Fix libunwind enough to be actually useful on HP-UX. tests/bt now prints a very
nice backtrace, handling unwinding across signal handlers just fine.  Main missing
piece right now is that unw_resume() doesn't work because uc_access(3) refuses to
write ar.bsp.  Duh.

BKrev: 3ea84cd3PHuNw5JsGXBuCzkJLDGUcA
2003-04-24 20:45:07 +00:00
mostang.com!davidm
c8d1774e07 Always include "mk_Gcursor_i-ia64.c" even if we don't really need it. We can't
have an empty file here, as otherwise we won't get a valid program.

}(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
2b8dd64bd9 Always include "mk_Gcursor_i-ia64.c" even if we don't really need it. We can't
have an empty file here, as otherwise we won't get a valid program.

2003/04/24 12:58:16-07:00 mostang.com!davidm
Rename: src/ia64/Lmk_cursor_i-ia64.c -> src/ia64/mk_Lcursor_i-ia64.c

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
0561cd32b3 (unw_init_local): On HP-UX, step over the initial (getcontext()) frame.
(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
344768e1d6 (unw_get_save_loc): Handle "saved-in-sigcontext" case only for Linux.
(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
a38d3f6275 (mi_init): Turn off buffering for stdout and stderr when debugging is enabled.
(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
2404a17c82 (lookup_preg): Remove useless "unwind." prefix in debug output.
(parse_dynamic): Ditto.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
3d3510c047 (local_resume): Support HP-UX via setcontext() (doesn't actually work yet).
(remote_install_cursor): Enable the short-cut for Linux only.  Since HP-UX uses
	an opaque data-structure for ucontext_t, we can't play the same trick
	there.  Fix two typos: "> 0" -> ">= 0".
(unw_resume): Handle non-UNW_LOCAL_ONLY case simp;u bu calling
	remote_install_cursor().

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
4bc8b02277 (linux_sigtramp): New function.
(hpux_sigtramp): Ditto.
(update_frame_state): Use abi_marker to decide how to handle a special frame.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
bd28baa280 (ia64_scratch_loc): Use c->as->abi to select appropriate behavior. Implement
support for HP-UX.
(access_nat): Check for uc-location and pass it on to ia64_put()/ia64_get() if
	it is.  Handle NaT-bit-saved-in-scratch-register only for Linux.
(ia64_access_reg): Change dprintf() into debug() statement.
(ia64_access_fpreg): Move fph-partition initialization code to ia64_scratch_loc().
	Change dprintf() into debug() statement.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
8b7c7e322a (do_backtrace): Also pring "gp".
(foo): Add some newlines for better readability.
(sighandler): Always declare as per Single UNIX Spec.
	On HP-UX, use __uc_get_ip() to read the interruption IP.
(main): Always use sigaction() to install a signal handler, so we can
	turn on the SA_SIGINFO flag.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
a88af79c95 (_ULia64_local_addr_space): Move to global scope so GCC doesn't whine if we
end up not using it.
(UNWIND_TBL_32BIT): New macro.
(struct unwind_header): Rename "unknown1" member to "header_version".
(tdep_find_proc_info) [HAVE_DLMODINFO]: Don't forget to initialize di.gp.
	Check unwind-header version and format.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
3e4f08bbf0 (SOVERSION): Change to 1:1:0.
Rename Gmk_cursor to mk_Gcursor, Lmk_cursor to mk_Lcursor so to avoid
scripts/make-L-files overwriting the (handcrafted) local version.
(EXTRA_DIST): Mention libunwind_la_SOURCES_os_hpux.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
8fee91bd13 (MIN): If it's defined already, #undef it first.
(IA64_LOC_UC_REG): New macro.
(IA64_GET_AUX_ADDR): New macro.
(ia64_uc_access_reg): New function.
(ia64_uc_access_fpreg): Ditto.
(ia64_getfp): Forward uc-locations to ia64_uc_access_fpreg().
(ia64_putfp): Ditto.
(ia64_get): Ditto.
(ia64_put): Ditto.
(rbs_on_uc): New function.

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
08230509a3 (ABI_LINUX): New macro.
(ABI_HPUX): Ditto.
(ABI_FREEBSD): Ditto.
(ABI_OPENVMS): Ditto.
(ABI_NSK): Ditto.
(ABI_WINDOWS): Ditto.
(unw_addr_space): Add member "abi".

(Logical change 1.87)
2003-04-24 20:45:07 +00:00
mostang.com!davidm
275253b46b Upgrade to libtool v1.5.
BKrev: 3ea8386as3dauhSU3magjUYUGphE4w
2003-04-24 19:18:02 +00:00
mostang.com!davidm
9825197a09 Update.
(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
e455a9297e Support assembly files.
(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
72425f375d Make unw_resume() work again for non-UNW_LOCAL_ONLY cases. This brings libunwind for
ia64 linux back to where it was before yesterday's Big Restructuring.

BKrev: 3ea6e802G5VmD4nReWXEzuP4FNJF1Q
2003-04-23 19:22:42 +00:00
mostang.com!davidm
747b961d31 Initial revision 2003-04-23 19:22:42 +00:00
mostang.com!davidm
1fe8bc11d4 If UNW_LOCAL_ONLY is defined, include Lcursor_i.h instead of Gcursor_i.h.
Update code to work both for UNW_LOCAL_ONLY-version of the cursor and the
generic version of the cursor.
(ia64_install_cursor): New macro.

}(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
630b01488a If UNW_LOCAL_ONLY is defined, include Lcursor_i.h instead of Gcursor_i.h.
Update code to work both for UNW_LOCAL_ONLY-version of the cursor and the
generic version of the cursor.
(ia64_install_cursor): New macro.

2003/04/23 11:25:31-07:00 mostang.com!davidm
Rename: src/ia64/_Uia64_install_cursor.S -> src/ia64/Ginstall_cursor.S

(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
6c584b7b68 (local_resume): Call ia64_install_cursor() instead of _Uia64_install_cursor().
(ia64_local_resume): Call local_resume().
(remote_install_cursor): Reenable old code.  Update MEMIFY for loc array changes.

(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
8e85e811c0 (libunwind_la_SOURCES_ia64): Replace _Uia64_install_cursor.S with Ginstall_cursor.S
and Linstall_cursor.S.
(Gmk_cursor_i_ia64_SOURCES): Rename from mk_cursor_i_ia64_SOURCES.
(Lmk_cursor_i_ia64_SOURCES): New mcro.
(Gcursor_i.h): Rename rule from cursor_i.h.
(Lcursor_i.h): New rule.
(noinst_PROGRAMS): Rename mk_cursor_i-ia64 to Gmk_cursor_i-ia64 and add
	Lmk_cursor_i-ia64.
(BUILT_SOURCES): Ditto.

(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
8da298f14f (ia64_install_cursor): Rename from _Uia64_install_cursor() and make it an UNW_OBJ().
(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
5b3b6f0565 (UNW_LOCAL_ONLY): Remove this macro.
(tab): Add etnry LOC_SIZE.
(main): Fix the "generated by ..." string.

}(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
da6690ecf2 (UNW_LOCAL_ONLY): Remove this macro.
(tab): Add etnry LOC_SIZE.
(main): Fix the "generated by ..." string.

2003/04/23 11:22:47-07:00 mostang.com!davidm
Rename: src/ia64/mk_cursor_i-ia64.c -> src/ia64/Gmk_cursor_i-ia64.c

(Logical change 1.85)
2003-04-23 19:22:42 +00:00
mostang.com!davidm
c56b0d6b05 (Logical change 1.85) 2003-04-23 19:22:42 +00:00
mostang.com!davidm
ee54f6cbbd Remove preg_index[] initializer.
(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
6aa6f29375 Regenerate.
(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
6e5840f132 Initial revision 2003-04-23 05:56:59 +00:00
mostang.com!davidm
b4a52cc9cc Big restructuring of ia64 code: the code generated for UNW_LOCAL_ONLY should be
more or less unchanged, but for the generic version, the save-location has been
expanded from a single word to two words.  This is needed to accommodate 32-bit
targets and targets which require accessing the ucontext_t structure via uc_access(3).
Overall, this should be like a big no-op for Linux (apart from slowing down
the generic case a bit).  However, at the moment, unw_resume() has not been updated
for the generic case (UNW_LOCAL_ONLY works fine though).

BKrev: 3ea62b2bm3Pz-s7tNlN5IA-1ENWKWw
2003-04-23 05:56:59 +00:00
mostang.com!davidm
d412b24291 Adjust for unw_word_t -> ia64_loc_t changes.
(struct_offset): Delete.
(IA64_LOC_REG): New macro (replaces IA64_LOC() for registers).
(IA64_LOC_ADDR): New macro (replaces IA64_LOC() for addresses).
(IA64_LOC_UC_ADDR): New macro.
(IA64_NULL_LOC): Ditto.
(IA64_IS_NULL_LOC): Ditto.
(IA64_IS_UC_LOC): Ditto.
(struct ia64_state_record): Replace is_signal_frame bit with abi_marker.
(ia64_strloc): New declaration.
(rbs_switch): Change from UNW_ARCH_OBJ() to UNW_OBJ().
(rbs_find_stacked): Ditto.
(rbs_cover_and_flush): Ditto.
(rbs_get_rnat_loc): New inline function.
(rbs_loc): Ditto.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
4d4f47cfe6 Adjust for unw_word_t -> ia64_loc_t changes.
(rbs_find_stacked): Detect rbs-area underflow and complain when detected.

}(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
fdd93a262e Adjust for unw_word_t -> ia64_loc_t changes.
(rbs_find_stacked): Detect rbs-area underflow and complain when detected.

2003/04/22 22:16:35-07:00 mostang.com!davidm
Rename: src/ia64/rbs-ia64.c -> src/ia64/Grbs-ia64.c

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
c1d2557a31 Adjust for unw_word_t -> ia64_loc_t changes.
(ia64_local_resume): Disable for now (it's presently broken).
(remote_install_cursor): Ditto.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
83ec749aaf Adjust for unw_word_t -> ia64_loc_t changes.
(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
72199b31ff Adjust for save-loc renaming.
Adjust for unw_word_t -> ia64_loc_t changes.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
237a66bc21 Adjust for save-loc member renaming.
Adjust for renaming of Linux sigcontext offset macros.
(check_rbs_switch): Handle Linux-case only if abi_marker==ABI_MARKER_LINUX_SIGTRAMP.
(update_frame_state): For cursor's with a non-zero abi_marker, do special
	Linux or HP-UX sigtramp handling as appropriate.
	Clear abi_marker instead of is_signal_frame.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
f24e3d70a0 (unw_is_signal_frame): Return true for any cursor with a non-zero abi_marker.
(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
5adda54e79 (unw_get_save_loc): Adjust for unw_word_t -> ia64_loc_t changes.
(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
8bf1568dbf (script_new): Clear abi_marker to 0.
(emit_nat_info): For registers saved in a general-register, use IA64_INSN_SET_REG
	instead of IA64_INSN_SET.
	Set insn.dst to register number, instead of unw.preg_index[i].
(compile_reg): Set val directly to register number, instead of unw.preg_index[i].
	Use IA64_INSN_INC_PSP instead of IA64_INSN_ADD to pop a fixed stack frame.
(build_script): Handle signal-frames by directly copying abi_marker, rather than
	emitting an IA64_INSN_SET instruction.
(run_script): Copy abi_marker into cursor.  Rather than updating a word, update
	a save-location.  Only exceptions are IA64_INSN_INC_PSP and
	IA64_INSN_LOAD_PSP.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
693c4fa30c (libunwind_la_SOURCES_ia64): Rename _Uia64_install_context.S to
_Uia64_install_cursor.S.  Replace rbs-ia64.c with
	Grbs-ia64.c and Lrbs-ia64.c.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
f8d5624ee9 (ia64_strloc): New function to stringify a location.
(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
78a7c5a8c1 (ia64_script_insn_opcode): Rename IA64_INSN_ADD to IA64_INSN_INC_PSP,
and IA64_INSN_LOAD to IA64_INSN_LOAD_PSP.  Add IA64_INSN_SET_REG.
(struct ia64_script_insn): Add "abi_marker" member.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
ed67c3edb7 (ia64_pregnum): Rename IA64_REG_RP to IA64_REG_IP.
(ia64_loc_t): New type.  For UNW_LOCAL_ONLY, it's a single word, as before.
	For the generic case, it's a 2-word structure.  This provides enough
	space to encode all necessary info both for 32-bit targets (which require
	only 4-byte aligned addresses) and for targets which are limited to
	accessing ucontext_t values via uc_access(3).
(ABI_MARKER_LINUX_SIGTRAMP): New macro.
(ABI_MARKER_HP_UX_SIGTRAMP): New macro.
(struct cursor): Consolidate bsp_loc, bspstore_loc, pfs_loc, rnat_loc, ip_loc,
	pri_unat_loc, unat_loc, pr_loc, lc_loc, fpsr_loc, r4-r7_loc,
	b1-b5_loc, f2-f7_loc, and fr_loc[] into loc[] array.  Note that
	there is now a separate PSP-loc (loc[IA64_REG_PSP]) in addition
	to the cached psp value.
	Rename sigcontext_loc to sigcontext_addr.
	Remove is_signal_frame memeber and add abi_marker member instead.
	Change type of rbs_area[].rnat_loc to ia64_loc_t.
(struct ia64_global_unwind_state): Remove preg_index[] array.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
69dc9063ae (decode_abreg): Rename IA64_REG_RP -> IA64_REG_IP.
(UNW_REG_RP): Ditto.
(lookup_preg): Ditto.
(create_state_record_for): Ditto.

(Logical change 1.84)
2003-04-23 05:56:59 +00:00
mostang.com!davidm
f59f3d3569 (_Uia64_install_cursor): Rename from _Uia64_install_context().
Mask out only the least-significant 2 bits (rather than the least significant
	3 bits).

}(Logical change 1.84)
2003-04-23 05:56:59 +00:00