<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_codegen_llvm/src/debuginfo, branch 1.59.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.59.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.59.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2022-01-08T04:20:58+00:00</updated>
<entry>
<title>Rollup merge of #92375 - wesleywiser:consolidate_debuginfo_msvc_check, r=michaelwoerister</title>
<updated>2022-01-08T04:20:58+00:00</updated>
<author>
<name>Eric Huss</name>
<email>eric@huss.org</email>
</author>
<published>2022-01-08T04:20:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=5cddd24daa8c4bc4c16f2c11115359a882e2bc50'/>
<id>urn:sha1:5cddd24daa8c4bc4c16f2c11115359a882e2bc50</id>
<content type='text'>
Consolidate checking for msvc when generating debuginfo

If the target we're generating code for is msvc, then we do two main
things differently: we generate type names in a C++ style instead of a
Rust style and we generate debuginfo for enums differently.

I've refactored the code so that there is one function
(`cpp_like_debuginfo`) which determines if we should use the C++ style
of naming types and other debuginfo generation or the regular Rust one.

r? ``@michaelwoerister``

This PR is not urgent so please don't let it interrupt your holidays! 🎄 🎁
</content>
</entry>
<entry>
<title>Consolidate checking for msvc when generating debuginfo</title>
<updated>2022-01-07T17:36:09+00:00</updated>
<author>
<name>Wesley Wiser</name>
<email>wesleywiser@microsoft.com</email>
</author>
<published>2021-12-28T21:57:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=836addcbc4fa825e07c78c6feb7f6a0b776ed41a'/>
<id>urn:sha1:836addcbc4fa825e07c78c6feb7f6a0b776ed41a</id>
<content type='text'>
If the target we're generating code for is msvc, then we do two main
things differently: we generate type names in a C++ style instead of a
Rust style and we generate debuginfo for enums differently.

I've refactored the code so that there is one function
(`cpp_like_debuginfo`) which determines if we should use the C++ style
of naming types and other debuginfo generation or the regular Rust one.
</content>
</entry>
<entry>
<title>sess/cg: re-introduce split dwarf kind</title>
<updated>2022-01-06T09:32:42+00:00</updated>
<author>
<name>David Wood</name>
<email>david.wood@huawei.com</email>
</author>
<published>2021-10-08T16:10:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=08ed338f561b000ce5672b55c0545fa7f3f13591'/>
<id>urn:sha1:08ed338f561b000ce5672b55c0545fa7f3f13591</id>
<content type='text'>
In #79570, `-Z split-dwarf-kind={none,single,split}` was replaced by `-C
split-debuginfo={off,packed,unpacked}`. `-C split-debuginfo`'s packed
and unpacked aren't exact parallels to single and split, respectively.

On Unix, `-C split-debuginfo=packed` will put debuginfo into object
files and package debuginfo into a DWARF package file (`.dwp`) and
`-C split-debuginfo=unpacked` will put debuginfo into dwarf object files
and won't package it.

In the initial implementation of Split DWARF, split mode wrote sections
which did not require relocation into a DWARF object (`.dwo`) file which
was ignored by the linker and then packaged those DWARF objects into
DWARF packages (`.dwp`). In single mode, sections which did not require
relocation were written into object files but ignored by the linker and
were not packaged. However, both split and single modes could be
packaged or not, the primary difference in behaviour was where the
debuginfo sections that did not require link-time relocation were
written (in a DWARF object or the object file).

This commit re-introduces a `-Z split-dwarf-kind` flag, which can be
used to pick between split and single modes when `-C split-debuginfo` is
used to enable Split DWARF (either packed or unpacked).

Signed-off-by: David Wood &lt;david.wood@huawei.com&gt;
</content>
</entry>
<entry>
<title>RustWrapper: adapt for an LLVM API change</title>
<updated>2022-01-03T10:25:33+00:00</updated>
<author>
<name>Krasimir Georgiev</name>
<email>krasimir@google.com</email>
</author>
<published>2022-01-03T10:25:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4ce56b414ddc8ccc1fbb29cf99dd704e6c5845d9'/>
<id>urn:sha1:4ce56b414ddc8ccc1fbb29cf99dd704e6c5845d9</id>
<content type='text'>
No functional changes intended.

The LLVM commit
https://github.com/llvm/llvm-project/commit/ec501f15a8b8ace2b283732740d6d65d40d82e09
removed the signed version of `createExpression`. This adapts the Rust
LLVM wrappers accordingly.
</content>
</entry>
<entry>
<title>Auto merge of #91957 - nnethercote:rm-SymbolStr, r=oli-obk</title>
<updated>2021-12-19T09:31:37+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2021-12-19T09:31:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a41a6925badac7508d7a72cc1fc20f43dc6ad75e'/>
<id>urn:sha1:a41a6925badac7508d7a72cc1fc20f43dc6ad75e</id>
<content type='text'>
Remove `SymbolStr`

This was originally proposed in https://github.com/rust-lang/rust/pull/74554#discussion_r466203544. As well as removing the icky `SymbolStr` type, it allows the removal of a lot of `&amp;` and `*` occurrences.

Best reviewed one commit at a time.

r? `@oli-obk`
</content>
</entry>
<entry>
<title>Rollup merge of #92024 - pcwalton:per-codegen-unit-names, r=davidtwco</title>
<updated>2021-12-18T13:49:41+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2021-12-18T13:49:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=53a95ea289941ffeacb95f2ca7a7a7f1a9aae679'/>
<id>urn:sha1:53a95ea289941ffeacb95f2ca7a7a7f1a9aae679</id>
<content type='text'>
rustc_codegen_llvm: Give each codegen unit a unique DWARF name on all platforms, not just Apple ones.

To avoid breaking split DWARF, we need to ensure that each codegen unit has a
unique `DW_AT_name`. This is because there's a remote chance that different
codegen units for the same module will have entirely identical DWARF entries
for the purpose of the DWO ID, which would violate Appendix F ("Split Dwarf
Object Files") of the DWARF 5 specification. LLVM uses the algorithm specified
in section 7.32 "Type Signature Computation" to compute the DWO ID, which does
not include any fields that would distinguish compilation units. So we must
embed the codegen unit name into the `DW_AT_name`.

Closes #88521.
</content>
</entry>
<entry>
<title>Rollup merge of #91931 - LegionMammal978:less-inband-codegen_llvm, r=davidtwco</title>
<updated>2021-12-18T13:49:40+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2021-12-18T13:49:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ca3d129ee38fc73085f7ad5b525e5245f7ad59f1'/>
<id>urn:sha1:ca3d129ee38fc73085f7ad5b525e5245f7ad59f1</id>
<content type='text'>
Remove `in_band_lifetimes` from `rustc_codegen_llvm`

See #91867 for more information.

This one took a while. This crate has dozens of functions not associated with any type, and most of them were using in-band lifetimes for `'ll` and `'tcx`.
</content>
</entry>
<entry>
<title>Rollup merge of #91566 - cbeuw:remap-dwo-name, r=davidtwco</title>
<updated>2021-12-18T13:49:38+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2021-12-18T13:49:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1c42199c8f62a4b4df6c71a047b28d1cbb075c7f'/>
<id>urn:sha1:1c42199c8f62a4b4df6c71a047b28d1cbb075c7f</id>
<content type='text'>
Apply path remapping to DW_AT_GNU_dwo_name when producing split DWARF

`--remap-path-prefix` doesn't apply to paths to `.o` (in case of packed) or `.dwo` (in case of unpacked) files in `DW_AT_GNU_dwo_name`. GCC also has this bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91888
</content>
</entry>
<entry>
<title>rustc_codegen_llvm: Give each codegen unit a unique DWARF name on all</title>
<updated>2021-12-17T04:40:04+00:00</updated>
<author>
<name>Patrick Walton</name>
<email>pcwalton@fb.com</email>
</author>
<published>2021-12-17T04:39:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c41fd760dbab005e8f4038ec67eba17ab60e6a98'/>
<id>urn:sha1:c41fd760dbab005e8f4038ec67eba17ab60e6a98</id>
<content type='text'>
platforms, not just Apple ones.

To avoid breaking split DWARF, we need to ensure that each codegen unit has a
unique `DW_AT_name`. This is because there's a remote chance that different
codegen units for the same module will have entirely identical DWARF entries
for the purpose of the DWO ID, which would violate Appendix F ("Split Dwarf
Object Files") of the DWARF 5 specification. LLVM uses the algorithm specified
in section 7.32 "Type Signature Computation" to compute the DWO ID, which does
not include any fields that would distinguish compilation units. So we must
embed the codegen unit name into the `DW_AT_name`.

Closes #88521.
</content>
</entry>
<entry>
<title>Remove `in_band_lifetimes` from `rustc_codegen_llvm`</title>
<updated>2021-12-16T19:43:32+00:00</updated>
<author>
<name>LegionMammal978</name>
<email>mattlloydhouse@gmail.com</email>
</author>
<published>2021-12-14T18:49:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4937a55dfb19e804c3c974e5341b70dcd76192d4'/>
<id>urn:sha1:4937a55dfb19e804c3c974e5341b70dcd76192d4</id>
<content type='text'>
See #91867 for more information.
</content>
</entry>
</feed>
