Skip to content

Commit fdfbb56

Browse files
committed
Fix metadata passing in link functions
- Pass metadata parameter through from NvvmCodegenBackend::link to link::link - Use metadata.raw_bytes() instead of hardcoded empty array in create_archive - Add metadata parameter to link_rlib function signature - Properly thread metadata through the linking pipeline
1 parent 7e244d9 commit fdfbb56

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

crates/rustc_codegen_nvvm/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,14 +181,15 @@ impl CodegenBackend for NvvmCodegenBackend {
181181
&self,
182182
sess: &rustc_session::Session,
183183
codegen_results: rustc_codegen_ssa::CodegenResults,
184-
_metadata: rustc_metadata::EncodedMetadata,
184+
metadata: rustc_metadata::EncodedMetadata,
185185
outputs: &config::OutputFilenames,
186186
) {
187187
link::link(
188188
sess,
189189
&codegen_results,
190190
outputs,
191191
codegen_results.crate_info.local_crate_name.as_str(),
192+
metadata,
192193
);
193194
}
194195
}

crates/rustc_codegen_nvvm/src/link.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ pub fn link(
110110
codegen_results: &CodegenResults,
111111
outputs: &OutputFilenames,
112112
crate_name: &str,
113+
metadata: rustc_metadata::EncodedMetadata,
113114
) {
114115
debug!("Linking crate `{}`", crate_name);
115116
// largely inspired by rust-gpu
@@ -136,7 +137,7 @@ pub fn link(
136137
out_filename.file_for_writing(outputs, OutputType::Exe, "", None);
137138
match crate_type {
138139
CrateType::Rlib => {
139-
link_rlib(sess, codegen_results, &out_filename_file_for_writing);
140+
link_rlib(sess, codegen_results, &out_filename_file_for_writing, &metadata);
140141
}
141142
CrateType::Executable | CrateType::Cdylib | CrateType::Dylib => {
142143
let _ = link_exe(
@@ -153,7 +154,7 @@ pub fn link(
153154
}
154155
}
155156

156-
fn link_rlib(sess: &Session, codegen_results: &CodegenResults, out_filename: &Path) {
157+
fn link_rlib(sess: &Session, codegen_results: &CodegenResults, out_filename: &Path, metadata: &rustc_metadata::EncodedMetadata) {
157158
debug!("Linking rlib `{:?}`", out_filename);
158159
let mut file_list = Vec::<&Path>::new();
159160

@@ -187,7 +188,7 @@ fn link_rlib(sess: &Session, codegen_results: &CodegenResults, out_filename: &Pa
187188
create_archive(
188189
sess,
189190
&file_list,
190-
&[], // Metadata is no longer available in CodegenResults
191+
metadata.raw_bytes(),
191192
out_filename,
192193
);
193194
}

0 commit comments

Comments
 (0)