From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH 00/43] Unhide symbols
Date: Thu, 16 Apr 2020 15:13:50 +0300 [thread overview]
Message-ID: <20200416121350.GR3072@uranus> (raw)
In-Reply-To: <d859f971-e009-d462-262b-70a0116169ad@tarantool.org>
On Wed, Apr 15, 2020 at 11:58:06PM +0200, Vladislav Shpilevoy wrote:
> >>
> > This could be done with approach from @cyrillos, AFAIU. These functions
> > should be annotated in the code, rather than collected in a separate
> > list.
>
> Yeah, the problem is that there is no a compiler option, which would
> prevent removal of certain unused symbols defined in static libraries,
> when they are merged into one executable.
Actually no, if symbols are reffered in executable they won't be vanished.
Accessing symbols should be done in transparent way. IOW, I think of
similar to kernel approach:
- provide EXPORT_SYMBOL helper (macro which would put it into a section)
- generate a special bootstrap routine which would access the cummulative
symbols in the gathered section (linker must not drop it I think)
But this is only ideas which I didn't dive into technical details yet
and I refuse to do it in a rush! If this symbols are really that needed
then Vladislav approach should do the trick and we could switch to another
sheme transparently.
> You can either export all of them using whole-archive option, or
> export a list via the option used on the master branch now (but that
> masks out all other symbols).
>
> Cyrill G. was referring to a kernel EXPORT_API macros. The problem is
> it has nothing to do with compiler attributes. That macros generates a
> special section for every function in assembly with a prefix __ksymtab
Not for every, only for those which are market with EXPORT_SYMBOL[_x]
> or something like that. That section contains the original symbol
> reference + some meta.
The meta actually is the virtual address and it is needed the kernel
would test checksum on start to be sure that we're not corrupted.
> https://github.com/torvalds/linux/blob/master/include/linux/export.h#L97
>
> Then all such sections having the same prefix are merged into one big
> section here:
>
> https://github.com/torvalds/linux/blob/master/scripts/module-common.lds
>
> And exported via a global array here:
>
> https://github.com/torvalds/linux/blob/master/kernel/module.c#L379
>
> So essentially this is the same what I am doing, but using some assembly
> and a linker script.
>
> Timur and Cyrill can correct me if I am wrong somewhere above.
Yup, correct.
> I would happy to implement something like that but looks like it is
> not worth the complexity.
As to me this is a way better in long term than current approach.
I like to see immediately that some symbol is exported instead of
stepping into extra/exports or whatever.
But again, as I said I hate to do it in a rush and any scheme you
provide now is ok for me sice we can change it transparently if we will.
>
> > If a function is not present in the tarantool binary - e.g.
> > dropped as not used from static library - it should not be available
> > anyways. Will it work you, Mons?
>
> All our public C API functions are defined in static libraries, and
> many of them are not used in the executable nor used by FFI. And
> still they should be available for dynamic user modules (.so, .dylib).
Cyrill
next prev parent reply other threads:[~2020-04-16 12:13 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 [this message]
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 ` [Tarantool-patches] [PATCH 00/43] Unhide symbols Vladislav Shpilevoy
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=20200416121350.GR3072@uranus \
--to=gorcunov@gmail.com \
--cc=tarantool-patches@dev.tarantool.org \
--cc=v.shpilevoy@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