| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Documentation tends to get outdated, and "Newly added" does not age well.
Remove descriptions of toolchain problems that were fixed ~20 years ago.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This makes the tests build on ia64 so that they can be run,
a proper fix would be to add unw_init_local2() to src/ia64/Ginit_local.c
|
| |
|
| |
|
|
|
|
|
|
| |
apply e85b65ce fix to loongarch64
Signed-off-by: Shuo Wang <wangshuo_1994@foxmail.com>
|
|
|
|
|
|
|
| |
Some symbols for aarch64 were missing, and some were marked as
extraneous in this ABI checker.
Fixes #389.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The test is skipped if the compiler doesn't support
SVE, otherwise it uses some SVE intrinsics across a
few functions and then sends a signal to take a
backtrace from the sum() function.
Without the previous SVE changes, the unwinding
fails at sum() and the stack looks like:
-> signal_handler()
-> kill()
-> sum()
With the changes the full stack to main can be
unwound and the test passes:
-> signal_handler()
-> kill()
-> sum()
-> square()
-> main()
Currently this test will pass on a Graviton 3 instance
on AWS and with gcc-10.
Co-authored-by: Kent Cheung <Kent.Cheung@arm.com>
Signed-off-by: James Clark <james.clark@arm.com>
Change-Id: Ibe38e6b0fa26276c545f044ffdd26fbdb2789c38
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow local and remote unwinding through signal frames
when variable length SVE registers are pushed onto the
stack.
The vector length is saved by the kernel into the signal
context, but it is not scaled in the same way that
dwarf expects it to be. Therefore a conditional has
been added to tdep_access_regs() that scales the value
depending on whether it is going to be accessed through
a register or through memory.
Signed-off-by: James Clark <james.clark@arm.com>
Change-Id: Ie16aa22b36127ba5aa81f20280b1df7e4ba6d49b
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows remote only unwinding though an SVE
function that pushes SVE registers onto the stack[1].
The remote unwinder is responsible for providing the
value of the VG register at the time the sample was
taken.
[1]: https://github.com/ARM-software/abi-aa/blob/main/aadwarf64/aadwarf64.rst
Signed-off-by: James Clark <james.clark@arm.com>
Change-Id: I8a203b73b17cd4a07afc1fdc55ad11765d73e173
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the 0 magic number and use the existing macro
DWARF_MEM_LOC that makes it more readable that signal
frame locations are stored in memory.
No functional changes.
Signed-off-by: James Clark <james.clark@arm.com>
Change-Id: I5b15b4111290dec8e678b8bbd8c9d62d6e52fda0
|
|
|
|
|
|
|
|
|
| |
Simplify the restoration sequence in case of tail calls, and use the
long-supported "jr" alias instead of the fully spelled out jirl form
for brevity.
Suggested-by: qiaopengcheng <qiaopengcheng-hf@loongson.cn>
Signed-off-by: WANG Xuerui <xen0n@gentoo.org>
|
|
|
|
|
|
|
| |
The ptrace usage is not currently supported, so XFAIL for clean test
results. With this applied, all tests pass on a native LoongArch build.
Signed-off-by: WANG Xuerui <xen0n@gentoo.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The original port was done with an early in-house port of Linux that, in
addition to slightly different UAPI headers, also featured a MIPS-like
ABI (the so-called "old world" ABI). The upstream ABI has been revised
since long ago and already frozen, so adjust the port for the "new world".
In particular, we don't have the 24-byte signal trampoline area any more
which was a MIPS o32 thing.
We don't need to keep compatibility for the old-world kernels, because
distributions using said kernels invariably packaged their own libunwind
fork with corresponding support, and the few users tracking upstream
kernels should all have moved on.
Fixes: c5f1d12c77de ("Add port for Linux on LoongArch")
Signed-off-by: Youling Tang <tangyouling@loongson.cn>
Signed-off-by: WANG Xuerui <xen0n@gentoo.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The libunwind LoongArch64 port was done using an early fork of Linux,
with slightly different naming for the register definition symbols.
The libunwind port went in before the kernel port got finalized and
merged, and was never adjusted; so fixing the usage here before release.
Practically no user would be affected since everyone on (development)
upstream kernels would have migrated long ago.
Fixes: c5f1d12c77de ("Add port for Linux on LoongArch")
Signed-off-by: WANG Xuerui <xen0n@gentoo.org>
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
In some build environments, coredumps are not created even if the
corresponding ulimit is positive. This change skips the test if
the coredump is missing.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
A recent change missed adding a new header to the dist list. `make distckeck`
now runs successfully once again.
Fixes #409
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
All warnings should be heeded, including the ones spat out by autoreconf. In
this case, autoconf wanted a place to generate its m4 files into and automake
wanted the right target names in doc/Makefile.am.
Also added AM_SILENT_FILES([yes]) to reduce the visual noise in build output to
make spotting build problems easier. You can override the silent default by
running `make` with `V=0` appended to the command line.
Removed the unnecessary and unused acinclude.m4 file to reduce clutter in the
source directory.
|
|
|
| |
This change fixes unwinding from the vsyscall region. Although vsyscall has been phased out, it is still possible to call into it at an address where libunwind is unable to step out of.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The cross-built CI runs using GiotHub actions were using QEMU to run `make
check`. Instead, the host should run `make check` and the actual test binary
should be run under QEMU.
This change configures the cross build to use a (new) qemu-test-driver script as
the test harness, which in turn invokes the test under QEMU. The tests are
linked to the libunwind libraries statically to avoid complicating the search
paths and invoking libtool.
Fixes #401.
|
|
|
|
|
|
|
| |
* Fix typos
* Cleanup trailing whitespaces in committed files
* Update include/tdep-ia64/libunwind_i.h
|
| |
|
| |
|
|
|
|
|
|
| |
Some (older) OSes do not support this POSIX function. Make it optional.
Fixes #379.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The coredump remote was architected on the assumption that the .text and
.eh_frame sections were mapped onto the same segment, and that that segment was
always the first PT_LOAD segment in an ELF file. Well, that was never a valid
assumption, and moderns releases of various toolchains have started splitting
the PT_LOAD segments for security reasons.
This change implements an M:N mapping of PT_LOAD segments in a coredump file to
backing ELF files and calculates and adjusts offsets appropriately. Because the
backing files get mapped in a lot of file I/O operations have been replaced with
simple memory reads. Once a backing file is memory mapped is stays mapped until
the address space is destroyed.
The ucd_*.[ch] files contain only functions that should not be exposed through
the public API so they;re not mangled using the UB naming schedule because I
just bring myself to write code with undefined behaviour.
Reformatted some of the changed files using `astyle --style=gnu` for internal
consistency withing the file.
Fixes #363
|
|
|
|
|
|
|
|
|
| |
The existing code was identifying the segment containing the executable code
(.text section) by assuming it was effectively the first loadable segment. Th
has always worked up until recently but was an invalid assumption. The right
thing to do is check the segment flags to see if the execute bit is set.
This change does just that. Tested on Linux x86_64, no new regressions.
|
|
|
|
|
|
|
| |
Data of this type was added for the s390x port doesn't exists on all OSes. It
needs to be autodetected and optioned out.
Fixes #373
|
| |
|
|
|
|
|
|
|
|
| |
* Add remote unwinding support for macOS
* Fix broken Win build by bumping minimum language requirement to C11
* Update license headers
* Rename remote_unwind to remote
* Revert Gparser.c
|
|
|
|
|
|
|
|
|
|
| |
Instead of struct elf_prstatus or struct prstatus, QNX has a procfs_status
typedef. Added autoconfigury to detect that and switched using a preprocessor
macro to define the type used as a typedef of UCD_proc_status_t instead.
Also changed some field name references where required.
Signed-off-by: Stephen Webb <swebb@blackberry.com>
|
|
|
|
|
|
| |
Stray errors were being reported on travis.ci because /bin/sh was not bash.
Fixes #374.
|
|
|
|
|
|
|
| |
Specifying --with-testdriver=TESTDRIVER at configure time allows the
substitution of a alternative LOG_DRIVER to be specified to enable remote
testing of a cross-built target. See the automake docuemntation on Custom Test
Drivers for more information.
|