aboutsummaryrefslogtreecommitdiff
path: root/src/target.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/target.cpp')
-rw-r--r--src/target.cpp109
1 files changed, 78 insertions, 31 deletions
diff --git a/src/target.cpp b/src/target.cpp
index 18573be4c3..b72f5fc751 100644
--- a/src/target.cpp
+++ b/src/target.cpp
@@ -15,6 +15,8 @@ static const ArchType arch_list[] = {
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_2a},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8_1a},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v8},
+ {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8m_baseline},
+ {ZigLLVM_arm, ZigLLVM_ARMSubArch_v8m_mainline},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7em},
{ZigLLVM_arm, ZigLLVM_ARMSubArch_v7m},
@@ -71,8 +73,11 @@ static const ArchType arch_list[] = {
{ZigLLVM_kalimba, ZigLLVM_KalimbaSubArch_v5},
{ZigLLVM_shave, ZigLLVM_NoSubArch},
+ {ZigLLVM_lanai, ZigLLVM_NoSubArch},
{ZigLLVM_wasm32, ZigLLVM_NoSubArch},
{ZigLLVM_wasm64, ZigLLVM_NoSubArch},
+ {ZigLLVM_renderscript32, ZigLLVM_NoSubArch},
+ {ZigLLVM_renderscript64, ZigLLVM_NoSubArch},
};
static const ZigLLVM_VendorType vendor_list[] = {
@@ -88,6 +93,8 @@ static const ZigLLVM_VendorType vendor_list[] = {
ZigLLVM_NVIDIA,
ZigLLVM_CSR,
ZigLLVM_Myriad,
+ ZigLLVM_AMD,
+ ZigLLVM_Mesa,
};
static const ZigLLVM_OSType os_list[] = {
@@ -119,10 +126,12 @@ static const ZigLLVM_OSType os_list[] = {
ZigLLVM_ELFIAMCU,
ZigLLVM_TvOS,
ZigLLVM_WatchOS,
+ ZigLLVM_Mesa3D,
};
static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_GNU,
+ ZigLLVM_GNUABI64,
ZigLLVM_GNUEABI,
ZigLLVM_GNUEABIHF,
ZigLLVM_GNUX32,
@@ -130,6 +139,9 @@ static const ZigLLVM_EnvironmentType environ_list[] = {
ZigLLVM_EABI,
ZigLLVM_EABIHF,
ZigLLVM_Android,
+ ZigLLVM_Musl,
+ ZigLLVM_MuslEABI,
+ ZigLLVM_MuslEABIHF,
ZigLLVM_MSVC,
ZigLLVM_Itanium,
ZigLLVM_Cygnus,
@@ -289,42 +301,73 @@ void resolve_target_object_format(ZigTarget *target) {
if (target->oformat != ZigLLVM_UnknownObjectFormat) {
return;
}
+
switch (target->arch.arch) {
- default:
- break;
- case ZigLLVM_hexagon:
- case ZigLLVM_mips:
- case ZigLLVM_mipsel:
- case ZigLLVM_mips64:
- case ZigLLVM_mips64el:
- case ZigLLVM_r600:
- case ZigLLVM_amdgcn:
- case ZigLLVM_sparc:
- case ZigLLVM_sparcv9:
- case ZigLLVM_systemz:
- case ZigLLVM_xcore:
- case ZigLLVM_ppc64le:
- target->oformat = ZigLLVM_ELF;
- return;
+ case ZigLLVM_UnknownArch:
+ case ZigLLVM_aarch64:
+ case ZigLLVM_arm:
+ case ZigLLVM_thumb:
+ case ZigLLVM_x86:
+ case ZigLLVM_x86_64:
+ if (is_os_darwin(target)) {
+ target->oformat = ZigLLVM_MachO;
+ } else if (target->os == ZigLLVM_Win32) {
+ target->oformat = ZigLLVM_COFF;
+ } else {
+ target->oformat = ZigLLVM_ELF;
+ }
+ return;
- case ZigLLVM_ppc:
- case ZigLLVM_ppc64:
- if (is_os_darwin(target)) {
- target->oformat = ZigLLVM_MachO;
+ case ZigLLVM_aarch64_be:
+ case ZigLLVM_amdgcn:
+ case ZigLLVM_amdil:
+ case ZigLLVM_amdil64:
+ case ZigLLVM_armeb:
+ case ZigLLVM_avr:
+ case ZigLLVM_bpfeb:
+ case ZigLLVM_bpfel:
+ case ZigLLVM_hexagon:
+ case ZigLLVM_lanai:
+ case ZigLLVM_hsail:
+ case ZigLLVM_hsail64:
+ case ZigLLVM_kalimba:
+ case ZigLLVM_le32:
+ case ZigLLVM_le64:
+ case ZigLLVM_mips:
+ case ZigLLVM_mips64:
+ case ZigLLVM_mips64el:
+ case ZigLLVM_mipsel:
+ case ZigLLVM_msp430:
+ case ZigLLVM_nvptx:
+ case ZigLLVM_nvptx64:
+ case ZigLLVM_ppc64le:
+ case ZigLLVM_r600:
+ case ZigLLVM_renderscript32:
+ case ZigLLVM_renderscript64:
+ case ZigLLVM_shave:
+ case ZigLLVM_sparc:
+ case ZigLLVM_sparcel:
+ case ZigLLVM_sparcv9:
+ case ZigLLVM_spir:
+ case ZigLLVM_spir64:
+ case ZigLLVM_systemz:
+ case ZigLLVM_tce:
+ case ZigLLVM_thumbeb:
+ case ZigLLVM_wasm32:
+ case ZigLLVM_wasm64:
+ case ZigLLVM_xcore:
+ target->oformat= ZigLLVM_ELF;
return;
- }
- target->oformat = ZigLLVM_ELF;
- return;
- }
- if (is_os_darwin(target)) {
- target->oformat = ZigLLVM_MachO;
- return;
- } else if (target->os == ZigLLVM_Win32) {
- target->oformat = ZigLLVM_COFF;
- return;
+ case ZigLLVM_ppc:
+ case ZigLLVM_ppc64:
+ if (is_os_darwin(target)) {
+ target->oformat = ZigLLVM_MachO;
+ } else {
+ target->oformat= ZigLLVM_ELF;
+ }
+ return;
}
- target->oformat = ZigLLVM_ELF;
}
// See lib/Support/Triple.cpp in LLVM for the source of this data.
@@ -357,8 +400,10 @@ static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
case ZigLLVM_hsail:
case ZigLLVM_spir:
case ZigLLVM_kalimba:
+ case ZigLLVM_lanai:
case ZigLLVM_shave:
case ZigLLVM_wasm32:
+ case ZigLLVM_renderscript32:
return 32;
case ZigLLVM_aarch64:
@@ -379,6 +424,7 @@ static int get_arch_pointer_bit_width(ZigLLVM_ArchType arch) {
case ZigLLVM_hsail64:
case ZigLLVM_spir64:
case ZigLLVM_wasm64:
+ case ZigLLVM_renderscript64:
return 64;
}
zig_unreachable();
@@ -446,6 +492,7 @@ int get_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
case ZigLLVM_ELFIAMCU:
case ZigLLVM_TvOS:
case ZigLLVM_WatchOS:
+ case ZigLLVM_Mesa3D:
zig_panic("TODO c type size in bits for this target");
}
zig_unreachable();