about summary refs log tree commit diff
path: root/compiler/rustc_codegen_ssa/src/back
diff options
context:
space:
mode:
authorMartin Kröning <mkroening@posteo.net>2022-06-02 00:16:00 +0200
committerMartin Kröning <mkroening@posteo.net>2022-06-23 11:20:52 +0200
commit21625e573036b6af90e71046d817fd7c74fa1f2f (patch)
tree73533a5966c2751b794eabe8500bb959934e5b7a /compiler/rustc_codegen_ssa/src/back
parentf7d12b4eec92b403909e4ae743fbb77e59ce3994 (diff)
downloadrust-21625e573036b6af90e71046d817fd7c74fa1f2f.tar.gz
rust-21625e573036b6af90e71046d817fd7c74fa1f2f.zip
Session object: Set OS/ABI
This adapts LLVM's behavior of MCELFObjectTargetWriter::getOSABI [1].

[1]: https://github.com/llvm/llvm-project/blob/8c8a2679a20f621994fa904bcfc68775e7345edc/llvm/include/llvm/MC/MCELFObjectWriter.h#L72-L86
Diffstat (limited to 'compiler/rustc_codegen_ssa/src/back')
-rw-r--r--compiler/rustc_codegen_ssa/src/back/metadata.rs10
1 files changed, 9 insertions, 1 deletions
diff --git a/compiler/rustc_codegen_ssa/src/back/metadata.rs b/compiler/rustc_codegen_ssa/src/back/metadata.rs
index 4c330c5906a..3dd607adee5 100644
--- a/compiler/rustc_codegen_ssa/src/back/metadata.rs
+++ b/compiler/rustc_codegen_ssa/src/back/metadata.rs
@@ -171,7 +171,15 @@ pub(crate) fn create_object_file(sess: &Session) -> Option<write::Object<'static
         }
         _ => 0,
     };
-    file.flags = FileFlags::Elf { e_flags };
+    // adapted from LLVM's `MCELFObjectTargetWriter::getOSABI`
+    let os_abi = match sess.target.options.os.as_ref() {
+        "hermit" => elf::ELFOSABI_STANDALONE,
+        "freebsd" => elf::ELFOSABI_FREEBSD,
+        "solaris" => elf::ELFOSABI_SOLARIS,
+        _ => elf::ELFOSABI_NONE,
+    };
+    let abi_version = 0;
+    file.flags = FileFlags::Elf { os_abi, abi_version, e_flags };
     Some(file)
 }