mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 22:35:24 +00:00
Merge pull request #20852 from ziglang/init-array-start-code
start code: implement __init_array_start, __init_array_end
This commit is contained in:
commit
f219286573
@ -464,6 +464,23 @@ fn posixCallMainAndExit(argc_argv_ptr: [*]usize) callconv(.C) noreturn {
|
||||
// Here we look for the stack size in our program headers and use setrlimit
|
||||
// to ask for more stack space.
|
||||
expandStackSize(phdrs);
|
||||
|
||||
// Disabled with the riscv backend because it cannot handle this code yet.
|
||||
if (builtin.zig_backend != .stage2_riscv64) {
|
||||
const opt_init_array_start = @extern([*]*const fn () callconv(.C) void, .{
|
||||
.name = "__init_array_start",
|
||||
.linkage = .weak,
|
||||
});
|
||||
const opt_init_array_end = @extern([*]*const fn () callconv(.C) void, .{
|
||||
.name = "__init_array_end",
|
||||
.linkage = .weak,
|
||||
});
|
||||
if (opt_init_array_start) |init_array_start| {
|
||||
const init_array_end = opt_init_array_end.?;
|
||||
const slice = init_array_start[0 .. init_array_end - init_array_start];
|
||||
for (slice) |func| func();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std.posix.exit(callMainWithArgs(argc, argv, envp));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user