From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1035.google.com (mail-pj1-x1035.google.com [IPv6:2607:f8b0:4864:20::1035]) by sourceware.org (Postfix) with ESMTPS id 6E16F3858022 for ; Wed, 27 Jan 2021 12:37:59 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 6E16F3858022 Received: by mail-pj1-x1035.google.com with SMTP id a20so1181571pjs.1 for ; Wed, 27 Jan 2021 04:37:59 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=dwJOcCqeuYuzdTauOtslTuNNgUzBvzYC3yDaeAfhhXg=; b=IO6pYbnJ0zd/ng7c3OSyPhTBnmU1jAim+YNCikQidR4IAiEGyqe2ny6dPl2TiA8yRJ DinYAqayN/HxjvWF/hVcESMRiAa9zynXcRf+udRV4hF5JIqb1P9dniXv1yihZDT1Ykxx W/CmbPBwRKD/dmYomMuwKB1yxA21fNqQ1a2FhKlEjlUKNUHPR8LYqvjU1OLYHGtMrPXL kB+IONYs8PUnoi47YR0rE9tbakJk0FIITwy0PL5YMcT4wvDVUMVYLX7QwNeI39rmCqeb aDOioXilWxptPmCnajCfJ6MReNYV0g5YXM7hbaNSsZVRYERyQ+a8GIa+L55gH+Wf/mRP CY2g== X-Gm-Message-State: AOAM532TjbFpbN+NY2PJhKmS5eRzAAmKnKyLio+x9NQCTsR3GOrrgwC4 VsfTq47atbrq3kIzxoFxviM= X-Google-Smtp-Source: ABdhPJxu49XZX0h9/+LbxOHSAUVyqE6mWy+VR1RH8wMTAh8gIfzLokWX+EFmjmvjT0KO1uGP/4jODQ== X-Received: by 2002:a17:90b:3789:: with SMTP id mz9mr5711947pjb.4.1611751078579; Wed, 27 Jan 2021 04:37:58 -0800 (PST) Received: from localhost (g54.222-224-210.ppp.wakwak.ne.jp. [222.224.210.54]) by smtp.gmail.com with ESMTPSA id p8sm129933pgi.21.2021.01.27.04.37.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Jan 2021 04:37:57 -0800 (PST) Date: Wed, 27 Jan 2021 21:37:54 +0900 From: Stafford Horne To: Adhemerval Zanella Cc: libc-alpha@sourceware.org Subject: Re: [PATCH v2] posix/tst-rfc3484: Fix compile failure linking to local __stat64 Message-ID: <20210127123754.GV2002709@lianli.shorne-pla.net> References: <20210122230538.3423312-1-shorne@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jan 2021 12:38:01 -0000 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 > >