| author | |
| committer | |
| log | 8d9d4a065820bfce0395465834cb9b7e01509a12 |
| tree | b202c2169b67404aaedbbaf59f97c6d78f36e4fe |
| parent | 7ee0e779af1f9b457afee259a4137e928e9627f8 |
| parent | c85afff5a82c2d67d12a85723bb73ec5368bf590 |
| signature |
A bunch of patches9 files changed, 25 insertions(+), 6 deletions(-)
lib/std/dynamic_library.zig+1-1| ... | ... | @@ -24,7 +24,7 @@ pub const DynLib = switch (builtin.os) { |
| 24 | 24 | // fashion. |
| 25 | 25 | const LinkMap = extern struct { |
| 26 | 26 | l_addr: usize, |
| 27 | l_name: [*]const u8, | |
| 27 | l_name: [*:0]const u8, | |
| 28 | 28 | l_ld: ?*elf.Dyn, |
| 29 | 29 | l_next: ?*LinkMap, |
| 30 | 30 | l_prev: ?*LinkMap, |
lib/std/os/bits/dragonfly.zig+1-1| ... | ... | @@ -612,7 +612,7 @@ pub const sockaddr_storage = extern struct { |
| 612 | 612 | }; |
| 613 | 613 | pub const dl_phdr_info = extern struct { |
| 614 | 614 | dlpi_addr: usize, |
| 615 | dlpi_name: ?[*]const u8, | |
| 615 | dlpi_name: ?[*:0]const u8, | |
| 616 | 616 | dlpi_phdr: [*]std.elf.Phdr, |
| 617 | 617 | dlpi_phnum: u16, |
| 618 | 618 | }; |
lib/std/os/bits/freebsd.zig+1-1| ... | ... | @@ -45,7 +45,7 @@ pub const RTLD_NOLOAD = 0x02000; |
| 45 | 45 | |
| 46 | 46 | pub const dl_phdr_info = extern struct { |
| 47 | 47 | dlpi_addr: usize, |
| 48 | dlpi_name: ?[*]const u8, | |
| 48 | dlpi_name: ?[*:0]const u8, | |
| 49 | 49 | dlpi_phdr: [*]std.elf.Phdr, |
| 50 | 50 | dlpi_phnum: u16, |
| 51 | 51 | }; |
lib/std/os/bits/linux.zig+1-1| ... | ... | @@ -992,7 +992,7 @@ pub const dirent64 = extern struct { |
| 992 | 992 | |
| 993 | 993 | pub const dl_phdr_info = extern struct { |
| 994 | 994 | dlpi_addr: usize, |
| 995 | dlpi_name: ?[*]const u8, | |
| 995 | dlpi_name: ?[*:0]const u8, | |
| 996 | 996 | dlpi_phdr: [*]std.elf.Phdr, |
| 997 | 997 | dlpi_phnum: u16, |
| 998 | 998 | }; |
lib/std/os/bits/netbsd.zig+1-1| ... | ... | @@ -16,7 +16,7 @@ pub const Kevent = extern struct { |
| 16 | 16 | |
| 17 | 17 | pub const dl_phdr_info = extern struct { |
| 18 | 18 | dlpi_addr: usize, |
| 19 | dlpi_name: ?[*]const u8, | |
| 19 | dlpi_name: ?[*:0]const u8, | |
| 20 | 20 | dlpi_phdr: [*]std.elf.Phdr, |
| 21 | 21 | dlpi_phnum: u16, |
| 22 | 22 | }; |
lib/std/os/linux.zig+1-1| ... | ... | @@ -1042,7 +1042,7 @@ pub fn uname(uts: *utsname) usize { |
| 1042 | 1042 | } |
| 1043 | 1043 | |
| 1044 | 1044 | // XXX: This should be weak |
| 1045 | extern const __ehdr_start: elf.Ehdr = undefined; | |
| 1045 | extern const __ehdr_start: elf.Ehdr; | |
| 1046 | 1046 | |
| 1047 | 1047 | pub fn dl_iterate_phdr(comptime T: type, callback: extern fn (info: *dl_phdr_info, size: usize, data: ?*T) i32, data: ?*T) isize { |
| 1048 | 1048 | if (builtin.link_libc) { |
src/ir.cpp+6| ... | ... | @@ -16766,6 +16766,12 @@ static IrInstruction *ir_analyze_instruction_export(IrAnalyze *ira, IrInstructio |
| 16766 | 16766 | if (!symbol_name) |
| 16767 | 16767 | return ira->codegen->invalid_instruction; |
| 16768 | 16768 | |
| 16769 | if (buf_len(symbol_name) < 1) { | |
| 16770 | ir_add_error(ira, name_inst, | |
| 16771 | buf_sprintf("exported symbol name cannot be empty")); | |
| 16772 | return ira->codegen->invalid_instruction; | |
| 16773 | } | |
| 16774 | ||
| 16769 | 16775 | GlobalLinkageId global_linkage_id; |
| 16770 | 16776 | if (!ir_resolve_global_linkage(ira, linkage_inst, &global_linkage_id)) |
| 16771 | 16777 | return ira->codegen->invalid_instruction; |
src/ir_print.cpp+4| ... | ... | @@ -930,6 +930,10 @@ static void ir_print_set_float_mode(IrPrint *irp, IrInstructionSetFloatMode *ins |
| 930 | 930 | static void ir_print_array_type(IrPrint *irp, IrInstructionArrayType *instruction) { |
| 931 | 931 | fprintf(irp->f, "["); |
| 932 | 932 | ir_print_other_instruction(irp, instruction->size); |
| 933 | if (instruction->sentinel != nullptr) { | |
| 934 | fprintf(irp->f, ":"); | |
| 935 | ir_print_other_instruction(irp, instruction->sentinel); | |
| 936 | } | |
| 933 | 937 | fprintf(irp->f, "]"); |
| 934 | 938 | ir_print_other_instruction(irp, instruction->child_type); |
| 935 | 939 | } |
test/compile_errors.zig+9| ... | ... | @@ -2,6 +2,15 @@ const tests = @import("tests.zig"); |
| 2 | 2 | const builtin = @import("builtin"); |
| 3 | 3 | |
| 4 | 4 | pub fn addCases(cases: *tests.CompileErrorContext) void { |
| 5 | cases.addTest("@export with empty name string", | |
| 6 | \\pub export fn entry() void { } | |
| 7 | \\comptime { | |
| 8 | \\ @export(entry, .{ .name = "" }); | |
| 9 | \\} | |
| 10 | , &[_][]const u8{ | |
| 11 | "tmp.zig:3:5: error: exported symbol name cannot be empty", | |
| 12 | }); | |
| 13 | ||
| 5 | 14 | cases.addTest("switch ranges endpoints are validated", |
| 6 | 15 | \\pub export fn entry() void { |
| 7 | 16 | \\ var x: i32 = 0; |