Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking Issue for llvm-tools-preview #85658

Open
1 task
ehuss opened this issue May 25, 2021 · 7 comments
Open
1 task

Tracking Issue for llvm-tools-preview #85658

ehuss opened this issue May 25, 2021 · 7 comments
Labels
C-tracking-issue Category: A tracking issue for an RFC or an unstable feature.

Comments

@ehuss
Copy link
Contributor

ehuss commented May 25, 2021

This is a tracking issue for the llvm-tools-preview.

llvm-tools-preview is a rustup component that contains some LLVM tools. At the time of this writing, it contains the following:

  • llc
  • llvm-ar
  • llvm-as
  • llvm-cov
  • llvm-dis
  • llvm-nm
  • llvm-objcopy
  • llvm-objdump
  • llvm-profdata
  • llvm-readobj
  • llvm-size
  • llvm-strip
  • opt

Steps

  • Write some documentation (not sure where this should live)

Unresolved Questions

  • What will it take to transition out of -preview?

Implementation history

@lf-
Copy link
Contributor

lf- commented Jan 1, 2022

Related issue: #56371

The use case that I want clang for is the integrated assembler, for assembling .s files in my rust kernel build process. I don't believe that there's currently any way of invoking the llvm based assembler except through the clang driver.

@hellow554
Copy link
Contributor

The use case that I want clang for is the integrated assembler, for assembling .s files in my rust kernel build process.

If you are using a nightly compiler you could use the asm! macro?

@lf-
Copy link
Contributor

lf- commented Jan 2, 2022

The use case that I want clang for is the integrated assembler, for assembling .s files in my rust kernel build process.

If you are using a nightly compiler you could use the asm! macro?

Not really, if you are a kernel. Generally you want your init code and similarly large pieces of assembly outside of rust files, since you want to create jump tables and such that don't belong to a function, among other things. It's rather hacky to try to do everything with inline assembly.

@hellow554
Copy link
Contributor

What about global_asm! together with include_str!? 🤔

@tv42
Copy link
Contributor

tv42 commented Jan 12, 2024

These seem to be now available as "llvm-tools" (no "-preview"). Did this issue get accidentally left behind?

@ehuss
Copy link
Contributor Author

ehuss commented Jan 12, 2024

It was inadvertent that the component without the -preview suffix was allowed. This is currently tracked in #119164.

@ehuss
Copy link
Contributor Author

ehuss commented Mar 12, 2024

There was a discussion at https://rust-lang.zulipchat.com/#narrow/stream/241545-t-release/topic/llvm-tools.20stabilization about the accidental removal of the -preview suffix.

I think to summarize: People agree that we should not remove the llvm-tools component and break users currently using it. However, it doesn't seem like there is consensus it should be treated as stable. I have posted rust-lang/rustup#3707 to add a comment about the status.

I had some uncertainty about who is actually responsible for this component. I think by default it should probably be the compiler team delegating to wg-llvm if needed.

There is some uncertainty about the directory where the tools currently reside. Currently they are in the target directory, but they are host tools so they should probably be located somewhere else. There should also probably be a rustc --print option for locating that directory. (I assume it should not be in $SYSROOT/bin, since that seems like it could really break things if people have that in their PATH.)

I'll also copy @wesleywiser's last comment, which seemed like a good summary:

I agree that simply saying "llvm-tools may break at any time" is uncomfortable, but I think the fairest statement is that "llvm-tools are provided as-is from upstream LLVM". In most cases, they aren't going to break all the time or even occasionally. At the same time, we're not going to take on maintaining a tool LLVM has dropped just to fulfil a stability promise. I think the vast majority of users would totally understand this position and not have an issue with that.

This feels very similar to the Target Tier Policy where we do not promise perpetual support for any particular target, just a level of support in a given release. Breakage in upstream LLVM has even necessitated demoting targets from Tier 2 to Tier 3 because they're simply too broken to be at that level.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-tracking-issue Category: A tracking issue for an RFC or an unstable feature.
Projects
None yet
Development

No branches or pull requests

4 participants