1
Fork 0

Session object: Decouple e_flags from FileFlags

This commit is contained in:
Martin Kröning 2022-06-01 23:13:46 +02:00
parent 946a88a989
commit f7d12b4eec

View file

@ -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)
} }