Marco Schlumpp [Mon, 20 Nov 2023 08:14:43 +0000 (09:14 +0100)]
Enable unwind tables for libunwind
libunwind has to unwind its own functions too when unwinding the
complete stack. Without unwind tables this is impossible. Therefore,
enable them for libunwind itself.
Marco Schlumpp [Mon, 20 Nov 2023 08:15:09 +0000 (09:15 +0100)]
Remove broken patch for __unw_getcontext
The patch just skipped internal libunwind functions to work-around the missing
unwind tables in libunwind itself. This work-around caused a mismatch between
the actual stack state and what the unwind tables of the user application
expected.
Alexander Jung [Tue, 11 Jul 2023 21:25:56 +0000 (21:25 +0000)]
Introduce `Library.uk`
This new file represents the first step towards proper versioning support of
external microlibrary in Unikraft. The file itself acts as mechanism for
holding metadata-only values about the microlibrary. This metadata is designed
to be compatible with GNU Make whilst simultaneously being human-readable and
readable by programs that are not GNU Make (e.g. tools such as KraftKit).
An important feature of this file is the inclusion of microlibrary versions.
In a later step, once relevant integrations have been made to Unikrat's core
build system and to relevant tools such as KraftKit, the user will be able to
see and select from different versions of the microlibrary.
In this initial commit, the relevant metadata is absorbed from both Makefile.uk,
Config.uk, but also includes new information such as SPDX License identifier.
Andrei Tatar [Mon, 28 Aug 2023 23:18:26 +0000 (01:18 +0200)]
Select lib-compiler-rt as Kconfig dependency
Commit 70bac65 (Split off functionality that depends on libunwind)
in lib-compiler-rt removed the circular dependency between it and
libunwind.
This change thus removes the workaround check for lib-compiler-rt and
more cleanly expresses it through Kconfig `select`.
Signed-off-by: Andrei Tatar <andrei@unikraft.io> Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com> Approved-by: Razvan Deaconescu <razvand@unikraft.io> Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #10
Andrei Tatar [Wed, 10 May 2023 12:48:22 +0000 (15:48 +0300)]
patches: Re-add `UnwindRegistersSave.S` RIP patch
The previous patch (removed in 7b56f9b17de72d0e237e4af2bf72635c48389f3c)
was erroneous in its implementation but its intent was valid: when
saving registers in unikraft libunwind should take the return address of
the previous stack frame as the IP of the throwing function.
This patch implements this functionality correctly.
Signed-off-by: Andrei Tatar <andrei@unikraft.io> Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com> Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com> Reviewed-by: Razvan Deaconescu <razvand@unikraft.io> Approved-by: Eduard Vintilă <eduard.vintila47@gmail.com> Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #7
Andrei Tatar [Fri, 5 May 2023 18:59:23 +0000 (20:59 +0200)]
Update to LLVM 14.0.6
Co-authored-by: Marco Schlumpp <marco@unikraft.io> Signed-off-by: Marco Schlumpp <marco@unikraft.io> Signed-off-by: Andrei Tatar <andrei@unikraft.io> Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com> Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com> Reviewed-by: Razvan Deaconescu <razvand@unikraft.io> Approved-by: Eduard Vintilă <eduard.vintila47@gmail.com> Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Closes: #7
Stefan Jumarea [Sat, 10 Sep 2022 16:31:29 +0000 (19:31 +0300)]
Config.uk: Fix dependencies with libcxxabi
`libcxxabi` and `libunwind` create circular dependencies.
Since libraries like `libcompiler-rt` and `cxx` depend on
`libunwind`, it's more intuitive to remove the `libcxxabi`
requirement of `libunwind` and make
`libunwind` select `libcxxabi`.
Simon Kuenzer [Tue, 13 Jul 2021 19:16:14 +0000 (21:16 +0200)]
Correct license headers introduced by University Politehnica of Bucharest
This commit removes the additional clause
"THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY"
from BSD license headers that got introduced by mistake
with the following commits: 81a28bb - Initial port of Libunwind to Unikraft (Vlad-Andrei BĂDOIU (78692))
On the one hand, this additional clause is redundant because
the BSD license already states that it must remain and the
copyright notice must be kept.
On the other hand, the clause freezes the file header
and prohibits future contributors from extending the
copyright notice for their contributions. This additional
clause is not part of the official BSD 3-clause.
The original author(s) or an authorized representative from
the author's affiliation consents to the change with a
`Reviewed-by` tag to this commit.
Signed-off-by: Simon Kuenzer <simon.kuenzer@neclab.eu> Reviewed-by: Razvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Costin Lupu [Sun, 2 Jun 2019 13:27:45 +0000 (16:27 +0300)]
Fix some of the compiling warnings
This patch removes the "unused-parameter" warnings generated by the origin code
and the multiple definition warnings for _LIBUNWIND_BUILD_ZERO_COST_APIS macro.
Signed-off-by: Costin Lupu <costin.lupu@cs.pub.ro> Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>
This is our initial port of libunwind to Unikraft as an external
library. Libc, or an equivalent, is required for it to work.
The dependency list in the Makefile should be:
...:$(UK_LIBS)/libunwind:$(UK_LIBS)/compiler-rt:
$(UK_LIBS)/libcxxabi:$(UK_LIBS)/libcxx:$(UK_LIBS)/newlib:...
Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@stud.acs.upb.ro> Reviewed-by: Felipe Huici <felipe.huici@neclab.eu>