diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2021-05-06 17:48:38 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2021-05-06 17:48:38 -0700 |
| commit | 7dd33d431612cd8511eaea8dcabdca44b354e14b (patch) | |
| tree | d1381cfd8da2bfcacc00cbf84e1570bffda3503e | |
| parent | 9b9ea405ef1d11af377057067118b07a021b990f (diff) | |
| download | zig-7dd33d431612cd8511eaea8dcabdca44b354e14b.tar.gz zig-7dd33d431612cd8511eaea8dcabdca44b354e14b.zip | |
stage2: fix compile errors in test harness
| -rw-r--r-- | BRANCH_TODO | 8 | ||||
| -rw-r--r-- | lib/std/elf.zig | 14 | ||||
| -rw-r--r-- | src/test.zig | 2 | ||||
| -rw-r--r-- | test/stage2/test.zig | 114 |
4 files changed, 69 insertions, 69 deletions
diff --git a/BRANCH_TODO b/BRANCH_TODO index e6b0d8ec83..3508a66f42 100644 --- a/BRANCH_TODO +++ b/BRANCH_TODO @@ -1,7 +1,7 @@ - * namespace decls table can't reference ZIR memory because it can get modified on updates - - change it for astgen worker to compare old and new ZIR, updating existing - namespaces & decls, and creating a changelist. - * reimplement semaDecl + * get stage2 tests passing + * modify stage2 tests so that only 1 uses _start and the rest use + pub fn main + * use a hash map for instructions because the array is too big - no, actually modify the Zir.Inst.Ref strategy so that each decl gets their indexes starting at 0 so that we can use an array to store Sema diff --git a/lib/std/elf.zig b/lib/std/elf.zig index c37cc74223..147045e720 100644 --- a/lib/std/elf.zig +++ b/lib/std/elf.zig @@ -4,13 +4,13 @@ // The MIT license requires this copyright notice to be included in all copies // and substantial portions of the software. const std = @import("std.zig"); -const builtin = std.builtin; const io = std.io; const os = std.os; const math = std.math; const mem = std.mem; const debug = std.debug; const File = std.fs.File; +const native_endian = @import("builtin").target.cpu.arch.endian(); pub const AT_NULL = 0; pub const AT_IGNORE = 1; @@ -336,7 +336,7 @@ pub const ET = enum(u16) { /// All integers are native endian. pub const Header = struct { - endian: builtin.Endian, + endian: std.builtin.Endian, machine: EM, is_64: bool, entry: u64, @@ -380,7 +380,7 @@ pub const Header = struct { ELFDATA2MSB => .Big, else => return error.InvalidElfEndian, }; - const need_bswap = endian != std.builtin.endian; + const need_bswap = endian != native_endian; const is_64 = switch (hdr32.e_ident[EI_CLASS]) { ELFCLASS32 => false, @@ -426,7 +426,7 @@ pub fn ProgramHeaderIterator(ParseSource: anytype) type { try self.parse_source.reader().readNoEof(mem.asBytes(&phdr)); // ELF endianness matches native endianness. - if (self.elf_header.endian == std.builtin.endian) return phdr; + if (self.elf_header.endian == native_endian) return phdr; // Convert fields to native endianness. bswapAllFields(Elf64_Phdr, &phdr); @@ -439,7 +439,7 @@ pub fn ProgramHeaderIterator(ParseSource: anytype) type { try self.parse_source.reader().readNoEof(mem.asBytes(&phdr)); // ELF endianness does NOT match native endianness. - if (self.elf_header.endian != std.builtin.endian) { + if (self.elf_header.endian != native_endian) { // Convert fields to native endianness. bswapAllFields(Elf32_Phdr, &phdr); } @@ -476,7 +476,7 @@ pub fn SectionHeaderIterator(ParseSource: anytype) type { try self.parse_source.reader().readNoEof(mem.asBytes(&shdr)); // ELF endianness matches native endianness. - if (self.elf_header.endian == std.builtin.endian) return shdr; + if (self.elf_header.endian == native_endian) return shdr; // Convert fields to native endianness. return Elf64_Shdr{ @@ -499,7 +499,7 @@ pub fn SectionHeaderIterator(ParseSource: anytype) type { try self.parse_source.reader().readNoEof(mem.asBytes(&shdr)); // ELF endianness does NOT match native endianness. - if (self.elf_header.endian != std.builtin.endian) { + if (self.elf_header.endian != native_endian) { // Convert fields to native endianness. shdr = .{ .sh_name = @byteSwap(@TypeOf(shdr.sh_name), shdr.sh_name), diff --git a/src/test.zig b/src/test.zig index e08f9da37d..03c1ee0dcd 100644 --- a/src/test.zig +++ b/src/test.zig @@ -135,7 +135,7 @@ pub const TestContext = struct { /// to Executable. output_mode: std.builtin.OutputMode, updates: std.ArrayList(Update), - object_format: ?std.builtin.ObjectFormat = null, + object_format: ?std.Target.ObjectFormat = null, emit_h: bool = false, llvm_backend: bool = false, diff --git a/test/stage2/test.zig b/test/stage2/test.zig index 09a6c37fe2..440042798f 100644 --- a/test/stage2/test.zig +++ b/test/stage2/test.zig @@ -66,7 +66,7 @@ pub fn addCases(ctx: *TestContext) !void { ); // Now change the message only case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ print(); \\ \\ exit(); @@ -98,7 +98,7 @@ pub fn addCases(ctx: *TestContext) !void { ); // Now we print it twice. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ print(); \\ print(); \\ @@ -136,7 +136,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("adding numbers at comptime", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ asm volatile ("syscall" \\ : \\ : [number] "{rax}" (1), @@ -161,7 +161,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("adding numbers at runtime and comptime", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ add(3, 4); \\ \\ exit(); @@ -185,7 +185,7 @@ pub fn addCases(ctx: *TestContext) !void { ); // comptime function call case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ exit(); \\} \\ @@ -209,7 +209,7 @@ pub fn addCases(ctx: *TestContext) !void { ); // Inline function call case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var x: usize = 3; \\ const y = add(1, 2, x); \\ exit(y - 6); @@ -236,7 +236,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("subtracting numbers at runtime", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ sub(7, 4); \\ \\ exit(); @@ -262,7 +262,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("@TypeOf", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var x: usize = 0; \\ const z = @TypeOf(x, @as(u128, 5)); \\ assert(z == u128); @@ -287,7 +287,7 @@ pub fn addCases(ctx: *TestContext) !void { "", ); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const z = @TypeOf(true); \\ assert(z == bool); \\ @@ -311,7 +311,7 @@ pub fn addCases(ctx: *TestContext) !void { "", ); case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const z = @TypeOf(true, 1); \\ unreachable; \\} @@ -321,7 +321,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("assert function", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ add(3, 4); \\ \\ exit(); @@ -351,7 +351,7 @@ pub fn addCases(ctx: *TestContext) !void { // Tests copying a register. For the `c = a + b`, it has to // preserve both a and b, because they are both used later. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ add(3, 4); \\ \\ exit(); @@ -383,7 +383,7 @@ pub fn addCases(ctx: *TestContext) !void { // More stress on the liveness detection. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ add(3, 4); \\ \\ exit(); @@ -419,7 +419,7 @@ pub fn addCases(ctx: *TestContext) !void { // Requires a second move. The register allocator should figure out to re-use rax. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ add(3, 4); \\ \\ exit(); @@ -456,7 +456,7 @@ pub fn addCases(ctx: *TestContext) !void { // Now we test integer return values. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert(add(3, 4) == 7); \\ assert(add(20, 10) == 30); \\ @@ -486,7 +486,7 @@ pub fn addCases(ctx: *TestContext) !void { // Local mutable variables. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert(add(3, 4) == 7); \\ assert(add(20, 10) == 30); \\ @@ -520,7 +520,7 @@ pub fn addCases(ctx: *TestContext) !void { // Optionals case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const a: u32 = 2; \\ const b: ?u32 = a; \\ const c = b.?; @@ -544,7 +544,7 @@ pub fn addCases(ctx: *TestContext) !void { // While loops case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var i: u32 = 0; \\ while (i < 4) : (i += 1) print(); \\ assert(i == 4); @@ -583,7 +583,7 @@ pub fn addCases(ctx: *TestContext) !void { // inline while requires the condition to be comptime known. case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var i: u32 = 0; \\ inline while (i < 4) : (i += 1) print(); \\ assert(i == 4); @@ -620,7 +620,7 @@ pub fn addCases(ctx: *TestContext) !void { // Labeled blocks (no conditional branch) case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert(add(3, 4) == 20); \\ \\ exit(); @@ -657,7 +657,7 @@ pub fn addCases(ctx: *TestContext) !void { // This catches a possible bug in the logic for re-using dying operands. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert(add(3, 4) == 116); \\ \\ exit(); @@ -699,7 +699,7 @@ pub fn addCases(ctx: *TestContext) !void { // Spilling registers to the stack. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert(add(3, 4) == 791); \\ \\ exit(); @@ -751,7 +751,7 @@ pub fn addCases(ctx: *TestContext) !void { // Reusing the registers of dead operands playing nicely with conditional branching. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert(add(3, 4) == 791); \\ assert(add(4, 3) == 79); \\ @@ -813,7 +813,7 @@ pub fn addCases(ctx: *TestContext) !void { // Character literals and multiline strings. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const ignore = \\ \\ cool thx \\ \\ @@ -846,7 +846,7 @@ pub fn addCases(ctx: *TestContext) !void { // Global const. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ add(aa, bb); \\ \\ exit(); @@ -878,7 +878,7 @@ pub fn addCases(ctx: *TestContext) !void { // Array access. case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert("hello"[0] == 'h'); \\ \\ exit(); @@ -904,7 +904,7 @@ pub fn addCases(ctx: *TestContext) !void { // Array access to a global array. case.addCompareOutput( \\const hello = "hello".*; - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ assert(hello[1] == 'e'); \\ \\ exit(); @@ -929,7 +929,7 @@ pub fn addCases(ctx: *TestContext) !void { // 64bit set stack case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var i: u64 = 0xFFEEDDCCBBAA9988; \\ assert(i == 0xFFEEDDCCBBAA9988); \\ @@ -955,7 +955,7 @@ pub fn addCases(ctx: *TestContext) !void { // Basic for loop case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ for ("hello") |_| print(); \\ \\ exit(); @@ -990,7 +990,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("basic import", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ @import("print.zig").print(); \\ exit(); \\} @@ -1027,14 +1027,14 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("redundant comptime", linux_x64); case.addError( - \\export fn _start() void { + \\pub export fn _start() void { \\ var a: comptime u32 = 0; \\} , &.{":2:21: error: redundant comptime keyword in already comptime scope"}, ); case.addError( - \\export fn _start() void { + \\pub export fn _start() void { \\ comptime { \\ var a: u32 = comptime 0; \\ } @@ -1046,7 +1046,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("import private", linux_x64); case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ @import("print.zig").print(); \\ exit(); \\} @@ -1104,7 +1104,7 @@ pub fn addCases(ctx: *TestContext) !void { }); ctx.compileError("compileError", linux_x64, - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ @compileError("this is an error"); \\ unreachable; \\} @@ -1113,7 +1113,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.obj("variable shadowing", linux_x64); case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var i: u32 = 10; \\ var i: u32 = 10; \\ unreachable; @@ -1124,7 +1124,7 @@ pub fn addCases(ctx: *TestContext) !void { }); case.addError( \\var testing: i64 = 10; - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var testing: i64 = 20; \\ unreachable; \\} @@ -1136,7 +1136,7 @@ pub fn addCases(ctx: *TestContext) !void { var case = ctx.obj("@compileLog", linux_x64); // The other compile error prevents emission of a "found compile log" statement. case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const b = true; \\ var f: u32 = 1; \\ @compileLog(b, 20, f, x); @@ -1154,7 +1154,7 @@ pub fn addCases(ctx: *TestContext) !void { // Now only compile log statements remain. One per Decl. case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const b = true; \\ var f: u32 = 1; \\ @compileLog(b, 20, f, x); @@ -1192,7 +1192,7 @@ pub fn addCases(ctx: *TestContext) !void { // Break out of loop case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ while (true) { \\ break; \\ } @@ -1213,7 +1213,7 @@ pub fn addCases(ctx: *TestContext) !void { "", ); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ foo: while (true) { \\ break :foo; \\ } @@ -1236,7 +1236,7 @@ pub fn addCases(ctx: *TestContext) !void { // Continue in loop case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var i: u64 = 0; \\ while (true) : (i+=1) { \\ if (i == 4) exit(); @@ -1257,7 +1257,7 @@ pub fn addCases(ctx: *TestContext) !void { "", ); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var i: u64 = 0; \\ foo: while (true) : (i+=1) { \\ if (i == 4) exit(); @@ -1318,7 +1318,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("compile error in inline fn call fixed", linux_x64); case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var x: usize = 3; \\ const y = add(10, 2, x); \\ exit(y - 6); @@ -1341,7 +1341,7 @@ pub fn addCases(ctx: *TestContext) !void { , &[_][]const u8{":8:18: error: bad"}); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ var x: usize = 3; \\ const y = add(1, 2, x); \\ exit(y - 6); @@ -1368,7 +1368,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("recursive inline function", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const y = fibonacci(7); \\ exit(y - 21); \\} @@ -1394,7 +1394,7 @@ pub fn addCases(ctx: *TestContext) !void { // Without storing source locations relative to the owner decl, the compile error // here would be off by 2 bytes (from the "7" -> "999"). case.addError( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const y = fibonacci(999); \\ exit(y - 21); \\} @@ -1418,7 +1418,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("orelse at comptime", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const i: ?u64 = 0; \\ const orelsed = i orelse 5; \\ assert(orelsed == 0); @@ -1440,7 +1440,7 @@ pub fn addCases(ctx: *TestContext) !void { "", ); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const i: ?u64 = null; \\ const orelsed = i orelse 5; \\ assert(orelsed == 5); @@ -1466,7 +1466,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("only 1 function and it gets updated", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ asm volatile ("syscall" \\ : \\ : [number] "{rax}" (60), // exit @@ -1479,7 +1479,7 @@ pub fn addCases(ctx: *TestContext) !void { "", ); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ asm volatile ("syscall" \\ : \\ : [number] "{rax}" (231), // exit_group @@ -1495,7 +1495,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("passing u0 to function", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ doNothing(0); \\ exit(); \\} @@ -1516,7 +1516,7 @@ pub fn addCases(ctx: *TestContext) !void { { var case = ctx.exe("catch at comptime", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const i: anyerror!u64 = 0; \\ const caught = i catch 5; \\ assert(caught == 0); @@ -1539,7 +1539,7 @@ pub fn addCases(ctx: *TestContext) !void { ); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const i: anyerror!u64 = error.B; \\ const caught = i catch 5; \\ assert(caught == 5); @@ -1562,7 +1562,7 @@ pub fn addCases(ctx: *TestContext) !void { ); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const a: anyerror!comptime_int = 42; \\ const b: *const comptime_int = &(a catch unreachable); \\ assert(b.* == 42); @@ -1584,7 +1584,7 @@ pub fn addCases(ctx: *TestContext) !void { , ""); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const a: anyerror!u32 = error.B; \\ _ = &(a catch |err| assert(err == error.B)); \\ exit(); @@ -1604,7 +1604,7 @@ pub fn addCases(ctx: *TestContext) !void { , ""); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const a: anyerror!u32 = error.Bar; \\ a catch |err| assert(err == error.Bar); \\ @@ -1628,7 +1628,7 @@ pub fn addCases(ctx: *TestContext) !void { var case = ctx.exe("merge error sets", linux_x64); case.addCompareOutput( - \\export fn _start() noreturn { + \\pub export fn _start() noreturn { \\ const E = error{ A, B, D } || error { A, B, C }; \\ const a = E.A; \\ const b = E.B; |
