From: Stafford Horne via Libc-alpha <libc-alpha@sourceware.org>
To: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Cc: libc-alpha@sourceware.org
Subject: Re: [PATCH v2] posix/tst-rfc3484: Fix compile failure linking to local __stat64
Date: Wed, 27 Jan 2021 21:37:54 +0900 [thread overview]
Message-ID: <20210127123754.GV2002709@lianli.shorne-pla.net> (raw)
In-Reply-To: <a8223bf6-790f-a28a-84dc-11ca432832d0@linaro.org>
On Mon, Jan 25, 2021 at 11:55:43AM -0300, Adhemerval Zanella wrote:
>
>
> On 22/01/2021 20:05, Stafford Horne via Libc-alpha wrote:
> > After 04986243d1 ("Remove internal usage of extensible stat functions")
> > linking the __stat64 symbol in getaddrinfo for this test fails with the
> > below error:
> >
> > /home/shorne/work/gnu-toolchain/local/lib/gcc/or1k-smh-linux-gnu/11.0.0/../../../../or1k-smh-linux-gnu/bin/ld: /home/shorne/work/gnu-toolchain/build-glibc/posix/tst-rfc3484.o: in function `gaiconf_reload':
> > /home/shorne/work/gnu-toolchain/glibc/posix/../sysdeps/posix/getaddrinfo.c:2136: undefined reference to `__stat64'
> > collect2: error: ld returned 1 exit status
> >
> > This is because __stat64 is a local symbol, the test includes the
> > getaddrinfo directly and fails to link against the local symbol. Fix
> > this by setting up an alias to the global stat64 symbol name like is
> > done for other local symbol usage.
>
> I am trying to understand why I haven't see a similar issue for riscv32,
> since it does not provide any xstat symbols. It seems that for tests,
> I am not seeing any __stat64 call, but rather __fstat64 ones:
>
> $ riscv32-glibc-linux-gnu-objdump -t posix/tst-rfc3484.o | grep stat
> 00000000 *UND* 00000000 __fstat64
> $ riscv32-glibc-linux-gnu-objdump -t posix/tst-rfc3484-2.o | grep stat
> 00000000 *UND* 00000000 __fstat64
> $ riscv32-glibc-linux-gnu-objdump -t posix/tst-rfc3484-3.o | grep stat
> 00000000 *UND* 00000000 __fstat64
>
> It comes from gaiconf_init and I am not sure why __stat64 call from
> gaiconf_reload is not being generated (maybe this is being optimized
> out).
>
> And the __fstat64 seems to not generate a linking error because is being
> exported by libc.so in GLIBC_PRIVATE namespace (due 8ed005daf0ab03). I
> added this because of the libpthread usage, but it seems we don't
> actually required it. For 2.34 I plan to send:
Thanks for the explaination. I also wonder why it wasn't showing up in other
platforms.
> diff --git a/io/Versions b/io/Versions
> index 49c4d2d40a..4ffafd4bde 100644
> --- a/io/Versions
> +++ b/io/Versions
> @@ -145,6 +145,5 @@ libc {
> __file_change_detection_for_stat;
> __file_change_detection_for_path;
> __file_change_detection_for_fp;
> - __fstat64;
> }
> }
> diff --git a/sysdeps/pthread/sem_open.c b/sysdeps/pthread/sem_open.c
> index b0b722121d..b3b4de779b 100644
> --- a/sysdeps/pthread/sem_open.c
> +++ b/sysdeps/pthread/sem_open.c
> @@ -68,7 +68,7 @@ check_add_mapping (const char *name, size_t namelen, int fd, sem_t *existing)
>
> /* Get the information about the file. */
> struct stat64 st;
> - if (__fstat64 (fd, &st) == 0)
> + if (fstat64 (fd, &st) == 0)
> {
> /* Get the lock. */
> lll_lock (__sem_mappings_lock, LLL_PRIVATE);
>
> To remove the __fstat64 requirement on GLIBC_PRIVATE.
>
> This patch looks ok on 2.34 opens.
>
> > ---
> > Changes since v1:
> > - Fix typo in commit s/list/like/
> > - Address other tests that fail with the same issue
> >
> > posix/tst-rfc3484-2.c | 1 +
> > posix/tst-rfc3484-3.c | 1 +
> > posix/tst-rfc3484.c | 1 +
> > 3 files changed, 3 insertions(+)
> >
> > diff --git a/posix/tst-rfc3484-2.c b/posix/tst-rfc3484-2.c
> > index 5f5ada9420..ce8ccd5f38 100644
> > --- a/posix/tst-rfc3484-2.c
> > +++ b/posix/tst-rfc3484-2.c
> > @@ -11,6 +11,7 @@
> > #define __gethostbyaddr_r gethostbyaddr_r
> > #define __gethostbyname2_r gethostbyname2_r
> > #define __qsort_r qsort_r
> > +#define __stat64 stat64
> >
> > void
> > attribute_hidden
> > diff --git a/posix/tst-rfc3484-3.c b/posix/tst-rfc3484-3.c
> > index d9ec5cc851..ecb163963f 100644
> > --- a/posix/tst-rfc3484-3.c
> > +++ b/posix/tst-rfc3484-3.c
> > @@ -11,6 +11,7 @@
> > #define __gethostbyaddr_r gethostbyaddr_r
> > #define __gethostbyname2_r gethostbyname2_r
> > #define __qsort_r qsort_r
> > +#define __stat64 stat64
> >
> > void
> > attribute_hidden
> > diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c
> > index 97d065b6bf..3b2052eb54 100644
> > --- a/posix/tst-rfc3484.c
> > +++ b/posix/tst-rfc3484.c
> > @@ -11,6 +11,7 @@
> > #define __gethostbyaddr_r gethostbyaddr_r
> > #define __gethostbyname2_r gethostbyname2_r
> > #define __qsort_r qsort_r
> > +#define __stat64 stat64
> >
> > void
> > attribute_hidden
> >
prev parent reply other threads:[~2021-01-27 12:38 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-22 23:05 [PATCH v2] posix/tst-rfc3484: Fix compile failure linking to local __stat64 Stafford Horne via Libc-alpha
2021-01-25 14:55 ` Adhemerval Zanella via Libc-alpha
2021-01-27 12:37 ` Stafford Horne via Libc-alpha [this message]
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
List information: https://www.gnu.org/software/libc/involved.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210127123754.GV2002709@lianli.shorne-pla.net \
--to=libc-alpha@sourceware.org \
--cc=adhemerval.zanella@linaro.org \
--cc=shorne@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).