This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] hurd: Fix build after __pread64 usage in the dynamic loader
- From: Samuel Thibault <samuel dot thibault at ens-lyon dot org>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: libc-alpha at sourceware dot org, Carlos O'Donell <carlos at redhat dot com>
- Date: Thu, 24 Oct 2019 15:50:04 +0200
- Subject: Re: [PATCH] hurd: Fix build after __pread64 usage in the dynamic loader
- References: <87blu6cl5k.fsf@oldenburg2.str.redhat.com>
Florian Weimer, le jeu. 24 oct. 2019 15:45:11 +0200, a ecrit:
> Commit 95c1056962a3f2297c94ce47f0eaf0c5b6563231 ("elf: Use nocancel
> pread64() instead of lseek()+read()") added calls to __pread64 to
> the dynamic loader. On Hurd, this needs an implementation in the
> dynamic loader because the rtld-pread64 rebuild pulls in too many
> symbols.
>
> Fixes: 95c1056962a3f2297c94ce47f0eaf0c5b6563231
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Thanks!
> -----
> sysdeps/mach/hurd/dl-sysdep.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/sysdeps/mach/hurd/dl-sysdep.c b/sysdeps/mach/hurd/dl-sysdep.c
> index 219475aa7d..719d603f44 100644
> --- a/sysdeps/mach/hurd/dl-sysdep.c
> +++ b/sysdeps/mach/hurd/dl-sysdep.c
> @@ -357,9 +357,9 @@ __close (int fd)
> return 0;
> }
>
> -check_no_hidden(__read);
> +check_no_hidden(__pread64);
> __ssize_t weak_function
> -__read (int fd, void *buf, size_t nbytes)
> +__pread64 (int fd, void *buf, size_t nbytes, off64_t offset)
> {
> error_t err;
> char *data;
> @@ -367,7 +367,7 @@ __read (int fd, void *buf, size_t nbytes)
>
> data = buf;
> nread = nbytes;
> - err = __io_read ((mach_port_t) fd, &data, &nread, -1, nbytes);
> + err = __io_read ((mach_port_t) fd, &data, &nread, offset, nbytes);
> if (err)
> return __hurd_fail (err);
>
> @@ -379,6 +379,14 @@ __read (int fd, void *buf, size_t nbytes)
>
> return nread;
> }
> +libc_hidden_weak (__pread64)
> +
> +check_no_hidden(__read);
> +__ssize_t weak_function
> +__read (int fd, void *buf, size_t nbytes)
> +{
> + return __pread64 (fd, buf, nbytes, -1);
> +}
> libc_hidden_weak (__read)
>
> check_no_hidden(__write);
>
--
Samuel
«Tiens, quand j'aurai un peu de temps et une partition libre, je crois
que je vais essayer de remplacer mes scripts de démarrage par des
programmes Windows lancés via Wine et binfmt_misc :-)»
-+- AGV in Guide du linuxien pervers - "J'sais pas quoi faire... (air connu)"