Arun Sharma
00aed9631b
Add an experimental and optional frame chain unwinding for ARM
...
The environment variable UNW_ARM_UNWIND_METHOD controls the unwind method.
1 - debug_frame unwinding
2 - frame chain unwinding,
3 - 1 & 2 (default))
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-26 19:28:44 -07:00
Arun Sharma
46e10c5abe
Support .debug_frame based unwinding in _UPTi_find_unwind_table()
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-26 19:25:41 -07:00
Arun Sharma
546463d1e7
Factor out and export dwarf_find_debug_frame() function
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-26 19:21:30 -07:00
Arun Sharma
1787a2fd28
Add path and pathlen arguments to tdep_get_elf_image()
...
Signed-off-by: Andris Zeila <andris.zeila@accenture.com>
2010-05-15 12:14:09 -07:00
Lassi Tuura
a9dce3c06e
During the stack unwinding process, the return address points to
...
the instruction after the call for a normal frame. libunwind uses
IP-1 to lookup unwind information. However, this is not necessary for
interrupted frames such as signal frames (or interrupt frames) in
the kernel context.
This patch handles both cases correctly.
Based on work by Mark Wielaard <mwielaard@redhat.com>
2010-04-24 19:16:09 -07:00
Lassi Tuura
dac2d001af
Identify signal frames by augmentation attribute.
2010-04-24 17:18:26 -07:00
Konstantin Belousov
fd88f41818
Merge remote branch 'origin/master' into freebsd
...
Conflicts:
src/x86/Gis_signal_frame.c
src/x86/Gstep.c
src/x86_64/Gis_signal_frame.c
src/x86_64/Gstep.c
2010-04-05 16:14:50 +03:00
Arun Sharma
8e53e62db9
Refactor os specific code for x86 (both 32 and 64 bit).
...
Move Linux specific code into ${arch}/Gos-linux.c
2010-04-04 16:46:13 -07:00
Konstantin Belousov
e9cd30040e
Move x86 porting further.
2010-03-13 20:28:12 +02:00
Konstantin Belousov
71c4161247
Remove extra empty line
2010-03-13 18:33:22 +02:00
Konstantin Belousov
bdee34d766
Jump buffer indices for FreeBSD/x86.
2010-03-13 16:48:14 +02:00
Konstantin Belousov
c61e0b932c
Add sys/types.h for x86.
2010-03-09 17:37:52 +02:00
Konstantin Belousov
71cbdc697f
Provide real values for jmpbuf offsets for FreeBSD
2010-03-08 21:49:38 +02:00
Konstantin Belousov
752ce15c4f
Preliminary version of freebsd syscall unwinder
2010-03-08 19:45:54 +02:00
Konstantin Belousov
093855f12a
Remove unneeded includes of sys/types.h
2010-03-08 00:25:22 +02:00
Konstantin Belousov
64b5391b7b
Include sys/types.h once
2010-03-08 00:24:32 +02:00
Konstantin Belousov
c64723835c
Support walk over freebsd sigframes
2010-03-07 21:53:01 +02:00
Konstantin Belousov
3eabce18b1
Include sys/types.h when needed.
2010-03-06 16:43:39 +02:00
Konstantin Belousov
8ccebc9307
MAP_ANONYMOUS
2010-03-06 16:23:24 +02:00
Konstantin Belousov
905034ce72
Initial attempt at the build infrastructure for FreeBSD.
2010-03-06 00:41:37 +02:00
Stefan Demharter
752076789f
Be gcc compatible for C++ exceptions on 32 bit platforms.
2010-02-21 22:45:08 -08:00
Paul Pluzhnikov
54752e0df0
Implement getcontext for x86
...
Greetings,
Attached patch implements getcontext for x86.
Motivation is the same as:
http://lists.nongnu.org/archive/html/libunwind-devel/2008-06/msg00009.html
This also fixes check-name-space on x86.
Tested on Linux/86 with no new failures.
Thanks,
--
Paul Pluzhnikov
2009-12-23 09:59:52 -08:00
Arun Sharma
f88e949d16
Set UNW_TDEP_SP on x86 to ESP
...
This is similar to what has been done on other archs and resolves an out of
bounds array access elsewhere.
2009-11-11 21:58:15 -08:00
Arun Sharma
3067acf172
Remove duplicate calls to mark_as_used
2009-10-17 22:45:30 -07:00
Arun Sharma
4ab26bcdaa
Fix compiler warnings seen with --disable_block_signals
2009-10-16 15:52:44 -07:00
Arun Sharma
491d576529
Fix compiler warnings on x86_64
2009-10-16 14:01:50 -07:00
Arun Sharma
af9daf66af
Fix the naming of the sigprocmask parameters.
2009-10-15 19:29:49 -07:00
Paul Pluzhnikov
839db77b7b
Wait if there is contention on the cache
...
The behavior on wait vs abort unwind depends on the locking primitive
chosen by the user. This makes the API consistent and independent of
the locking primitive.
2009-09-25 09:38:55 -07:00
Paul Pluzhnikov
9aa0d6d680
Allow caller to block signals.
...
Greetings,
Here is the second part, actually implementing the configure option.
Thanks,
--
Paul Pluzhnikov
commit cf823ed0d4d2447aa91af0e3cb5fbb6a6cba5068
Author: Paul Pluzhnikov <ppluzhnikov@google.com>
Date: Mon Sep 21 11:37:38 2009 -0700
New configure option to allow caller to block signals.
2009-09-25 09:36:41 -07:00
Arun Sharma
35e6a1a108
This avoids a C++ syntax error with a (non-gcc?) compiler.
...
Signed-off-by: Lassi Tuura <lat@cern.ch>
2009-08-27 17:01:17 -07:00
Arun Sharma
b483ea3f0e
Multilib support.
...
This is useful when packaging for multiple target architectures.
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
2009-04-13 12:00:31 -07:00
Arun Sharma
aaed432328
Remove more autogenerated files.
2009-04-13 10:50:51 -07:00
Arun Sharma
2fce54102c
Implement _Unwind_GetIPInfo() as required by the C++ ABI
...
Provide a special implementation for ia64, because the unwind
information is such that an IP adjustment is not necessary before
looking up unwind info.
Bad things happen if libunwind only provides parts of the ABI and
the rest come from libgcc.
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
2009-04-02 22:22:05 -07:00
Arun Sharma
9607c6407c
Fixup CONFIG_DEBUG_FRAME support.
2009-03-17 19:08:58 -07:00
Arun Sharma
ec53de82ec
[PATCH] Avoiding name conflict with the GNU-specific dprintf in stdio.h
...
Signed-off-by: Yang Zhang <yaaang@gmail.com>
2009-03-16 21:37:11 -07:00
Arun Sharma
ff0ae70cc3
Bad pointer validation for 32 bit x86.
...
This corresponds to commit 649f1fb344
.
Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
2009-03-16 21:34:49 -07:00
Arun Sharma
ef29eade44
This patch eliminates one system call per unwind by not using the
...
getcontext in libc.
Also cleanup the namespace (check-name-space passes on x86_64 now).
Replace uses of offsets.h with ucontext_i.h.
Rename _x86_64_setcontext to _Ux86_64_setcontext.
TBD: Add CFI annotations for get/setcontext.
Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2008-06-16 14:42:16 -06:00
Arun Sharma
649f1fb344
[X86-64] For local unwinding, we have a defence mechanism against
...
bad/missing unwind information, which could result in libunwind
dereferencing bad pointers. This mechanism is based on msync(2) system
call and significantly reduces the chances of a bad pointer
dereference in libunwind.
The original idea was to turn this mechanism on only when necessary
i.e. libunwind didn't find proper unwind information for a IP.
There are a couple of problems in the current implementation.
* The flag is global and is modified without locking
* The flag isn't reset when starting a new unwind
The attached patch makes ->validate a per-thread setting by moving it
into struct cursor from unw_local_addr_space and resets it to false
when starting a new unwind. As a result, cursor->as_arg points to the
cursor itself instead of the ucontext (for the local case).
This was found to reduce the number of msync() system calls from an
application using libunwind significantly.
Signed-off-by: Paul Pluzhnikov <ppluzhnikov@google.com>
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2008-06-16 14:35:53 -06:00
Daniel Jacobowitz
3842dac733
Add initial ARM and MIPS support. To support this, also enable the
...
reading of .debug_frame sections (used in lieu of .eh_frame sections
when they're not available).
2008-02-04 17:16:37 -07:00
David Mosberger-Tang
a8be10e251
[X86] Cleanup XMM handling for x86
...
* Use explicit types for XMM registers
* Support full width (128 bits) access
Signed-off-by: Andrew Cagney <cagney@redhat.com>
Signed-off-by: Arun Sharma <aruns@google.com>
2008-01-07 15:41:20 -07:00
Jose Flavio Aguilar Paulino
9ea6af8ed5
[PPC32] Make PPC32 unwinding work for real.
2007-10-08 12:33:18 -06:00
Jose Flavio Aguilar Paulino
4499bb29a6
[PPC32] First check-in to add preliminary support for Linux/PPC32.
2007-09-12 21:52:25 -06:00
David Mosberger-Tang
e6b9f350f7
Introduce a tdep_get_func_addr_hook() in the ELF lookup_symbol()
...
routine and add address-space argument. This is needed because on
PPC64, a the function-name symbol refers to a function descriptor
(unlike, for example, on ia64, where the @fptr() operator is needed to
refer to a function descriptor). Thus, in order to look up the name
of a function, we need to dereference the function descriptor. To
make matters more "interesting", the function descriptors are normally
resolved by the dynamic linker, so we can't get their values from the
ELF file. Instead, we have to read them from the running image, hence
the need for the address-space argument.
2007-08-22 13:02:09 -06:00
David Mosberger-Tang
fad8b04c9f
Rebuilt configure and Makefile.in files.
2007-08-06 19:56:28 -06:00
Jose Flavio Aguilar Paulino
b33021e4b2
Add PPC64 support.
2007-08-02 09:59:43 -06:00
Arun Sharma
be02d9ac0d
dwarf.h needs atomic_ops.h. So include it.
2006-08-16 15:39:52 -06:00
David Mosberger-Tang
b3f25f65af
[dwarf] Include <config.h> in dwarf.h since it's testing HAVE_ATOMIC_OPS_H.
...
Reported by Arun Sharma.
2006-08-10 21:44:14 -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
1fdb08e5fc
Various fixes to get x86 to compile and work again.
...
include/dwarf.h: Declare dwarf_reg_state_pool and dwarf_cie_info_pool.
include/dwarf_i.h: Include libunwind_i.h instead of tdep.h.
Make dwarf_to_unw_regnum() a macro so it doesn't get compiled
into an object file merely because it include dwarf_i.h (important
when optimization is turned off).
(dwarf_read_encoded_pointer_inlined): New function.
include/tdep-x86/libunwind_i.h: Add include of "mempool.h".
include/tdep-x86_64/libunwind_i.h: Add include of "mempool.h".
2006-07-26 22:36:03 -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
8cdd8bfed8
[x86-64] Make even UNW_LOCAL_ONLY accessors go through validation.
...
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 21:39:46 -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
036cbfa020
Fix x86 compilation.
...
x86 needs the global_cache just like the x86-64 version.
Signed-off-by: Andrey.Veskov@intel.com
Signed-off-by: Arun Sharma <arun.sharma@google.com>
2006-07-26 21:20:59 -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
37be21c01e
Restore more files wiped out by Bitkeeper->CVS->GIT transition.
2006-07-26 15:09:39 -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
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
b47b9aa232
UNW_IA64_BSP and UNW_IA64_SP are no longer read-only.
...
(Logical change 1.303)
2005-05-20 15:32:18 +00:00
hp.com!davidm
7a8b0ba617
(rbs_get_base): New macro.
...
(Logical change 1.297)
2005-05-20 13:13:07 +00:00
hp.com!davidm
d5ab898cdf
(SOS_MEMORY_SIZE): Move to here from src/mi/mempool.c.
...
(Logical change 1.295)
2005-05-20 11:28:16 +00:00
hp.com!davidm
9d94c8f62b
Rename: include/x86_64/jmpbuf.h -> include/tdep-x86_64/jmpbuf.h
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
e3ac62c5f1
Rename: include/x86_64/jmpbuf.h -> include/tdep-x86_64/jmpbuf.h
...
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
3a2c945244
Rename: include/x86/jmpbuf.h -> include/tdep-x86/jmpbuf.h
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
f6d4c74beb
Rename: include/x86/jmpbuf.h -> include/tdep-x86/jmpbuf.h
...
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
e6cf7e84eb
Rename: include/x86/dwarf-config.h -> include/tdep-x86/dwarf-config.h
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
d90772c868
Rename: include/x86/dwarf-config.h -> include/tdep-x86/dwarf-config.h
...
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
56cea5b4a9
Rename: include/ia64/script.h -> include/tdep-ia64/script.h
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
12f0ce1a39
Rename: include/ia64/script.h -> include/tdep-ia64/script.h
...
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
910087d5b5
Rename: include/ia64/jmpbuf.h -> include/tdep-ia64/jmpbuf.h
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
e86e18224d
Rename: include/ia64/jmpbuf.h -> include/tdep-ia64/jmpbuf.h
...
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
983d841e64
Rename: include/hppa/jmpbuf.h -> include/tdep-hppa/jmpbuf.h
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
f8a07dfb22
Rename: include/hppa/jmpbuf.h -> include/tdep-hppa/jmpbuf.h
...
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
400a917a7a
Rename: include/hppa/dwarf-config.h -> include/tdep-hppa/dwarf-config.h
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
c56b45e82e
Rename: include/hppa/dwarf-config.h -> include/tdep-hppa/dwarf-config.h
...
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
180a1ececa
Initial revision
2005-05-20 09:48:08 +00:00
hp.com!davidm
f9b7af51ed
Include <libunwind.h> instead of "internal.h" and "mempool.h".
...
(dwarf_reg_state_pool): Move to dwarf_i.h.
(dwarf_cie_info_pool): Likewise.
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
3ad4903154
Include "libunwind_i.h" instead of "tdep.h".
...
Include "mempool.h".
(dwarf_reg_state_pool): Move here from dwarf.h.
(dwarf_cie_info_pool): Likewise.
Include "libunwind_i.h" instead of "tdep.h".
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
ead43e8545
Include "libunwind_i.h" instead of "internal.h".
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
59f9f6a1ac
Include "libunwind_i.h" instead of "internal.h".
...
2005/05/19 08:11:38-07:00 hp.com!davidm
Rename: include/ia64/rse.h -> include/tdep-ia64/rse.h
(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
5e5db2dada
Adjust for renaming of file.
...
Drop include of <libunwind.h>.
Include "script.h" instead of "ia64/script.h".
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
0870c54c2a
Adjust for renaming of file.
...
Drop include of <libunwind.h>.
Include "script.h" instead of "ia64/script.h".
2005/05/19 07:42:45-07:00 hp.com!davidm
Rename: include/tdep-ia64.h -> include/tdep-ia64/libunwind_i.h
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
ce46ac7167
Adjust for renaming of file.
...
(tdep_put_unwind_info): Adjust for change of arguments.
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
bea50a5d41
Adjust for renaming of file.
...
(tdep_put_unwind_info): Adjust for change of arguments.
2005/05/19 07:42:45-07:00 hp.com!davidm
Rename: include/tdep-x86_64.h -> include/tdep-x86_64/libunwind_i.h
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
47eca0fadf
Adjust for renaming of file.
...
(tdep_put_unwind_info): Adjust for change of arguments.
2005/05/19 07:42:45-07:00 hp.com!davidm
Rename: include/tdep-x86.h -> include/tdep-x86/libunwind_i.h
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
34e70b5937
Adjust for renaming of file.
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
dce55286ab
Adjust for renaming of file.
...
2005/05/19 07:42:45-07:00 hp.com!davidm
Rename: include/tdep-hppa.h -> include/tdep-hppa/libunwind_i.h
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
6980fa4f25
Adjust comment.
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
e5944788ad
Adjust comment.
...
2005/05/19 08:13:00-07:00 hp.com!davidm
Rename: include/x86_64/dwarf-config.h -> include/tdep-x86_64/dwarf-config.h
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
c446186670
Add include of <stdlib.h>.
...
}(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
5135d044ed
Add include of <stdlib.h>.
...
2005/05/19 07:42:56-07:00 hp.com!davidm
Rename: include/internal.h -> include/libunwind_i.h
(Logical change 1.294)
2005-05-20 09:48:08 +00:00
hp.com!davidm
c3e9383d30
(struct cursor): Add "ec_loc" member.
...
(Logical change 1.293)
2005-05-17 21:28:19 +00:00
mostang.com!davidm
836ee627e0
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
fbab73e7e6
Improve comment.
...
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
fdb6bee068
Change "ia64_rse" prefix to "rse".
...
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
27f7d7d720
(unw_tdep_proc_info_t): Drop dwarf_info member.
...
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
e7fba77e9d
(unw_dyn_info_format_t): Remove UNW_INFO_FORMAT_DWARF_FDE.
...
(UNW_DYN_DFI_FLAG_FDE_PE_MASK): Remove.
(UNW_DYN_DFI_FLAG_AUGMENTATION_HAS_SIZE): Remove.
(unw_dyn_dwarf_fde_info_t): Remove.
(unw_dyn_info_t): Remove dfi member.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
66ecac1b5f
(unw_addr_space): If we have atomic_ops.h, declare cache_generation
...
to be of type AO_t.
2004/10/25 17:43:57+02:00 homeip.net!davidm
(DWARF_IS_REG_LOC): Define as 0 for the local-only case.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00
mostang.com!davidm
adeb9b5984
(struct dwarf_cursor): Add members eh_args and eh_valid_mask so
...
we can track writes to exception-handling argument regs.
2004/11/17 02:43:39-08:00 mostang.com!davidm
(dwarf_cie_info_pool): New declaration.
(dwarf_cie_info_t): New type.
(dwarf_state_record): Drop cfa_is_sp member.
(dwarf_extract_proc_info_from_fde): Rename from dwarf_parse_fde.
2004/10/25 17:38:51+02:00 homeip.net!davidm
Fix typo: DW_CFA_CFA_expression -> DW_CFA_expression.
(Logical change 1.290)
2005-05-03 09:13:17 +00:00