a signal-trampoline, assume that it's a PLT stub.
If non-DWARF stepping fails to change IP and CFA, declare
it a bad frame.
2004/11/23 16:59:56-08:00 mostang.com!davidm
(unw_step): Also print IP as part of the function-trace.
2004/11/23 16:17:37-08:00 mostang.com!davidm
(unw_step): When dwarf_step() fails on a signal-frame, fill in all
the known locations because dwarf_step() fails on older
kernels which don't export the kernel vDSO even though every-
thing else may be providing proper DWARF unwind-info.
2004/10/25 17:43:57+02:00 homeip.net!davidm
Add Debug statement for return-value.
(Logical change 1.290)
2004/11/23 12:49:54-08:00 mostang.com!davidm
(unw_step): If dwarf_step() fails on a signal-frame, fill in the
save-locations for everything that gets saved in the
sigcontext structure.
2004/10/25 17:43:57+02:00 homeip.net!davidm
Add Debug statement for return-value.
(Logical change 1.290)
(parse_cie): Adjust for moving DWARF2 extra-info from
unw_dyn_dwarf_fde_info_t to dwarf_cie_info.
Add support for `S' augmentation ("special frames").
(dwarf_extract_proc_info_from_fde): Rename frm dwarf_parse_fde().
Convert to returning data via dwarf_cie_info rather than
unw_dyn-dwarf_fde_info_t. Allow 0-length FDE since those
can be used to indicate the end of the FDE-table. Return
the end of the FDE via *ADDRP. Ignore CIEs (we may pick them
up during linear searches through the FDE-table).
Fill in the unwind-info only if really needed. When needed,
return the info via a dynamically allocated dwarf_cie_info
structure. Add support for `S' augmentation (ABI/tag pairs).
(Logical change 1.290)
(main): Do some silly FP computations. On x86-64, this ensures
that the signal handler invocations will always be called
with the FPU-state saved as well. Without this, the first
signal was invoked without FPU-state, the second with, causing
a spurious failure.
2004/11/17 02:06:25-08:00 mostang.com!davidm
(get_bsp): New function.
(handler): Clean up & check for error returns.
(main): Also fail if we didn't get SIGUSR2.
(Logical change 1.290)
unwind-info, since DWARF expects us to do so (unlikey for ia64,
where we are guaranteed that the (return) IP points to the
correct unwind-info).
2004/11/17 02:43:39-08:00 mostang.com!davidm
(run_cfi_program): Switch over to using dwarf_cie_info instead of
unw_dyn_dwarf_fde_info_t.
(fetch_proc_info): Clear c->pi before filling it in.
(put_unwind_info): If we got non-dynamic unwind-info, free it
via a call to mempool_free().
(parse_fde): Switch over to using dwarf_cie_info instead of
unw_dyn_dwarf_fde_info_t.
(apply_reg_state): Drop accessees to c->cfa_is_sp.
2004/10/25 17:38:51+02:00 homeip.net!davidm
Fix typo: DW_CFA_CFA_expression -> DW_CFA_expression.
2004/10/21 11:15:44+02:00 homeip.net!davidm
Auto merged
2004/10/21 11:15:12+02:00 homeip.net!davidm
(run_cfi_program): Add missing newline in Debug statement.
(apply_reg_state): It was wrong to do a dwarf_get() on the CFA-location
returned by eval_location_expr(). Instead, we must make sure
we're dealing with a memory-location and, if so, just extract
the memory address as the CFA.
Also, update c->cfa only _after_ the other frame-state has
been updated. This seems to be necessary for correct parsing
of the sigtramp unwind info. Not sure yet this is 100% correct,
but it gets us through Gtest-resume-sig.
2004/10/19 23:24:56-07:00 mostang.com!davidm
(run_cfi_program): Fix typos in Debug statements.
(Logical change 1.290)
that can be updated atomically (for Linux kernel compat.).
(unwi_full_mask): Rename from unwi_full_sigmask and change type to
intrmask_t.
(intrmask_t): New type.
(define_lock): New macro.
(lock_init): Likewise.
(lock_acquire): Likewise.
(lock_release): Likewise.
(GET_MEMORY): Likewise.
2005/02/20 21:42:54-08:00 mostang.com!davidm
(ALWAYS_INLINE): Include "inline" keyword for compatibility with
Linux kernel.
(ARRAY_SIZE): Rename from NELEMS for improved Linux-kernel
compatibility.
2004/10/25 05:21:51-07:00 hp.com!davidm
(Debug): Make a debug level of N imply that we're printing when
UNW_DEBUG_LEVEL=N since that's more intuitive.
(Logical change 1.290)
for SuSE LES 9) so use 128KB instead.
(do_backtrace): Also print backtrace obtained via backtrace().
(foo): Remove backtrace() call---now done in do_backtrace().
(Logical change 1.290)
2004/12/04 17:00:04-08:00 hp.com!davidm
Gtest-exc is now working on PA Linux.
2004/12/02 18:37:47-08:00 hp.com!davidm
Update introduction.
Add PARISC Linux "expected results" section.
2004/11/30 22:44:47-08:00 mostang.com!davidm
Updated expected results for x86 and x86-64.
2004/11/17 02:43:39-08:00 mostang.com!davidm
Update x86 Linux test-suite status.
(Logical change 1.290)
2005/05/03 02:08:34-07:00 hp.com!davidm
(tests/Gtest-concurrent): Fail gracefully if we're unable to create the
desired number of threads. Note: unless strict accounting is
enabled (/proc/sys/vm/overcommit_memory == 2), the program may fail
with a SIGSEGV if it runs out of (stack) memory.
2005/04/07 19:22:33-07:00 hp.com!davidm
Make libunwind more friendly to GCC v4.
2005/04/07 19:20:22-07:00 hp.com!davidm
ia64: Fix two typos in Gscript.c which showed when compiling
without atomic-ops support.
2005/04/07 12:19:38-07:00 hp.com!davidm
ia64: cache proc-info even for procedures which are never stepped over
This was an oversight that caused exception-handling to run a bit
slower than possible. Specifically, the last procedure in an
exception-handling chain never got cached because it has only it's
proc-info inspected (to find the personality routine); the frame
was never stepped over (i.e., no script was ever built) and the info
never got into the cache. This patch fixes the problem.
2005/03/31 14:45:30-08:00 hp.com!davidm
(tests/Gtest-exc): Make it buildable with the Intel compiler.
2005/03/31 13:29:44-08:00 hp.com!davidm
Merge wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind-v0.98
into wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind
2005/03/07 10:13:14-08:00 hp.com!davidm
Merge bk://unwind@bkbits.net/libunwind
into wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind
2005/03/07 10:08:26-08:00 hp.com!davidm
x86-64: Make it work better.
2005/03/07 10:02:17-08:00 hp.com!davidm
Fix a couple of missed NELEMS -> ARRAY_SIZE renames.
2005/03/07 10:00:19-08:00 hp.com!davidm
Fix a warning that shows with GCC v3.4.
2005/02/25 15:47:17-08:00 mostang.com!davidm
Fix forgotten ALWAYS_INLINE adjustment.
2005/02/24 23:39:35-08:00 hp.com!davidm
Fix missing NELEMS -> ARRAY_SIZE rename.
2005/02/24 23:32:42-08:00 mostang.com!davidm
Merge bk://unwind@bkbits.net/libunwind
into kangaroo.mostang.com:/home/davidm/src/unwind/libunwind
2005/02/24 23:28:02-08:00 hp.com!davidm
Fix merge-conflict.
2005/02/23 14:40:45-08:00 mostang.com!davidm
Abstract locking primitives some more to enable use of libunwind
inside the Linux kernel.
2005/02/23 13:10:06-08:00 mostang.com!davidm
ia64: Change "ia64_rse" prefix to "rse" in order to stay clear
of Linux kernel conflict.
2005/02/23 12:55:46-08:00 mostang.com!davidm
Fix a few missed ALWAYS_INLINE adjustments.
2005/02/20 21:42:55-08:00 mostang.com!davidm
Make it easier to use libunwind inside Linux-kernel: rename
NELEMS to ARRAY_SIZE and make ALWAYS_INLINE include the "inline"
keyword.
2005/02/18 22:20:58-08:00 hp.com!davidm
Merge wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind-v0.98
into wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind
2004/12/15 15:40:09-08:00 hp.com!davidm
ia64: Make ia64 build again.
2004/12/15 15:38:34-08:00 hp.com!davidm
Fix library dependencies so it's possible to do a successful "make
check" even when the GCC-based libunwind.so is installed in /lib.
2004/12/15 15:36:37-08:00 hp.com!davidm
Put separate copies of the ELF-reading code into each library that
needs it. Anything else if fragile or inefficient.
2004/12/08 17:27:12-08:00 hp.com!davidm
Merge bk://unwind@bkbits.net/libunwind
into wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind
2004/12/06 10:40:50-08:00 mostang.com!davidm
x86: Make longjmp() work. Unfortunately, siglongjmp() doesn't
work yet since there aren't enough exception-handling
argument registers available to make that work easily.
Will need to come up with something clever to make that
work. Perhaps we can always use sigreturn() to atomically
do a setcontext() with signal-mask restoration.
2004/12/04 17:03:37-08:00 mostang.com!davidm
Regenerate src/Makefile.in.
2004/12/04 17:00:06-08:00 hp.com!davidm
hppa: Implement a useful setcontext() (but call it _Uhppa_setcontext())
and use it to make Gtest-exc work.
2004/12/02 23:56:58-08:00 hp.com!davidm
Fix merge conflict.
2004/12/02 23:51:02-08:00 hp.com!davidm
test-ptrace: Improve label-printing and allow nesting up to 64 deep.
2004/12/02 18:37:48-08:00 hp.com!davidm
hppa: Fix it enough so it actually starts to be useful.
2004/12/02 00:40:46-08:00 mostang.com!davidm
hppa: Initial support for (32-bit) PA-RISC Linux. It should be good
enough to get tests/Gtest-bt working.
2004/11/30 22:53:53-08:00 mostang.com!davidm
Regenerate "configure".
2004/11/30 22:44:48-08:00 mostang.com!davidm
x86-64: Fix it up some more. Make check has no unexplained failures
anymore (see README for details).
2004/11/30 21:47:49-08:00 mostang.com!davidm
x86: Fix comment-typo.
2004/11/23 16:59:58-08:00 mostang.com!davidm
x86/-64: First cut at supporting libunwind-ptrace for x86 and
x86-64.
2004/11/23 12:49:55-08:00 mostang.com!davidm
x86: Fill in save-locations by hand if DWARF-info is unavailable for
a signal-frame. This should help when running on old Linux
kernels which do not provide the vDSO.
2004/11/23 18:01:10-08:00 mostang.com!davidm
x86-64: Provide a minimal unw_resume() implementation and fix
an off-by-one error that was present in x86 and ia64
forever (at least on ia64 the error was harmless, but it's
still a bug...).
2004/11/23 16:17:37-08:00 mostang.com!davidm
x86-64: Fix unwinding across signal-frames on platforms that fail to
provide unwind-info for the signal trampoline. This makes
Gtest-bt work on SuSE LES 9.
2004/11/22 10:22:37-08:00 mostang.com!davidm
x86-64: Make it build again.
2004/11/17 02:43:40-08:00 mostang.com!davidm
Fairly major overhaul of DWARF2 unwinder. The major change is that
the auxiliary DWARF-info is maintained in a separate structure
(dwarf_cie_info, I may rename this to dwarf_aux_info) rather than
in an unw_dyn_info_t. The latter seemed promising at the beginning,
but it's become clear that it was a bad idea so it's time to remove
it.
2004/11/17 02:06:25-08:00 mostang.com!davidm
tests/Gtest-resume-sig: Clean it up some more and make it more robust.
2004/11/16 15:14:56-08:00 hp.com!davidm
Merge bk://unwind@bkbits.net/libunwind
into wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind
2004/11/16 14:09:02-08:00 hp.com!davidm
Manual merge with v0.98.3.
2004/11/05 00:14:10-08:00 hp.com!davidm
Fix merge conflict with v0.98.2.
2004/11/03 13:57:00-08:00 hp.com!davidm
Manual merge with v0.98.2.
2004/11/03 11:45:24-08:00 hp.com!davidm
Merge wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind-v0.98
into wailua.hpl.hp.com:/home/davidm/src/unwind/libunwind
2004/10/25 17:43:58+02:00 homeip.net!davidm
x86: Add Debug statement for return-value.
Define DWARF_IS_REG_LOC for the local-only case.
2004/10/25 17:38:51+02:00 homeip.net!davidm
Fix typo: DW_CFA_CFA_expression -> DW_CFA_expression.
2004/10/25 07:52:30-07:00 hp.com!davidm
ia64: Add Debug() statement to print unw_step() return value at debug level 2.
2004/10/25 05:21:53-07:00 hp.com!davidm
Improve Debug() support for ia64 a bit and make Debug (N, ...) get printed when
UNW_DEBUG_LEVEL==N.
2004/10/21 16:06:28+02:00 homeip.net!davidm
Fix _UPT_get_dyn_info_list_addr() so it doesn't fail just because
a /proc/PID/maps file contains a mapping of something other than
a regular file. Reported and fix proposed by Todd L. Miller.
2004/10/21 11:15:44+02:00 homeip.net!davidm
Merge bk://unwind@bkbits.net/libunwind
into mosberger.homeip.net:/home/davidm/src/unwind/libunwind
2004/10/21 11:15:12+02:00 homeip.net!davidm
dwarf: Fix some rather serious bugs in the DWARF expression evaluator.
2004/10/19 23:24:57-07:00 mostang.com!davidm
Fix some minor typos.
2004/10/19 23:15:02-07:00 mostang.com!davidm
dwarf: Fix Gstep() so it doesn't fail just because the IP didn't
change. This makes tests/{G,L}test-exc work on x86.
2004/10/19 23:11:08-07:00 mostang.com!davidm
tests/Gtest-exc.c: Fix test-case so it works as was intended.
2004/10/19 23:06:24-07:00 mostang.com!davidm
Use -fexceptions when compiling libunwind with GCC.
Switch version to 0.99-alpha.
BKrev: 427740adF-X3amNLHAfKa4B063DYxQ
2004/10/19 23:11:07-07:00 mostang.com!davidm
(got_here): New global variable.
(raise_exception): Fix off-by-2 error so that we _really_ step
to the outermost a() frame.
(get_bsp): New function.
(__builtin_ia64_bsp): Remove.
(a): Print stack and bsp addresses as we recurse.
When resuming execution in outermost a() frame (n==depth),
clear "result" and set "got_here" so we know we landed in
the right place.
(main): Don't accept arguments that cause "depth" to be < 1.
When returning from a(), also check "got_here". If
the check failed, print result, got_here, and nerrors
for diagnostic purposes.
(Logical change 1.290)
2005/02/24 23:28:02-08:00 hp.com!davidm
Fix merge-conflict.
2004/11/16 14:09:01-08:00 hp.com!davidm
Manual merge.
2004/11/05 00:14:10-08:00 hp.com!davidm
Fix merge conflict.
2004/11/03 13:57:00-08:00 hp.com!davidm
Merge.
2004/10/19 23:06:23-07:00 mostang.com!davidm
(pkg_minor): Switch to 99.
(pkg_extra): Switch to -alpha.
(CFLAGS): Add -fexceptions if we're compiling with GCC. It's
needed to get the proper unwind tables on platforms
with DWARF unwind info (well, at least on x86 it's needed).
(Logical change 1.290)
2004/12/02 23:51:00-08:00 hp.com!davidm
(do_backtrace): Also print the symbol offset. Increase nesting-level
tolerance to 64 so we can test programs with deeply nested
call-chains without triggering spurious warnings.
2004/11/30 22:44:47-08:00 mostang.com!davidm
(do_backtrace): Print IP if unw_get_proc_info() fails.
2004/11/23 18:01:09-08:00 mostang.com!davidm
(do_backtrace): Fix "start_ip might be used uninitialized" warning.
(Logical change 1.290)
2005/04/07 12:19:38-07:00 hp.com!davidm
(ia64_make_proc_info): After looking up proc-info, cache it if
caching is enabled.
2005/02/20 21:42:55-08:00 mostang.com!davidm
Adjust for NELEMS to ARRAY_SIZE renaming.
(Logical change 1.290)