aboutsummaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-12-19 02:39:43 -0500
committerAndrew Kelley <superjoe30@gmail.com>2017-12-19 02:39:43 -0500
commit9d9201c3b48873e432dc6824d42b5ca96b236daa (patch)
treebdc43bc1b664450fee07884e59106a24b72aa2cd /std
parent27ba4f0baf5168b2fb8f0dd72b04f528092f075a (diff)
downloadzig-9d9201c3b48873e432dc6824d42b5ca96b236daa.tar.gz
zig-9d9201c3b48873e432dc6824d42b5ca96b236daa.zip
bring back code that uses export and fix tests
partial revert of 1fdebc1dc4881a00766f7c2b4b2d8ee6ad6e79b6
Diffstat (limited to 'std')
-rw-r--r--std/special/bootstrap.zig7
-rw-r--r--std/special/builtin.zig35
-rw-r--r--std/special/compiler_rt/index.zig68
3 files changed, 51 insertions, 59 deletions
diff --git a/std/special/bootstrap.zig b/std/special/bootstrap.zig
index ee63467305..177e245400 100644
--- a/std/special/bootstrap.zig
+++ b/std/special/bootstrap.zig
@@ -8,12 +8,13 @@ const builtin = @import("builtin");
var argc_ptr: &usize = undefined;
comptime {
+ const strong_linkage = builtin.GlobalLinkage.Strong;
if (builtin.link_libc) {
- @export("main", main);
+ @export("main", main, strong_linkage);
} else if (builtin.os == builtin.Os.windows) {
- @export("WinMainCRTStartup", WinMainCRTStartup);
+ @export("WinMainCRTStartup", WinMainCRTStartup, strong_linkage);
} else {
- @export("_start", _start);
+ @export("_start", _start, strong_linkage);
}
}
diff --git a/std/special/builtin.zig b/std/special/builtin.zig
index 9ace9b46ca..a2455a9690 100644
--- a/std/special/builtin.zig
+++ b/std/special/builtin.zig
@@ -13,24 +13,10 @@ pub coldcc fn panic(msg: []const u8) -> noreturn {
}
}
-comptime {
- @export("memset", memset);
- @export("memcpy", memcpy);
- @export("fmodf", fmodf);
- @export("fmod", fmod);
- @export("floorf", floorf);
- @export("ceilf", ceilf);
- @export("floor", floor);
- @export("ceil", ceil);
- if (builtin.mode != builtin.Mode.ReleaseFast and builtin.os != builtin.Os.windows) {
- @export("__stack_chk_fail", __stack_chk_fail);
- }
-}
-
// Note that memset does not return `dest`, like the libc API.
// The semantics of memset is dictated by the corresponding
// LLVM intrinsics, not by the libc API.
-extern fn memset(dest: ?&u8, c: u8, n: usize) {
+export fn memset(dest: ?&u8, c: u8, n: usize) {
@setDebugSafety(this, false);
var index: usize = 0;
@@ -41,7 +27,7 @@ extern fn memset(dest: ?&u8, c: u8, n: usize) {
// Note that memcpy does not return `dest`, like the libc API.
// The semantics of memcpy is dictated by the corresponding
// LLVM intrinsics, not by the libc API.
-extern fn memcpy(noalias dest: ?&u8, noalias src: ?&const u8, n: usize) {
+export fn memcpy(noalias dest: ?&u8, noalias src: ?&const u8, n: usize) {
@setDebugSafety(this, false);
var index: usize = 0;
@@ -49,21 +35,26 @@ extern fn memcpy(noalias dest: ?&u8, noalias src: ?&const u8, n: usize) {
(??dest)[index] = (??src)[index];
}
+comptime {
+ if (builtin.mode != builtin.Mode.ReleaseFast and builtin.os != builtin.Os.windows) {
+ @export("__stack_chk_fail", __stack_chk_fail, builtin.GlobalLinkage.Strong);
+ }
+}
extern fn __stack_chk_fail() -> noreturn {
@panic("stack smashing detected");
}
const math = @import("../math/index.zig");
-extern fn fmodf(x: f32, y: f32) -> f32 { generic_fmod(f32, x, y) }
-extern fn fmod(x: f64, y: f64) -> f64 { generic_fmod(f64, x, y) }
+export fn fmodf(x: f32, y: f32) -> f32 { generic_fmod(f32, x, y) }
+export fn fmod(x: f64, y: f64) -> f64 { generic_fmod(f64, x, y) }
// TODO add intrinsics for these (and probably the double version too)
// and have the math stuff use the intrinsic. same as @mod and @rem
-extern fn floorf(x: f32) -> f32 { math.floor(x) }
-extern fn ceilf(x: f32) -> f32 { math.ceil(x) }
-extern fn floor(x: f64) -> f64 { math.floor(x) }
-extern fn ceil(x: f64) -> f64 { math.ceil(x) }
+export fn floorf(x: f32) -> f32 { math.floor(x) }
+export fn ceilf(x: f32) -> f32 { math.ceil(x) }
+export fn floor(x: f64) -> f64 { math.floor(x) }
+export fn ceil(x: f64) -> f64 { math.ceil(x) }
fn generic_fmod(comptime T: type, x: T, y: T) -> T {
@setDebugSafety(this, false);
diff --git a/std/special/compiler_rt/index.zig b/std/special/compiler_rt/index.zig
index 717c6934f5..fab7b7c878 100644
--- a/std/special/compiler_rt/index.zig
+++ b/std/special/compiler_rt/index.zig
@@ -5,62 +5,62 @@ comptime {
const linkage = if (is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.Weak;
const strong_linkage = if (is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.Strong;
- @exportWithLinkage("__letf2", @import("comparetf2.zig").__letf2, linkage);
- @exportWithLinkage("__getf2", @import("comparetf2.zig").__getf2, linkage);
+ @export("__letf2", @import("comparetf2.zig").__letf2, linkage);
+ @export("__getf2", @import("comparetf2.zig").__getf2, linkage);
if (!is_test) {
// only create these aliases when not testing
- @exportWithLinkage("__cmptf2", @import("comparetf2.zig").__letf2, linkage);
- @exportWithLinkage("__eqtf2", @import("comparetf2.zig").__letf2, linkage);
- @exportWithLinkage("__lttf2", @import("comparetf2.zig").__letf2, linkage);
- @exportWithLinkage("__netf2", @import("comparetf2.zig").__letf2, linkage);
- @exportWithLinkage("__gttf2", @import("comparetf2.zig").__getf2, linkage);
+ @export("__cmptf2", @import("comparetf2.zig").__letf2, linkage);
+ @export("__eqtf2", @import("comparetf2.zig").__letf2, linkage);
+ @export("__lttf2", @import("comparetf2.zig").__letf2, linkage);
+ @export("__netf2", @import("comparetf2.zig").__letf2, linkage);
+ @export("__gttf2", @import("comparetf2.zig").__getf2, linkage);
}
- @exportWithLinkage("__unordtf2", @import("comparetf2.zig").__unordtf2, linkage);
+ @export("__unordtf2", @import("comparetf2.zig").__unordtf2, linkage);
- @exportWithLinkage("__fixunssfsi", @import("fixunssfsi.zig").__fixunssfsi, linkage);
- @exportWithLinkage("__fixunssfdi", @import("fixunssfdi.zig").__fixunssfdi, linkage);
- @exportWithLinkage("__fixunssfti", @import("fixunssfti.zig").__fixunssfti, linkage);
+ @export("__fixunssfsi", @import("fixunssfsi.zig").__fixunssfsi, linkage);
+ @export("__fixunssfdi", @import("fixunssfdi.zig").__fixunssfdi, linkage);
+ @export("__fixunssfti", @import("fixunssfti.zig").__fixunssfti, linkage);
- @exportWithLinkage("__fixunsdfsi", @import("fixunsdfsi.zig").__fixunsdfsi, linkage);
- @exportWithLinkage("__fixunsdfdi", @import("fixunsdfdi.zig").__fixunsdfdi, linkage);
- @exportWithLinkage("__fixunsdfti", @import("fixunsdfti.zig").__fixunsdfti, linkage);
+ @export("__fixunsdfsi", @import("fixunsdfsi.zig").__fixunsdfsi, linkage);
+ @export("__fixunsdfdi", @import("fixunsdfdi.zig").__fixunsdfdi, linkage);
+ @export("__fixunsdfti", @import("fixunsdfti.zig").__fixunsdfti, linkage);
- @exportWithLinkage("__fixunstfsi", @import("fixunstfsi.zig").__fixunstfsi, linkage);
- @exportWithLinkage("__fixunstfdi", @import("fixunstfdi.zig").__fixunstfdi, linkage);
- @exportWithLinkage("__fixunstfti", @import("fixunstfti.zig").__fixunstfti, linkage);
+ @export("__fixunstfsi", @import("fixunstfsi.zig").__fixunstfsi, linkage);
+ @export("__fixunstfdi", @import("fixunstfdi.zig").__fixunstfdi, linkage);
+ @export("__fixunstfti", @import("fixunstfti.zig").__fixunstfti, linkage);
- @exportWithLinkage("__udivmoddi4", @import("udivmoddi4.zig").__udivmoddi4, linkage);
- @exportWithLinkage("__udivmodti4", @import("udivmodti4.zig").__udivmodti4, linkage);
+ @export("__udivmoddi4", @import("udivmoddi4.zig").__udivmoddi4, linkage);
+ @export("__udivmodti4", @import("udivmodti4.zig").__udivmodti4, linkage);
- @exportWithLinkage("__udivti3", @import("udivti3.zig").__udivti3, linkage);
- @exportWithLinkage("__umodti3", @import("umodti3.zig").__umodti3, linkage);
+ @export("__udivti3", @import("udivti3.zig").__udivti3, linkage);
+ @export("__umodti3", @import("umodti3.zig").__umodti3, linkage);
- @exportWithLinkage("__udivsi3", __udivsi3, linkage);
- @exportWithLinkage("__udivdi3", __udivdi3, linkage);
- @exportWithLinkage("__umoddi3", __umoddi3, linkage);
- @exportWithLinkage("__udivmodsi4", __udivmodsi4, linkage);
+ @export("__udivsi3", __udivsi3, linkage);
+ @export("__udivdi3", __udivdi3, linkage);
+ @export("__umoddi3", __umoddi3, linkage);
+ @export("__udivmodsi4", __udivmodsi4, linkage);
if (isArmArch()) {
- @exportWithLinkage("__aeabi_uldivmod", __aeabi_uldivmod, linkage);
- @exportWithLinkage("__aeabi_uidivmod", __aeabi_uidivmod, linkage);
- @exportWithLinkage("__aeabi_uidiv", __udivsi3, linkage);
+ @export("__aeabi_uldivmod", __aeabi_uldivmod, linkage);
+ @export("__aeabi_uidivmod", __aeabi_uidivmod, linkage);
+ @export("__aeabi_uidiv", __udivsi3, linkage);
}
if (builtin.os == builtin.Os.windows) {
switch (builtin.arch) {
builtin.Arch.i386 => {
if (!builtin.link_libc) {
- @exportWithLinkage("_chkstk", _chkstk, strong_linkage);
- @exportWithLinkage("__chkstk_ms", __chkstk_ms, linkage);
+ @export("_chkstk", _chkstk, strong_linkage);
+ @export("__chkstk_ms", __chkstk_ms, linkage);
}
- @exportWithLinkage("_aulldiv", @import("aulldiv.zig")._aulldiv, strong_linkage);
- @exportWithLinkage("_aullrem", @import("aullrem.zig")._aullrem, strong_linkage);
+ @export("_aulldiv", @import("aulldiv.zig")._aulldiv, strong_linkage);
+ @export("_aullrem", @import("aullrem.zig")._aullrem, strong_linkage);
},
builtin.Arch.x86_64 => {
if (!builtin.link_libc) {
- @exportWithLinkage("__chkstk", __chkstk, strong_linkage);
- @exportWithLinkage("___chkstk_ms", ___chkstk_ms, linkage);
+ @export("__chkstk", __chkstk, strong_linkage);
+ @export("___chkstk_ms", ___chkstk_ms, linkage);
}
},
else => {},