Commit 8a78d875cc
Changed files (13)
lib/std/os/linux/aarch64.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const linux = std.os.linux;
@@ -122,7 +123,12 @@ pub fn clone() callconv(.Naked) usize {
\\ ret
\\
\\ // child
- \\1: .cfi_undefined lr
+ \\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
+ \\ .cfi_undefined lr
+ );
+ asm volatile (
\\ mov fp, 0
\\ mov lr, 0
\\
lib/std/os/linux/hexagon.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const iovec = std.posix.iovec;
const iovec_const = std.posix.iovec_const;
@@ -117,8 +118,11 @@ pub fn clone() callconv(.Naked) usize {
\\
\\ p0 = cmp.eq(r0, #0)
\\ if (!p0) dealloc_return
- \\
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined r31
+ );
+ asm volatile (
\\ r30 = #0
\\ r31 = #0
\\
lib/std/os/linux/loongarch64.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const linux = std.os.linux;
const SYS = linux.SYS;
@@ -121,7 +122,11 @@ pub fn clone() callconv(.Naked) usize {
\\ beqz $a0, 1f # whether child process
\\ jirl $zero, $ra, 0 # parent process return
\\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined 1
+ );
+ asm volatile (
\\ move $fp, $zero
\\ move $ra, $zero
\\
lib/std/os/linux/mips.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const linux = std.os.linux;
@@ -231,7 +232,11 @@ pub fn clone() callconv(.Naked) usize {
\\ jr $ra
\\ nop
\\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined $ra
+ );
+ asm volatile (
\\ move $fp, $zero
\\ move $ra, $zero
\\
lib/std/os/linux/mips64.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const linux = std.os.linux;
@@ -210,7 +211,11 @@ pub fn clone() callconv(.Naked) usize {
\\ jr $ra
\\ nop
\\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined $ra
+ );
+ asm volatile (
\\ move $fp, $zero
\\ move $ra, $zero
\\
lib/std/os/linux/powerpc.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const linux = std.os.linux;
@@ -176,7 +177,11 @@ pub fn clone() callconv(.Naked) usize {
\\
\\ #else: we're the child
\\ 2:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined lr
+ );
+ asm volatile (
\\ li 31, 0
\\ mtlr 0
\\
lib/std/os/linux/powerpc64.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const linux = std.os.linux;
@@ -161,7 +162,11 @@ pub fn clone() callconv(.Naked) usize {
\\ bnelr cr7
\\
\\ # we're the child
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined lr
+ );
+ asm volatile (
\\ li 31, 0
\\ mtlr 0
\\
lib/std/os/linux/riscv32.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const iovec = std.posix.iovec;
const iovec_const = std.posix.iovec_const;
@@ -120,7 +121,12 @@ pub fn clone() callconv(.Naked) usize {
\\ ret
\\
\\ # Child
- \\1: .cfi_undefined ra
+ \\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
+ \\ .cfi_undefined ra
+ );
+ asm volatile (
\\ mv fp, zero
\\ mv ra, zero
\\
lib/std/os/linux/riscv64.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const iovec = std.posix.iovec;
const iovec_const = std.posix.iovec_const;
@@ -120,7 +121,12 @@ pub fn clone() callconv(.Naked) usize {
\\ ret
\\
\\ # Child
- \\1: .cfi_undefined ra
+ \\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
+ \\ .cfi_undefined ra
+ );
+ asm volatile (
\\ mv fp, zero
\\ mv ra, zero
\\
lib/std/os/linux/s390x.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const iovec = std.posix.iovec;
const iovec_const = std.posix.iovec_const;
@@ -134,7 +135,11 @@ pub fn clone() callconv(.Naked) usize {
\\bnzr %%r14
\\
\\# we're the child
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\.cfi_undefined %%r14
+ );
+ asm volatile (
\\lghi %%r11, 0
\\lghi %%r14, 0
\\
lib/std/os/linux/sparc64.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const pid_t = linux.pid_t;
@@ -215,7 +216,11 @@ pub fn clone() callconv(.Naked) usize {
\\ restore
\\2:
\\ # Child process
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined %%i7
+ );
+ asm volatile (
\\ mov %%g0, %%fp
\\ mov %%g0, %%i7
\\
lib/std/os/linux/x86.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const linux = std.os.linux;
@@ -156,7 +157,11 @@ pub fn clone() callconv(.Naked) usize {
\\ retl
\\
\\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
\\ .cfi_undefined %%eip
+ );
+ asm volatile (
\\ xorl %%ebp,%%ebp
\\
\\ popl %%eax
lib/std/os/linux/x86_64.zig
@@ -1,3 +1,4 @@
+const builtin = @import("builtin");
const std = @import("../../std.zig");
const maxInt = std.math.maxInt;
const linux = std.os.linux;
@@ -117,7 +118,12 @@ pub fn clone() callconv(.Naked) usize {
\\ jz 1f
\\ retq
\\
- \\1: .cfi_undefined %%rip
+ \\1:
+ );
+ if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (
+ \\ .cfi_undefined %%rip
+ );
+ asm volatile (
\\ xorl %%ebp,%%ebp
\\
\\ popq %%rdi