mssip.h trouble

Patrik Stridvall ps at leissner.se
Tue Sep 10 02:55:26 CDT 2002


> While compiling the latest tree, I get this:
> 
> [dimi at dimi wine]$ make -s
> In file included from ../../include/mssip.h:49,
>                  from main.c:22:
> ../../include/pshpack8.h:47:6: warning: #warning "8 as 
> alignment is not supported"
> In file included from ../../include/mssip.h:80,
>                  from main.c:22:
> ../../include/pshpack8.h:47:6: warning: #warning "8 as 
> alignment is not supported"
> In file included from ../../include/mssip.h:88,
>                  from main.c:22:
> ./../include/pshpack8.h:47:6: warning: #warning "8 as 
> alignment is not supported"
> In file included from ../../include/mssip.h:97,
>                  from main.c:22:
> ../../include/pshpack8.h:47:6: warning: #warning "8 as 
> alignment is not supported"
> In file included from ../../include/mssip.h:109,
>                  from main.c:22:
> ../../include/pshpack8.h:47:6: warning: #warning "8 as 
> alignment is not supported"
> In file included from ../../include/mssip.h:123,
>                  from main.c:22:
> ../../include/pshpack8.h:47:6: warning: #warning "8 as 
> alignment is not supported"
> In file included from ../../include/mssip.h:140,
>                  from main.c:22:
> ../../include/pshpack8.h:47:6: warning: #warning "8 as 
> alignment is not supported"

Ah, yes. I forgot to investigate that issue further. Sorry.

First of all I want so say that the warning in itself is
harmless. However anything using data structures from the
header might not work correctly, but then currently only
stub functions use it so it doesn't really matter.

The problem is that mssip.h needs 8 as alignement for
its data structures.

It seems that gcc or at least a previous versions of GCC
didn't support it since somebody (Alexandre?) added a
warning in pshpack8.h.

Futhermore Micrsoft C/C++ (or at least later version of it)
contrary to the claim of pshpack8.h support it so it
wrong at the point at least AFAIK.

The big question is how should the following lines look like:

#  if defined(__GNUC__) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) ||
defined(_MSC_VER)
#    pragma pack(8)
#    warning "8 as alignment is not supported"
#  elif !defined(RC_INVOKED)
#    error "Adjusting the alignment is not supported with this compiler"
#  endif

Or perhaps phrased in another way:
What compiler and specifically what versions or the compiler supports
and handles #pragma pack(8) correctly?

Note that just because it compiles without warning (or error) doesn't
mean that it supports it correctly.



More information about the wine-devel mailing list