All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zdenek Kabelac <zkabelac@redhat.com>
To: Marcin Niestroj <m.niestroj@grinn-global.com>, dm-devel@redhat.com
Subject: Re: [RESEND PATCH v2] configure: Introduce --enable-symvers option
Date: Mon, 3 Sep 2018 16:42:28 +0200	[thread overview]
Message-ID: <c983376a-50fd-d807-7daf-e4508aac6009@redhat.com> (raw)
In-Reply-To: <20180831144817.31207-1-m.niestroj@grinn-global.com>

Dne 31.8.2018 v 16:48 Marcin Niestroj napsal(a):
> Only few libc (e.g. glibc) libraries support full symbol version
> resolution in runtime. There are lot of standard libraries that do not
> support that, such as dietlibc, musl and uclibc. Hence there is no
> reason to generate symbol versions when compiling against them.

Hi

Before going into depth of patch itself - I'd like to get clear first what is 
wrong with existing solution.

#if defined(__GNUC__)

was supposed to be protecting against problematic usage - but it's more 
towards  'gcc'  compiler usage - where the version is tied to compiler 
infrastructure.

So now you say that other libraries do not support symbol versioning at all 
(so I'm quite wondering how they are able to handle backward compatibility???)

One would have to always introduce completely NEW symbols??


> Additionally libdevmapper.so was broken when compiled against
> uclibc. Runtime linker loader caused calling dm_task_get_info_base()
> function recursively, leading to segmentation fault.
> 
> Introduce --enable-symvers[=STYLE] option, which allows to choose
> between gnu and disabled symbol versioning. By default gnu symbol
> versioning is used to provide backward compatibility.
> __GNUC__ check is replaced now with GNU_SYMVER, which is generated by
> configure script. Additionally ld version script is included only in
> case of gnu option, which slightly reduces output size.

Yep - the idea was to support always 'last symbol' for compilers which do not 
support symbol versioning.

But your case seems to be you use 'gcc'  compiler,
but surrouding libraries are not 'versioning-aware' ?

So what's you plan how to solve backward compatibility  -  is i.e.  'uclibc' 
always user in a way   'recompile everything from scratch' ??

Why is the system compiled with 'gcc'  not supporting versioning?

What is the plan how to resolve binary backward compatibility here?
(as you clearly cannot  run  'old compiled binary' with new build libdm  if 
you provide only latest symbols in some cases)  - is the  'I don't care' 
policy applied regularly on such  system ?


Zdenek

  reply	other threads:[~2018-09-03 14:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-31 14:48 [RESEND PATCH v2] configure: Introduce --enable-symvers option Marcin Niestroj
2018-09-03 14:42 ` Zdenek Kabelac [this message]
2018-09-05 11:03   ` Marcin Niestrój

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=c983376a-50fd-d807-7daf-e4508aac6009@redhat.com \
    --to=zkabelac@redhat.com \
    --cc=dm-devel@redhat.com \
    --cc=m.niestroj@grinn-global.com \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.