Thread (39 messages) 39 messages, 6 authors, 2014-06-20

Re: [RFC 0/2] __vdso_findsym

flat view

From: Ian Lance Taylor <hidden>
Date: 2014-06-15 19:50:40
Also in: lkml

On Sun, Jun 15, 2014 at 12:31 PM, H. Peter Anvin [off-list ref] wrote:
The weak symbols are well-known names.  The __vdso symbols are strong.
I see.  But I don't understand how this is supposed to work.  When I
link a program against gettimeofday, I get a reference to gettimeofday
with version GLIBC_2.2.5.  After all, I only link against libc.so; I
don't link against the vDSO.  The VDSO provides gettimeofday with
version LINUX_2.6.  Since those versions don't match, the gettimeofday
reference in my executable will not be satisfied by the definition in
the vDSO.  So at dynamic link time my program is always going to be
linked with the gettimeofday in libc.so, which will in turn call the
gettimeofday in the vDSO.

Am I missing something that makes the definition of gettimeofday with
version LINUX_2.6 in the vDSO useful?

Ian


On June 15, 2014 12:22:17 PM PDT, Ian Lance Taylor [off-list ref] wrote:
quoted
On Sun, Jun 15, 2014 at 12:14 PM, H. Peter Anvin [off-list ref] wrote:
quoted
If it doesn't, then you incur an additional indirection penalty.  The
strong __vdso symbol allows the libc wrapper to fall back to the vdso
implementation, the weak symbol allows three to be no wrapper at all.
This is good.
quoted
The reason for changing ABI would be shifting types.  This is very
much how glibc manages transitions.

The purpose of symbol versioning is so that symbols with well known
names, like stat, can continue to use those same names while changing
types.  Both old and new programs can continue to use the name stat
and continue to work even though they use different types.

I don't see how this applies to the kernel VDSO.  Those symbols do not
use well-known names; they use names like __vdso_time.  If you change
the types used by those symbols, you can change the name as well.
What is the downside?

Ian
--
Sent from my mobile phone.  Please pardon brevity and lack of formatting.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help