Session object: Decouple e_flags from FileFlags
This commit is contained in:
parent
946a88a989
commit
f7d12b4eec
1 changed files with 6 additions and 5 deletions
|
@ -130,7 +130,7 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut file = write::Object::new(binary_format, architecture, endianness);
|
let mut file = write::Object::new(binary_format, architecture, endianness);
|
||||||
match architecture {
|
let e_flags = match architecture {
|
||||||
Architecture::Mips => {
|
Architecture::Mips => {
|
||||||
let arch = match sess.target.options.cpu.as_ref() {
|
let arch = match sess.target.options.cpu.as_ref() {
|
||||||
"mips1" => elf::EF_MIPS_ARCH_1,
|
"mips1" => elf::EF_MIPS_ARCH_1,
|
||||||
|
@ -149,7 +149,7 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
|
||||||
if sess.target.options.cpu.contains("r6") {
|
if sess.target.options.cpu.contains("r6") {
|
||||||
e_flags |= elf::EF_MIPS_NAN2008;
|
e_flags |= elf::EF_MIPS_NAN2008;
|
||||||
}
|
}
|
||||||
file.flags = FileFlags::Elf { e_flags };
|
e_flags
|
||||||
}
|
}
|
||||||
Architecture::Mips64 => {
|
Architecture::Mips64 => {
|
||||||
// copied from `mips64el-linux-gnuabi64-gcc foo.c -c`
|
// copied from `mips64el-linux-gnuabi64-gcc foo.c -c`
|
||||||
|
@ -160,17 +160,18 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
|
||||||
} else {
|
} else {
|
||||||
elf::EF_MIPS_ARCH_64R2
|
elf::EF_MIPS_ARCH_64R2
|
||||||
};
|
};
|
||||||
file.flags = FileFlags::Elf { e_flags };
|
e_flags
|
||||||
}
|
}
|
||||||
Architecture::Riscv64 if sess.target.options.features.contains("+d") => {
|
Architecture::Riscv64 if sess.target.options.features.contains("+d") => {
|
||||||
// copied from `riscv64-linux-gnu-gcc foo.c -c`, note though
|
// copied from `riscv64-linux-gnu-gcc foo.c -c`, note though
|
||||||
// that the `+d` target feature represents whether the double
|
// that the `+d` target feature represents whether the double
|
||||||
// float abi is enabled.
|
// float abi is enabled.
|
||||||
let e_flags = elf::EF_RISCV_RVC | elf::EF_RISCV_FLOAT_ABI_DOUBLE;
|
let e_flags = elf::EF_RISCV_RVC | elf::EF_RISCV_FLOAT_ABI_DOUBLE;
|
||||||
file.flags = FileFlags::Elf { e_flags };
|
e_flags
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => 0,
|
||||||
};
|
};
|
||||||
|
file.flags = FileFlags::Elf { e_flags };
|
||||||
Some(file)
|
Some(file)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue