Skip to content

Commit 70c823e

Browse files
committed
Reorganize/rename interim variables
1 parent 74b5eed commit 70c823e

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

Diff for: build.rs

+21-20
Original file line numberDiff line numberDiff line change
@@ -28,24 +28,18 @@ fn main() {
2828
process::exit(1);
2929
}
3030
});
31+
let kernel_file_name = kernel
32+
.file_name()
33+
.expect("KERNEL has no valid file name")
34+
.to_str()
35+
.expect("kernel file name not valid utf8");
3136

3237
// check that the kernel file exists
3338
assert!(
3439
kernel.exists(),
3540
format!("KERNEL does not exist: {}", kernel.display())
3641
);
3742

38-
let kernel_file_name = kernel
39-
.file_name()
40-
.expect("KERNEL has no valid file name")
41-
.to_str()
42-
.expect("kernel file name not valid utf8");
43-
let kernel_stripped_file_name = format!("kernel_stripped-{}", kernel_file_name);
44-
let kernel_stripped_file_name_replaced = kernel_stripped_file_name.replace('-', "_");
45-
let kernel_stripped_out_path = out_dir.join(&kernel_stripped_file_name);
46-
let kernel_out_path = out_dir.join(format!("kernel_bin-{}.o", kernel_file_name));
47-
let kernel_archive_path = out_dir.join(format!("libkernel_bin-{}.a", kernel_file_name));
48-
4943
// get access to llvm tools shipped in the llvm-tools-preview rustup component
5044
let llvm_tools = match llvm_tools::LlvmTools::new() {
5145
Ok(tools) => tools,
@@ -79,40 +73,47 @@ fn main() {
7973
}
8074

8175
// strip debug symbols from kernel for faster loading
76+
let stripped_kernel_file_name = format!("kernel_stripped-{}", kernel_file_name);
77+
let stripped_kernel = out_dir.join(&stripped_kernel_file_name);
8278
let objcopy = llvm_tools
8379
.tool(&llvm_tools::exe("llvm-objcopy"))
8480
.expect("llvm-objcopy not found in llvm-tools");
8581
let mut cmd = Command::new(&objcopy);
8682
cmd.arg("--strip-debug");
8783
cmd.arg(&kernel);
88-
cmd.arg(&kernel_stripped_out_path);
89-
let exit_status = cmd.status().expect("failed to run objcopy to strip debug symbols");
84+
cmd.arg(&stripped_kernel);
85+
let exit_status = cmd
86+
.status()
87+
.expect("failed to run objcopy to strip debug symbols");
9088
if !exit_status.success() {
9189
eprintln!("Error: Stripping debug symbols failed");
9290
process::exit(1);
9391
}
9492

9593
// wrap the kernel executable as binary in a new ELF file
94+
let stripped_kernel_file_name_replaced = stripped_kernel_file_name.replace('-', "_");
95+
let kernel_bin = out_dir.join(format!("kernel_bin-{}.o", kernel_file_name));
96+
let kernel_archive = out_dir.join(format!("libkernel_bin-{}.a", kernel_file_name));
9697
let mut cmd = Command::new(&objcopy);
9798
cmd.arg("-I").arg("binary");
9899
cmd.arg("-O").arg("elf64-x86-64");
99100
cmd.arg("--binary-architecture=i386:x86-64");
100101
cmd.arg("--rename-section").arg(".data=.kernel");
101102
cmd.arg("--redefine-sym").arg(format!(
102103
"_binary_{}_start=_kernel_start_addr",
103-
kernel_stripped_file_name_replaced
104+
stripped_kernel_file_name_replaced
104105
));
105106
cmd.arg("--redefine-sym").arg(format!(
106107
"_binary_{}_end=_kernel_end_addr",
107-
kernel_stripped_file_name_replaced
108+
stripped_kernel_file_name_replaced
108109
));
109110
cmd.arg("--redefine-sym").arg(format!(
110111
"_binary_{}_size=_kernel_size",
111-
kernel_stripped_file_name_replaced
112+
stripped_kernel_file_name_replaced
112113
));
113114
cmd.current_dir(&out_dir);
114-
cmd.arg(&kernel_stripped_file_name);
115-
cmd.arg(&kernel_out_path);
115+
cmd.arg(&stripped_kernel_file_name);
116+
cmd.arg(&kernel_bin);
116117
let exit_status = cmd.status().expect("failed to run objcopy");
117118
if !exit_status.success() {
118119
eprintln!("Error: Running objcopy failed");
@@ -130,8 +131,8 @@ fn main() {
130131
});
131132
let mut cmd = Command::new(ar);
132133
cmd.arg("crs");
133-
cmd.arg(&kernel_archive_path);
134-
cmd.arg(&kernel_out_path);
134+
cmd.arg(&kernel_archive);
135+
cmd.arg(&kernel_bin);
135136
let exit_status = cmd.status().expect("failed to run ar");
136137
if !exit_status.success() {
137138
eprintln!("Error: Running ar failed");

0 commit comments

Comments
 (0)