Skip to content

ci: add a non-PIE build job, the build the 42 machines make #183

Open

Description

@LESdylan

On the 42 machines, cc is clang 12 and links non-PIE against Ubuntu 22.04's libreadline 8.1, which is built with -Bsymbolic-functions. On that combination, a readline function taken by address (&rl_forward_char) is the PLT stub. readline's keymaps hold its internal address, so the two never compare equal. Until 3.2 that left every #136 / #140 key unbound on those machines (fixed in #179 by asking readline by name: rl_named_function).

CI builds with gcc as PIE, and the release binary is static musl. Neither can show this class of bug, so the fix has only been proven on a 42 machine.

Proposal: a CI job that builds non-PIE on Ubuntu 22.04 with clang and the system readline:

make all CC=clang EXTRA_CFLAGS=-fno-pie EXTRA_LDFLAGS=-no-pie

It then runs history_prefix_search_test.py, autosuggest_test.py and rl_undo_leak_test.py. On the pre-fix tree (db8f4e3) this job should fail with 57 and 86 failures in the first two.

Caveat: this assumes the hosted runner's clang plus -no-pie reproduces the address split. Check that it fails on db8f4e3 before relying on it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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