# Test status

## Test cases

test-many-klibcs implements:

1. Build for each architecture (with a cross-compiler where needed)
2. Run various programs (using qemu-user where needed) in static and
   shared configurations:
   a. Many self-test programs (through system shell)
   b. "sh -c exit"
   c. "sh -c '.../bin/true; exit'"

## Test failures

### 2.0.10

* arm, i386, m68k, parisc, ppc, sh:
  * Fail to build (with Linux 5.19 headers)
* arm64:
  * 2a:malloctest2, 2a:setjmptest, 2a:sigint: Fail in shared build
    with GNU toolchain (gcc 12.1.0, binutils 2.38.90.20220713)
  * 2c: Fails with SIGSEGV in static build with LLVM, but only on QEMU
* riscv64:
  * 2a:sigint: Fails when built with Clang, but only on QEMU
* s390x:
  * 2a:environ, 2a:opentest, 2a:setjmptest: Produce wrong output when built
    with Clang, but only on QEMU
  * 2a:malloctest, 2a:malloctest2, 2c: Appear to loop forever when built
    with Clang, but only on QEMU
  * 2a:sscanf: Exits with error when built with Clang, but only on QEMU

### 2.0.10+git20221002

* mipsisa64r6, mipsisa64r6el:
  * Linker error "relocation truncated to fit: R_MIPS_PC26_S2" when
    building a shared executable with gcc
* riscv64:
  * 2a:sigint: Fails when built with Clang, maybe only on QEMU
* s390x:
  * 2a:environ, 2a:opentest, 2a:setjmptest: Produce wrong output when built
    with Clang, maybe only on QEMU
  * 2a:malloctest, 2a:malloctest2, 2c: Appear to loop forever when built
    with Clang, maybe only on QEMU
  * 2a:sscanf: Exits with error when built with Clang, maybe only on QEMU
* sh4:
  * All executables hang when built with gcc 12

### Known bugs elsewhere

QEMU 3.1 had a bug in handling of struct timveval on sparc64, and a
bug in the ELF loader.  Additionally, it has a lot of bugs in signal
handling on alpha and sparc.  All of those are fixed in my local
build, qemu-user-static_3.1+dfsg-2.1_amd64.deb.

QEMU 6.1 fixes those plus the s390x failures, but also has regressions
for armhf, hppa, and riscv64.

Clang 13 has a bug that affects i386, -mregparm, and optimisation of
printf() to puts().  The call to puts() passes arguments using the
usual stack-based calling convention.  This is now worked-around
by disabling CONFIG_REGPARM.

LLD 13 has a bug affecting mips and mips64 that puts trap instructions
(sigrie) instead of nops in branch delay slots.  Patching these back
to nops made the tests pass.  I have only seen this in klibc.so, not
in any executables.

LLD 13 seems to have a bug in PowerPC global register initialisation
affecting most tests on ppc64.

LLD 13 is missing required features for riscv64 and sparc64.
