From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: tarantool-patches@dev.tarantool.org Subject: Re: [Tarantool-patches] [PATCH 00/43] Unhide symbols Date: Thu, 16 Apr 2020 01:15:45 +0200 [thread overview] Message-ID: <71863e35-1d40-bb2e-f792-ded289f0f807@tarantool.org> (raw) In-Reply-To: <cover.1586650013.git.v.shpilevoy@tarantool.org> With help of Timur there was a discovered a little less intrusive solution: a little hack with the compiler. Consider this diff: ==================== diff --git a/src/exports.c b/src/exports.c index de1892026..47fe1b9bd 100644 --- a/src/exports.c +++ b/src/exports.c @@ -30,6 +30,11 @@ */ #define EXPORT(func) extern void ** func(void) +#include <time.h> + +extern void *bit_unused_function; +extern void *bit_symbol; + /** * The file is a hack to force the linker keep the needed symbols * in the result tarantool executable file. @@ -121,6 +126,11 @@ export_syms(void) const int func_count = sizeof(syms) / sizeof(syms[0]); for (int i = 0; i < func_count; ++i) ((void **(*)(void))syms[i])(); + if (time(NULL) == 0) + { + ((void **(*)(void))bit_unused_function)(); + ((void **(*)(void))bit_symbol)(); + } } #undef EXPORT diff --git a/src/lib/bit/bit.c b/src/lib/bit/bit.c index 72cc94dc3..94fe75408 100644 --- a/src/lib/bit/bit.c +++ b/src/lib/bit/bit.c @@ -31,6 +31,15 @@ #include "bit/bit.h" +void +bit_unused_function(void) +{ + printf("Unused\n"); + return; +} + +int bit_symbol = 0; + extern inline uint8_t load_u8(const void *p); ==================== As you can see, I managed to reference the needed symbols from a static library without doing any includes. It means, we can resurrect ffi_syms.c like it was before, but in a much simpler manner, with 0 dependencies. Only extern void * of needed variables and functions.
prev parent reply other threads:[~2020-04-15 23:15 UTC|newest] Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-04-12 0:12 Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 01/43] cmake: remove double usage of some source files Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 10/43] build: export src/lib/core/fiber.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 11/43] build: export src/lua/init.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 12/43] build: export src/lib/core/port.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 13/43] build: export src/lib/csv/csv.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 14/43] build: export src/title.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 15/43] build: export src/lua/tnt_iconv.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 16/43] build: export src/lib/core/exception.cc symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 17/43] build: export src/lib/uuid/tt_uuid.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 18/43] build: export src/lib/core/say.c symbols Vladislav Shpilevoy 2020-04-12 0:12 ` [Tarantool-patches] [PATCH 19/43] build: export src/lib/uri/uri.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 02/43] cmake: remove dynamic-list linker option Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 20/43] build: export third_party/PMurHash.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 21/43] build: export src/crc32.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 22/43] build: export src/lua/msgpack.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 23/43] build: export src/main.cc symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 24/43] build: export src/box/space.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 25/43] build: export src/box/schema.cc symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 26/43] build: export src/lib/crypto/crypto.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 27/43] build: export src/lua/buffer.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 28/43] build: export src/lib/swim/swim.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 29/43] build: export src/lib/core/fiber_cond.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 03/43] build: export src/lib/core/clock.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 30/43] build: export src/lib/core/coio.cc symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 31/43] build: export src/lua/utils.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 32/43] build: export src/box/lua/tuple.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 33/43] build: export src/lua/error.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 34/43] build: export src/box/txn.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 35/43] build: export src/box/key_def.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 36/43] build: export src/box/tuple.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 37/43] build: export src/box/index.cc symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 38/43] build: export src/box/box.cc symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 39/43] build: export src/box/error.cc symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 04/43] build: export src/scramble.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 40/43] build: export src/lib/core/diag.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 41/43] build: export src/lib/core/latch.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 42/43] build: export src/lua/string.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 43/43] build: export public Lua symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 05/43] build: export src/lua/socket.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 06/43] build: export third_party/base64.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 07/43] build: export src/lua/digest.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 08/43] build: export src/lib/salad/guava.c symbols Vladislav Shpilevoy 2020-04-12 0:13 ` [Tarantool-patches] [PATCH 09/43] build: export src/lib/core/random.c symbols Vladislav Shpilevoy 2020-04-14 18:14 ` Timur Safin 2020-04-12 11:34 ` [Tarantool-patches] [PATCH 00/43] Unhide symbols Konstantin Osipov 2020-04-12 14:05 ` Vladislav Shpilevoy 2020-04-13 9:40 ` Konstantin Osipov 2020-04-13 9:42 ` Konstantin Osipov 2020-04-13 13:53 ` Vladislav Shpilevoy 2020-04-13 14:15 ` Konstantin Osipov 2020-04-13 14:21 ` Vladislav Shpilevoy 2020-04-13 19:49 ` Sergey Ostanevich 2020-04-13 21:01 ` Vladislav Shpilevoy 2020-04-13 21:38 ` Konstantin Osipov 2020-04-14 18:01 ` Timur Safin 2020-04-14 18:26 ` Timur Safin 2020-04-14 20:41 ` 'Konstantin Osipov' 2020-04-15 10:28 ` Mons Anderson 2020-04-15 10:40 ` Mons Anderson 2020-04-15 10:50 ` sergos 2020-04-15 21:58 ` Vladislav Shpilevoy 2020-04-16 12:13 ` Cyrill Gorcunov 2020-04-16 20:30 ` Vladislav Shpilevoy 2020-04-17 7:48 ` Timur Safin 2020-04-17 8:29 ` Cyrill Gorcunov 2020-04-15 11:27 ` Konstantin Osipov 2020-04-12 14:25 ` Vladislav Shpilevoy 2020-04-12 20:18 ` Vladislav Shpilevoy 2020-04-13 14:26 ` Vladislav Shpilevoy 2020-04-13 16:44 ` Cyrill Gorcunov 2020-04-13 17:57 ` Vladislav Shpilevoy 2020-04-13 18:17 ` Cyrill Gorcunov 2020-04-14 1:15 ` Vladislav Shpilevoy 2020-04-14 1:27 ` [Tarantool-patches] [PATCH 44/43] build: export src/box/lua/console.c symbols Vladislav Shpilevoy 2020-04-15 23:15 ` Vladislav Shpilevoy [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=71863e35-1d40-bb2e-f792-ded289f0f807@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=tarantool-patches@dev.tarantool.org \ --subject='Re: [Tarantool-patches] [PATCH 00/43] Unhide symbols' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox