Vin Shelton writes:
Frank Jensen <Frank.Jensen(a)hugin.com> writes:
> I just tried to install XEmacs 21.4.17 on Solaris 9 using gcc 3.4.3.
> That resulted in the following error:
>
> bytecode.c: In function `invalid_byte_code_error':
> bytecode.c:1494: error: incompatible type for argument 1 of
`__builtin_va_start'
> bytecode.c:1497: error: incompatible type for argument 1 of `__builtin_va_end'
>
> I then searched the archive for information regarding this bug, but I
> only found the email appended below. I managed to track down the
> cause of this bug. It turns out that the problem is caused by the
> src/s/sol2.h header file, which overrides the gcc definition for
> va_list. This happens to work with gcc 2.95.3, but it doesn't work
> with gcc 3.4.3 (or gcc 3.4.2). If the header file is changed as shown
> below, XEmacs will (at least) compile with gcc 2.95.3 and gcc 3.4.3 on
> Solaris 8 (Sparc) and Solaris 9 (x86), which are the configurations I
> have available for testing.
>
> Here is the snippet of the src/s/sol2.h file that I changed:
>
> # if __GNUC__ <= 2
> /* GCC va_list munging is a little messed up */
> #define __GNUC_VA_LIST
> #define _VA_LIST_
> #define _VA_LIST va_list
> typedef void *__gnuc_va_list;
> typedef __gnuc_va_list va_list;
> # endif
>
Interesting. On a Solaris 5.8 system here at work, I've built XEmacs
21.4.17 with gcc 3.4.3. Here is the Installation file:
uname -a: SunOS denver 5.8 Generic_108528-14 sun4u sparc SUNW,Ultra-5_10 Solaris
../software/SunOS-5.8/src/xemacs-21.4-2005-02-10/configure
'--prefix=/u/sheltonv/software/SunOS-5.8/xemacs-21.4-2005-02-10'
'--with-gcc' '--cflags= -O2 -pipe -ffast-math -fno-exceptions'
'--site-includes=/u/sheltonv/software/SunOS-5.8/include'
'--site-libraries=/u/sheltonv/software/SunOS-5.8/lib'
'--infopath=/u/sheltonv/software/SunOS-5.8/info' '--with-mule=no'
'--with-dialogs=no' '--with-widgets=no'
'--package-path=/u/sheltonv/software/SunOS-5.8/site-packages::/u/sheltonv/software/SunOS-5.8/xemacs-packages'
'--pdump=no' '--debug=no' '--error-checking=none'
XEmacs 21.4.17 "Jumbo Shrimp" configured for `sparc-sun-solaris2.8'.
Compilation / Installation:
Source code location: /u/sheltonv/software/src/xemacs-21.4-2005-02-10
Installation prefix:
/u/sheltonv/software/SunOS-5.8/xemacs-21.4-2005-02-10
Additional header files: /u/sheltonv/software/SunOS-5.8/include
Additional libraries: /u/sheltonv/software/SunOS-5.8/lib
Runtime library search path:
/usr/ccs/lib:/u/sheltonv/software/SunOS-5.8/lib:/usr/openwin/lib:/u/sheltonv/software/SunOS-5.8/gcc-3.4.3/lib/gcc/sparc-sun-solaris2.8/3.4.3/../../..
Operating system description file: `s/sol2.h'
Machine description file: `m/sparc.h'
Compiler: gcc -O2 -pipe -ffast-math -fno-exceptions
Compiler version: gcc (GCC) 3.4.3
Compiler specs file:
/u/sheltonv/software/SunOS-5.8/gcc-3.4.3/lib/gcc/sparc-sun-solaris2.8/3.4.3/specs
Relocating allocator for buffers: yes
GNU version of malloc: yes
libc: SUNWcsl 11.8.0,REV=2000.01.08.18.12
Window System:
Compiling in support for the X window system:
- X Windows headers location: /usr/openwin/include
- X Windows libraries location: /usr/openwin/lib
- Handling WM_COMMAND properly.
Using Lucid menubars.
Using Lucid scrollbars.
TTY:
Images:
Compiling in support for GIF images (builtin).
Compiling in support for XPM images.
Compiling in support for PNG images.
Compiling in support for JPEG images.
Compiling in support for TIFF images.
Sound:
Compiling in support for sound (native).
Databases:
Compiling in support for DBM.
Compiling in support for LDAP.
Internationalization:
Mail:
Compiling in support for "dot-locking" mail spool file locking method.
Other Features:
Inhibiting IPv6 canonicalization at startup.
Compiling in support for ToolTalk.
Compiling in support for dynamic shared object modules.
Is this a difference between Solaris 8 and Solaris 9?
I just verified that I can install XEmacs 21.4.17 (unmodified) using
gcc 3.4.3 on Solaris 8 Sparc. I also double-checked that it doesn't
work on Solaris 9 x86. This could be due to a difference between
Solaris 8 and Solaris 9, but it could also be due to a difference in
behavior of gcc 3.4.3 on Solaris Sparc and gcc 3.4.3 on Solaris x86.
Further investigation reveals that the following two lines are
accepted by gcc 3.4.3 on Solaris 8 Sparc, but not by gcc 3.4.3 on
Solaris 9 x86:
# include <stdarg.h>
typedef void *__gnuc_va_list;
[The second line is taken from src/s/sol2.h.] This indicates that gcc
uses different implementations of va_list on the two platforms.
/Frank