| author | |
| committer | |
| log | 381a1043eb53971b9fe5bde088211d04e63dfd58 |
| tree | 2b3d06a7206f4d30ec64c099ebce70ee46547f78 |
| parent | 6603a9c26cda297e9c0baaa48e2fb263de60484d |
| signature |
7 files changed, 11 insertions(+), 8 deletions(-)
src/link/Elf/ZigObject.zig+4-1| ... | ... | @@ -906,7 +906,9 @@ fn updateDeclCode( |
| 906 | 906 | |
| 907 | 907 | log.debug("updateDeclCode {}{*}", .{ decl_name.fmt(&mod.intern_pool), decl }); |
| 908 | 908 | |
| 909 | const required_alignment = decl.getAlignment(mod); | |
| 909 | const required_alignment = decl.getAlignment(mod).max( | |
| 910 | target_util.minFunctionAlignment(mod.getTarget()), | |
| 911 | ); | |
| 910 | 912 | |
| 911 | 913 | const sym = elf_file.symbol(sym_index); |
| 912 | 914 | const esym = &self.local_esyms.items(.elf_sym)[sym.esym_index]; |
| ... | ... | @@ -1634,6 +1636,7 @@ const log = std.log.scoped(.link); |
| 1634 | 1636 | const mem = std.mem; |
| 1635 | 1637 | const relocation = @import("relocation.zig"); |
| 1636 | 1638 | const trace = @import("../../tracy.zig").trace; |
| 1639 | const target_util = @import("../../target.zig"); | |
| 1637 | 1640 | const std = @import("std"); |
| 1638 | 1641 | |
| 1639 | 1642 | const Air = @import("../../Air.zig"); |
src/target.zig+7| ... | ... | @@ -431,6 +431,13 @@ pub fn defaultFunctionAlignment(target: std.Target) Alignment { |
| 431 | 431 | }; |
| 432 | 432 | } |
| 433 | 433 | |
| 434 | pub fn minFunctionAlignment(target: std.Target) Alignment { | |
| 435 | return switch (target.cpu.arch) { | |
| 436 | .riscv64 => .@"2", | |
| 437 | else => .@"1", | |
| 438 | }; | |
| 439 | } | |
| 440 | ||
| 434 | 441 | pub fn supportsFunctionAlignment(target: std.Target) bool { |
| 435 | 442 | return switch (target.cpu.arch) { |
| 436 | 443 | .wasm32, .wasm64 => false, |
test/behavior/align.zig-1| ... | ... | @@ -311,7 +311,6 @@ test "function alignment" { |
| 311 | 311 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 312 | 312 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 313 | 313 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 314 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | |
| 315 | 314 | |
| 316 | 315 | // function alignment is a compile error on wasm32/wasm64 |
| 317 | 316 | if (native_arch == .wasm32 or native_arch == .wasm64) return error.SkipZigTest; |
test/behavior/defer.zig-2| ... | ... | @@ -116,7 +116,6 @@ test "errdefer with payload" { |
| 116 | 116 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 117 | 117 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 118 | 118 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 119 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | |
| 120 | 119 | |
| 121 | 120 | const S = struct { |
| 122 | 121 | fn foo() !i32 { |
| ... | ... | @@ -139,7 +138,6 @@ test "reference to errdefer payload" { |
| 139 | 138 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| 140 | 139 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 141 | 140 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| 142 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | |
| 143 | 141 | |
| 144 | 142 | const S = struct { |
| 145 | 143 | fn foo() !i32 { |
test/behavior/optional.zig-1| ... | ... | @@ -601,7 +601,6 @@ test "cast slice to const slice nested in error union and optional" { |
| 601 | 601 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 602 | 602 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 603 | 603 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 604 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | |
| 605 | 604 | |
| 606 | 605 | const S = struct { |
| 607 | 606 | fn inner() !?[]u8 { |
test/behavior/switch.zig-2| ... | ... | @@ -431,7 +431,6 @@ test "else prong of switch on error set excludes other cases" { |
| 431 | 431 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 432 | 432 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 433 | 433 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 434 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | |
| 435 | 434 | |
| 436 | 435 | const S = struct { |
| 437 | 436 | fn doTheTest() !void { |
| ... | ... | @@ -467,7 +466,6 @@ test "switch prongs with error set cases make a new error set type for capture v |
| 467 | 466 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 468 | 467 | if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO |
| 469 | 468 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 470 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | |
| 471 | 469 | |
| 472 | 470 | const S = struct { |
| 473 | 471 | fn doTheTest() !void { |
test/behavior/try.zig-1| ... | ... | @@ -51,7 +51,6 @@ test "`try`ing an if/else expression" { |
| 51 | 51 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| 52 | 52 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 53 | 53 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; |
| 54 | if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; | |
| 55 | 54 | |
| 56 | 55 | const S = struct { |
| 57 | 56 | fn getError() !void { |