Commit graph

6051 commits

Author SHA1 Message Date
Eric Huss 37201f1992 Migrate from highfive to triagebot 2022-11-27 07:00:52 -08:00
bors c943911e5d Auto merge of #3013 - BelovDV:handle-c-circular-dependence, r=JohnTitor,petrochenkov
handle c circular dependence (linux gnu)

Repeating libc allows solve [this fixme](https://github.com/rust-lang/rust/blob/master/compiler/rustc_codegen_ssa/src/back/link.rs#:~:text=//%20HACK/FIXME%3A%20Fixup,the%20libc%20crate.) in rust compiler.
2022-11-27 10:39:19 +00:00
bors d5691a08a8 Auto merge of #3012 - devnexen:sys_pidfd_foruclibc, r=JohnTitor
adding SYS_pidfd_send_signal/SYS_pidfd_getfd constants to linux uclib…

…c arm flavor.

closes #3008
2022-11-27 09:36:23 +00:00
bors 4d8960db97 Auto merge of #3007 - xen0n:fix-loong, r=JohnTitor
Fix the loongarch64 kernel ABI

The initial loongarch64 support code went in too early, even before the upstream kernel ABI has finalized, and was not adjusted since then. No one with enough knowledge of LoongArch was involved in the initial review, so we have been shipping broken LoongArch support, but luckily the rustc port is not merged yet so no real damage has been done.

Fix the following discrepancies:

- There is no longer {g,s}etrlimit, only prlimit64.
- There is no longer fstat and newfstatat, only statx.
- MINSIGSTKSZ and SIGSTKSZ now have different values.
- The binary sysctl syscall was removed from Linux long before the existence of upstream Linux/LoongArch port (5.5 vs 5.19) so even a wrapper does not make sense.

There might be more but these are the most obvious.

cc `@xry111` `@zhaixiaojuan`
2022-11-27 07:20:24 +00:00
bors b22356ec69 Auto merge of #3019 - JohnTitor:revert-triagebot-assign, r=JohnTitor
Revert "Auto merge of #3018 - ehuss:highfive-triagebot, r=JohnTitor"

This reverts commit 605f6c3e4d, reversing changes made to dafa567065.

Ref. https://github.com/rust-lang/libc/pull/3018#issuecomment-1328154387
2022-11-27 04:22:57 +00:00
Yuki Okushi 3d691e14d3
Revert "Auto merge of #3018 - ehuss:highfive-triagebot, r=JohnTitor"
This reverts commit 605f6c3e4d, reversing
changes made to dafa567065.
2022-11-27 12:46:33 +09:00
bors 1294fec803 Auto merge of #3016 - cppcoffee:master, r=JohnTitor
mips32: fix missing __s64 type definition

The compilation error message:

```shell
$ cargo build hello --target mipsel-unknown-linux-uclibc
...
error[E0412]: cannot find type `__s64` in the crate root
   --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.137/src/unix/linux_like/linux/mod.rs:601:23
    |
601 |         pub src_fd: ::__s64,
    |                       ^^^^^ help: a type alias with a similar name exists: `__u64`
    |
   ::: /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.137/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs:15:1
    |
15  | pub type __u64 = ::c_ulonglong;
    | ------------------------------- similarly named type alias `__u64` defined here

For more information about this error, try `rustc --explain E0412`.
```

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2022-11-27 02:36:34 +00:00
bors 605f6c3e4d Auto merge of #3018 - ehuss:highfive-triagebot, r=JohnTitor
Migrate from highfive to triagebot

This migrates this repository from using the highfive bot to using triagebot (aka rustbot).

This should not be merged without coordinating the removal of the highfive webhook and/or merging https://github.com/rust-lang/highfive/pull/433.
2022-11-27 00:43:26 +00:00
Xiaobo Liu 2d8ed5cc8b mips32: fix missing __s64 type definition
```shell
$ cargo build hello --target mipsel-unknown-linux-uclibc
...
error[E0412]: cannot find type `__s64` in the crate root
   --> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.137/src/unix/linux_like/linux/mod.rs:601:23
    |
601 |         pub src_fd: ::__s64,
    |                       ^^^^^ help: a type alias with a similar name exists: `__u64`
    |
   ::: /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.137/src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs:15:1
    |
15  | pub type __u64 = ::c_ulonglong;
    | ------------------------------- similarly named type alias `__u64` defined here

For more information about this error, try `rustc --explain E0412`.
```

Signed-off-by: Xiaobo Liu <cppcoffee@gmail.com>
2022-11-26 21:33:10 +08:00
bors dafa567065 Auto merge of #3009 - dtolnay-contrib:aarch64, r=JohnTitor
Add kexec_file_load system call for arm64 linux

This syscall was introduced in Linux 5.0. References:

- https://patchwork.kernel.org/project/linux-arm-kernel/list/?series=43329&state=%2A&archive=both
- 4e21565b7f
- https://github.com/sunfishcode/linux-raw-sys/blob/v0.1.2/src/aarch64/general.rs#L2118
- https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/arch-syscall.h#l110
2022-11-22 22:18:30 +00:00
David Carlier 23c4ff629b adding SYS_pidfd_send_signal/SYS_pidfd_getfd constants to linux uclibc arm flavor.
closes #3008
2022-11-21 21:59:58 +00:00
David Tolnay 11568d45ca
Add kexec_file_load system call for arm64 linux 2022-11-21 10:40:04 -08:00
WANG Xuerui 0abe537bbd
Fix the loongarch64 kernel ABI
The initial loongarch64 support code went in too early, even before the
upstream kernel ABI has finalized, and was not adjusted since then. No
one with enough knowledge of LoongArch was involved in the initial
review, so we have been shipping broken LoongArch support, but luckily
the rustc port is not merged yet so no real damage has been done.

Fix the following discrepancies:

- There is no longer {g,s}etrlimit, only prlimit64.
- There is no longer fstat and newfstatat, only statx.
- MINSIGSTKSZ and SIGSTKSZ now have different values.
- The binary sysctl syscall was removed from Linux long before the
  existence of upstream Linux/LoongArch port (5.5 vs 5.19) so even a
  wrapper does not make sense.

There might be more but these are the most obvious.
2022-11-20 14:34:08 +08:00
bors 73c25f4e9d Auto merge of #3006 - JohnTitor:pr-template, r=JohnTitor
Add pull request template

Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-20 05:37:34 +00:00
bors 25aacfd7c5 Auto merge of #3001 - dtolnay-contrib:aarch64, r=JohnTitor
Add sys/ucontext.h signatures for linux aarch64 glibc

### `getcontext`, `setcontext`, `makecontext`, `swapcontext`

From \<sys/ucontext.h\>. The specification for these was removed from POSIX.1-2008 in favor of POSIX threads, but glibc continues to ship an implementation for aarch64 just as it does for x86_64.

Libc crate's existing x86_64 binding with the same signatures added in this PR:

bbf929d2c8/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs (L810-L813)

Glibc implementation:

- https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/getcontext.S
- https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/setcontext.S
- https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/makecontext.c
- https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/aarch64/swapcontext.S

<br>

### ~~`iopl`, `ioperm`~~

~~From \<sys/io.h\>. These are functions for accessing x86 I/O ports. ARM has no such I/O ports in the architecture. Linux's `man 2` for both functions contains: _"This call is mostly for the i386 architecture.  On many other architectures it does not exist or will always return an error."_ Glibc ships one of these "always return an error" implementation of both functions for aarch64.~~

~~Matching signatures from x86_64:~~

bbf929d2c8/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs (L814-L815)

~~Glibc implementation:~~

- ~~https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/arm/ioperm.c~~

~~The implementation has `unsigned int` for the argument of `iopl` but I've used int in the PR to match the Linux docs, which seems more authoritative. Unclear why glibc diverges from this but it doesn't make a difference in the ABI.~~
2022-11-20 04:34:24 +00:00
Yuki Okushi 0effd9bd1c
Add pull request template
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-20 13:29:42 +09:00
David Tolnay fd32da6e7d
Add sys/ucontext.h signatures for linux aarch64 glibc 2022-11-19 19:47:35 -08:00
bors 4493a07473 Auto merge of #2995 - carbotaniuman:rand48, r=JohnTitor
Add rand48 functions
2022-11-20 03:28:04 +00:00
carbotaniuman a68d3ed0ac
Add rand48 functions 2022-11-20 12:09:29 +09:00
bors cea201b12f Auto merge of #2998 - devnexen:memstat_fbsd_api, r=JohnTitor
freebsd subset of memstat api addition
2022-11-19 10:13:14 +00:00
bors 0b2b1016d4 Auto merge of #3005 - JohnTitor:fix-android-ci, r=JohnTitor
ci: Read test output from stderr

CI is currently failing because https://github.com/JohnTitor/ctest2/pull/37 changed the place to display the test results and `runtest-android.rs` cannot find it on stdout. This PR fixes it by reading lines from stderr instead.

Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-19 07:57:23 +00:00
Yuki Okushi 89d7013676
ci: Read test output from stderr
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-19 16:57:06 +09:00
Daniil Belov 141a890b76 handle c circular dependence (linux gnu) 2022-11-16 18:26:11 +03:00
David CARLIER 4c8c9bff25 freebsd subset of memstat api addition 2022-11-13 17:45:38 +00:00
bors bbf929d2c8 Auto merge of #3000 - bjorn3:report_rustc_version_errors, r=JohnTitor
Report the actual error when failing to get the rustc version

This should help with pinpointing the issue in rust-lang/crater#663.
2022-11-12 05:44:54 +00:00
bjorn3 40c19428ce Report the actual error when failing to get the rustc version
This should help with pinpointing the issue in rust-lang/crater#663.
2022-11-11 09:55:43 +00:00
bors 8b6bfd7d9f Auto merge of #2992 - devnexen:fbsd_procctl_upd, r=JohnTitor
freebsd procctl flags update
2022-11-10 11:38:33 +00:00
bors 3daacc5579 Auto merge of #2991 - SteveLauC:extattr_list_xx-on-NetBSD, r=JohnTitor
add extattr_list_xxx() on NetBSD

Corresponds to [this](ac36f3f9fe/sys/sys/extattr.h (L98-L103)):
```c
ssize_t	extattr_list_fd(int _fd, int _attrnamespace, void *_data,
	    size_t _nbytes);
ssize_t	extattr_list_file(const char *_path, int _attrnamespace, void *_data,
	    size_t _nbytes);
ssize_t	extattr_list_link(const char *_path, int _attrnamespace, void *_data,
	    size_t _nbytes);
```
2022-11-07 22:58:13 +00:00
David CARLIER f2a18e59d8 freebsd procctl flags update 2022-11-07 21:48:32 +00:00
bors 0acc5c05f9 Auto merge of #2984 - spencercw:android-uinput, r=JohnTitor
Add Android uinput bindings

This is mostly copied from the Linux bindings.
2022-11-07 21:46:31 +00:00
Chris Spencer 6dbe4881a6 Add Android uinput bindings 2022-11-07 10:19:09 +00:00
bors e92b4fb005 Auto merge of #2993 - zhaixiaojuan:LA-add-ucontext-clone_args, r=JohnTitor
Add ucontext and clone_args for loongarch64
2022-11-06 04:05:39 +00:00
zhaixiaojuan 7066c3c407 Add ucontext and clone_args for loongarch64 2022-11-05 18:37:20 +08:00
bors c206b79eb1 Auto merge of #2989 - JohnTitor:older-emulator, r=JohnTitor
Use an old emulator to fix Android CI

Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-04 13:25:28 +00:00
Yuki Okushi 8a618d0a24
CI: Revive some Android targets
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-04 19:44:22 +09:00
Yuki Okushi fa96301d30
CI: Use an old nightly for all Android targets
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-04 19:44:22 +09:00
Yuki Okushi d669d3c9ea
Use an older Android emulator
Newer emulator versions fail to create an AVD correctly.
Use an old Android emulator until we figure out why.

Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-04 18:46:49 +09:00
Steve Lau 5763a0fd16 add extattr_list_xxx() on NetBSD 2022-11-03 20:30:50 +08:00
bors f7e6930ae8 Auto merge of #2988 - SteveLauC:XATTR-constants-on-NetBSD, r=JohnTitor
add extended attributes constants on NetBSD

Add three EA-related constants on NetBSD:
1. [XATTR_CREATE](ac36f3f9fe/sys/sys/xattr.h (L54))
2. [XATTR_REPLACE](ac36f3f9fe/sys/sys/xattr.h (L55))
3. [EXTATTR_NAMESPACE_EMPTY](ac36f3f9fe/sys/sys/extattr.h (L44))

And include `sys/xattr.h` in the test.
2022-11-03 11:20:42 +00:00
bors 1ca1c4167a Auto merge of #2914 - SteveLauC:Wrong-getpwent_r-definition-on-solarish-os, r=JohnTitor
fix wrong definitions of getpwent_r and getgrent_r on solarish os

Closes #2908

* [man page for `getpwent_r`](https://illumos.org/man/3C/getpwnam)
* [man page for `getgrent_r`](https://illumos.org/man/3C/getgrnam)

You may find the definitions for `getpwnam_r/getpwuid_r/getgrnam_r/getgruid_r` exposed by `libc` are also wrong:
```c
struct passwd *getpwnam_r(const char *name, struct passwd *pwd,
            char *buffer, int buflen);
```
```rust
pub fn getpwnam_r(
    name: *const ::c_char,
    pwd: *mut passwd,
    buf: *mut ::c_cha
    buflen: ::size_t,
    result: *mut *mut passwd,
) -> ::c_int;
```
But actually they are **correct** as there are the POSIX-conforming definitions (see `Standard conforming` section of above man pages):
```
Standard conforming

       cc [ flag...] file... -D_POSIX_PTHREAD_SEMANTICS [ library... ]

       int getpwnam_r(const char *name, struct passwd *pwd, char *buffer,
            size_t bufsize, struct passwd **result);

       int getpwuid_r(uid_t uid, struct passwd *pwd, char *buffer,
            size_t bufsize, struct passwd **result);
```

`getpwent_r/getgrent_r` don't get lucky, they do not have the POSIX-conforming alternatives.

To double check this, I searched its [source code](https://github.com/illumos/illumos-gate/blob/master/usr/src/lib/libc/port/gen/getpwnam_r.c):
```shell
$ rg "__posix_getpwnam_r"
port/mapfile-vers
1582:   __posix_getpwnam_r;

port/gen/getpwnam_r.c
152:__posix_getpwnam_r(const char *name, struct passwd *pwd, char *buffer,

$ rg "__posix_getpwent_r"

$
```
2022-11-03 09:19:58 +00:00
bors 875f3a69b1 Auto merge of #2990 - JohnTitor:revive-x86_64-android, r=JohnTitor
Revive `x86_64-linux-android` CI with an old nightly

Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-03 08:04:02 +00:00
Yuki Okushi eddc5a3fb9
Revive x86_64-linux-android CI with an old nightly
Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-11-03 16:59:06 +09:00
Steve Lau 1422cee067 add extended attributes constants on NetBSD 2022-11-02 17:05:31 +08:00
bors 301790eecd Auto merge of #2986 - dtolnay-contrib:ficlone, r=JohnTitor
Add FICLONE ioctl for linux aarch64

The ioctl number is the same on aarch64 as on x86_64:

- https://github.com/sunfishcode/linux-raw-sys/blob/v0.1.2/src/aarch64/ioctl.rs#L215-L216
- https://github.com/sunfishcode/linux-raw-sys/blob/v0.1.2/src/x86_64/ioctl.rs#L215-L216
2022-11-01 09:26:02 +00:00
bors a2b0b4fea3 Auto merge of #2985 - flba-eb:fix_s_macro_order, r=JohnTitor
Enforce order of any `s_*!` macro calls

Before this change, only the order of `s!` was checked. After, it also checks `s_no_extra_traits!` and `s_paren!`. Only the order is checked, not the number of calls. This is required because multiple calls have to be allowed.
2022-11-01 08:22:25 +00:00
David Tolnay 9857684717
Add FICLONE ioctl for linux aarch64 2022-10-31 15:34:21 -07:00
Florian Bartels 60b655df91 fix: Order of all s_*! macro calls 2022-10-28 10:18:50 +02:00
Florian Bartels 31693b7e87 style: Enforce order of any s_*! macro call
Before this change, only the order of `s!` was checked.
After, it also checks `s_no_extra_traits!` and `s_paren!`.
Only the order is checked, not the number of calls. This is
required because multiple calls have to be allowed.
2022-10-28 10:18:13 +02:00
bors 7d615f03bc Auto merge of #2983 - HarveyHunt:posix-spawn-setsid, r=JohnTitor
linux: Add POSIX_SPAWN_SETSID flag

This flag allows the child process created by POSIX spawn to create a new session and become leader of a new process group. Expose the flag so that Rust code can use it.
2022-10-27 23:39:02 +00:00
bors 7665a001ab Auto merge of #2981 - giraffate:fix_readfs_typo, r=JohnTitor
Fix typo: `readfs` -> `readfds`

Close https://github.com/rust-lang/libc/issues/2976

I ran tests on local machine but got errors below. I don't know why tests fails.
```
bad ucontext_t size: rust: 880 (0x370) != c 56 (0x38)
bad ucontext_t align: rust: 16 (0x10) != c 8 (0x8)
size of ucontext_t is 56 in C and 880 in Rust
thread 'main' panicked at 'some tests failed', /Users/myname/workspace/libc/target/debug/build/libc-test-1b4df5976a273bfc/out/main.rs:12:21
```
```
$ rustc -Vv
rustc 1.66.0-nightly (758f19645 2022-10-24)
binary: rustc
commit-hash: 758f19645b8ebce61ea52d1f6672fd057bc8dbee
commit-date: 2022-10-24
host: aarch64-apple-darwin
release: 1.66.0-nightly
LLVM version: 15.0.2
```
<details>
<summary> stack backtrace </summary>

```
stack backtrace:
   0:        0x102f392b4 - std::backtrace_rs::backtrace::libunwind::trace::hb45dd82402f85371
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   1:        0x102f392b4 - std::backtrace_rs::backtrace::trace_unsynchronized::hb6314efd15a1cdb0
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:        0x102f392b4 - std::sys_common::backtrace::_print_fmt::hbc3029e9c7f0094c
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/sys_common/backtrace.rs:65:5
   3:        0x102f392b4 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h219904be8a0e6c56
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/sys_common/backtrace.rs:44:22
   4:        0x102f4b62c - core::fmt::write::h1711bce7b2e42a37
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/core/src/fmt/mod.rs:1209:17
   5:        0x102f37254 - std::io::Write::write_fmt::h9cf243ceda7034b8
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/io/mod.rs:1682:15
   6:        0x102f390c8 - std::sys_common::backtrace::_print::hcd849925c35ec037
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/sys_common/backtrace.rs:47:5
   7:        0x102f390c8 - std::sys_common::backtrace::print::h9f5af8da6bcbab74
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/sys_common/backtrace.rs:34:9
   8:        0x102f3a71c - std::panicking::default_hook::{{closure}}::h7e38f960005ec69f
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:267:22
   9:        0x102f3a474 - std::panicking::default_hook::h5bc0affc728d538b
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:286:9
  10:        0x102f3ad58 - std::panicking::rust_panic_with_hook::hb7352d7c8f6738ff
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:688:13
  11:        0x102c8336c - std::panicking::begin_panic::{{closure}}::h81e24e4a3543057e
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:608:9
  12:        0x102c85aac - std::sys_common::backtrace::__rust_end_short_backtrace::haeb635e8d195e522
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/sys_common/backtrace.rs:137:18
  13:        0x102f4fb94 - std::panicking::begin_panic::hc63eb31a9240a068
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:607:12
  14:        0x102c86af8 - main::main::h872896812663328d
                               at /Users/tnakata/workspace/libc/target/debug/build/libc-test-1b4df5976a273bfc/out/main.rs:12:21
  15:        0x102c86544 - core::ops::function::FnOnce::call_once::h891dded55cc8b366
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/core/src/ops/function.rs:251:5
  16:        0x102c85ad4 - std::sys_common::backtrace::__rust_begin_short_backtrace::h5d1fda9212741b5d
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/sys_common/backtrace.rs:121:18
  17:        0x102c86a20 - std::rt::lang_start::{{closure}}::h953204f58c88d781
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/rt.rs:166:18
  18:        0x102f349a4 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h06b2755fd27a42e4
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/core/src/ops/function.rs:286:13
  19:        0x102f349a4 - std::panicking::try::do_call::ha3fd55a85d791079
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:483:40
  20:        0x102f349a4 - std::panicking::try::h279ae5c13bad45ff
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:447:19
  21:        0x102f349a4 - std::panic::catch_unwind::hf6bd4d48ebbd456c
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panic.rs:137:14
  22:        0x102f349a4 - std::rt::lang_start_internal::{{closure}}::hf67a01955ae84819
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/rt.rs:148:48
  23:        0x102f349a4 - std::panicking::try::do_call::h8d0cfe012ebca5fa
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:483:40
  24:        0x102f349a4 - std::panicking::try::hd865d4429d157279
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panicking.rs:447:19
  25:        0x102f349a4 - std::panic::catch_unwind::h5c8bd7f9727564fd
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/panic.rs:137:14
  26:        0x102f349a4 - std::rt::lang_start_internal::hdc2636ae7a3e6166
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/rt.rs:148:20
  27:        0x102c869e8 - std::rt::lang_start::h6d1e1203470b3e8d
                               at /rustc/758f19645b8ebce61ea52d1f6672fd057bc8dbee/library/std/src/rt.rs:165:17
  28:        0x102ed6bfc - _main
```

</details>
2022-10-27 22:38:22 +00:00