mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
29 lines
1 KiB
Zig
29 lines
1 KiB
Zig
const builtin = @import("builtin");
|
|
const std = @import("std");
|
|
const expect = std.testing.expect;
|
|
|
|
test "anyopaque extern symbol" {
|
|
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
|
|
const a = @extern(*anyopaque, .{ .name = "a_mystery_symbol" });
|
|
const b: *i32 = @alignCast(@ptrCast(a));
|
|
try expect(b.* == 1234);
|
|
}
|
|
|
|
export var a_mystery_symbol: i32 = 1234;
|
|
|
|
test "function extern symbol" {
|
|
if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf) return error.SkipZigTest;
|
|
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
|
|
|
|
const a = @extern(*const fn () callconv(.C) i32, .{ .name = "a_mystery_function" });
|
|
try expect(a() == 4567);
|
|
}
|
|
|
|
export fn a_mystery_function() i32 {
|
|
return 4567;
|
|
}
|