From 9654a54d4a2729200d38dbb6eec827cb03dc0f90 Mon Sep 17 00:00:00 2001 From: Takeshi Yoneda Date: Fri, 24 Sep 2021 22:14:53 +0900 Subject: Add Visibility field to ExportOptions. Signed-off-by: Takeshi Yoneda --- src/codegen/llvm.zig | 5 +++++ src/codegen/llvm/bindings.zig | 9 +++++++++ 2 files changed, 14 insertions(+) (limited to 'src/codegen') diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 57bcbe9338..5e70710046 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -808,6 +808,11 @@ pub const Object = struct { .Weak => llvm_global.setLinkage(.WeakODR), .LinkOnce => llvm_global.setLinkage(.LinkOnceODR), } + switch (exports[0].options.visibility) { + .default => llvm_global.setVisibility(.Default), + .hidden => llvm_global.setVisibility(.Hidden), + .protected => llvm_global.setVisibility(.Protected), + } if (decl.val.castTag(.variable)) |variable| { if (variable.data.is_threadlocal) { llvm_global.setThreadLocalMode(.GeneralDynamicTLSModel); diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig index c70a7d1553..f3987a8665 100644 --- a/src/codegen/llvm/bindings.zig +++ b/src/codegen/llvm/bindings.zig @@ -117,6 +117,9 @@ pub const Value = opaque { pub const setLinkage = LLVMSetLinkage; extern fn LLVMSetLinkage(Global: *const Value, Linkage: Linkage) void; + pub const setVisibility = LLVMSetVisibility; + extern fn LLVMSetVisibility(Global: *const Value, Linkage: Visibility) void; + pub const setUnnamedAddr = LLVMSetUnnamedAddr; extern fn LLVMSetUnnamedAddr(Global: *const Value, HasUnnamedAddr: Bool) void; @@ -1324,6 +1327,12 @@ pub const Linkage = enum(c_uint) { LinkerPrivateWeak, }; +pub const Visibility = enum(c_uint) { + Default, + Hidden, + Protected, +}; + pub const ThreadLocalMode = enum(c_uint) { NotThreadLocal, GeneralDynamicTLSModel, -- cgit v1.2.3