This is the mail archive of the
cygwin-patches
mailing list for the Cygwin project.
[PATCH] Cygwin: unbreak the build with GCC 7
- From: Ken Brown <kbrown at cornell dot edu>
- To: "cygwin-patches at cygwin dot com" <cygwin-patches at cygwin dot com>
- Date: Fri, 19 Jul 2019 18:27:26 +0000
- Subject: [PATCH] Cygwin: unbreak the build with GCC 7
- Arc-authentication-results: i=1; mx.microsoft.com 1;spf=pass smtp.mailfrom=cornell.edu;dmarc=pass action=none header.from=cornell.edu;dkim=pass header.d=cornell.edu;arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gW0AfCRsSeCLZ1M4nYhdheXsHqoEAUG0O54qJmO0+G0=; b=DZDs2KQWFihSUsdjbv9fOJFaLeXDmiODriq7fkdMrs2DapWmztc2ep5zP/3SkcCYxDlM2PTdkHyDjgYaqV+b6S0NGiEIbBAWnERZ5xTet94jD0Qafvm+ZIR0Z7+s/HQi9c1jhE82Byi4MIjycAsYAKcvseRZzWkT6Q2uqA7Ol5C60zRDE1xNMplau7wba60NDHoW7CNJCzdbqyTSlSXvjsAjeGSQamZ2y8wRSLLDBePds6WzShF00eN4KrTZDhzCooAN7Q1Oadn6TKoRnkBoVMvtJVisxyUfH4X+IUIpTHETe2yYLewVirbDVR7RTPSoktyTnj2EnNUi3xW+xCAPLQ==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mQ5+dPsmLLadSKJnaOVEbRZGhTTyjIIArz0Mzcu/lAJvHN2R+0lJEOOW+Nj5AGt7Qp+S4SEuz50y59Q9mNk4Oknpmai3rn0hW+f++ebuCE2zcKy0dG7e/Egp6pBvz4nwkg3taLolmHn0P/Ox9KmbvTbu5TMY6FQKlLU6DPjhs8Ipd/WXwqfNMHaAX5S4UUgqV/sGAcsALs4i/XKg4w/lT2J1M57IJgT3V0TPLkxvdIKCn1lUZHXMVQrWilEogoZ+5XhM7DKxjqlh+JMxF7G6GeUAxoWso6BaDaxcXm6DSVBDUhyHdgNsTmJRleZwl2tKlEL+NSCIXPyul0T80FHnFg==
The recent port to GCC 8 used the 'nonstring' attribute, which is
unknown to GCC 7. Define and use an 'ATTRIBUTE_NONSTRING' macro
instead.
---
winsup/cygwin/include/sys/utmp.h | 11 ++++++++---
winsup/cygwin/uname.cc | 8 +++++++-
2 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/winsup/cygwin/include/sys/utmp.h b/winsup/cygwin/include/sys/utmp.h
index acf804ad0..443c44252 100644
--- a/winsup/cygwin/include/sys/utmp.h
+++ b/winsup/cygwin/include/sys/utmp.h
@@ -19,16 +19,21 @@ extern "C" {
#define ut_name ut_user
#endif
+#if __GNUC__ >= 8
+#define ATTRIBUTE_NONSTRING __attribute__ ((nonstring))
+#else
+#define ATTRIBUTE_NONSTRING
+#endif
struct utmp
{
short ut_type;
pid_t ut_pid;
- char ut_line[UT_LINESIZE] __attribute__ ((nonstring));
+ char ut_line[UT_LINESIZE] ATTRIBUTE_NONSTRING;
char ut_id[UT_IDLEN];
time_t ut_time;
- char ut_user[UT_NAMESIZE] __attribute__ ((nonstring));
- char ut_host[UT_HOSTSIZE] __attribute__ ((nonstring));
+ char ut_user[UT_NAMESIZE] ATTRIBUTE_NONSTRING;
+ char ut_host[UT_HOSTSIZE] ATTRIBUTE_NONSTRING;
long ut_addr;
};
diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc
index e323335b4..350216681 100644
--- a/winsup/cygwin/uname.cc
+++ b/winsup/cygwin/uname.cc
@@ -17,6 +17,12 @@ details. */
extern "C" int cygwin_gethostname (char *__name, size_t __len);
extern "C" int getdomainname (char *__name, size_t __len);
+#if __GNUC__ >= 8
+#define ATTRIBUTE_NONSTRING __attribute__ ((nonstring))
+#else
+#define ATTRIBUTE_NONSTRING
+#endif
+
/* uname: POSIX 4.4.1.1 */
/* New entrypoint for applications since API 335 */
@@ -25,7 +31,7 @@ uname_x (struct utsname *name)
{
__try
{
- char buf[NI_MAXHOST + 1] __attribute__ ((nonstring));
+ char buf[NI_MAXHOST + 1] ATTRIBUTE_NONSTRING;
char *snp = strstr (cygwin_version.dll_build_date, "SNP");
memset (name, 0, sizeof (*name));
--
2.21.0