Skip to content

Commit 02ab611

Browse files
committed
libc: implement common abs for various integer sizes
1 parent 08d534e commit 02ab611

File tree

8 files changed

+30
-32
lines changed

8 files changed

+30
-32
lines changed

lib/c.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ else
1616
comptime {
1717
if (builtin.target.isMuslLibC() or builtin.target.isWasiLibC()) {
1818
// Files specific to musl and wasi-libc.
19+
_ = @import("c/stdlib.zig");
1920
_ = @import("c/string.zig");
2021
_ = @import("c/strings.zig");
2122
}

lib/c/stdlib.zig

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
const std = @import("std");
2+
const common = @import("common.zig");
3+
const c = @cImport({
4+
@cInclude("stdint.h");
5+
});
6+
const c_intmax_t = c.intmax_t;
7+
8+
comptime {
9+
@export(&abs, .{ .name = "abs", .linkage = common.linkage, .visibility = common.visibility });
10+
@export(&imaxabs, .{ .name = "imaxabs", .linkage = common.linkage, .visibility = common.visibility });
11+
@export(&labs, .{ .name = "labs", .linkage = common.linkage, .visibility = common.visibility });
12+
@export(&llabs, .{ .name = "llabs", .linkage = common.linkage, .visibility = common.visibility });
13+
}
14+
15+
fn abs(a: c_int) callconv(.c) c_int {
16+
return if (a > 0) a else -a;
17+
}
18+
19+
fn imaxabs(a: c_intmax_t) callconv(.c) c_intmax_t {
20+
return if (a > 0) a else -a;
21+
}
22+
23+
fn labs(a: c_long) callconv(.c) c_long {
24+
return if (a > 0) a else -a;
25+
}
26+
27+
fn llabs(a: c_longlong) callconv(.c) c_longlong {
28+
return if (a > 0) a else -a;
29+
}

lib/libc/musl/src/stdlib/abs.c

Lines changed: 0 additions & 6 deletions
This file was deleted.

lib/libc/musl/src/stdlib/imaxabs.c

Lines changed: 0 additions & 6 deletions
This file was deleted.

lib/libc/musl/src/stdlib/labs.c

Lines changed: 0 additions & 6 deletions
This file was deleted.

lib/libc/musl/src/stdlib/llabs.c

Lines changed: 0 additions & 6 deletions
This file was deleted.

src/libs/musl.zig

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1814,7 +1814,6 @@ const src_files = [_][]const u8{
18141814
"musl/src/stdio/vwscanf.c",
18151815
"musl/src/stdio/wprintf.c",
18161816
"musl/src/stdio/wscanf.c",
1817-
"musl/src/stdlib/abs.c",
18181817
"musl/src/stdlib/atof.c",
18191818
"musl/src/stdlib/atoi.c",
18201819
"musl/src/stdlib/atol.c",
@@ -1824,11 +1823,8 @@ const src_files = [_][]const u8{
18241823
"musl/src/stdlib/ecvt.c",
18251824
"musl/src/stdlib/fcvt.c",
18261825
"musl/src/stdlib/gcvt.c",
1827-
"musl/src/stdlib/imaxabs.c",
18281826
"musl/src/stdlib/imaxdiv.c",
1829-
"musl/src/stdlib/labs.c",
18301827
"musl/src/stdlib/ldiv.c",
1831-
"musl/src/stdlib/llabs.c",
18321828
"musl/src/stdlib/lldiv.c",
18331829
"musl/src/stdlib/qsort.c",
18341830
"musl/src/stdlib/qsort_nr.c",

src/libs/wasi_libc.zig

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,6 @@ const libc_top_half_src_files = [_][]const u8{
10241024
"musl/src/stdio/vwscanf.c",
10251025
"musl/src/stdio/wprintf.c",
10261026
"musl/src/stdio/wscanf.c",
1027-
"musl/src/stdlib/abs.c",
10281027
"musl/src/stdlib/atof.c",
10291028
"musl/src/stdlib/atoi.c",
10301029
"musl/src/stdlib/atol.c",
@@ -1034,11 +1033,8 @@ const libc_top_half_src_files = [_][]const u8{
10341033
"musl/src/stdlib/ecvt.c",
10351034
"musl/src/stdlib/fcvt.c",
10361035
"musl/src/stdlib/gcvt.c",
1037-
"musl/src/stdlib/imaxabs.c",
10381036
"musl/src/stdlib/imaxdiv.c",
1039-
"musl/src/stdlib/labs.c",
10401037
"musl/src/stdlib/ldiv.c",
1041-
"musl/src/stdlib/llabs.c",
10421038
"musl/src/stdlib/lldiv.c",
10431039
"musl/src/stdlib/qsort.c",
10441040
"musl/src/stdlib/qsort_nr.c",

0 commit comments

Comments
 (0)