Hi Paul,
Post by Paul EggertPost by Bruno HaibleSince 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
Post by Paul EggertDoes 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