Skip to content
This repository was archived by the owner on Apr 4, 2022. It is now read-only.

Triples

Spiny-Norman edited this page Apr 4, 2022 · 5 revisions
  • Standard system. A machine with conventional gcc or clang toolchain and standard library package installed. For example, an Ubuntu Linux system with the build-essentials package installed. The user has likely compiled llvm-project-prepo for themselves.

    Triple Compile Link
    *‑gnu‑repo ✓ Succeeds. glibc is installed in /usr/include. ✗ Fails. Runs rld. glibc has not yet been compiled to the repo. To link, the user must use repo2obj and then run the compiler driver to link without the -repo triple.
    *‑musl‑repo ✗ Fails. musl libc is not pre-installed. To compile, the user must build and install musl-prepo. ✗ Fails. Runs rld. musl libc is not pre-installed. To link, the user must build and install musl-prepo.
    *‑gnu‑elf ✓ Succeeds. As *-gnu-repo. ✓ Succeeds. glibc is is available in /usr/lib/x86_64-linux-gnu/libc.a.
  • Docker. OBSOLETE.

    • Prepo-aware tools are pre-installed as are prepo builds of musl-prepo, libcompiler-rt, libunwind, libcxxabi, and libcxx.

      Triple Compile Link
      *‑gnu‑repo ✗ Fails. glibc is not pre-installed. The user can, of course, manually install it, in which case compilation will succeed. ✗ Fails. Runs rld. Fails because glibc has not yet been compiled to the repo. To link, the user must install glibc, use repo2obj and then run the compiler driver to link without the -repo triple.
      *‑musl‑repo ✓ Succeeds. musl-prepo is pre-installed. ✓ Succeeds. Runs rld. musl-prepo is pre-installed and compiled to the repo.
      *‑gnu‑elf ✗ Fails. As *-gnu-repo. ✗ Fails. Runs GNU ld and fails because glibc is not installed.

Note that cells marked as ”✗ Fails” describe the default behavior for the associated setup. In all case, the reason for failure can be resolved. This might involve something trivial such as installing a prebuilt package, or potentially more complex such as building glibc.