Currently, trunk fails to boot fortran on hpux because of the following error:

/xxx/gnu/gcc/objdir/./prev-gcc/xg++ -B/xxx/gnu/gcc/objdir/./prev-gcc/ 
-B/opt/gnu64/gcc/gcc-7/hppa64-hp-hpux11.00/bin/ -nostdinc++ 
-B/xxx/gnu/gcc/objdir/prev-hppa64-hp-hpux11.00/libstdc++-v3/src/.libs 
-B/xxx/gnu/gcc/objdir/prev-hppa64-hp-hpux11.00/libstdc++-v3/libsupc++/.libs  
-I/xxx/gnu/gcc/objdir/prev-hppa64-hp-hpux11
.00/libstdc++-v3/include/hppa64-hp-hpux11.00  -I/xxx/gnu/gcc/objdir/prev-hppa64-
hp-hpux11.00/libstdc++-v3/include  -I/xxx/gnu/gcc/gcc/libstdc++-v3/libsupc++ 
-L/xxx/gnu/gcc/objdir/prev-hppa64-hp-hpux11.00/libstdc++-v3/src/.libs 
-L/xxx/gnu/gc
c/objdir/prev-hppa64-hp-hpux11.00/libstdc++-v3/libsupc++/.libs -fno-PIE -c  -DIN
_GCC_FRONTEND -g -O2 -DIN_GCC     -fno-exceptions -fno-rtti -fasynchronous-unwin
d-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-at
tribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-
overlength-strings -Werror -fno-common  -DHAVE_CONFIG_H -I. -Ifortran -I../../gc
c/gcc -I../../gcc/gcc/fortran -I../../gcc/gcc/../include -I../../gcc/gcc/../libc
pp/include -I/opt/gnu64/gcc/gmp/include  -I../../gcc/gcc/../libdecnumber -I../..
/gcc/gcc/../libdecnumber/dpd -I../libdecnumber -I../../gcc/gcc/../libbacktrace  
 -o fortran/parse.o -MT fortran/parse.o -MMD -MP -MF fortran/.deps/parse.TPo ../
../gcc/gcc/fortran/parse.c
../../gcc/gcc/fortran/parse.c: In function 'void unexpected_eof()':
../../gcc/gcc/fortran/parse.c:2618:1: error: 'noreturn' function does return [-W
error]

The attached patch fixes the above by adding the noreturn attribute to the 
"longjmp" declarations in setjmp.h.

Okay for trunk?

Dave
--
John David Anglin       dave.ang...@bell.net

2016-08-13  John David Anglin  <dang...@gcc.gnu.org>

        * inclhack.def (hpux_longjmp): New fix.
        * fixincl.x: Regenerate.
        * tests/base/setjmp.h: New test file.

Index: inclhack.def
===================================================================
--- inclhack.def        (revision 239324)
+++ inclhack.def        (working copy)
@@ -2642,6 +2642,21 @@
 };
 
 /*
+ *  Add noreturn attribute to longjmp declarations in hpux <setjmp.h>
+ */
+fix = {
+    hackname = hpux_longjmp;
+    mach     = "*-hp-hpux*";
+    files    = setjmp.h;
+    select   = "^[ \t]*extern[ \t]+void.*longjmp[ \t]+__\\(\\(.*int\\)\\)";
+
+    c_fix     = format;
+    c_fix_arg = "%0 __attribute__ ((__noreturn__))";
+
+    test_text = 'extern void   longjmp __((jmp_buf, int));';
+};
+
+/*
  *  Fix hpux10.20 <sys/time.h> to avoid invalid forward decl
  */
 fix = {
--- /dev/null   2016-08-13 12:36:13 -0400
+++ tests/base/setjmp.h 2016-08-10 09:41:48 -0400
@@ -0,0 +1,14 @@
+/*  DO NOT EDIT THIS FILE.
+
+    It has been auto-edited by fixincludes from:
+
+       "fixinc/tests/inc/setjmp.h"
+
+    This had to be done to correct non-standard usages in the
+    original, manufacturer supplied header file.  */
+
+
+
+#if defined( HPUX_LONGJMP_CHECK )
+extern void    longjmp __((jmp_buf, int)) __attribute__ ((__noreturn__));
+#endif  /* HPUX_LONGJMP_CHECK */

Reply via email to