summaryrefslogtreecommitdiff
path: root/src/trans/target.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/trans/target.cpp')
-rw-r--r--src/trans/target.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/trans/target.cpp b/src/trans/target.cpp
index 71a342ba..1f04666e 100644
--- a/src/trans/target.cpp
+++ b/src/trans/target.cpp
@@ -94,6 +94,27 @@ namespace
ARCH_X86_64
};
}
+ else if(target_name == "i686-unknown-openbsd")
+ {
+ return TargetSpec {
+ "unix", "openbsd", "gnu", CodegenMode::Gnu11, "i686-unknown-openbsd",
+ ARCH_X86
+ };
+ }
+ else if(target_name == "x86_64-unknown-openbsd")
+ {
+ return TargetSpec {
+ "unix", "openbsd", "gnu", CodegenMode::Gnu11, "x86_64-unknown-openbsd",
+ ARCH_X86_64
+ };
+ }
+ else if(target_name == "arm-unknown-openbsd")
+ {
+ return TargetSpec {
+ "unix", "openbsd", "gnu", CodegenMode::Gnu11, "arm-unknown-openbsd",
+ ARCH_ARM32
+ };
+ }
else
{
::std::cerr << "Unknown target name '" << target_name << "'" << ::std::endl;
@@ -126,6 +147,13 @@ void Target_SetCfg(const ::std::string& target_name)
}
Cfg_SetValue("target_env", g_target.m_env_name);
+ if( g_target.m_os_name == "openbsd" )
+ {
+ Cfg_SetFlag("openbsd");
+ Cfg_SetValue("target_vendor", "unknown");
+ }
+ Cfg_SetValue("target_env", g_target.m_env_name);
+
Cfg_SetValue("target_os", g_target.m_os_name);
Cfg_SetValue("target_pointer_width", FMT(g_target.m_arch.m_pointer_bits));
Cfg_SetValue("target_endian", g_target.m_arch.m_big_endian ? "big" : "little");