Hi Paul, > Bruno Haible wrote: > > Since I don't have access to a newer HP-UX cc compiler, I propose to just > > disable this definition for HP-UX cc. This patch fixes the error. > > That sounds too drastic; I worry that it would break GNU Emacs, which relies > on > having alignas. > > Does Emacs 25.1 build with that compiler?
No, Emacs 25.1 cannot be built with this compiler. ==== 1st attempt $ CC="cc -Ae -D_XOPEN_SOURCE=500" $ export CC $ ./configure --prefix=$HOME/prefix-hpux113-cc --with-x-toolkit=no --with-xpm=no --with-jpeg=no --with-png=no --with-gif=no --with-tiff=no $ gmake ... CC strftime.o cc: "time-internal.h", line 48: error 1681: Usage of `flexible array members' needs option `-AC99' cc: "time-internal.h", line 48: error 1578: Size of struct or union member is unknown. ==== 2nd attempt $ CC="cc -Ae -D_XOPEN_SOURCE=500 -AC99" $ export CC $ ./configure --prefix=$HOME/prefix-hpux113-cc --with-x-toolkit=no --with-xpm=no --with-jpeg=no --with-png=no --with-gif=no --with-tiff=no $ gmake ... CCLD ebrowse cc: "ebrowse.c", line 281: error 1687: Illegal use of flexible array: structs with FAMs cannot be members of other structs. cc: "ebrowse.c", line 281: error 1687: Illegal use of flexible array: structs with FAMs cannot be members of other structs. cc: "ebrowse.c", line 281: error 1687: Illegal use of flexible array: structs with FAMs cannot be members of other structs. cc: "ebrowse.c", line 281: error 1687: Illegal use of flexible array: structs with FAMs cannot be members of other structs. cc: "ebrowse.c", line 281: error 1687: Illegal use of flexible array: structs with FAMs cannot be members of other structs. cc: "ebrowse.c", line 281: error 1687: Illegal use of flexible array: structs with FAMs cannot be members of other structs. Now, let's pick a source file that uses 'alignas': $ cd src $ gmake buffer.o GEN lisp.mk gmake -C ../lib-src make-docfile gmake[1]: Entering directory `/home/haible/emacs-25.1/lib-src' CCLD make-docfile gmake[1]: Leaving directory `/home/haible/emacs-25.1/lib-src' GEN globals.h CC buffer.o cc: "globals.h", line 1030: error 1000: Unexpected symbol: "8". cc: "globals.h", line 1030: error 1670: Illegal attribute __aligned__ specified. cc: "lisp.h", line 852: error 1669: Illegal version declaration for "XSYMBOL". cc: "lisp.h", line 1454: warning 604: Pointers are not assignment-compatible. cc: "lisp.h", line 1532: warning 604: Pointers are not assignment-compatible. cc: "lisp.h", line 1688: warning 604: Pointers are not assignment-compatible. cc: "lisp.h", line 3342: warning 604: Pointers are not assignment-compatible. cc: "lisp.h", line 3342: warning 563: Argument #1 is not the correct type. cc: "dispextern.h", line 2234: error 1687: Illegal use of flexible array: structs with FAMs cannot be members of other structs. cc: "buffer.c", line 65: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 65: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 88: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 88: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 370: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 370: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 379: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 379: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 437: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 437: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 451: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 451: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 496: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 496: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 733: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 733: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 880: error 1669: Illegal version declaration for "delete_all_overlays". cc: "buffer.c", line 912: error 1669: Illegal version declaration for "reset_buffer". cc: "buffer.c", line 1042: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1042: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1097: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1097: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1106: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1106: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1114: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1114: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1125: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1125: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1238: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1238: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1271: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1271: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1281: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1281: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1303: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1303: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1325: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1325: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1375: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1375: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1386: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1386: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1401: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1401: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1467: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1467: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1556: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1556: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1582: error 1669: Illegal version declaration for "compact_buffer". cc: "buffer.c", line 1615: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1615: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1936: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1936: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 1970: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 1970: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 2012: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 2012: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 2025: error 1669: Illegal version declaration for "set_buffer_internal_1". cc: "buffer.c", line 2089: error 1669: Illegal version declaration for "set_buffer_temp". cc: "buffer.c", line 2108: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 2108: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 2143: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 2143: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 2162: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 2162: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 2232: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 2232: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 2389: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 2389: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 2677: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 2677: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 3409: error 1669: Illegal version declaration for "recenter_overlay_lists". cc: "buffer.c", line 3708: error 1669: Illegal version declaration for "fix_overlays_before". cc: "buffer.c", line 3785: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 3785: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 3792: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 3792: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 3910: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 3910: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4013: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4013: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4045: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4045: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4057: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4057: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4066: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4066: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4075: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4075: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4085: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4085: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4097: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4097: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4131: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 4131: error 1670: Illegal attribute __aligned__ specified. cc: "buffer.c", line 4165: error 1000: Unexpected symbol: "8". cc: panic 2161: Maximum allowed number of errors exceeded. gmake: *** [buffer.o] Error 1 > Does it fix things to replace '__attribute__ ((__aligned__ (n)))' with > '__attribute__((aligned(n))' in lib/stdalign.in.h? That's not a bad guess, based on [1] p. 150. But it fails in the same way: ... cc: "buffer.c", line 65: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 65: error 1670: Illegal attribute aligned specified. cc: "buffer.c", line 88: error 1000: Unexpected symbol: "8". cc: "buffer.c", line 88: error 1670: Illegal attribute aligned specified. ... Bruno [1] http://h20565.www2.hpe.com/hpsc/doc/public/display?sp4ts.oid=4268164&docLocale=en_US&docId=emr_na-c02652146