Skip to content

add system-llvm-libunwind config option #77703

New issue

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

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

Already on GitHub? # to your account

Merged
merged 1 commit into from
Oct 27, 2020

Conversation

Keruspe
Copy link
Contributor

@Keruspe Keruspe commented Oct 8, 2020

allows using the system-wide llvm-libunwind as the unwinder

Workaround for #76020

@rust-highfive
Copy link
Contributor

r? @Mark-Simulacrum

(rust_highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 8, 2020
@Mark-Simulacrum
Copy link
Member

cc @cuviper

Do we not expect to be able to fix the linked issue? I would prefer to fix the build rather than working around it like this.

I would also prefer that this not be a separate option that controls two things, that seems error prone -- can we instead make the current llvm-libunwind option take either "system" or "in-tree" or something like that?

@Keruspe
Copy link
Contributor Author

Keruspe commented Oct 9, 2020

@Mark-Simulacrum I don't know if/how the issue is fixable atm, but regardless I think it could be a useful option to be able to use the system llvm-libunwind.

Just pushed a less intrusive version, using llvm-libunwind=system as you suggested

@cuviper
Copy link
Member

cuviper commented Oct 9, 2020

cc @cuviper

For my part, we don't even have llvm-libunwind packages.

@Keruspe
Copy link
Contributor Author

Keruspe commented Oct 11, 2020

Proper fix for the initial issue in #77815

@Keruspe
Copy link
Contributor Author

Keruspe commented Oct 13, 2020

Regardless of #77815, I think it would be a good thing to get this option in

@Mark-Simulacrum Mark-Simulacrum added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 13, 2020
@Keruspe
Copy link
Contributor Author

Keruspe commented Oct 13, 2020

Fwiw, with this PR, lddtree on stage1 rustc:

llvm-libunwind disabled:

rustc => bin/rustc (interpreter => /usr/x86_64-pc-linux-gnu/lib/ld-linux-x86-64.so.2)
    librustc_driver-cda070a11d817f0b.so => bin/../lib/librustc_driver-cda070a11d817f0b.so
        libz.so.1 => /usr/host/lib/libz.so.1
        libdl.so.2 => /usr/host/lib/libdl.so.2
        libpthread.so.0 => /usr/host/lib/libpthread.so.0
        libm.so.6 => /usr/host/lib/libm.so.6
        libstdc++.so.6 => /usr/host/lib/libstdc++.so.6
        libgcc_s.so.1 => /usr/host/lib/libgcc_s.so.1
        ld-linux-x86-64.so.2 => /usr/x86_64-pc-linux-gnu/lib/ld-linux-x86-64.so.2
    libstd-ebe70738ef90f50c.so => bin/../lib/libstd-ebe70738ef90f50c.so
    libc.so.6 => /usr/host/lib/libc.so.6

llvm-libunwind in-tree still fails the same way it currently does

llvm-libunwind system:

rustc => bin/rustc (interpreter => /usr/x86_64-pc-linux-gnu/lib/ld-linux-x86-64.so.2)
    librustc_driver-cda070a11d817f0b.so => bin/../lib/librustc_driver-cda070a11d817f0b.so
        libz.so.1 => /usr/host/lib/libz.so.1
        libdl.so.2 => /usr/host/lib/libdl.so.2
        libpthread.so.0 => /usr/host/lib/libpthread.so.0
        libm.so.6 => /usr/host/lib/libm.so.6
        libstdc++.so.6 => /usr/host/lib/libstdc++.so.6
        libunwind.so.1 => /usr/host/lib/libunwind.so.1
        ld-linux-x86-64.so.2 => /usr/x86_64-pc-linux-gnu/lib/ld-linux-x86-64.so.2
    libstd-310057861b09b0d1.so => bin/../lib/libstd-310057861b09b0d1.so
    libc.so.6 => /usr/host/lib/libc.so.6

@Keruspe
Copy link
Contributor Author

Keruspe commented Oct 17, 2020

@Mark-Simulacrum Did some more testing on some of my systems and I think this is good to go now?

@Mark-Simulacrum Mark-Simulacrum added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 17, 2020
@Keruspe
Copy link
Contributor Author

Keruspe commented Oct 21, 2020

Not sure what happened with CI here

Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
@Mark-Simulacrum
Copy link
Member

r=me with commits squashed

@Mark-Simulacrum Mark-Simulacrum added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 26, 2020
@Keruspe
Copy link
Contributor Author

Keruspe commented Oct 26, 2020

@Mark-Simulacrum squashed

@Mark-Simulacrum
Copy link
Member

@bors r+

@bors
Copy link
Collaborator

bors commented Oct 26, 2020

📌 Commit 66fa42a has been approved by Mark-Simulacrum

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Oct 26, 2020
bors added a commit to rust-lang-ci/rust that referenced this pull request Oct 27, 2020
Rollup of 16 pull requests

Successful merges:

 - rust-lang#76635 (Add [T]::as_chunks(_mut))
 - rust-lang#77703 (add system-llvm-libunwind config option)
 - rust-lang#78219 (Prefer to use `print_def_path`)
 - rust-lang#78298 (Add test for bad NLL higher-ranked subtype)
 - rust-lang#78332 (Update description for error E0308)
 - rust-lang#78342 (Use check-pass in single-use-lifetime ui tests)
 - rust-lang#78347 (Add lexicographical comparison doc)
 - rust-lang#78348 (Make some functions private that don't have to be public)
 - rust-lang#78349 (Use its own `TypeckResults` to avoid ICE)
 - rust-lang#78375 (Use ? in core/std macros)
 - rust-lang#78377 (Fix typo in debug statement)
 - rust-lang#78388 (Add some regression tests)
 - rust-lang#78394 (fix(docs): typo in BufWriter documentation)
 - rust-lang#78396 (Add compiler support for LLVM's x86_64 ERMSB feature)
 - rust-lang#78405 (Fix typo in lint description)
 - rust-lang#78412 (Improve formatting of hash collections docs)

Failed merges:

r? `@ghost`
@bors bors merged commit 2c307fa into rust-lang:master Oct 27, 2020
@rustbot rustbot added this to the 1.49.0 milestone Oct 27, 2020
@tmandry
Copy link
Member

tmandry commented Oct 28, 2020

This was a breaking change to config.toml, so it deserves an entry in the bootstrap changelog or general changelog. I don't think changelog-seen needs a bump here since the breaking change always results in an error for anyone who was using this.

@rustbot modify labels: +relnotes

@rustbot rustbot added the relnotes Marks issues that should be documented in the release notes of the next release. label Oct 28, 2020
@Mark-Simulacrum
Copy link
Member

Hm, good point. I should really do better at doing so. Would you be up for filing a PR to update the bootstrap changelog? I think general changelog is too high level for this right now.

tmandry added a commit that referenced this pull request Dec 28, 2020
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Dec 29, 2020
…imulacrum

Add llvm-libunwind change to bootstrap CHANGELOG

From rust-lang#77703.

This doesn't need a `changelog-seen` version bump because the old values aren't accepted anymore, meaning anyone who was using this had to change it already.

r? `@Mark-Simulacrum`
JohnTitor added a commit to JohnTitor/rust that referenced this pull request Dec 30, 2020
…imulacrum

Add llvm-libunwind change to bootstrap CHANGELOG

From rust-lang#77703.

This doesn't need a `changelog-seen` version bump because the old values aren't accepted anymore, meaning anyone who was using this had to change it already.

r? ``@Mark-Simulacrum``
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Feb 14, 2021
Pkgsrc changes:
 * Adjust patches, convert tabs to spaces so that tests pass.
 * Remove patches which are no longer needed (upstream changed)
 * Minor adjustments for SunOS, e.g. disable stack probes.
 * Adjust cargo checksum patching accordingly.
 * Remove commented-out use of PATCHELF on NetBSD, which doesn't work anyway...

Upstream changes:

Version 1.49.0 (2020-12-31)
============================

Language
-----------------------

- [Unions can now implement `Drop`, and you can now have a field in a union
  with `ManuallyDrop<T>`.][77547]
- [You can now cast uninhabited enums to integers.][76199]
- [You can now bind by reference and by move in patterns.][76119] This
  allows you to selectively borrow individual components of a type. E.g.
  ```rust
  #[derive(Debug)]
  struct Person {
      name: String,
      age: u8,
  }

  let person = Person {
      name: String::from("Alice"),
      age: 20,
  };

  // `name` is moved out of person, but `age` is referenced.
  let Person { name, ref age } = person;
  println!("{} {}", name, age);
  ```

Compiler
-----------------------

- [Added tier 1\* support for `aarch64-unknown-linux-gnu`.][78228]
- [Added tier 2 support for `aarch64-apple-darwin`.][75991]
- [Added tier 2 support for `aarch64-pc-windows-msvc`.][75914]
- [Added tier 3 support for `mipsel-unknown-none`.][78676]
- [Raised the minimum supported LLVM version to LLVM 9.][78848]
- [Output from threads spawned in tests is now captured.][78227]
- [Change os and vendor values to "none" and "unknown" for some targets][78951]

\* Refer to Rust's [platform support page][forge-platform-support] for more
information on Rust's tiered platform support.

Libraries
-----------------------

- [`RangeInclusive` now checks for exhaustion when calling `contains`
  and indexing.][78109]
- [`ToString::to_string` now no longer shrinks the internal buffer
  in the default implementation.][77997]
- [`ops::{Index, IndexMut}` are now implemented for fixed sized
  arrays of any length.][74989]

Stabilized APIs
---------------

- [`slice::select_nth_unstable`]
- [`slice::select_nth_unstable_by`]
- [`slice::select_nth_unstable_by_key`]

The following previously stable methods are now `const`.

- [`Poll::is_ready`]
- [`Poll::is_pending`]

Cargo
-----------------------
- [Building a crate with `cargo-package` should now be independently
  reproducible.][cargo/8864]
- [`cargo-tree` now marks proc-macro crates.][cargo/8765]
- [Added `CARGO_PRIMARY_PACKAGE` build-time environment
  variable.]  [cargo/8758] This variable will be set if the crate
  being built is one the user selected to build, either with `-p`
  or through defaults.
- [You can now use glob patterns when specifying packages &
  targets.][cargo/8752]


Compatibility Notes
-------------------
- [Demoted `i686-unknown-freebsd` from host tier 2 to target tier
  2 support.][78746]
- [Macros that end with a semi-colon are now treated as statements
  even if they expand to nothing.][78376]
- [Rustc will now check for the validity of some built-in attributes
  on enum variants.][77015] Previously such invalid or unused
  attributes could be ignored.
- Leading whitespace is stripped more uniformly in documentation
  comments, which may change behavior. You read [this post about
  the changes][rustdoc-ws-post] for more details.
- [Trait bounds are no longer inferred for associated types.][79904]

Internal Only
-------------
These changes provide no direct user facing benefits, but represent
significant improvements to the internals and overall performance
of rustc and related tools.

- [rustc's internal crates are now compiled using the `initial-exec` Thread
  Local Storage model.][78201]
- [Calculate visibilities once in resolve.][78077]
- [Added `system` to the `llvm-libunwind` bootstrap config option.][77703]
- [Added `--color` for configuring terminal color support to bootstrap.][79004]


[75991]: rust-lang/rust#75991
[78951]: rust-lang/rust#78951
[78848]: rust-lang/rust#78848
[78746]: rust-lang/rust#78746
[78376]: rust-lang/rust#78376
[78228]: rust-lang/rust#78228
[78227]: rust-lang/rust#78227
[78201]: rust-lang/rust#78201
[78109]: rust-lang/rust#78109
[78077]: rust-lang/rust#78077
[77997]: rust-lang/rust#77997
[77703]: rust-lang/rust#77703
[77547]: rust-lang/rust#77547
[77015]: rust-lang/rust#77015
[76199]: rust-lang/rust#76199
[76119]: rust-lang/rust#76119
[75914]: rust-lang/rust#75914
[74989]: rust-lang/rust#74989
[79004]: rust-lang/rust#79004
[78676]: rust-lang/rust#78676
[79904]: rust-lang/rust#79904
[cargo/8864]: rust-lang/cargo#8864
[cargo/8765]: rust-lang/cargo#8765
[cargo/8758]: rust-lang/cargo#8758
[cargo/8752]: rust-lang/cargo#8752
[`slice::select_nth_unstable`]: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable
[`slice::select_nth_unstable_by`]: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable_by
[`slice::select_nth_unstable_by_key`]: https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.select_nth_unstable_by_key
[`hint::spin_loop`]: https://doc.rust-lang.org/stable/std/hint/fn.spin_loop.html
[`Poll::is_ready`]: https://doc.rust-lang.org/stable/std/task/enum.Poll.html#method.is_ready
[`Poll::is_pending`]: https://doc.rust-lang.org/stable/std/task/enum.Poll.html#method.is_pending
[rustdoc-ws-post]: https://blog.guillaume-gomez.fr/articles/2020-11-11+New+doc+comment+handling+in+rustdoc
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants