Proposal
DWARFv5 has an extension for embedding program source code directly into the debug info sections: https://dwarfstd.org/issues/180201.1.html
LLVM implements this extension, though it currently uses a custom pre-standardization attribute opcode.
Clang supports it through a -gembed-source flag but Rust does not expose this feature at the moment.
Implementing this seems straight-forward (rust-lang/rust#126985) but I'm not entirely sure how to deal with unsupported platforms.
- Should
-Z embed-source=yes fail the build on non-DWARF or non-LLVM platforms?
- Should
-Z embed-source=yes automatically bump the DWARF version to v5 or should it require an explicit -Z dwarf-version=5? Clang currently defaults to v4 and requires setting the DWARF version explicitly.
- Should
-Z embed-source=yes fail the build if -g was not provided?
Process
The main points of the Major Change Process are as follows:
You can read more about Major Change Proposals on forge.
Proposal
DWARFv5 has an extension for embedding program source code directly into the debug info sections: https://dwarfstd.org/issues/180201.1.html
LLVM implements this extension, though it currently uses a custom pre-standardization attribute opcode.
Clang supports it through a -gembed-source flag but Rust does not expose this feature at the moment.
Implementing this seems straight-forward (rust-lang/rust#126985) but I'm not entirely sure how to deal with unsupported platforms.
-Z embed-source=yesfail the build on non-DWARF or non-LLVM platforms?-Z embed-source=yesautomatically bump the DWARF version to v5 or should it require an explicit-Z dwarf-version=5? Clang currently defaults to v4 and requires setting the DWARF version explicitly.-Z embed-source=yesfail the build if-gwas not provided?Process
The main points of the Major Change Process are as follows:
@rustbot second.-C flag, then full team check-off is required.@rfcbot fcp mergeon either the MCP or the PR.You can read more about Major Change Proposals on forge.