-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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 support for DWARF version 5. #98350
Conversation
|
This comment has been minimized.
This comment has been minimized.
This should probably be an unstable Is the max dwarf version logic really needed? It seems odd that there is no way to force a newer version if a target has this option set. It's reasonable that some platforms default to an older version, but I don't really see a reason to hard forbid using a newer one (for example, if I bring my own toolchain). |
3e54d38
to
6c73840
Compare
OK, I've switched the |
Is this worth a perf run? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks reasonable to me.
Thanks, @pcwalton! Looks good to me. @bors r+
As it currently is, the PR does not actually change the DWARF version being used for anything. It just adds the |
📌 Commit 6c73840877fb5db8fd84c431d7078abe23cd8f87 has been approved by |
🌲 The tree is currently closed for pull requests below priority 1000. This pull request will be tested once the tree is reopened. |
Addressed comment. I think I need another review for bors to pick it up, r? @michaelwoerister |
@bors r=michaelwoerister |
📌 Commit 42eeb58 has been approved by |
🌲 The tree is currently closed for pull requests below priority 1000. This pull request will be tested once the tree is reopened. |
This comment has been minimized.
This comment has been minimized.
Doesn't look related to this PR. |
That failure is the one that caused the tree closure. Should be resolved now. @bors retry |
@bors retry |
@bors r+ |
@bors r=michaelwoerister retry does not work when it has been unaccepted. |
Implement support for DWARF version 5. DWARF version 5 brings a number of improvements over version 4. Quoting from the announcement [1]: > Version 5 incorporates improvements in many areas: better data compression, > separation of debugging data from executable files, improved description of > macros and source files, faster searching for symbols, improved debugging > optimized code, as well as numerous improvements in functionality and > performance. On platforms where DWARF version 5 is supported (Linux, primarily), this commit adds support for it behind a new `-Z dwarf-version=5` flag. [1]: https://dwarfstd.org/Public_Review.php r? `@michaelwoerister`
Rollup of 7 pull requests Successful merges: - rust-lang#98350 (Implement support for DWARF version 5.) - rust-lang#98915 (Clarify deriving code) - rust-lang#98980 (fix ICE in ConstProp) - rust-lang#99008 (Adding suggestion for E0530) - rust-lang#99043 (Collapse some weirdly-wrapping derives) - rust-lang#99048 (Remove a string comparison about types) - rust-lang#99070 (Update integer_atomics tracking issue) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Rustc defaults to DWARF-2 on some targets, and DWARF-4 on others. However using -g with the C compiler yields whatever default version the C compiler prefers. One side effect is that the DWARF debug info shipped in some libraries with rustc itself (e.g. libcompiler_builtins and others) have recently switched to DWARF-5 as a side effect of upgrading the clang version used on rustc CI. (rust-lang/rust#98746) Ideally, the preferred DWARF version would be given by the rust compiler and/or cargo, but that's not the case at the moment, so the next best thing is something that aligns with the current defaults, although work in under way to add a rustc flag that would allow to pick the preferred DWARF version (rust-lang/rust#98350)
Rustc defaults to DWARF-2 on some targets, and DWARF-4 on others. However using -g with the C compiler yields whatever default version the C compiler prefers. One side effect is that the DWARF debug info shipped in some libraries with rustc itself (e.g. libcompiler_builtins and others) have recently switched to DWARF-5 as a side effect of upgrading the clang version used on rustc CI. (rust-lang/rust#98746) Ideally, the preferred DWARF version would be given by the rust compiler and/or cargo, but that's not the case at the moment, so the next best thing is something that aligns with the current defaults, although work in under way to add a rustc flag that would allow to pick the preferred DWARF version (rust-lang/rust#98350)
if let Some(version) = sess.target.dwarf_version { | ||
llvm::LLVMRustAddModuleFlag( | ||
self.llmod, | ||
llvm::LLVMModFlagBehavior::Warning, | ||
"Dwarf Version\0".as_ptr().cast(), | ||
version, | ||
) | ||
} | ||
let dwarf_version = | ||
sess.opts.debugging_opts.dwarf_version.unwrap_or(sess.target.default_dwarf_version); | ||
llvm::LLVMRustAddModuleFlag( | ||
self.llmod, | ||
llvm::LLVMModFlagBehavior::Warning, | ||
"Dwarf Version\0".as_ptr().cast(), | ||
dwarf_version, | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could this have caused #99143? Looks like before this PR, we only ever set Dwarf Version
on targets with Some
in their dwarf_version
, which based on the diff in this PR, wasn't the case for e.g. Windows (at least, there's probably more targets not covered by the ${OS}_base.rs
files).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright that was confusing but I'm pretty sure (#99143 (comment)) that what's going on is even with debuginfo disabled for a binary, the standard library is getting statically linked in and we ship it w/ debuginfo.
I'm not sure what the best approach here would be, maybe just relying on the is_like_msvc
check to effectively switch between CodeView
and Dwarf Version
(and never set both)?
fix dwarf debuginfo being used in addition to CodeView on windows Tackles the debuginfo size increase regression on windows to [unblock clippy](rust-lang#99143 (comment)) -- introduced by the DWARF5 support in rust-lang#98350 cc `@pcwalton.` r? `@eddyb` Fixes rust-lang#99143
Does macOS support DWARF5 at the moment? |
Rustc defaults to DWARF-2 on some targets, and DWARF-4 on others. However using -g with the C compiler yields whatever default version the C compiler prefers. One side effect is that the DWARF debug info shipped in some libraries with rustc itself (e.g. libcompiler_builtins and others) have recently switched to DWARF-5 as a side effect of upgrading the clang version used on rustc CI. (rust-lang/rust#98746) Ideally, the preferred DWARF version would be given by the rust compiler and/or cargo, but that's not the case at the moment, so the next best thing is something that aligns with the current defaults, although work in under way to add a rustc flag that would allow to pick the preferred DWARF version (rust-lang/rust#98350)
Rustc defaults to DWARF-2 on some targets, and DWARF-4 on others. However using -g with the C compiler yields whatever default version the C compiler prefers. One side effect is that the DWARF debug info shipped in some libraries with rustc itself (e.g. libcompiler_builtins and others) have recently switched to DWARF-5 as a side effect of upgrading the clang version used on rustc CI. (rust-lang/rust#98746) Ideally, the preferred DWARF version would be given by the rust compiler and/or cargo, but that's not the case at the moment, so the next best thing is something that aligns with the current defaults, although work in under way to add a rustc flag that would allow to pick the preferred DWARF version (rust-lang/rust#98350)
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Signed-off-by: Miguel Ojeda <[email protected]> Link: https://lore.kernel.org/r/[email protected]
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Signed-off-by: Miguel Ojeda <[email protected]> Link: https://lore.kernel.org/r/[email protected]
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Signed-off-by: Miguel Ojeda <[email protected]> Link: https://lore.kernel.org/r/[email protected]
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Signed-off-by: Miguel Ojeda <[email protected]> Link: https://lore.kernel.org/r/[email protected]
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Miguel Ojeda <[email protected]>
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Miguel Ojeda <[email protected]>
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Reviewed-by: Alice Ryhl <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Miguel Ojeda <[email protected]>
Rust 1.64.0 introduced (unstable) support for the `-Zdwarf-version` flag, which allows to select DWARFv5, thus use it. Link: rust-lang/rust#103057 Link: rust-lang/rust#98350 Reviewed-by: Alice Ryhl <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Miguel Ojeda <[email protected]>
DWARF version 5 brings a number of improvements over version 4. Quoting from
the announcement 1:
On platforms where DWARF version 5 is supported (Linux, primarily), this commit
adds support for it behind a new
-Z dwarf-version=5
flag.r? @michaelwoerister