| ... | ... | @@ -17,9 +17,13 @@ comptime { |
| 17 | 17 | if (builtin.zig_backend != .stage1) { |
| 18 | 18 | @export(memset, .{ .name = "memset", .linkage = .Strong }); |
| 19 | 19 | @export(memcpy, .{ .name = "memcpy", .linkage = .Strong }); |
| 20 | |
| 20 | 21 | @export(trunc, .{ .name = "trunc", .linkage = .Strong }); |
| 21 | 22 | @export(truncf, .{ .name = "truncf", .linkage = .Strong }); |
| 22 | 23 | @export(truncl, .{ .name = "truncl", .linkage = .Strong }); |
| 24 | |
| 25 | @export(log, .{ .name = "log", .linkage = .Strong }); |
| 26 | @export(logf, .{ .name = "logf", .linkage = .Strong }); |
| 23 | 27 | } else { |
| 24 | 28 | _ = @import("c_stage1.zig"); |
| 25 | 29 | } |
| ... | ... | @@ -80,17 +84,25 @@ fn memcpy(noalias dest: ?[*]u8, noalias src: ?[*]const u8, len: usize) callconv( |
| 80 | 84 | return dest; |
| 81 | 85 | } |
| 82 | 86 | |
| 83 | | fn trunc(a: f64) f64 { |
| 87 | fn trunc(a: f64) callconv(.C) f64 { |
| 84 | 88 | return math.trunc(a); |
| 85 | 89 | } |
| 86 | 90 | |
| 87 | | fn truncf(a: f32) f32 { |
| 91 | fn truncf(a: f32) callconv(.C) f32 { |
| 88 | 92 | return math.trunc(a); |
| 89 | 93 | } |
| 90 | 94 | |
| 91 | | fn truncl(a: c_longdouble) c_longdouble { |
| 95 | fn truncl(a: c_longdouble) callconv(.C) c_longdouble { |
| 92 | 96 | if (!long_double_is_f128) { |
| 93 | 97 | @panic("TODO implement this"); |
| 94 | 98 | } |
| 95 | 99 | return math.trunc(a); |
| 96 | 100 | } |
| 101 | |
| 102 | fn log(a: f64) callconv(.C) f64 { |
| 103 | return math.ln(a); |
| 104 | } |
| 105 | |
| 106 | fn logf(a: f32) callconv(.C) f32 { |
| 107 | return math.ln(a); |
| 108 | } |