From patchwork Tue Dec 29 19:49:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella X-Patchwork-Id: 41589 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C41693857010; Tue, 29 Dec 2020 19:49:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C41693857010 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1609271379; bh=AZFd4uS7eUtQ4AhmGjVRGQDZPeyifwkBWD5iVqL2aOk=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=XdN7Ra5wBOMv+8T1/Yb6vUqOdSja9sc3t453OfoOCxFu7v+Pt65zQTLzG47cIMyX7 T4AS8jKd8FzVUFZUniW3vATAJLrnVP6F8O8XqFVdp5x+mEqWj3qNgzDVQDLfFq5/7s PUEXEnQ8Ragwcj0QoCFaLmLx3kMwf1XXOhNNv/dk= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-x733.google.com (mail-qk1-x733.google.com [IPv6:2607:f8b0:4864:20::733]) by sourceware.org (Postfix) with ESMTPS id A2B163857C69 for ; Tue, 29 Dec 2020 19:49:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org A2B163857C69 Received: by mail-qk1-x733.google.com with SMTP id f26so12334895qka.0 for ; Tue, 29 Dec 2020 11:49:36 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=AZFd4uS7eUtQ4AhmGjVRGQDZPeyifwkBWD5iVqL2aOk=; b=RG7JAVsXmoJTpQmaN1wQ/4VILwgLQub3I3/A2e7TZRc4jYSic/jlUCLcXn7WkqB7FI gqM1Kfy9iIrewaqz2uGLUg8J+XLLHN/nMzJ2+nl2QC4MZ7ggtRPkIxLQh6AoM6ztXTIv 3ZxfDSAN81rDQV326w/ptgGk9xV1o/EToR/txFjZ6OGYAd/+DWOJs7CW2C/Vkr2IW09y Kbw3dv0eZZGExGNCj66vLLFWIrtfyUZ1nYHjVxnBdsRvhjHYm32fVR+4BqlIAUxooYXV WmS4ScslZbXHZJj6lfnq0hssl92uPSk+UADkXIyoCO3KFPeQ6qvbxptnbBgvJbNVefh8 xdaQ== X-Gm-Message-State: AOAM533/+lDnK2WKUhF90uVEHCUfJJui9videroE5k1XFfZxl8Sp3vQg E5Dw6vWcuv+w17EHZBsaSA0dcg1XjO7xgw== X-Google-Smtp-Source: ABdhPJwKyHQk9XrXKILTsHdU8WkQghCf1y5P8kpiPg/ZsKViUqN6nWnL1ojWY7IAvIkzogWfkVjRBw== X-Received: by 2002:a05:620a:804:: with SMTP id s4mr51260431qks.158.1609271375829; Tue, 29 Dec 2020 11:49:35 -0800 (PST) Received: from localhost.localdomain ([177.194.48.209]) by smtp.googlemail.com with ESMTPSA id s21sm26091150qtn.13.2020.12.29.11.49.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Dec 2020 11:49:35 -0800 (PST) To: libc-alpha@sourceware.org, Andreas Schwab , Florian Weimer Subject: [PATCH] Revert "linux: Move {f}xstat{at} to compat symbols" for static build Date: Tue, 29 Dec 2020 16:49:29 -0300 Message-Id: <20201229194929.130589-1-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP 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-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" This reverts commit 20b39d59467b0c1d858e89ded8b0cebe55e22f60 for static library. This avoids the need to rebuild the world for the case where libstdc++ (and potentially other libraries) are linked to a old glibc. To avoid requering to provide xstat symbols for newer ABIs (such as riscv32) a new LIB_COMPAT macro is added. It is similar to SHLIB_COMPAT but also works for static case (thus evaluating similar to SHLIB_COMPAT for both shared and static case). Checked with a check-abi on all affected ABIs. I also check if the static library does contains the xstat symbols. --- include/shlib-compat.h | 23 ++++++++++++++--------- sysdeps/mach/hurd/fxstat.c | 5 ----- sysdeps/mach/hurd/fxstatat.c | 3 +-- sysdeps/mach/hurd/fxstatat64.c | 3 +-- sysdeps/mach/hurd/lxstat64.c | 3 +-- sysdeps/mach/hurd/xstat.c | 2 +- sysdeps/unix/sysv/linux/fxstat.c | 4 ++-- sysdeps/unix/sysv/linux/fxstat64.c | 4 ++-- sysdeps/unix/sysv/linux/fxstatat.c | 4 ++-- sysdeps/unix/sysv/linux/fxstatat64.c | 4 ++-- sysdeps/unix/sysv/linux/lxstat.c | 2 +- sysdeps/unix/sysv/linux/lxstat64.c | 4 ++-- sysdeps/unix/sysv/linux/xstat.c | 6 +++--- sysdeps/unix/sysv/linux/xstat64.c | 5 +++-- 14 files changed, 35 insertions(+), 37 deletions(-) diff --git a/include/shlib-compat.h b/include/shlib-compat.h index b58281857a..d6dae3bea9 100644 --- a/include/shlib-compat.h +++ b/include/shlib-compat.h @@ -21,8 +21,6 @@ # include -#ifdef SHARED - /* The file abi-versions.h (generated by scripts/abi-versions.awk) defines symbols like `ABI_libm_GLIBC_2_0' for each version set in the source code for each library. For a version set that is subsumed by a later @@ -34,17 +32,24 @@ when the two version sets named are in fact two different ABIs we are supporting. If these do not differ, then there is no need to compile in extra code to support this version set where it has been superseded by a - newer version. The compatibility code should be conditionalized with - e.g. `#if SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_2)' for code introduced - in the GLIBC_2.0 version and obsoleted in the GLIBC_2.2 version. */ - -# define SHLIB_COMPAT(lib, introduced, obsoleted) \ - _SHLIB_COMPAT (lib, introduced, obsoleted) -# define _SHLIB_COMPAT(lib, introduced, obsoleted) \ + newer version. */ +#define LIB_COMPAT(lib, introduced, obsoleted) \ + _LIB_COMPAT (lib, introduced, obsoleted) +#define _LIB_COMPAT(lib, introduced, obsoleted) \ (IS_IN (lib) \ && (!(ABI_##lib##_##obsoleted - 0) \ || ((ABI_##lib##_##introduced - 0) < (ABI_##lib##_##obsoleted - 0)))) +#ifdef SHARED + +/* Similar to LIB_COMPAT, but evaluate to 0 for static build. The + compatibility code should be conditionalized with e.g. + `#if SHLIB_COMPAT (libm, GLIBC_2_0, GLIBC_2_2)' for code introduced + in the GLIBC_2.0 version and obsoleted in the GLIBC_2.2 version. */ + +# define SHLIB_COMPAT(lib, introduced, obsoleted) \ + _LIB_COMPAT (lib, introduced, obsoleted) + /* That header also defines symbols like `VERSION_libm_GLIBC_2_1' to the version set name to use for e.g. symbols first introduced into libm in the GLIBC_2.1 version. Definitions of symbols with explicit diff --git a/sysdeps/mach/hurd/fxstat.c b/sysdeps/mach/hurd/fxstat.c index 3201bb8cf1..e7e4b6e65e 100644 --- a/sysdeps/mach/hurd/fxstat.c +++ b/sysdeps/mach/hurd/fxstat.c @@ -19,9 +19,6 @@ #include #include #include -#include - -#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) /* Get information about the file descriptor FD in BUF. */ int @@ -33,5 +30,3 @@ __fxstat (int vers, int fd, struct stat *buf) return __fstat (fd, buf); } weak_alias (__fxstat, _fxstat) - -#endif diff --git a/sysdeps/mach/hurd/fxstatat.c b/sysdeps/mach/hurd/fxstatat.c index b71ab9fad5..b7f6ca742a 100644 --- a/sysdeps/mach/hurd/fxstatat.c +++ b/sysdeps/mach/hurd/fxstatat.c @@ -22,7 +22,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) int __fxstatat (int vers, int fd, const char *filename, struct stat *buf, int flag) @@ -32,5 +32,4 @@ __fxstatat (int vers, int fd, const char *filename, struct stat *buf, int flag) return __fstatat (fd, filename, buf, flag); } - #endif diff --git a/sysdeps/mach/hurd/fxstatat64.c b/sysdeps/mach/hurd/fxstatat64.c index f0c171f64c..8f401ddff2 100644 --- a/sysdeps/mach/hurd/fxstatat64.c +++ b/sysdeps/mach/hurd/fxstatat64.c @@ -23,7 +23,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) /* Get information about the file descriptor FD in BUF. */ int @@ -35,5 +35,4 @@ __fxstatat64 (int vers, int fd, const char *filename, struct stat64 *buf, return __fstatat64 (fd, filename, buf, flag); } - #endif diff --git a/sysdeps/mach/hurd/lxstat64.c b/sysdeps/mach/hurd/lxstat64.c index 7059bceb11..4975044ac3 100644 --- a/sysdeps/mach/hurd/lxstat64.c +++ b/sysdeps/mach/hurd/lxstat64.c @@ -22,7 +22,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33) /* Get information about the file descriptor FD in BUF. */ int @@ -33,5 +33,4 @@ __lxstat64 (int vers, const char *file, struct stat64 *buf) return __lstat64 (file, buf); } - #endif diff --git a/sysdeps/mach/hurd/xstat.c b/sysdeps/mach/hurd/xstat.c index 8d56fe3c44..03b86ccb24 100644 --- a/sysdeps/mach/hurd/xstat.c +++ b/sysdeps/mach/hurd/xstat.c @@ -20,7 +20,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) /* Get file information about FILE in BUF. */ int diff --git a/sysdeps/unix/sysv/linux/fxstat.c b/sysdeps/unix/sysv/linux/fxstat.c index 528eedc272..0b89250b8b 100644 --- a/sysdeps/unix/sysv/linux/fxstat.c +++ b/sysdeps/unix/sysv/linux/fxstat.c @@ -26,7 +26,7 @@ # include # include -# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) +# if LIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) /* Get information about the file FD in BUF. */ int @@ -61,6 +61,6 @@ __fxstat (int vers, int fd, struct stat *buf) } } -# endif /* SHLIB_COMPAT */ +# endif /* LIB_COMPAT */ #endif /* XSTAT_IS_XSTAT64 */ diff --git a/sysdeps/unix/sysv/linux/fxstat64.c b/sysdeps/unix/sysv/linux/fxstat64.c index 9471d0be45..177233d759 100644 --- a/sysdeps/unix/sysv/linux/fxstat64.c +++ b/sysdeps/unix/sysv/linux/fxstat64.c @@ -26,7 +26,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) /* Get information about the file FD in BUF. */ @@ -78,4 +78,4 @@ strong_alias (___fxstat64, __fxstat64) strong_alias (___fxstat64, __fxstat) #endif -#endif /* SHLIB_COMPAT */ +#endif /* LIB_COMPAT */ diff --git a/sysdeps/unix/sysv/linux/fxstatat.c b/sysdeps/unix/sysv/linux/fxstatat.c index bd78971dea..78856742ef 100644 --- a/sysdeps/unix/sysv/linux/fxstatat.c +++ b/sysdeps/unix/sysv/linux/fxstatat.c @@ -26,7 +26,7 @@ # include # include -# if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) +# if LIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) /* Get information about the file FD in BUF. */ int @@ -50,6 +50,6 @@ __fxstatat (int vers, int fd, const char *file, struct stat *st, int flag) #endif } -# endif /* SHLIB_COMPAT */ +# endif /* LIB_COMPAT */ #endif /* XSTAT_IS_XSTAT64 */ diff --git a/sysdeps/unix/sysv/linux/fxstatat64.c b/sysdeps/unix/sysv/linux/fxstatat64.c index 091da83f1f..f23f877109 100644 --- a/sysdeps/unix/sysv/linux/fxstatat64.c +++ b/sysdeps/unix/sysv/linux/fxstatat64.c @@ -26,7 +26,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) /* Get information about the file FD in BUF. */ @@ -69,4 +69,4 @@ __fxstatat64 (int vers, int fd, const char *file, struct stat64 *st, int flag) strong_alias (__fxstatat64, __fxstatat) #endif -#endif /* SHLIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) */ +#endif /* LIB_COMPAT(libc, GLIBC_2_4, GLIBC_2_33) */ diff --git a/sysdeps/unix/sysv/linux/lxstat.c b/sysdeps/unix/sysv/linux/lxstat.c index c7d4507d7c..a11f58b453 100644 --- a/sysdeps/unix/sysv/linux/lxstat.c +++ b/sysdeps/unix/sysv/linux/lxstat.c @@ -26,7 +26,7 @@ # include # include -# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) +# if LIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) /* Get information about the file NAME in BUF. */ int diff --git a/sysdeps/unix/sysv/linux/lxstat64.c b/sysdeps/unix/sysv/linux/lxstat64.c index 74e11f3467..4d9d058d4b 100644 --- a/sysdeps/unix/sysv/linux/lxstat64.c +++ b/sysdeps/unix/sysv/linux/lxstat64.c @@ -26,7 +26,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_33) /* Get information about the file NAME in BUF. */ @@ -95,4 +95,4 @@ strong_alias (___lxstat64, __lxstat64); strong_alias (___lxstat64,__lxstat) #endif -#endif /* SHLIB_COMPAT */ +#endif /* LIB_COMPAT */ diff --git a/sysdeps/unix/sysv/linux/xstat.c b/sysdeps/unix/sysv/linux/xstat.c index 87556af616..ff95479612 100644 --- a/sysdeps/unix/sysv/linux/xstat.c +++ b/sysdeps/unix/sysv/linux/xstat.c @@ -20,13 +20,13 @@ #include #include #include -#include #if !XSTAT_IS_XSTAT64 # include # include +# include -# if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) +# if LIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) /* Get information about the file NAME in BUF. */ int @@ -61,6 +61,6 @@ __xstat (int vers, const char *name, struct stat *buf) } } -# endif /* SHLIB_COMPAT */ +# endif /* LIB_COMPAT */ #endif /* XSTAT_IS_XSTAT64 */ diff --git a/sysdeps/unix/sysv/linux/xstat64.c b/sysdeps/unix/sysv/linux/xstat64.c index ec912fd2b9..9b05d1528b 100644 --- a/sysdeps/unix/sysv/linux/xstat64.c +++ b/sysdeps/unix/sysv/linux/xstat64.c @@ -26,7 +26,7 @@ #include #include -#if SHLIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) +#if LIB_COMPAT(libc, GLIBC_2_0, GLIBC_2_33) /* Get information about the file NAME in BUF. */ @@ -92,4 +92,5 @@ compat_symbol (libc, __old__xstat64, __xstat64, GLIBC_2_1); strong_alias (___xstat64, __xstat64) #endif -#endif /* SHLIB_COMPAT */ + +#endif /* LIB_COMPAT */