authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-12-04 14:42:18-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-12-04 14:42:40-05:00
log10e172b1d77619469653b0521d8f65604fa549c7
tree28ab1c6f77f8cd51483ff1f58ce2c1a2b942675a
parent44e896f613b8fa9b74e3fa992b265d8a5f052aad
signature Commit is signed but in an unrecognized format.

add `other` OS and fix regression in build-exe for freestanding


5 files changed, 21 insertions(+), 8 deletions(-)

lib/std/special/start.zig+8-6
...@@ -32,14 +32,16 @@ comptime {...@@ -32,14 +32,16 @@ comptime {
32 if (!@hasDecl(root, "WinMain") and !@hasDecl(root, "WinMainCRTStartup")) {32 if (!@hasDecl(root, "WinMain") and !@hasDecl(root, "WinMainCRTStartup")) {
33 @export("WinMainCRTStartup", WinMainCRTStartup, .Strong);33 @export("WinMainCRTStartup", WinMainCRTStartup, .Strong);
34 }34 }
35 } else if (is_wasm and builtin.os == .freestanding) {
36 if (!@hasDecl(root, "_start")) @export("_start", wasm_freestanding_start, .Strong);
37 } else if (builtin.os == .uefi) {35 } else if (builtin.os == .uefi) {
38 if (!@hasDecl(root, "EfiMain")) @export("EfiMain", EfiMain, .Strong);36 if (!@hasDecl(root, "EfiMain")) @export("EfiMain", EfiMain, .Strong);
39 } else if (is_mips) {37 } else if (builtin.os != .freestanding) {
40 if (!@hasDecl(root, "__start")) @export("__start", _start, .Strong);38 if (is_mips) {
41 } else {39 if (!@hasDecl(root, "__start")) @export("__start", _start, .Strong);
42 if (!@hasDecl(root, "_start")) @export("_start", _start, .Strong);40 } else {
41 if (!@hasDecl(root, "_start")) @export("_start", _start, .Strong);
42 }
43 } else if (is_wasm) {
44 if (!@hasDecl(root, "_start")) @export("_start", wasm_freestanding_start, .Strong);
43 }45 }
44 }46 }
45}47}
lib/std/target.zig+2
...@@ -46,6 +46,7 @@ pub const Target = union(enum) {...@@ -46,6 +46,7 @@ pub const Target = union(enum) {
46 wasi,46 wasi,
47 emscripten,47 emscripten,
48 uefi,48 uefi,
49 other,
49 };50 };
5051
51 pub const Arch = union(enum) {52 pub const Arch = union(enum) {
...@@ -432,6 +433,7 @@ pub const Target = union(enum) {...@@ -432,6 +433,7 @@ pub const Target = union(enum) {
432 .contiki,433 .contiki,
433 .amdpal,434 .amdpal,
434 .hermit,435 .hermit,
436 .other,
435 => return .eabi,437 => return .eabi,
436 .openbsd,438 .openbsd,
437 .macosx,439 .macosx,
src-self-hosted/c_int.zig+1-1
...@@ -71,7 +71,7 @@ pub const CInt = struct {...@@ -71,7 +71,7 @@ pub const CInt = struct {
71 pub fn sizeInBits(cint: CInt, self: Target) u32 {71 pub fn sizeInBits(cint: CInt, self: Target) u32 {
72 const arch = self.getArch();72 const arch = self.getArch();
73 switch (self.getOs()) {73 switch (self.getOs()) {
74 .freestanding => switch (self.getArch()) {74 .freestanding, .other => switch (self.getArch()) {
75 .msp430 => switch (cint.id) {75 .msp430 => switch (cint.id) {
76 .Short,76 .Short,
77 .UShort,77 .UShort,
src/target.cpp+9-1
...@@ -180,6 +180,7 @@ static const Os os_list[] = {...@@ -180,6 +180,7 @@ static const Os os_list[] = {
180 OsWASI,180 OsWASI,
181 OsEmscripten,181 OsEmscripten,
182 OsUefi,182 OsUefi,
183 OsOther,
183};184};
184185
185// Coordinate with zig_llvm.h186// Coordinate with zig_llvm.h
...@@ -268,6 +269,7 @@ Os target_os_enum(size_t index) {...@@ -268,6 +269,7 @@ Os target_os_enum(size_t index) {
268ZigLLVM_OSType get_llvm_os_type(Os os_type) {269ZigLLVM_OSType get_llvm_os_type(Os os_type) {
269 switch (os_type) {270 switch (os_type) {
270 case OsFreestanding:271 case OsFreestanding:
272 case OsOther:
271 return ZigLLVM_UnknownOS;273 return ZigLLVM_UnknownOS;
272 case OsAnanas:274 case OsAnanas:
273 return ZigLLVM_Ananas;275 return ZigLLVM_Ananas;
...@@ -425,6 +427,8 @@ const char *target_os_name(Os os_type) {...@@ -425,6 +427,8 @@ const char *target_os_name(Os os_type) {
425 return "freestanding";427 return "freestanding";
426 case OsUefi:428 case OsUefi:
427 return "uefi";429 return "uefi";
430 case OsOther:
431 return "other";
428 case OsAnanas:432 case OsAnanas:
429 case OsCloudABI:433 case OsCloudABI:
430 case OsDragonFly:434 case OsDragonFly:
...@@ -1005,6 +1009,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) {...@@ -1005,6 +1009,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) {
1005uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {1009uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
1006 switch (target->os) {1010 switch (target->os) {
1007 case OsFreestanding:1011 case OsFreestanding:
1012 case OsOther:
1008 switch (target->arch) {1013 switch (target->arch) {
1009 case ZigLLVM_msp430:1014 case ZigLLVM_msp430:
1010 switch (id) {1015 switch (id) {
...@@ -1134,7 +1139,8 @@ bool target_allows_addr_zero(const ZigTarget *target) {...@@ -1134,7 +1139,8 @@ bool target_allows_addr_zero(const ZigTarget *target) {
1134const char *target_o_file_ext(const ZigTarget *target) {1139const char *target_o_file_ext(const ZigTarget *target) {
1135 if (target->abi == ZigLLVM_MSVC ||1140 if (target->abi == ZigLLVM_MSVC ||
1136 (target->os == OsWindows && !target_abi_is_gnu(target->abi)) ||1141 (target->os == OsWindows && !target_abi_is_gnu(target->abi)) ||
1137 target->os == OsUefi) {1142 target->os == OsUefi)
1143 {
1138 return ".obj";1144 return ".obj";
1139 } else {1145 } else {
1140 return ".o";1146 return ".o";
...@@ -1376,6 +1382,7 @@ const char *target_dynamic_linker(const ZigTarget *target) {...@@ -1376,6 +1382,7 @@ const char *target_dynamic_linker(const ZigTarget *target) {
1376 case OsUefi:1382 case OsUefi:
1377 case OsWindows:1383 case OsWindows:
1378 case OsEmscripten:1384 case OsEmscripten:
1385 case OsOther:
1379 return nullptr;1386 return nullptr;
13801387
1381 case OsAnanas:1388 case OsAnanas:
...@@ -1650,6 +1657,7 @@ ZigLLVM_EnvironmentType target_default_abi(ZigLLVM_ArchType arch, Os os) {...@@ -1650,6 +1657,7 @@ ZigLLVM_EnvironmentType target_default_abi(ZigLLVM_ArchType arch, Os os) {
1650 case OsContiki:1657 case OsContiki:
1651 case OsAMDPAL:1658 case OsAMDPAL:
1652 case OsHermitCore:1659 case OsHermitCore:
1660 case OsOther:
1653 return ZigLLVM_EABI;1661 return ZigLLVM_EABI;
1654 case OsOpenBSD:1662 case OsOpenBSD:
1655 case OsMacOSX:1663 case OsMacOSX:
src/target.hpp+1
...@@ -50,6 +50,7 @@ enum Os {...@@ -50,6 +50,7 @@ enum Os {
50 OsWASI,50 OsWASI,
51 OsEmscripten,51 OsEmscripten,
52 OsUefi,52 OsUefi,
53 OsOther,
53};54};
5455
55// Synchronize with target.cpp::subarch_list_list56// Synchronize with target.cpp::subarch_list_list