Norman Feske b4a746bc89 base/error.h: add raise() interface
The new 'raise' function can be used instead of 'throw' to keep the
framework headers void of C++ throw statements, which would otherwise
prevent the compilation of the headers with -fno-exceptions.

In the presence of the C++ runtime, the 'raise' implementation reflects
the supplied error value(s) as C++ exceptions of the appropriate type.
In the (future) optional absence of the C++ runtime, 'raise' remains
unresolved, which then gives us the assurance that the binary contains
no code path leading to 'raise', all error conditions must have been
covered in other ways than 'raise'.

For this reason, 'Genode::raise' is not provided by the base library
but the cxx library (C++ runtime). Once we allow components to opt out
of the cxx library, 'raise' will automatically become unresolved for
those strict components.

Issue #5245
2025-04-10 14:55:21 +02:00
..
2023-07-14 12:06:31 +02:00
2025-04-10 14:55:21 +02:00
2023-03-13 14:32:53 +01:00

This directory contains library-description files.  Each _<libname>.mk_ file
contains the instructions for building the library _<libname>_. The .mk files
are never used directly but they are implicitely processed by the build
system.

Libraries implementing one interface may have specialized implementations for
different CPU architectures. Such architecture-specific _<libname>.mk_ files
are located in corresponding _spec/_ subdirectories. For example, the .mk
files of ARM-specific library variants reside in the _spec/arm/_ subdirectory.
The build system automatically finds the appropriate _<libname>.mk_ file by
evaluating the 'SPECS' build-configuration variable. Whenever the 'SPECS'
variable contains 'arm', the build system considers the _spec/arm/_ directory.