ada: Fix Ada bootstrap on FreeBSD

Message ID ydd5y15qbec.fsf@CeBiTec.Uni-Bielefeld.DE
State Committed
Commit 8d2e5ad7f1723c9125c2d511c281b4fe62ff29cd
Headers
Series ada: Fix Ada bootstrap on FreeBSD |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_gcc_build--master-arm fail Patch failed to apply
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 fail Patch failed to apply

Commit Message

Rainer Orth Dec. 11, 2023, 10:30 a.m. UTC
  Ada bootstrap on FreeBSD/amd64 was also broken by the recent warning
changes:

terminals.c: In function 'allocate_pty_desc':
terminals.c:1200:12: error: implicit declaration of function 'openpty'; did you
mean 'openat'? [-Wimplicit-function-declaration]
 1200 |   status = openpty (&master_fd, &slave_fd, NULL, NULL, NULL);
      |            ^~~~~~~
      |            openat

terminals.c: At top level:
terminals.c:1268:9: warning: "TABDLY" redefined
 1268 | #define TABDLY 0
      |         ^~~~~~
In file included from /usr/include/termios.h:38,
                 from terminals.c:1109:
/usr/include/sys/_termios.h:111:9: note: this is the location of the previous definition
  111 | #define TABDLY          0x00000004      /* tab delay mask */
      |         ^~~~~~
make[7]: *** [../gcc-interface/Makefile:302: terminals.o] Error 1

Fixed by including the necessary header and guarding the fallback
definition of TABDLY.

This allowed a 64-bit-only bootstrap on x86_64-unknown-freebsd14.0 to
complete successfully.  Multilibbed bootstrap is still broken for
unrelated reasons, cf. PR ada/ada/112958.

Ok for trunk?

	Rainer
  

Comments

Marc Poulhiès Dec. 11, 2023, 10:32 a.m. UTC | #1
Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> writes:

> Ada bootstrap on FreeBSD/amd64 was also broken by the recent warning
> changes:
>
> terminals.c: In function 'allocate_pty_desc':
> terminals.c:1200:12: error: implicit declaration of function 'openpty'; did you
> mean 'openat'? [-Wimplicit-function-declaration]
>  1200 |   status = openpty (&master_fd, &slave_fd, NULL, NULL, NULL);
>       |            ^~~~~~~
>       |            openat
>
> terminals.c: At top level:
> terminals.c:1268:9: warning: "TABDLY" redefined
>  1268 | #define TABDLY 0
>       |         ^~~~~~
> In file included from /usr/include/termios.h:38,
>                  from terminals.c:1109:
> /usr/include/sys/_termios.h:111:9: note: this is the location of the previous definition
>   111 | #define TABDLY          0x00000004      /* tab delay mask */
>       |         ^~~~~~
> make[7]: *** [../gcc-interface/Makefile:302: terminals.o] Error 1
>
> Fixed by including the necessary header and guarding the fallback
> definition of TABDLY.
>
> This allowed a 64-bit-only bootstrap on x86_64-unknown-freebsd14.0 to
> complete successfully.  Multilibbed bootstrap is still broken for
> unrelated reasons, cf. PR ada/ada/112958.

Hello Rainer,

> Ok for trunk?

OK !

Thanks,
Marc
  

Patch

diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
--- a/gcc/ada/terminals.c
+++ b/gcc/ada/terminals.c
@@ -1125,6 +1125,9 @@  void
 #if defined (__APPLE__)
 #   include <util.h>
 #endif
+#if defined (__FreeBSD__)
+#   include <libutil.h>
+#endif
 
 #define CDISABLE _POSIX_VDISABLE
 
@@ -1265,11 +1268,13 @@  allocate_pty_desc (pty_desc **desc) {
 #ifndef NLDLY
 #define NLDLY 0
 #define CRDLY 0
-#define TABDLY 0
 #define BSDLY 0
 #define VTDLY 0
 #define FFDLY 0
 #endif
+#ifndef TABDLY
+#define TABDLY 0
+#endif
 
 /* child_setup_tty - set terminal properties
  *