zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 06b64d82bf4baad296ff7c37d7c8ff08ce2bdc69 (tree)
parent e93ece7514dc9199523f71efe0ac480ef143985e
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Thu, 31 Aug 2017 20:10:24 -0400

only export __chkstk for windows

it's a windows only function anyway

Diffstat:
Mstd/special/compiler_rt/index.zig | 50++++++++++++++++++++++++++------------------------
1 file changed, 26 insertions(+), 24 deletions(-)

diff --git a/std/special/compiler_rt/index.zig b/std/special/compiler_rt/index.zig @@ -101,30 +101,32 @@ export nakedcc fn __aeabi_uidivmod() { export nakedcc fn __chkstk() { @setDebugSafety(this, false); - if (comptime builtin.arch == builtin.Arch.x86_64) { - asm volatile ( - \\ push %%rcx - \\ cmp $0x1000,%%rax - \\ lea 16(%%rsp),%%rcx // rsp before calling this routine -> rcx - \\ jb 1f - \\ 2: - \\ sub $0x1000,%%rcx - \\ test %%rcx,(%%rcx) - \\ sub $0x1000,%%rax - \\ cmp $0x1000,%%rax - \\ ja 2b - \\ 1: - \\ sub %%rax,%%rcx - \\ test %%rcx,(%%rcx) - \\ - \\ lea 8(%%rsp),%%rax // load pointer to the return address into rax - \\ mov %%rcx,%%rsp // install the new top of stack pointer into rsp - \\ mov -8(%%rax),%%rcx // restore rcx - \\ push (%%rax) // push return address onto the stack - \\ sub %%rsp,%%rax // restore the original value in rax - \\ ret - ); - unreachable; + if (comptime builtin.os == builtin.Os.windows) { + if (comptime builtin.arch == builtin.Arch.x86_64) { + asm volatile ( + \\ push %%rcx + \\ cmp $0x1000,%%rax + \\ lea 16(%%rsp),%%rcx // rsp before calling this routine -> rcx + \\ jb 1f + \\ 2: + \\ sub $0x1000,%%rcx + \\ test %%rcx,(%%rcx) + \\ sub $0x1000,%%rax + \\ cmp $0x1000,%%rax + \\ ja 2b + \\ 1: + \\ sub %%rax,%%rcx + \\ test %%rcx,(%%rcx) + \\ + \\ lea 8(%%rsp),%%rax // load pointer to the return address into rax + \\ mov %%rcx,%%rsp // install the new top of stack pointer into rsp + \\ mov -8(%%rax),%%rcx // restore rcx + \\ push (%%rax) // push return address onto the stack + \\ sub %%rsp,%%rax // restore the original value in rax + \\ ret + ); + unreachable; + } } @setGlobalLinkage(__chkstk, builtin.GlobalLinkage.Internal);