This a simple skeleton for a non recursive AML parser + interpreter.
For now it support very little stuff, only a couple of opcodes but that
is enough to load a very very simple AML table.
Co-authored-by: RatcheT2497 <[email protected]>
This allows us to see the coverage of each library without transitive
usages. As an example, Vector::clone() is never tested directly in
Tests/AK, and it's coverage depends on an external test or library. This
means that its coverage is fragile as the code using it in tests might
be dropped in the future.
This will allow everything defined in headers to be instrumented. As an
example, the function `AK::any_of` isn't instantiated inside AK, that
means that no coverage is reported if we don't consider the
instantiation in the test binary itself.
Despite its name, this overlay isn't Linux-specific. It enables the v3d
node next to other things.
Raspberry Pi OS also enables this overlay by default.
The tool depends on MPFR, which is not listed as a required dependency
on all platforms (e.g. macOS). So let's disable CompareAKMathAgainstMPFR
by default instead of adding a new dependency.
To build the tool, set ENABLE_COMPARE_AK_MATH_AGAINST_MPFR to ON in your
Lagom directory.
In the CORE-MATH codebase, not all mpfr-based math functions set the
exponents limits, some assume it is done before calling them. So let's
set it globally and remove the call to mpfr_set_emin code in exp().
This tool runs a bunch of accuracy and performance tests on standard
math functions. The accuracy is measured against the MPFR library, which
provides results precise enough to be correctly rounded to double
precision floating points.
By default, the tool test the math functions from AK but a runtime flag
can be used to instead test the system's libm.
A few test cases are internally generated, but to get more precise
results the tool is capable of reading worst-cases files from the
CORE-MATH project. The location of the repository should be given with
the --core-math PATH option.
Heavily inspired by https://github.com/nico/js-math-bench.
This change also removes as much direct use of JS::Promise in LibWeb
as possible. When specs refer to `Promise<T>` they should be assumed
to be referring to the WebIDL Promise type, not the JS::Promise type.
The one exception is the HostPromiseRejectionTracker hook on the JS
VM. This facility and its associated sets and events are intended to
expose the exact opaque object handles that were rejected to author
code. This is not possible with the WebIDL Promise type, so we have
to use JS::Promise or JS::Object to hold onto the promises.
It also exposes which specs need some updates in the area of
promises. WebDriver stands out in this regard. WebAudio could use
some more cross-references to WebIDL as well to clarify things.
(cherry picked from commit 2c3531ab78c5c9ef9fa05a666ec29ecf284961ab)
This prevents the horrendous console spam when functions are resolved,
e.g. on the Royal Albert Hall website.
(cherry picked from commit 48366ddddf3e1231abf116fc38d9b56b3c259229)
This is a mixin in the IDL, so let's treat it as a mixin in our code and
let both SVGElement and MathMLElement reuse the implementations that we
wrote for HTMLElement.
(cherry picked from commit 5f84c2c3afef81fac09b9b255baa97326ce2b4cd)
The current HEAD contains a bunch of stuff not supported by wabt (or
us), that also appear to not be fully merged yet; stick to the last
known commit for now.
(cherry picked from commit 83f52fca80fc375acb2c20ab54b8a9b62b457802)
The test sends a datagram whose UDP Length is smaller than a UDP header
and one whose Length is larger than the IPv4 payload, followed by a
well-formed datagram. The two malformed datagrams must be dropped, and
the well-formed one must still be delivered.
Injecting a UDP header with an arbitrary Length requires a raw socket,
which is restricted to the superuser, so the test is installed setuid
root like the other privileged kernel tests.
This will allow Toolchain's scripts to use the same logic. Note that we
use a symlink in the Ports directory so Meta/install-ports-tree.sh can
just copy the link's destination to have a working and self-contained
copy.
For symlinks targeting directories, `git ls-files` only lists the
symlink file and not the content of the targeted directory, so let
`rsync` go recursive on these.
This allows us to also install patches for binutils, gcc and llvm.
Co-authored-by: Eduardo Casadei <[email protected]>
Some of our compile flags are C++/Objective-C++ only
For the flags that are used with GCC, wrap them in a 'cxx only'
macro to avoid passing them to a C compiler.
Pointing to an arbitrary git branch is fundamentally at odds with hash
validation of the downloaded archive file; it may work if the upstream
repo is inactive but should never be relied on.
Additionally external projects consuming ports data benefit from a
unique version identifier, even if that's just a commit hash, e.g.:
https://github.com/repology/repology-updater/issues/1626
- New config format, the old format is no longer supported
- Support for EXT2 is dropped in the new version, so the kernel now
needs to be on the FAT32 partition
- The EFI system partition size has been adjusted to match the
`build-image-grub-uefi.sh` script
- Limine no longer installs its BIOS stage 2 code into the empty space
before the first partition, it now has its own BIOS boot partition
- Corrected the root= parameter to something that is at least
correct if the root file system is on the first disk
- Added missing serial_debug parameter
debug-kernel.sh currently attempts to load "Prekernel64" as the
x86_64 prekernel executable.
However, the build system now produces "kernel_x86-64" instead,
causing GDB to fail to load the prekernel executable during
startup.
Load the generated executable so that prekernel debugging works
without manually adding the prekernel symbol file.
Rather than loading an absolute filepath in GML files, change the
setter for this property to use a resource path.
This results in a bunch of churn related to issue 22864, but does not
change any functionality.
This is a slight behavior change in some places. Some places did
(r.size().to_type<float>() * max(scale_x, scale_y)).to_type<int>();
After this commit, the semantics are now like `(...).to_rounded<int>()`,
that is we no longer sometimes omit a column or row in the fitted
direction.
Migration is a QEMU feature that allows to change the host of a VM or to
do a snapshot. However, this feature prevents the x86_64's TSC to be
exposed as invariant, which will be required to make proper use of the
next commit.
Note that Linux guests don't seem to have a problem with using TSC with
migration=on. So if we ever want back the migration feature, there seems
to be a way to still use the TSC at the same time.
For the moment, disabling migration altogether is just simpler.