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 · 11 comments
Open
1 task

Tracking Issue for llvm-tools-preview #85658

ehuss opened this issue May 25, 2021 · 11 comments
Labels
C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC

Comments

@ehuss
Copy link
Contributor

ehuss commented May 25, 2021

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

About tracking issues

Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Discussion comments will get marked as off-topic or deleted.
Repeated discussions on the tracking issue may lead to the tracking issue getting locked.

Details

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?
    • NOTE: The llvm-tools component was inadvertently made available. It is likely de facto stable now. See comment below.
  • What is the stability story? See comment below.
  • Where will this be documented?
  • Who is responsible for the component?
  • Which directory should the component files live?

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.

@dancrossnyc
Copy link

I noticed that, on tonight's nightly, the contents of llvm-tools appears to be, either in whole or in very large part, in another component: rustup complained about conflicts with llc. As an experiment, I removed llvm-tools and updated and was surprised to see that e.g. llvm-objdump was still installed.

Is this expected?

@ehuss
Copy link
Contributor Author

ehuss commented Sep 13, 2024

@dancrossnyc, there was a regression in the latest nightly, see #130291. It should be fixed in the next nightly tonight.

@dancrossnyc
Copy link

Good to go. Thank you, Eric!

@mrwsl
Copy link

mrwsl commented Sep 19, 2024

I just updated to llvm19 and now grcov is complaining about mismatching versions for llvm-profdata and the raw data. I wondered how the bins are updated and where I could follow updates?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-tracking-issue Category: An issue tracking the progress of sth. like the implementation of an RFC
Projects
None yet
Development

No branches or pull requests

6 participants