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

Implement -Z embed-source (DWARFv5 source code embedding extension) #126985

Merged
merged 3 commits into from
Aug 27, 2024

Conversation

Mrmaxmeier
Copy link
Contributor

@Mrmaxmeier Mrmaxmeier commented Jun 26, 2024

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's DWARFv5 source code embedding support.

@rustbot
Copy link
Collaborator

rustbot commented Jun 26, 2024

r? @TaKO8Ki

rustbot has assigned @TaKO8Ki.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Jun 26, 2024
@tgross35
Copy link
Contributor

This should also get a test in tests/debuginfo/ to make sure it is doing what is expected

@Mrmaxmeier Mrmaxmeier changed the title Implement -C embed-source (DWARFv5 source code embedding extension) Implement -Z embed-source (DWARFv5 source code embedding extension) Jun 26, 2024
@rust-log-analyzer

This comment has been minimized.

@Mrmaxmeier
Copy link
Contributor Author

Mrmaxmeier commented Jun 26, 2024

This should also get a test in tests/debuginfo/ to make sure it is doing what is expected

Both LLDB and GDB doesn't support this proposal yet, so there's not a great way to test for it. I guess something similar to the llvm-dwarfdump-based tests in tests/run-make/remap-path-prefix-dwarf might be the way to go.

Edit: Looks like support was added somewhat recently in LLDB, but looking at the DWARF is probably still easier. I didn't find a (non-horrible) way to differentiate between embedded source code and code loaded from disk. (settings set target.source-map will fall back to the original paths if the mapped ones don't exist)

@tgross35
Copy link
Contributor

A run-make test would be great. remap-path-prefix-dwarf still uses a Makefile, note that you should probably use rmake if you are comfortable with it (the tests are migrating away from makefiles to having a rmake.rs instead. You get these crates to do your inspection https://github.com/rust-lang/rust/blob/d7c59370cea68cd17006ec3440a43254fd0eda7d/src/tools/run-make-support/Cargo.toml)

@bors

This comment was marked as resolved.

@rustbot rustbot added A-run-make Area: port run-make Makefiles to rmake.rs T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Jun 28, 2024
@Mrmaxmeier
Copy link
Contributor Author

I've added a run-make test that depends on a new release of gimli which includes support for the relevant DWARF tags.
I'll update the draft PR once the relevant update is available on crates.io. This PR will fail tidy with invalid source: "git+https://github.com/gimli-rs/[...] in the mean time.

@tgross35
Copy link
Contributor

You can probably ask for a minor release on your Gimli PR, then open a separate PR to bump the versions in this repo once it is released.

bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 16, 2024
run-make-support: update gimli to 0.31.0

This version bump is required for the tests in rust-lang#126985 as suggested [here](rust-lang#126985 (comment)).

r​? tgross35
(^ that didn't work. cc `@tgross35)`

try-job: x86_64-msvc
try-job: x86_64-mingw
try-job: aarch64-apple
try-job: test-various
try-job: armhf-gnu
try-job: dist-x86_64-linux
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jul 16, 2024
…jieyouxu

run-make-support: update gimli to 0.31.0

This version bump is required for the tests in rust-lang#126985 as suggested [here](rust-lang#126985 (comment)).

r​? tgross35
(^ that didn't work. cc `@tgross35)`

try-job: x86_64-msvc
try-job: x86_64-mingw
try-job: aarch64-apple
try-job: test-various
try-job: armhf-gnu
try-job: dist-x86_64-linux
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jul 16, 2024
Rollup merge of rust-lang#127805 - Mrmaxmeier:run-make-bump-gimli, r=jieyouxu

run-make-support: update gimli to 0.31.0

This version bump is required for the tests in rust-lang#126985 as suggested [here](rust-lang#126985 (comment)).

r​? tgross35
(^ that didn't work. cc `@tgross35)`

try-job: x86_64-msvc
try-job: x86_64-mingw
try-job: aarch64-apple
try-job: test-various
try-job: armhf-gnu
try-job: dist-x86_64-linux
@rust-log-analyzer

This comment has been minimized.

@Mrmaxmeier
Copy link
Contributor Author

Status update:
The MCP got accepted (cc @davidtwco) and I've added a run-make test for the new functionality.

It turns out that LLVM 17 is not compatible with the way I'm emitting source code with each file. The proposed DWARF v6 spec was only implemented somewhat recently (llvm/llvm-project@87e22bd).

There does not seem to be an easy way to gate -Zembed-source to LLVM 18+, and I'm tempted to just ignore the issue. (llvm_util::get_version is not exposed outside of rustc_codegen_llvm and I'd like to not plumb it though the target features functionality.)

Is rustc going to be used with LLVM 17 for nightly builds anywhere? (I guess people might be able to run into this with RUSTC_BOOTSTRAP=1 on distro builds?)

matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Aug 22, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 22, 2024
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#128935 (More work on `zstd` compression)
 - rust-lang#129263 (Add a missing compatibility note in the 1.80.0 release notes)
 - rust-lang#129386 (Use a LocalDefId in ResolvedArg.)
 - rust-lang#129408 (Fix handling of macro arguments within the `dropping_copy_types` lint)
 - rust-lang#129410 (Miri subtree update)
 - rust-lang#129416 (library: Move unstable API of new_uninit to new features)

r? `@ghost`
`@rustbot` modify labels: rollup
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Aug 22, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Aug 22, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 23, 2024
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#128511 (Document WebAssembly target feature expectations)
 - rust-lang#128935 (More work on `zstd` compression)
 - rust-lang#129263 (Add a missing compatibility note in the 1.80.0 release notes)
 - rust-lang#129386 (Use a LocalDefId in ResolvedArg.)
 - rust-lang#129408 (Fix handling of macro arguments within the `dropping_copy_types` lint)
 - rust-lang#129417 (Don't trigger refinement lint if predicates reference errors)

r? `@ghost`
`@rustbot` modify labels: rollup
tgross35 added a commit to tgross35/rust that referenced this pull request Aug 23, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 23, 2024
Rollup of 7 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#128349 (Enable `f16` tests on x86 and x86-64)
 - rust-lang#128511 (Document WebAssembly target feature expectations)
 - rust-lang#129263 (Add a missing compatibility note in the 1.80.0 release notes)
 - rust-lang#129276 (Stabilize feature `char_indices_offset`)
 - rust-lang#129350 (adapt integer comparison tests for LLVM 20 IR changes)
 - rust-lang#129408 (Fix handling of macro arguments within the `dropping_copy_types` lint)

r? `@ghost`
`@rustbot` modify labels: rollup
jieyouxu added a commit to jieyouxu/rust that referenced this pull request Aug 23, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 23, 2024
Rollup of 7 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#128507 (Migrate `libtest-thread-limit` `run-make` test to rmake)
 - rust-lang#128935 (More work on `zstd` compression)
 - rust-lang#129190 (Add f16 and f128 to tests/ui/consts/const-float-bits-conv.rs)
 - rust-lang#129295 (Build `library/profiler_builtins` from `ci-llvm` if appropriate)
 - rust-lang#129416 (library: Move unstable API of new_uninit to new features)
 - rust-lang#129418 (rustc: Simplify getting sysroot library directory)

r? `@ghost`
`@rustbot` modify labels: rollup
jieyouxu added a commit to jieyouxu/rust that referenced this pull request Aug 23, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 23, 2024
Rollup of 5 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#128935 (More work on `zstd` compression)
 - rust-lang#129190 (Add f16 and f128 to tests/ui/consts/const-float-bits-conv.rs)
 - rust-lang#129416 (library: Move unstable API of new_uninit to new features)
 - rust-lang#129418 (rustc: Simplify getting sysroot library directory)

r? `@ghost`
`@rustbot` modify labels: rollup
tgross35 added a commit to tgross35/rust that referenced this pull request Aug 25, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 25, 2024
Rollup of 8 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#128935 (More work on `zstd` compression)
 - rust-lang#129134 (bootstrap: improve error recovery flags to curl)
 - rust-lang#129190 (Add f16 and f128 to tests/ui/consts/const-float-bits-conv.rs)
 - rust-lang#129416 (library: Move unstable API of new_uninit to new features)
 - rust-lang#129418 (rustc: Simplify getting sysroot library directory)
 - rust-lang#129459 (handle stage0 `cargo` and `rustc` separately)
 - rust-lang#129511 (Update minifier to 0.3.1)

r? `@ghost`
`@rustbot` modify labels: rollup
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Aug 27, 2024
…avidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 27, 2024
…kingjubilee

Rollup of 9 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#127922 (Add unsafe to extern blocks in style guide)
 - rust-lang#128731 (simd_shuffle intrinsic: allow argument to be passed as vector)
 - rust-lang#128935 (More work on `zstd` compression)
 - rust-lang#128942 (miri weak memory emulation: put previous value into initial store buffer)
 - rust-lang#129418 (rustc: Simplify getting sysroot library directory)
 - rust-lang#129490 (Add Trusty OS as tier 3 target)
 - rust-lang#129559 (float types: document NaN bit pattern guarantees)
 - rust-lang#129642 (Bump backtrace to rust-lang/backtrace@fc37b22)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 27, 2024
Rollup of 9 pull requests

Successful merges:

 - rust-lang#126985 (Implement `-Z embed-source` (DWARFv5 source code embedding extension))
 - rust-lang#127922 (Add unsafe to extern blocks in style guide)
 - rust-lang#128731 (simd_shuffle intrinsic: allow argument to be passed as vector)
 - rust-lang#128935 (More work on `zstd` compression)
 - rust-lang#128942 (miri weak memory emulation: put previous value into initial store buffer)
 - rust-lang#129418 (rustc: Simplify getting sysroot library directory)
 - rust-lang#129490 (Add Trusty OS as tier 3 target)
 - rust-lang#129536 (Add `f16` and `f128` inline ASM support for `aarch64`)
 - rust-lang#129559 (float types: document NaN bit pattern guarantees)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 9c26ebe into rust-lang:master Aug 27, 2024
6 checks passed
@rustbot rustbot added this to the 1.82.0 milestone Aug 27, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Aug 27, 2024
Rollup merge of rust-lang#126985 - Mrmaxmeier:dwarf-embed-source, r=davidtwco

Implement `-Z embed-source` (DWARFv5 source code embedding extension)

Implement rust-lang/compiler-team#764 MCP which adds an unstable flag that exposes LLVM's [DWARFv5 source code embedding](https://dwarfstd.org/issues/180201.1.html) support.
@Mrmaxmeier Mrmaxmeier deleted the dwarf-embed-source branch August 27, 2024 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-run-make Area: port run-make Makefiles to rmake.rs S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

9 participants