bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: stdalign test with HP-UX cc


From: Bruno Haible
Subject: Re: stdalign test with HP-UX cc
Date: Thu, 16 Mar 2017 22:29:09 +0100
User-agent: KMail/5.1.3 (Linux/4.4.0-66-generic; KDE/5.18.0; x86_64; ; )

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]