1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-07-02 13:41:46 +02:00
Commit graph

1413 commits

Author SHA1 Message Date
Arun Sharma 55fe524775 Cleanup the hash() function copied from ia64
Fixes the compiler warning on x86-32.

Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-08-16 15:43:49 -06:00
Arun Sharma a5d0c1f8b7 Remove HAVE___THREAD. This was never tested.
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-08-16 15:41:32 -06:00
David Mosberger-Tang 62bacfcf1f [x86-64] Minor reformatting for GNU-style and use memset() in lieu of bzero(). 2006-08-10 21:34:31 -06:00
Arun Sharma (अरुण) 795529eee3 [x86-64] Add a known good address cache.
This improves the performance of Lperf-simple from 500ns to 195ns
on the avg.

Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-08-10 21:30:01 -06:00
David Mosberger-Tang bde67706ed Delete some backup files that accidentally made it into git. 2006-07-27 21:30:19 -06:00
Arun Sharma 11ea1275bd [dwarf] The sword() function in Gexpr.c doesn't do what's intended.
Yes, it casts to signed, but then converts right back to
unsigned via the return type.  Fixed thus.

Signed-off-by: Richard Henderson <rth@redhat.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 22:12:10 -06:00
Arun Sharma cdb96f333c [x86] (common_init): Fix spurious errors caused by uninitialized members.
Signed-off-by: Richard Henderson <rth@redhat.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 22:09:10 -06:00
Arun Sharma 8297866bd4 [x86-64] (unw_step): Further refine handling of functions without unwind-info.
CFA should be incremented by 16 in the hope that the previous frame
may have valid unwind info.

Also increase the default frame pointer recognition heuristic from 4k
to 16k.

Signed-off-by: Andrey Veskov <Andrey.Veskov@intel.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 22:06:48 -06:00
Arun Sharma 06d2ffa41a [x86-64] (unw_step): Improve handling of functions which lack unwind info.
If following the frame-chain leads to a frame >= 4KB away, we conclude that
the frame-pointer isn't really valid.
2006-07-26 22:04:40 -06:00
Arun Sharma 7c0907634d [x86-64] (unw_is_signal_frame): If access mem fails, it's not a signal frame. 2006-07-26 21:58:27 -06:00
Arun Sharma 58888a5060 (dwarf_find_save_locs): Also apply register-state after parsing the FDE 2006-07-26 21:55:09 -06:00
Arun Sharma 527225e492 [x86-64] Make a best effort at validating pointers before dereferencing them.
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 21:46:39 -06:00
Arun Sharma 4312719cbc [dwarf] Need to guard against multiple threads accessing the rs cache.
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 21:44:38 -06:00
Arun Sharma c5dc3c150a [dwarf] Allow return address column to differ from function to function.
Signed-off-by: Andrey Veskov <Andrey.Veskov@intel.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 21:29:50 -06:00
Arun Sharma 60b7af702a (dwarf_find_save_locs): Add a comment.
Now that dwarf_find_save_locs() not just finds the save-locations but
also updates the cursor-state, document this fact (the function really
is misnamed now).
2006-07-26 21:25:37 -06:00
Arun Sharma 3dfde7a3f0 (dwarf_find_save_locs): put_unwind_info() is not needed in the cached case. 2006-07-26 21:23:30 -06:00
Arun Sharma 00db7f752a Implement a ip -> dwarf_reg_state cache.
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 21:18:49 -06:00
David Mosberger-Tang 1a0af36731 Fix forgotten copyright year update. 2006-07-26 15:48:48 -06:00
David Mosberger-Tang 6a89d40236 Fix missed "tdep.h" -> "libunwind_i.h" conversions. 2006-07-26 15:44:23 -06:00
David Mosberger-Tang 8c94e12429 (_UPT_find_proc_info): Fix potential crash due to uninitialized pointer.
Be sure to clear pi->unwind_info when looking up the kernel table and
not needing the unwind-info.  Otherwise, _UPT_put_unwind_info() may
erroneously call free() on the pointer, even though that space wasn't
malloc'd, leading to crashes..
2006-07-26 15:43:23 -06:00
David Mosberger-Tang fd2fa63a6c Fix missed merge on setjmp_i.h and siglongjmp.c. 2006-07-26 15:21:52 -06:00
David Mosberger-Tang 69d85f7c14 Restore mi/Ldyn-remote.c. 2006-07-26 15:10:48 -06:00
David Mosberger-Tang 236e370dc5 Remove three Emacs backup-files which accidentially got checked into git. 2006-07-26 14:54:50 -06:00
David Mosberger-Tang 6daeeac60a Revert "Initial revision"
This reverts e6446885f4 commit.
2006-07-26 14:53:49 -06:00
David Mosberger-Tang a369768c27 Revert "Initial revision"
This reverts 06d223e924 commit.
2006-07-26 14:47:44 -06:00
David Mosberger-Tang ca69fee8bb Merge ../libunwind-v0.98
Conflicts:

	include/dwarf_i.h
	include/x86/jmpbuf.h
	include/x86_64/jmpbuf.h
	src/hppa/init.h
	src/mi/Gget_fpreg.c
	src/mi/Gset_fpreg.c
	src/mi/strerror.c
2006-07-25 21:41:43 -06:00
David Mosberger-Tang af2503e223 Fix bug in libunwind-ptrace which can cause reading of random data.
(maps_next): After reading less than a full buffer of data, copy
remaining data to the top of the buffer so as to maintain the
invariant that all data between mi->buf and mi->buf_end is valid.
This avoids maps_next() parsing uninitialized data.
2006-07-25 21:35:30 -06:00
David Mosberger-Tang f176ad6fc6 Bring git v0.98.5 tree in sync with released v0.98.5.
Sadly, the conversion from Bitkeeper -> CVS -> git wasn't perfect.  Or
so it seems.
2006-07-25 21:32:28 -06:00
hp.com!davidm 36a0275014 Allow write-access to UNW_IA64_BSP and UNW_REG_SP.
(Logical change 1.303)
2005-05-20 15:32:18 +00:00
hp.com!davidm cf2a44ca49 Use update_nat() instead of equivalent open code.
(Logical change 1.301)
2005-05-20 14:58:46 +00:00
hp.com!davidm f5de64f9f7 If r1 has been saved in an ABI-specific frame
(such as an interrupt frame), access the saved
value.  Otherwise, pick it up from the unwind-info
for the matching IP.

(Logical change 1.300)
2005-05-20 14:50:54 +00:00
hp.com!davidm 399f120c96 Drop unused readonly variable.
(Logical change 1.299)
2005-05-20 14:13:01 +00:00
hp.com!davidm 3fa950e818 Remove early-out test when IP is zero.
(Logical change 1.298)
2005-05-20 13:35:32 +00:00
hp.com!davidm 19e3bf3ea6 (rbs_switch): Use rbs_get_base() to determine the size of the register
backing store.

(Logical change 1.297)
2005-05-20 13:13:07 +00:00
hp.com!davidm 9724ac492c (common_init): Use rbs_get_base() to determine size of register-backing store.
(Logical change 1.297)
2005-05-20 13:13:07 +00:00
hp.com!davidm 080f8423d9 Read sp and bsp via ia64_get() and then pass them to common_init().
(Logical change 1.296)
2005-05-20 12:47:59 +00:00
hp.com!davidm 50bbc1fe3d (set_as_arg): New function.
(get_initial_stack_pointers): Likewise.
(unw_init_local): Use new functions to make code more readable and add
	Linux kernel support.

(Logical change 1.296)
2005-05-20 12:47:59 +00:00
hp.com!davidm 84bd124a24 (inlined_uc_addr): Remove UNW_IA64_AR_BSP. We no longer need this ugly hack
since the initial BSP is now passed directly into common_init().

(Logical change 1.296)
2005-05-20 12:47:59 +00:00
hp.com!davidm 4992f1c936 (common_init): Take initial sp and bsp values as arguments instead of
reading them via ia64_get().

(Logical change 1.296)
2005-05-20 12:47:59 +00:00
hp.com!davidm 97b483dcaa Drop include of "mempool.h", which causes problems in the kernel, due to
a conflicting <linux/mempool.h>.
(SOS_MEMORY_SIZE): Move to libunwind_i.h.

(Logical change 1.295)
2005-05-20 11:28:16 +00:00
hp.com!davidm 1b63be3f89 (parse_dynamic): Make it a dummy-function of _U_dyn_op isn't defined, i.e.,
if libunwind-dynamic.h isn't in use (as is the case for the kernel at
	the moment).

(Logical change 1.295)
2005-05-20 11:28:16 +00:00
hp.com!davidm 7894f0edc0 (ia64_strloc): Move to Grbs.c.
(Logical change 1.295)
2005-05-20 11:28:16 +00:00
hp.com!davidm 96407911ee (ia64_strloc): Move here from Ginit.c so it can be shared with the kernel.
(Logical change 1.295)
2005-05-20 11:28:16 +00:00
hp.com!davidm 2e35dd035c Regenerate.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 3e8a50255c Include from tdep-$(arch) directory after the normal incliude directory.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 32385d36fd Include "tdep-ia64/rse.h" instead of "ia64/rse.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 1228462adc Include "rse.h" instead of "ia64/rse.h".
Include "libunwind_i.h" instead of "internal.h" and "tdep.h".
Define rbs_cover_and_flush() only for the !UNW_REMOTE_ONLY case.
(ia64_is_big_endian): New macro.
(ia64_get_abi): Likewise.
(ia64_set_abi): Likewise.
(ia64_get_abi_marker): Likewise.

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 8e6f3c8485 Include "rse.h" instead of "ia64/rse.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 83820a78d1 Include "libunwind_i.h" instead of "tdep.h".
Include "tdep-ia64/rse.h" instead of "ia64/rse.h".

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 67f90c24be Include "libunwind_i.h" instead of "tdep.h".
Include "elfxx.c" instead of "elf64.c".

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm d9e100753f Include "libunwind_i.h" instead of "tdep.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 07b01ad205 Include "libunwind_i.h" instead of "tdep.h" and "internal.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 670dd57e82 Include "libunwind_i.h" instead of "libunwind.h" and a whole bunch of standard
header files.
Use lock_release instead of mutex_unlock/sigprocmask calls.

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 5724bee8c2 Include "libunwind_i.h" instead of "internal.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 19df6612fa Include "libunwind_i.h" instead of "internal.h" and "tdep.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm b7adf160ee Include "dwarf_i.h" instead of "dwarf.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm c027d98386 Don't include headers already included via unwind_i.h.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm df3d6af467 Don't include <string.h>.
Include "libunwind_i.h" instead of "tdep.h".

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm dda1a6d625 Don't include <string.h>.
Include "libunwind_i.h" instead of "internal.h" and "tdep.h".

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 379fb069d2 Don't include <string.h>, <unistd.h>, <sys/types.h>.
Include "libunwind_i.h" instead of "tdep.h".

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 9e8ba174e6 Don't include <string.h> and <stdlib.h>.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 9fac7579ee Don't include <string.h> and "tdep.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 71acf1d00e Don't include <stdlib.h>.
Include "libunwind_i.h" instead of "tdep.h".

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 03ba50ccaa Don't include <stdlib.h> and <string.h>.
Include "libunwind_i.h" instead of "tdep.h".

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm fa2871946a Don't include <assert.h> and <stddef.h>.
Use ia64_get_abi_marker() instead of directly referencing c->last_abi_marker.
(linux_scratch_loc): When accessing an fp-reg, default to IA64_FPREG_LOC.
	Handle more registers for the Linux interrupt-frame case.
(tdep_access_reg): Use ia64_get_abi() instead of c->as->abi.
	Use ia64_is_big_endian() instead of c->as->big_endian.

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 8bb167d4c1 Don't include <alloca.h> and <stdlib.h>.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 6675be4926 (linux_interrupt): Enable this code for the kernel, too.
Use ia64_get_abi_marker() instead of c->abi_marker.
	Use ia64_set_abi() instead of storing directly to c->as->abi.

(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm ee6eeb4f7d (get_script_cache): Use HAVE_ATOMIC_H instead of __linux && __KERNEL__.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm 8a1e0a2bcd Auto merged
2005/05/17 14:14:23-07:00 hp.com!davidm
(tdep_access_reg): Access AR.EC via ec_loc instead of cfm_loc.

(Logical change 1.293)
2005-05-17 21:28:19 +00:00
hp.com!davidm 26fdb45d76 Auto merged
2005/05/17 14:14:23-07:00 hp.com!davidm
(linux_sigtramp): Add "prev_cfm_loc" argument.  Use it to set c->ec_loc.
(linux_interrupt): Likewise.
(hpux_sigtramp): Likewise.
(update_frame_state): Copy old cfm_loc to prev_cfm_loc and pass it to
	ABI-specific handlers.  Initialize c->ec_loc to c->cfm_loc by default.

(Logical change 1.293)
2005-05-17 21:28:19 +00:00
hp.com!davidm a6ba57d556 Auto merged
2005/05/17 06:10:13-07:00 hp.com!davidm
(tdep_access_reg): Don't rotate contents of UNW_IA64_PR.

(Logical change 1.292)
2005-05-17 13:24:49 +00:00
hp.com!davidm 8462f1f87d (pr_ltop): Remove.
(pr_ptol): Remove.

(Logical change 1.292)
2005-05-17 13:24:49 +00:00
mostang.com!davidm 23884c98cb Rename: src/sigsetjmp.c -> src/setjmp/sigsetjmp.c
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 4d7f2a5be7 Rename: src/sigsetjmp.c -> src/setjmp/sigsetjmp.c
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 5ac5853589 Rename: src/setjmp.c -> src/setjmp/setjmp.c
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 8e06df0e52 Rename: src/setjmp.c -> src/setjmp/setjmp.c
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 9bc79a618b Rename: src/dwarf/dwarf-eh.h -> include/dwarf-eh.h
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 06d223e924 Initial revision 2005-05-03 09:13:17 +00:00
mostang.com!davidm 4e833d43fc Include "setjmp_i.h".
Abstract ia64-specific code into bsp_match() routine.
Support any platform with at least 2 EH argument registers.

}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 4f16756123 Include "setjmp_i.h".
Abstract ia64-specific code into bsp_match() routine.
Support any platform with at least 2 EH argument registers.

2004/12/06 01:33:16-08:00 mostang.com!davidm
Rename: src/longjmp.c -> src/setjmp/longjmp.c

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 203c0a5363 Include "setjmp_i.h".
Abstract ia64-specific code into bsp_match() and
resume_restores_sigmask() routines.

}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm acf90b1f82 Include "setjmp_i.h".
Abstract ia64-specific code into bsp_match() and
resume_restores_sigmask() routines.

2004/12/06 01:33:01-08:00 mostang.com!davidm
Rename: src/siglongjmp.c -> src/setjmp/siglongjmp.c

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 239ea4e7ea Implement for real. Note: this version is currently broken.
We don't pass sigmask the way this routine expects because it
can't work.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 7a5549f2d8 Drop "inline" since it's now part of ALWAYS_INLINE.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 411331eecb Delete: src/hppa/Lget_reg.c
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm ca02ad1708 Delete: src/hppa/Lget_proc_name.c
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 181bddfba0 Delete: src/hppa/Gget_reg.c
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm f45210852c Delete: src/hppa/Gget_proc_name.c
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 10a269d6d0 Also enable DWARF code for UNW_TARGET_HPPA.
2004/11/23 16:59:56-08:00 mostang.com!davidm
(_UPTi_find_unwind_table): Implement first draft for x86/-64.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm b267dfc8c9 Adjust for sigset_t to intrmask_t renaming.
}(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm dc89a17613 Adjust for sigset_t to intrmask_t renaming.
2004/12/02 00:40:45-08:00 mostang.com!davidm
Add copyright notice.
Provide canonical DWARF-based implementation.

2004/11/30 23:38:42-08:00 mostang.com!davidm
Rename: src/hppa/global.c -> src/hppa/Gglobal.c

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 1f5ac0f5bd Adjust for sigset_t to intrmask_t renaming.
2004/11/17 02:43:39-08:00 mostang.com!davidm
(struct callback_data): New structure.
(linear_search): New function.
(callback): Convert to getting auxiliary info passed via a pointer to
	a callback_data structure, rather than an unw_dyn_info_t
	structure.
	Keep track of the maximum load address in max_load_addr.
	If an object doesn't have a binary search-table, fall back
	on a linear search.
(dwarf_find_proc_info): Fill in callback-data structure before calling
	dl_iterate_phdr().  Upon returning, check whether
	cb_data.single_fde is set and, if so, return directly, without
	searching the DWARF unwind-table.
(dwarf_search_unwind_table): Adjust for renaming of
	dwarf_parse_fde() to dwarf_extract_proc_info_from_fde().
	If IP doesn't fall into the IP-range of the FDE-entry found
	by the search, return UNW_ENOINFO.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 7fbb8a9593 Adjust for sigset_t to intrmask_t renaming.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 9f3360a546 Adjust for "ia64_rse" to "rse" prefix change.
2005/02/23 12:55:45-08:00 mostang.com!davidm
(inlined_uc_addr): Adjust for ALWAYS_INLINE change.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 7f8b54ae5c Adjust for "ia64_rse" to "rse" prefix change.
2005/02/20 21:42:55-08:00 mostang.com!davidm
Adjust for NELEMS to ARRAY_SIZE renaming.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 3f73836b87 Adjust for "ia64_rse" to "rse" prefix change.
2004/12/15 15:40:09-08:00 hp.com!davidm
Include "tdep.h" on ia64 (we need the cursor).
(bsp_match): Fix it so it compiles again.
(resume_restore_sigmask): Likewise.

2004/12/06 10:40:49-08:00 mostang.com!davidm

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 3e00b79170 Adjust for "ia64_rse" to "rse" prefix change.
2004/12/06 10:40:49-08:00 mostang.com!davidm
(tdep_access_reg): Fix typo in code to read EH argument registers.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 4849af2d09 Adjust for "ia64_rse" to "rse" prefix change.
2004/11/23 16:59:56-08:00 mostang.com!davidm
(_UPT_access_reg): If the register is out of range, set errno
	to EINVAL.
	When encountering an error while accessing a register,
	print the corresponding error string.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm 87081cebab Adjust for "ia64_rse" to "rse" prefix change.
2004/10/25 07:52:30-07:00 hp.com!davidm
(unw_step): Add Debug statement to print return-value.

2004/10/25 05:21:51-07:00 hp.com!davidm
(unw_step): Print IP along with cursor address.

(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm bf832fc29e Adjust for "ia64_rse" to "rse" prefix change.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00