Skip to content

-Wl,-mllvm causes unsupported linker arg: -mllvmΒ #22291

Open

Description

@mrexodia

Zig Version

0.14.0-dev.2546+0ff0bdb4a

Steps to Reproduce and Observed Behavior

Compile simple main.cpp:

zig c++ -target x86_64-linux-gnu main.cpp -o main -flto -fuse-ld=lld -v -Wl,-mllvm,-lto-embed-bitcode=optimized

Expected Behavior

Zig should include -mllvm -lto-embed-bitcode=optimized in the ld.lld command line.

Using the following command line on Linux works fine:

clang++ main.cpp -o main -flto -fuse-ld=lld -v -Wl,-mllvm,-lto-embed-bitcode=optimized

An alternative command line (also rejected) is: -Wl,--plugin-opt=-lto-embed-bitcode=optimized

This option is used to add a .llvmbc section to the final executable, which contains all of the bitcode, but there are other options as well. Related issue: #11204, related pull request llvm/llvm-project#79390 (attempt to add the linker command line as well as the working directory to this embedded bitcode file, which would allow reproducing the linking process after modifying the bitcode).

Activity

  1. added
    bugObserved behavior contradicts documented or intended behavior
    on Dec 22, 2024
  2. added
    zig ccZig as a drop-in C compiler feature
    enhancementSolving this issue will likely involve adding new logic or components to the codebase.
    and removed
    bugObserved behavior contradicts documented or intended behavior
    on Dec 22, 2024
  3. added this to the 0.15.0 milestone on Dec 22, 2024
  4. alexrp commented on Dec 22, 2024

    @alexrp
    Member

    Note that we're planning on dropping the LLD dependency Real Soon Now, so this option would only be supportable when using LLD through the Zig build system, and with Zig's LLVM backend. Usage of Zig's self-hosted linker and/or self-hosted backend(s) is fundamentally incompatible with this.

    (Does Apple still require apps to ship with embedded bitcode?)

  5. mrexodia commented on Dec 23, 2024

    @mrexodia
    Author

    Yeah this is for usage with zig c++ only. I do not need to embed the bitcode for Apple, it's to do my own post-processing on bitcode of the whole binary and zig is the most convenient cross compiler to play around with things!

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

    enhancementSolving this issue will likely involve adding new logic or components to the codebase.linkingzig ccZig as a drop-in C compiler feature

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions