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
signaturelock-open 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 {
3232 if (!@hasDecl(root, "WinMain") and !@hasDecl(root, "WinMainCRTStartup")) {
3333 @export("WinMainCRTStartup", WinMainCRTStartup, .Strong);
3434 }
35 } else if (is_wasm and builtin.os == .freestanding) {
36 if (!@hasDecl(root, "_start")) @export("_start", wasm_freestanding_start, .Strong);
3735 } else if (builtin.os == .uefi) {
3836 if (!@hasDecl(root, "EfiMain")) @export("EfiMain", EfiMain, .Strong);
39 } else if (is_mips) {
40 if (!@hasDecl(root, "__start")) @export("__start", _start, .Strong);
41 } else {
42 if (!@hasDecl(root, "_start")) @export("_start", _start, .Strong);
37 } else if (builtin.os != .freestanding) {
38 if (is_mips) {
39 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);
4345 }
4446 }
4547}
lib/std/target.zig+2
......@@ -46,6 +46,7 @@ pub const Target = union(enum) {
4646 wasi,
4747 emscripten,
4848 uefi,
49 other,
4950 };
5051
5152 pub const Arch = union(enum) {
......@@ -432,6 +433,7 @@ pub const Target = union(enum) {
432433 .contiki,
433434 .amdpal,
434435 .hermit,
436 .other,
435437 => return .eabi,
436438 .openbsd,
437439 .macosx,
src-self-hosted/c_int.zig+1-1
......@@ -71,7 +71,7 @@ pub const CInt = struct {
7171 pub fn sizeInBits(cint: CInt, self: Target) u32 {
7272 const arch = self.getArch();
7373 switch (self.getOs()) {
74 .freestanding => switch (self.getArch()) {
74 .freestanding, .other => switch (self.getArch()) {
7575 .msp430 => switch (cint.id) {
7676 .Short,
7777 .UShort,
src/target.cpp+9-1
......@@ -180,6 +180,7 @@ static const Os os_list[] = {
180180 OsWASI,
181181 OsEmscripten,
182182 OsUefi,
183 OsOther,
183184};
184185
185186// Coordinate with zig_llvm.h
......@@ -268,6 +269,7 @@ Os target_os_enum(size_t index) {
268269ZigLLVM_OSType get_llvm_os_type(Os os_type) {
269270 switch (os_type) {
270271 case OsFreestanding:
272 case OsOther:
271273 return ZigLLVM_UnknownOS;
272274 case OsAnanas:
273275 return ZigLLVM_Ananas;
......@@ -425,6 +427,8 @@ const char *target_os_name(Os os_type) {
425427 return "freestanding";
426428 case OsUefi:
427429 return "uefi";
430 case OsOther:
431 return "other";
428432 case OsAnanas:
429433 case OsCloudABI:
430434 case OsDragonFly:
......@@ -1005,6 +1009,7 @@ uint32_t target_arch_largest_atomic_bits(ZigLLVM_ArchType arch) {
10051009uint32_t target_c_type_size_in_bits(const ZigTarget *target, CIntType id) {
10061010 switch (target->os) {
10071011 case OsFreestanding:
1012 case OsOther:
10081013 switch (target->arch) {
10091014 case ZigLLVM_msp430:
10101015 switch (id) {
......@@ -1134,7 +1139,8 @@ bool target_allows_addr_zero(const ZigTarget *target) {
11341139const char *target_o_file_ext(const ZigTarget *target) {
11351140 if (target->abi == ZigLLVM_MSVC ||
11361141 (target->os == OsWindows && !target_abi_is_gnu(target->abi)) ||
1137 target->os == OsUefi) {
1142 target->os == OsUefi)
1143 {
11381144 return ".obj";
11391145 } else {
11401146 return ".o";
......@@ -1376,6 +1382,7 @@ const char *target_dynamic_linker(const ZigTarget *target) {
13761382 case OsUefi:
13771383 case OsWindows:
13781384 case OsEmscripten:
1385 case OsOther:
13791386 return nullptr;
13801387
13811388 case OsAnanas:
......@@ -1650,6 +1657,7 @@ ZigLLVM_EnvironmentType target_default_abi(ZigLLVM_ArchType arch, Os os) {
16501657 case OsContiki:
16511658 case OsAMDPAL:
16521659 case OsHermitCore:
1660 case OsOther:
16531661 return ZigLLVM_EABI;
16541662 case OsOpenBSD:
16551663 case OsMacOSX:
src/target.hpp+1
......@@ -50,6 +50,7 @@ enum Os {
5050 OsWASI,
5151 OsEmscripten,
5252 OsUefi,
53 OsOther,
5354};
5455
5556// Synchronize with target.cpp::subarch_list_list