The kernel panic is only present on QEMU 10.1. The cause was fixed in
QEMU 10.2, as the QEMU change (see #26210), also caused regressions for
the Windows SPICE agent.
See: 4be62d3117
Some notes:
- Zig removed support for z/OS[1] and with it some files from libc++
that we were using with patches originating from the LLVM port:
- libcxx/include/__support/ibm/locale_mgmt_zos.h
- libcxx/src/support/ibm/xlocale_zos.cpp
I put them back in and applied the previous patches, all in one big
change.
- The directory iterator code needs to be ported to the new std.Io
interface, but unlike before missing platforms are handled gracefully
by returning an error at runtime so I'll do this later.
- Minor parts of the patch set have been upstreamed[2][3], more will
follow.
[1]: https://github.com/ziglang/zig/pull/25731
[2]: https://codeberg.org/ziglang/zig/pulls/31916
[3]: https://codeberg.org/ziglang/zig/pulls/31931
DECCKM (`ESC [?1h`/`ESC [?1l`) controls whether cursor keys send
application sequences (e.g. `ESC OD`) or standard ANSI cursor sequences
(`ESC [D`).
However, xterm only uses this alternative sequence when no modifiers
are held. This can be tested by running `echo -e '\e[?1h'; cat` and then
pressing some of the cursor keys:
The cursor left key prints `^[OD` (as expected), but Shift+Left prints
`^[[1;2D`, same for the other cursor keys and other modifiers (Ctrl and
Alt).
To match this xterm behavior, only use the application sequence when
no modifiers are held.
This makes the Ctrl+{Left,Right} keybinds work in neovim.
75f4597628 LibGfx/JPEGXL: Move JPEG XL secondary files to own folder
1d193fea6f LibGfx/JPEGXL: Read the HfGlobal bundle
ee48ee8ac7 SSHServer: Add the start of an ssh server implementation
ff75e05bbd LibLine: Write history file atomically
This ports
631ed53082 Meta: Patch up Apple SDK headers to work with C++26
from #26524. As this is not fully mechanical, I'm putting it into
its own commit.
These files are used by wireshark to decode SSH packets. This is really
useful for inspecting the traffic after the SSH peers started
encryption.
To use it, you need to pass --unsafe-keylog-file FILE when starting the
server and then make Wireshark's ssh.keylog_file setting point to the
same file.
Note that this option leaks secrets to the file system and thus is not
safe to use.
The file format is described here:
6add14a3f3/epan/dissectors/packet-ssh.c (L2684-2704)
Previously, making the cursor visible with DECTCEM caused the cursor
to reset its appearance to the shape that was set before the last
DECTCEM command making it invisible.
However, the cursor shape could have been changed between those two
commands (or the cursor could have never been made invisible before),
causing us to display an incorrect cursor shape.
Instead of (incorrectly) keeping track of the old cursor shape in
`m_saved_cursor_shape`, let's simplify this code by introducing a
`set_cursor_hidden` function, which is used by `TerminalWidget` to
set its `m_cursor_is_hidden` variable to enable/disable drawing of
the cursor.
This causes neovim to display the bar cursor shape in insert mode.
Previously, it displayed the block shape since it always issues a
"set cursor visible" command after setting the cursor shape,
therefore we incorrectly reset the shape to a block cursor.
The "max" CPU has been supported by the QEMU RISC-V target since version
8.2. The latest Ubuntu LTS and Debian Stable releases both have newer
versions packaged, so it should be safe to require QEMU 8.2.
This enables extensions like Zkr, which support was added for in the
previous commit.
Authorized public keys are read from the file given by
`--user-authorized-keys-file`. On Serenity (and only there), if
unspecified, the file is assumed to be
`$USER/.config/ssh/authorized_keys`.
Like for the rest of this SSH implementation, only ed25519 keys are
supported. So to connect to the server, one now need to generate an
ed25519 key pair first and make the public part accessible to the
server.
As we don't check the public key itself, we still allow anyone to log
in. We now do require the client to try a key based authentication,
which is done if you have at least one private key your .ssh
configuration folder.
CTR_EL0 is a read-only register that contains information about the
architecture of the caches. Both FreeBSD and Linux seem to allow direct
access to this register, so I don't think we should disallow EL0 to
access it.
This register is typically read during `__clear_cache()` to determine
the data/instruction cache line sizes and whether they are coherent.
`__clear_cache()` in turn is used by JITs to ensure that self-modifying
code works properly.
Similar to the SPSR_EL1 dbgln, print the raw value after the decoded
value.
This is useful for using the ESR_EL1 value with tools like the
https://esr.arm64.dev/ website to get a more detailed decoding.
i686 support war removed, so there is no need to pass -m64 explicitly.
Before i686 support was removed in b49c4eb94f, we used to pass -m32
for 32-bit systems here.
Additionally, installing multilib development packages like
libc6-dev-i386 should be unnecessary now, so the flashy warning message
can be removed.
This also makes the port compile on AArch64 now. Previously, it failed
to build because M_FLAG was undefined.
It still won't build on RISC-V since LuaJIT itself doesn't support
RISC-V yet (https://github.com/LuaJIT/LuaJIT/pull/1267).
These functions are unused.
On RISC-V, the PBMT (memory type) bits are reserved for non-leaf PTEs,
so the semantics of this function for PageDirectoryEntry are dubious.
This is better than hardcoding it to 0.
This new implementation is a direct copy of the IBM i implementation.
Neovim uses this count to determine how many threads to spawn in
`vim.pack`. Previously, it spawned 0 threads and got stuck when
downloading plugins.
LuaJIT switched to a rolling-release model with multiple maintained
branches.
This commit hash is the current head of the branch currently marked
as "production": v2.1.
This is significantly simpler than parsing JSON and using the cpuinfo
array length.
This also has the side effect of making that command work on AArch64
and RISC-V, since ProcessorInfo is not implemented on those
architectures yet.
The QEMU virt machine uses a Goldfish RTC device as its real-time clock.
This means that we now display the correct time in riscv64 QEMU and
date-dependent tests no longer fail!
This driver is based on the PL031 driver.
Now that ladybird was hard-forked from SerenityOS, there's no good
reason to keep supporting iOS.
Ladybird only still exists in the SerenityOS repo to make testing LibWeb
easier.