[Tarantool-patches] [PATCH 43/43] build: export public Lua symbols
Vladislav Shpilevoy
v.shpilevoy at tarantool.org
Sun Apr 12 03:13:26 MSK 2020
Exports functions which may be used by dynamic C modules via
public Lua C API and via Tarantool public C API.
Closes #2971
---
extra/exports | 148 -------------------
src/lua/init.c | 153 ++++++++++++++++++++
test/box/gh-2971-symbol-visibility.result | 22 +++
test/box/gh-2971-symbol-visibility.test.lua | 14 ++
4 files changed, 189 insertions(+), 148 deletions(-)
delete mode 100644 extra/exports
create mode 100644 test/box/gh-2971-symbol-visibility.result
create mode 100644 test/box/gh-2971-symbol-visibility.test.lua
diff --git a/extra/exports b/extra/exports
deleted file mode 100644
index 2341b0861..000000000
--- a/extra/exports
+++ /dev/null
@@ -1,148 +0,0 @@
-# Symbols exported by the main Tarantool executable
-
-# Lua / LuaJIT
-
-lua_newstate
-lua_close
-lua_newthread
-lua_atpanic
-lua_gettop
-lua_settop
-lua_pushvalue
-lua_remove
-lua_insert
-lua_replace
-lua_checkstack
-lua_xmove
-lua_isnumber
-lua_isstring
-lua_iscfunction
-lua_isuserdata
-lua_type
-lua_typename
-lua_equal
-lua_rawequal
-lua_lessthan
-lua_tonumber
-lua_tointeger
-lua_toboolean
-lua_tolstring
-lua_objlen
-lua_tocfunction
-lua_touserdata
-lua_tothread
-lua_topointer
-lua_pushnil
-lua_pushnumber
-lua_pushinteger
-lua_pushlstring
-lua_pushstring
-lua_pushvfstring
-lua_pushfstring
-lua_pushcclosure
-lua_pushboolean
-lua_pushlightuserdata
-lua_pushthread
-lua_gettable
-lua_getfield
-lua_rawget
-lua_rawgeti
-lua_createtable
-lua_newuserdata
-lua_getmetatable
-lua_getfenv
-lua_settable
-lua_setfield
-lua_rawset
-lua_rawseti
-lua_setmetatable
-lua_setfenv
-lua_call
-lua_pcall
-lua_cpcall
-lua_load
-lua_dump
-lua_yield
-lua_resume
-lua_status
-lua_gc
-lua_error
-lua_next
-lua_concat
-lua_getallocf
-lua_setallocf
-lua_getstack
-lua_getinfo
-lua_getlocal
-lua_setlocal
-lua_getupvalue
-lua_setupvalue
-lua_sethook
-lua_gethook
-lua_gethookmask
-lua_gethookcount
-lua_upvalueid
-lua_upvaluejoin
-lua_loadx
-
-luaopen_base
-luaopen_math
-luaopen_string
-luaopen_table
-luaopen_io
-luaopen_os
-luaopen_package
-luaopen_debug
-luaopen_bit
-luaopen_jit
-luaopen_ffi
-
-luaL_openlibs
-luaL_openlib
-luaL_register
-luaL_getmetafield
-luaL_callmeta
-luaL_typerror
-luaL_argerror
-luaL_checklstring
-luaL_optlstring
-luaL_checknumber
-luaL_optnumber
-luaL_checkinteger
-luaL_optinteger
-luaL_checkstack
-luaL_checktype
-luaL_checkany
-luaL_newmetatable
-luaL_checkudata
-luaL_where
-luaL_error
-luaL_checkoption
-luaL_ref
-luaL_unref
-luaL_loadfile
-luaL_loadbuffer
-luaL_loadstring
-luaL_newstate
-luaL_gsub
-luaL_findtable
-luaL_fileresult
-luaL_execresult
-luaL_loadfilex
-luaL_loadbufferx
-luaL_traceback
-luaL_setfuncs
-luaL_pushmodule
-luaL_testudata
-luaL_setmetatable
-luaL_buffinit
-luaL_prepbuffer
-luaL_addlstring
-luaL_addstring
-luaL_addvalue
-luaL_pushresult
-
-luaJIT_setmode
-luaJIT_profile_start
-luaJIT_profile_stop
-luaJIT_profile_dumpstack
diff --git a/src/lua/init.c b/src/lua/init.c
index f115bd2c9..a891afeee 100644
--- a/src/lua/init.c
+++ b/src/lua/init.c
@@ -749,6 +749,158 @@ tarantool_lua_socket_export_syms(void);
void **
tarantool_lua_string_export_syms(void);
+static void **
+tarantool_lua_lua_export_syms(void)
+{
+ static void *syms[] = {
+ (void *)lua_newstate,
+ (void *)lua_close,
+ (void *)lua_newthread,
+ (void *)lua_atpanic,
+ (void *)lua_gettop,
+ (void *)lua_settop,
+ (void *)lua_pushvalue,
+ (void *)lua_remove,
+ (void *)lua_insert,
+ (void *)lua_replace,
+ (void *)lua_checkstack,
+ (void *)lua_xmove,
+ (void *)lua_isnumber,
+ (void *)lua_isstring,
+ (void *)lua_iscfunction,
+ (void *)lua_isuserdata,
+ (void *)lua_type,
+ (void *)lua_typename,
+ (void *)lua_equal,
+ (void *)lua_rawequal,
+ (void *)lua_lessthan,
+ (void *)lua_tonumber,
+ (void *)lua_tointeger,
+ (void *)lua_toboolean,
+ (void *)lua_tolstring,
+ (void *)lua_objlen,
+ (void *)lua_tocfunction,
+ (void *)lua_touserdata,
+ (void *)lua_tothread,
+ (void *)lua_topointer,
+ (void *)lua_pushnil,
+ (void *)lua_pushnumber,
+ (void *)lua_pushinteger,
+ (void *)lua_pushlstring,
+ (void *)lua_pushstring,
+ (void *)lua_pushvfstring,
+ (void *)lua_pushfstring,
+ (void *)lua_pushcclosure,
+ (void *)lua_pushboolean,
+ (void *)lua_pushlightuserdata,
+ (void *)lua_pushthread,
+ (void *)lua_gettable,
+ (void *)lua_getfield,
+ (void *)lua_rawget,
+ (void *)lua_rawgeti,
+ (void *)lua_createtable,
+ (void *)lua_newuserdata,
+ (void *)lua_getmetatable,
+ (void *)lua_getfenv,
+ (void *)lua_settable,
+ (void *)lua_setfield,
+ (void *)lua_rawset,
+ (void *)lua_rawseti,
+ (void *)lua_setmetatable,
+ (void *)lua_setfenv,
+ (void *)lua_call,
+ (void *)lua_pcall,
+ (void *)lua_cpcall,
+ (void *)lua_load,
+ (void *)lua_dump,
+ (void *)lua_yield,
+ (void *)lua_resume,
+ (void *)lua_status,
+ (void *)lua_gc,
+ (void *)lua_error,
+ (void *)lua_next,
+ (void *)lua_concat,
+ (void *)lua_getallocf,
+ (void *)lua_setallocf,
+ (void *)lua_getstack,
+ (void *)lua_getinfo,
+ (void *)lua_getlocal,
+ (void *)lua_setlocal,
+ (void *)lua_getupvalue,
+ (void *)lua_setupvalue,
+ (void *)lua_sethook,
+ (void *)lua_gethook,
+ (void *)lua_gethookmask,
+ (void *)lua_gethookcount,
+ (void *)lua_upvalueid,
+ (void *)lua_upvaluejoin,
+ (void *)lua_loadx,
+
+ (void *)luaopen_base,
+ (void *)luaopen_math,
+ (void *)luaopen_string,
+ (void *)luaopen_table,
+ (void *)luaopen_io,
+ (void *)luaopen_os,
+ (void *)luaopen_package,
+ (void *)luaopen_debug,
+ (void *)luaopen_bit,
+ (void *)luaopen_jit,
+ (void *)luaopen_ffi,
+
+ (void *)luaL_openlibs,
+ (void *)luaL_openlib,
+ (void *)luaL_register,
+ (void *)luaL_getmetafield,
+ (void *)luaL_callmeta,
+ (void *)luaL_typerror,
+ (void *)luaL_argerror,
+ (void *)luaL_checklstring,
+ (void *)luaL_optlstring,
+ (void *)luaL_checknumber,
+ (void *)luaL_optnumber,
+ (void *)luaL_checkinteger,
+ (void *)luaL_optinteger,
+ (void *)luaL_checkstack,
+ (void *)luaL_checktype,
+ (void *)luaL_checkany,
+ (void *)luaL_newmetatable,
+ (void *)luaL_checkudata,
+ (void *)luaL_where,
+ (void *)luaL_error,
+ (void *)luaL_checkoption,
+ (void *)luaL_ref,
+ (void *)luaL_unref,
+ (void *)luaL_loadfile,
+ (void *)luaL_loadbuffer,
+ (void *)luaL_loadstring,
+ (void *)luaL_newstate,
+ (void *)luaL_gsub,
+ (void *)luaL_findtable,
+ (void *)luaL_fileresult,
+ (void *)luaL_execresult,
+ (void *)luaL_loadfilex,
+ (void *)luaL_loadbufferx,
+ (void *)luaL_traceback,
+ (void *)luaL_setfuncs,
+ (void *)luaL_pushmodule,
+ (void *)luaL_testudata,
+ (void *)luaL_setmetatable,
+ (void *)luaL_buffinit,
+ (void *)luaL_prepbuffer,
+ (void *)luaL_addlstring,
+ (void *)luaL_addstring,
+ (void *)luaL_addvalue,
+ (void *)luaL_pushresult,
+
+ (void *)luaJIT_setmode,
+ (void *)luaJIT_profile_start,
+ (void *)luaJIT_profile_stop,
+ (void *)luaJIT_profile_dumpstack,
+ };
+ return syms;
+}
+
void **
tarantool_lua_tnt_iconv_export_syms(void);
@@ -766,6 +918,7 @@ tarantool_lua_export_syms(void)
(void *)tarantool_lua_buffer_export_syms,
(void *)tarantool_lua_digest_export_syms,
(void *)tarantool_lua_error_export_syms,
+ (void *)tarantool_lua_lua_export_syms,
(void *)tarantool_lua_msgpack_export_syms,
(void *)tarantool_lua_socket_export_syms,
(void *)tarantool_lua_tnt_iconv_export_syms,
diff --git a/test/box/gh-2971-symbol-visibility.result b/test/box/gh-2971-symbol-visibility.result
new file mode 100644
index 000000000..9f91a4edf
--- /dev/null
+++ b/test/box/gh-2971-symbol-visibility.result
@@ -0,0 +1,22 @@
+-- test-run result file version 2
+ffi = require('ffi')
+ | ---
+ | ...
+
+--
+-- gh-2971: Tarantool should not hide symbols. Even those which
+-- are not a part of the public API.
+--
+
+-- This symbol is not public, but should be defined.
+ffi.cdef[[ \
+bool \
+box_is_configured(void); \
+]]
+ | ---
+ | ...
+
+ffi.C.box_is_configured()
+ | ---
+ | - true
+ | ...
diff --git a/test/box/gh-2971-symbol-visibility.test.lua b/test/box/gh-2971-symbol-visibility.test.lua
new file mode 100644
index 000000000..f19effeba
--- /dev/null
+++ b/test/box/gh-2971-symbol-visibility.test.lua
@@ -0,0 +1,14 @@
+ffi = require('ffi')
+
+--
+-- gh-2971: Tarantool should not hide symbols. Even those which
+-- are not a part of the public API.
+--
+
+-- This symbol is not public, but should be defined.
+ffi.cdef[[ \
+bool \
+box_is_configured(void); \
+]]
+
+ffi.C.box_is_configured()
--
2.21.1 (Apple Git-122.3)
More information about the Tarantool-patches
mailing list