From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id 7B85E388A76A; Thu, 8 Dec 2022 13:17:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7B85E388A76A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1670505470; bh=e+3U5BO7l8P1u28AWQ2nzYVm8sXSeghEkyvcKLcFpvQ=; h=From:To:Subject:Date:From; b=ieCLC+GeXc0+NcVPdHsOliLV3Cp1zMT7inHGcsQNICm0ZZeS72AZTtLeIINiJxdWq iaeMAwexbawOkofafs8Cep2gnv6T6IR+z5dA4dwDpGF+tLhKB/9vRo4eVKsIqiowxF R5CnLjt4EtEwaEEncqkiM/U2cAFzxNrywScuSBIM= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: rename __sFILE to __sFILE64 for backward compatibility X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/master X-Git-Oldrev: 53ea7b2d5a3858e18b1615090701fa5bd0e28965 X-Git-Newrev: 0f376ae22036bac2fbc7863264909b599e42616c Message-Id: <20221208131750.7B85E388A76A@sourceware.org> Date: Thu, 8 Dec 2022 13:17:50 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D0f376ae2203= 6bac2fbc7863264909b599e42616c commit 0f376ae22036bac2fbc7863264909b599e42616c Author: Corinna Vinschen AuthorDate: Thu Dec 8 13:58:37 2022 +0100 Commit: Corinna Vinschen CommitDate: Thu Dec 8 13:58:37 2022 +0100 Cygwin: rename __sFILE to __sFILE64 for backward compatibility =20 Until Cygwin 3.3.6, we define __LARGE64_FILES unconditionally, so we were using the type __sFILE64 even for 64 bit. That was lazy and wrong. so commit 2902b3a09e0a ("Cygwin: drop requirement to build newlib's stdio64") tried to fix that. =20 Unfortunately this patch forgot to take the exposure of the typename __sFILE64 in userspace into account. This leads to trouble in C++ due to name mangling. =20 Fix this by redefining __sFILE to __sFILE64. The type name is very much internal, so it doesn't really matter, except for the fact that it needs to stay backward compatible so as not to break building against C++ libs built under older versions of Cygwin. =20 Fixes: 2902b3a09e0a ("Cygwin: drop requirement to build newlib's stdio6= 4") Signed-off-by: Corinna Vinschen Diff: --- winsup/cygwin/include/cygwin/config.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/winsup/cygwin/include/cygwin/config.h b/winsup/cygwin/include/= cygwin/config.h index 2a708327890b..c9c3565c63a3 100644 --- a/winsup/cygwin/include/cygwin/config.h +++ b/winsup/cygwin/include/cygwin/config.h @@ -49,6 +49,12 @@ extern inline struct _reent *__getreent (void) =20 #define __FILENAME_MAX__ 4096 /* Keep in sync with PATH_MAX in limits.h. */ =20 +/* Unfortunately we defined __LARGE64_FILES until Cygwin 3.3.6, so + FILE was based on `struct __sFILE64'. The name is exposed into + userspace and consequentially used in C++ name mangling. We must + redefine __sFILE as __sFILE64 to stay backward compatible. */ +#define __sFILE __sFILE64 + /* The following block of macros is required to build newlib correctly for Cygwin. Changing them in applications has no or not the desired effect. Just leave them alone. */