Skip to content

Embed compiler-rt when building programs #7514

@bcardiff

Description

@bcardiff

To support overflow and 128 ints property we need to either port the whole library or ship it with the compiler and link against them during compile time (as it's done with the boehm-gc).

I think the plan would be:

  • update omnibus distribution-scripts llvm formula to 6.0.1.
    • This will allow dropping llvm < 4 support in the codebase.
      • Currently the OSX pkg link against llvm 3.9.1.
    • These binaries could also be used in Linux packages if wanted.
      • Currently we use the APK packages for llvm-4.0
  • update omnibus distribution-scripts to build llvm with compiler-rt support.
  • upload llvm + compiler-rt binaries for OSX & Linux in S3
    • as it is done for llvm 3.9.1 for OSX
  • do a release to have the compiler-rt libraries ready to be embedded
  • make compiler link the embedded compiler-rt.

When building compiler-rt there are a bunch of options and they are well described in https://embeddedartistry.com/blog/2017/2/20/compilerrt

  • hard vs soft: this is floating point. Is your platform configured to support hard or soft floating point operations?
  • static vs pic: is the code compiled as a static library, or are you compiling with position-independent-code? (PIC)
  • i386 vs armv7x: this will be dependent upon your platform's processor. You need to pick the instruction set to match.
  • The last portion of the name is the library format.

Some doubts I have are:

  • Should we have a compiler option to choose specifically with which compiler-rt link against?
  • Should we ship all versions of compiler-rt? of all tier-1 platforms?
  • Would be safe to embed compiler-rt 6.0.1 version in Linux that use llvm 4.0? Or should we build compiler-rt 4.0 also?, or update Linux to 6.0.1?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions