On Mon, Apr 12, 2021 at 03:24:00PM +0200, Martin Liška wrote: > On 4/12/21 2:45 PM, Jakub Jelinek wrote: > > On Mon, Apr 12, 2021 at 02:32:35PM +0200, Martin Liška wrote: > >> +If you have an older release of binutils release, then symbol alias needs > >> to > > > > s/binutils release/binutils/ > > Fixed. > > > > >> +be used: > >> + > >> +@smallexample > >> +__attribute__ ((__symver__ ("foo@@VERS_2"))) > >> +__attribute__ ((alias ("foo_v1"))) > >> +int symver_foo_v1 (void); > >> +@end smallexample > > > > The example should show two versions of foo rather than just one, otherwise > > it will confuse users. For symbol versions which just a single symbol they > > don't need any aliases... > > Very good point! Is it fine now?
Ok, thanks. > >From 6dda0ec10a1b0c60e6e9afe7fc45370d0132b5e3 Mon Sep 17 00:00:00 2001 > From: Martin Liska <mli...@suse.cz> > Date: Mon, 12 Apr 2021 13:42:33 +0200 > Subject: [PATCH] docs: update symver attribute description > > gcc/ChangeLog: > > * doc/extend.texi: Be more precise in documentation > of symver attribute. > --- > gcc/doc/extend.texi | 28 +++++++++++++++++++--------- > 1 file changed, 19 insertions(+), 9 deletions(-) > > diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi > index e28e1860990..6542ada6583 100644 > --- a/gcc/doc/extend.texi > +++ b/gcc/doc/extend.texi > @@ -3848,23 +3848,33 @@ foo_v1 (void) > Will produce a @code{.symver foo_v1, foo@@VERS_1} directive in the assembler > output. > > -One can also define multiple version for a given symbol. > +One can also define multiple version for a given symbol > +(starting from binutils 2.35). > > @smallexample > __attribute__ ((__symver__ ("foo@@VERS_2"), __symver__ ("foo@@VERS_3"))) > int symver_foo_v1 (void) > @{ > @} > - > -__attribute__ ((__symver__ ("bar@@VERS_2"))) > -__attribute__ ((__symver__ ("bar@@VERS_3"))) > -int symver_bar_v1 (void) > -@{ > -@} > @end smallexample > > -This example creates an alias of @code{foo_v1} with symbol name > -@code{symver_foo_v1} which will be version @code{VERS_2} of @code{foo}. > +This example creates a symbol name @code{symver_foo_v1} > +which will be version @code{VERS_2} and @code{VERS_3} of @code{foo}. > + > +If you have an older release of binutils, then symbol alias needs to > +be used: > + > +@smallexample > +__attribute__ ((__symver__ ("foo@@VERS_2"))) > +int foo_v1 (void) > +{ > + return 0; > +} > + > +__attribute__ ((__symver__ ("foo@VERS_3"))) > +__attribute__ ((alias ("foo_v1"))) > +int symver_foo_v1 (void); > +@end smallexample > > Finally if the parameter is @code{"@var{name2}@@@@@var{nodename}"} then in > addition to creating a symbol version (as if > -- > 2.31.1 > Jakub