public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH] libssp: Fix gets-chk.c compilation on Solaris
@ 2023-12-04 10:42 Rainer Orth
  2023-12-07 12:25 ` Rainer Orth
  2023-12-07 12:59 ` Jakub Jelinek
  0 siblings, 2 replies; 5+ messages in thread
From: Rainer Orth @ 2023-12-04 10:42 UTC (permalink / raw)
  To: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 2173 bytes --]

The recent warning patches broke the libssp build on Solaris:

/vol/gcc/src/hg/master/local/libssp/gets-chk.c: In function '__gets_chk':
/vol/gcc/src/hg/master/local/libssp/gets-chk.c:67:12: error: implicit declaration of function 'gets'; did you mean 'getw'? [-Wimplicit-function-declaration]
   67 |     return gets (s);
      |            ^~~~
      |            getw 
/vol/gcc/src/hg/master/local/libssp/gets-chk.c:67:12: error: returning 'int' from a function with return type 'char *' makes pointer from integer without a cast [-Wint-conversion]       
   67 |     return gets (s);
      |            ^~~~~~~~
/vol/gcc/src/hg/master/local/libssp/gets-chk.c:74:12: error: returning 'int' from a function with return type 'char *' makes pointer from integer without a cast [-Wint-conversion]
   74 |     return gets (s);
      |            ^~~~~~~~

The guard around the gets declaration in gets-chk.c is

#if !(!defined __USE_ISOC11                             \
      || (defined __cplusplus && __cplusplus <= 201103L))
extern char *gets (char *);
#endif

__USE_ISOC11 is a glibc-only thing, while Solaris <iso/stdio_iso.h>
declares gets like

#if __STDC_VERSION__ < 201112L && __cplusplus < 201402L
extern char     *gets(char *) __ATTR_DEPRECATED;
#endif

If one needs to check __USE_ISO11 at all, one certainly needs to check
__STDC_VERSION__ to avoid breaking every non-glibc target.  Besides, I
don't see what's the use of checking __cplusplus when compiling a C-only
source file.  On top of all that, the double negation makes the guard
unnecessarily hard to understand.

I really don't know if it's useful/appropriate to check __USE_ISOC11 and
__cplusplus here at all; still I've left both for now.

Here's what I've used to complete the Solaris bootstrap.

Tested on i386-pc-solaris2.11, sparc-sun-solaris2.11,
x86_64-pc-linux-gnu, and x86_64-apple-darwin23.1.0.

-- 
-----------------------------------------------------------------------------
Rainer Orth, Center for Biotechnology, Bielefeld University


2023-12-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	libssp:
	* gets-chk.c (gets): Avoid double negation.
	Also check __STDC_VERSION__ >= 201112L.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: sol2-libssp-gets.patch --]
[-- Type: text/x-patch, Size: 600 bytes --]

# HG changeset patch
# Parent  334015ab01f6c0e5af821c1e9bc83b8677cc0bfb
libssp: Fix gets-chk.c compilation on Solaris

diff --git a/libssp/gets-chk.c b/libssp/gets-chk.c
--- a/libssp/gets-chk.c
+++ b/libssp/gets-chk.c
@@ -51,8 +51,9 @@ see the files COPYING3 and COPYING.RUNTI
 # include <string.h>
 #endif
 
-#if !(!defined __USE_ISOC11				\
-      || (defined __cplusplus && __cplusplus <= 201103L))
+#if (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L)	\
+     || !defined __USE_ISOC11					\
+     || (defined __cplusplus && __cplusplus >= 201402L)
 extern char *gets (char *);
 #endif
 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-02-06 10:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-12-04 10:42 [PATCH] libssp: Fix gets-chk.c compilation on Solaris Rainer Orth
2023-12-07 12:25 ` Rainer Orth
2023-12-07 12:59 ` Jakub Jelinek
2024-02-06 10:33   ` Rainer Orth
2024-02-06 10:38     ` Jakub Jelinek

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).