This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Replace PREPARE_VERSION macro with inline function
- From: Tobias Klauser <tklauser at distanz dot ch>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- Cc: libc-alpha at sourceware dot org, Carlos O'Donell <carlos at redhat dot com>
- Date: Fri, 28 Jun 2019 11:03:30 +0200
- Subject: Re: [PATCH] Replace PREPARE_VERSION macro with inline function
- References: <20190524153941.10128-1-tklauser@distanz.ch> <e071e1f8-41e8-135b-5d98-33046e63506a@redhat.com>
Hi Adhemerval
On 2019-06-20 at 16:20:21 +0200, Carlos O'Donell <carlos@redhat.com> wrote:
> On 5/24/19 11:39 AM, Tobias Klauser wrote:
> > Suggested by Adhemerval Zanella
>
> Adhemerval,
>
> Since you made this suggestion I'll let you review :-)
>
> Tobias has copyright status with FSF, so we can install this patch.
Are there any changes needed to this patch? The other one
("Add missing VDSO_{NAME,HASH}_* macros and use them for
PREPARE_VERSION_KNOWN", commit 85c748f9ff3db4a7796472f90d4d80e9987b7922)
was added to the tree, but this one not yet.
Thanks and best regards
Tobias
> Thank you Tobias!
>
> > 2019-05-24 Tobias Klauser <tklauser@distanz.ch>
> >
> > * sysdeps/unix/sysv/linux/dl-vdso.h (PREPARE_VERSION): Remove macro.
> > (prepare_version_base): New helper inline function.
> > (prepare_version): New macro replacing PREPARE_VERSION.
> > (PREPARE_VERSION_KNOWN): Use prepare_version instead of PREPARE_VERSION.
> > ---
> > sysdeps/unix/sysv/linux/dl-vdso.h | 18 +++++++++---------
> > 1 file changed, 9 insertions(+), 9 deletions(-)
> >
> > diff --git a/sysdeps/unix/sysv/linux/dl-vdso.h b/sysdeps/unix/sysv/linux/dl-vdso.h
> > index 9e61ca742363..c418c697a3a4 100644
> > --- a/sysdeps/unix/sysv/linux/dl-vdso.h
> > +++ b/sysdeps/unix/sysv/linux/dl-vdso.h
> > @@ -24,19 +24,19 @@
> > #include <dl-hash.h>
> >
> > /* Create version number record for lookup. */
> > -#define PREPARE_VERSION(var, vname, vhash) \
> > - struct r_found_version var; \
> > - var.name = vname; \
> > - var.hidden = 1; \
> > - var.hash = vhash; \
> > - assert (var.hash == _dl_elf_hash (var.name)); \
> > - /* We don't have a specific file where the symbol can be found. */ \
> > - var.filename = NULL
> > +static inline struct r_found_version
> > +prepare_version_base (const char *name, ElfW(Word) hash)
> > +{
> > + assert (hash == _dl_elf_hash (name));
> > + return (struct r_found_version) { name, hash, 1, NULL };
> > +}
> > +#define prepare_version(vname) \
> > + prepare_version_base (VDSO_NAME_##vname, VDSO_HASH_##vname)
> >
> > /* Use this for the known version sets defined below, where we
> > record their precomputed hash values only once, in this file. */
> > #define PREPARE_VERSION_KNOWN(var, vname) \
> > - PREPARE_VERSION (var, VDSO_NAME_##vname, VDSO_HASH_##vname)
> > + struct r_found_version var = prepare_version (vname);
> >
> > #define VDSO_NAME_LINUX_2_6 "LINUX_2.6"
> > #define VDSO_HASH_LINUX_2_6 61765110
> >
>
>
> --
> Cheers,
> Carlos.
>