Skip to content

s390x: big-endian byte order causes mass test verification failures #193

Description

@ludomal

Summary

395 out of 1337 tests (70% pass rate) fail on s390x (big-endian). The tools execute correctly but verify steps fail because output is in native big-endian byte order while reference test vectors are stored as little-endian.

Context

The STL already provides sb (src/unsup/sb.c) for byte-swapping between platforms, and the documentation states that files should be byte-swapped before processing on big-endian systems. However, the CTest infrastructure does not perform this step automatically.

Scope

Nearly every module is affected:

  • Codecs: g711, g711iplc, g722, g726, g727, rpeltp
  • Filters: fir, filter, iir (pcmdemo, cirsdemo, c712demo)
  • Noise/measurement: mnru, p50fbmnru, bs1770demo, sv56, esdru
  • Utilities: truncate, astrip, fdelay, scaldemo, spdemo, freqresp, reverb
  • New tools: wav_io, eid-amr, dlyerr_2_errpat
  • basop: W_round64_L precision test (Portability issue on basop W_round32_s / W_round48_L / W_round64_L #189)

Resolution

Use sb to byte-swap test input before running and byte-swap output before verifying on big-endian hosts. This aligns with the existing documented workflow.

Context

Identified during STL2026 CI validation (PR #190). The s390x job was added specifically to detect big-endian portability issues. This is a pre-existing problem now made visible by CI. Non-blocking for STL2026 but should be resolved for the next update.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions