ada: Fix Ada bootstrap on Solaris

Message ID yddleaas1e1.fsf@CeBiTec.Uni-Bielefeld.DE
State Committed
Commit f33294d68339127741911de2634012b8fecd9122
Headers
Series ada: Fix Ada bootstrap on Solaris |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-arm success Testing passed
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 success Testing passed
linaro-tcwg-bot/tcwg_gcc_check--master-aarch64 success Testing passed

Commit Message

Rainer Orth Dec. 4, 2023, 10:33 a.m. UTC
  The recent warning patches broke Ada bootstrap on Solaris:

adaint.c: In function '__gnat_kill':
adaint.c:3597:3: error: implicit declaration of function 'kill' [-Wimplicit-function-declaration]
 3597 |   kill (pid, sig);
      |   ^~~~

expect.c: In function '__gnat_expect_poll':
expect.c:409:5: error: implicit declaration of function 'memset' [-Wimplicit-function-declaration]
  409 |     FD_ZERO (&rset);
      |     ^~~~~~~
expect.c:55:1: note: include '<string.h>' or provide a declaration of 'memset'
   54 | #include <sys/wait.h>
  +++ |+#include <string.h>
   55 | #endif

I'm now including the necessary headers: <signal.h> for kill and
<string.h> for memset.  However, I found the GNAT C sources to be an
incredible and hard to untangle maze: instead of using autoconf, they
are generously sprinkled with deeply nested platform macros, so I may
well have included the headers in an inappropriate place.

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

Ok for trunk?

	Rainer
  

Comments

Arnaud Charlet Dec. 4, 2023, 10:35 a.m. UTC | #1
> The recent warning patches broke Ada bootstrap on Solaris:
> 
> adaint.c: In function '__gnat_kill':
> adaint.c:3597:3: error: implicit declaration of function 'kill' [-Wimplicit-function-declaration]
>  3597 |   kill (pid, sig);
>       |   ^~~~
> 
> expect.c: In function '__gnat_expect_poll':
> expect.c:409:5: error: implicit declaration of function 'memset' [-Wimplicit-function-declaration]
>   409 |     FD_ZERO (&rset);
>       |     ^~~~~~~
> expect.c:55:1: note: include '<string.h>' or provide a declaration of 'memset'
>    54 | #include <sys/wait.h>
>   +++ |+#include <string.h>
>    55 | #endif
> 
> I'm now including the necessary headers: <signal.h> for kill and
> <string.h> for memset.  However, I found the GNAT C sources to be an
> incredible and hard to untangle maze: instead of using autoconf, they
> are generously sprinkled with deeply nested platform macros, so I may
> well have included the headers in an inappropriate place.
> 
> Bootstrapped without regressions on i386-pc-solaris2.11,
> sparc-sun-solaris2.11, x86_64-pc-linux-gnu, and
> x86_64-apple-darwin23.1.0.
> 
> Ok for trunk?

OK, thanks.
  

Patch

# HG changeset patch
# Parent  5cf4f08be31b5169b377de570ac0ab0f159161af
ada: Fix Ada bootstrap on Solaris

diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -243,6 +243,7 @@  UINT __gnat_current_ccs_encoding;
 #define DIR_SEPARATOR '\\'
 
 #else
+#include <signal.h>
 #include <utime.h>
 #endif
 
diff --git a/gcc/ada/expect.c b/gcc/ada/expect.c
--- a/gcc/ada/expect.c
+++ b/gcc/ada/expect.c
@@ -41,6 +41,7 @@ 
 
 #include "adaint.h"
 #include <sys/types.h>
+#include <string.h>
 
 #if defined (__vxworks) && defined (__RTP__)
 # include <wait.h>