This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
c++/7598: offsetof broken
- From: Andreas Schwab <schwab at suse dot de>
- To: gcc-gnats at gcc dot gnu dot org
- Date: Wed, 14 Aug 2002 17:47:24 +0200
- Subject: c++/7598: offsetof broken
>Number: 7598
>Category: c++
>Synopsis: offsetof broken
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Wed Aug 14 08:56:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:
>Release: 3.3 20020814 (experimental)
>Organization:
>Environment:
System: Linux sykes 2.4.18-SMP #1 SMP Thu May 16 09:03:14 UTC 2002 ia64 unknown unknown GNU/Linux
Architecture: ia64
host: ia64-suse-linux-gnu
build: ia64-suse-linux-gnu
target: ia64-suse-linux-gnu
configured with: ../configure --host=ia64-suse-linux --enable-shared --enable-threads --with-system-zlib
>Description:
The C++ compiler cannot handle offsetof.
>How-To-Repeat:
$ cat offsetof.cc
typedef long unsigned int size_t;
struct sigcontext
{
unsigned long int sc_gr[32];
};
typedef struct ucontext
{
union
{
struct
{
unsigned long _pad[((size_t) &((struct sigcontext *)0)->sc_gr[0])];
} _uc;
} _u;
} ucontext_t;
$ /tmp/cvs/gcc-20020814/Build/gcc/xgcc -B/tmp/cvs/gcc-20020814/Build/gcc/ -S offsetof.cc -v
Reading specs from /tmp/cvs/gcc-20020814/Build/gcc/specs
Configured with: ../configure --host=ia64-suse-linux --enable-shared --enable-threads --with-system-zlib
Thread model: posix
gcc version 3.3 20020814 (experimental)
/tmp/cvs/gcc-20020814/Build/gcc/cc1plus -quiet -v -iprefix /tmp/cvs/gcc-20020814/Build/gcc/../lib/gcc-lib/ia64-suse-linux/3.3/ -isystem /tmp/cvs/gcc-20020814/Build/gcc/include -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -D__gnu_linux__ -D__linux -D__linux__ -D_LONGLONG -Dlinux -Dunix -D__gnu_linux__ -D__linux -D__linux__ -D_LONGLONG -D__linux__ -D__unix__ -D__linux -D__unix -Asystem=linux -D_GNU_SOURCE -Acpu=ia64 -Amachine=ia64 -D__ia64 -D__ia64__ -D_LP64 -D__LP64__ -D__ELF__ offsetof.cc -D__GNUG__=3 -quiet -dumpbase offsetof.cc -auxbase offsetof -version -o offsetof.s
GNU C++ version 3.3 20020814 (experimental) (ia64-suse-linux)
compiled by GNU C version 3.3 20020814 (experimental).
ignoring nonexistent directory "/tmp/cvs/gcc-20020814/Build/lib/gcc-lib/ia64-suse-linux/3.3/../../../../include/c++/3.3"
ignoring nonexistent directory "/tmp/cvs/gcc-20020814/Build/lib/gcc-lib/ia64-suse-linux/3.3/../../../../include/c++/3.3/ia64-suse-linux"
ignoring nonexistent directory "/tmp/cvs/gcc-20020814/Build/lib/gcc-lib/ia64-suse-linux/3.3/../../../../include/c++/3.3/backward"
ignoring nonexistent directory "/tmp/cvs/gcc-20020814/Build/lib/gcc-lib/ia64-suse-linux/3.3/include"
ignoring nonexistent directory "/tmp/cvs/gcc-20020814/Build/lib/gcc-lib/ia64-suse-linux/3.3/../../../../ia64-suse-linux/include"
ignoring nonexistent directory "/usr/local/include/c++/3.3"
ignoring nonexistent directory "/usr/local/include/c++/3.3/ia64-suse-linux"
ignoring nonexistent directory "/usr/local/include/c++/3.3/backward"
ignoring nonexistent directory "NONE/include"
ignoring nonexistent directory "/usr/local/lib/gcc-lib/ia64-suse-linux/3.3/include"
ignoring nonexistent directory "/usr/local/ia64-suse-linux/include"
#include "..." search starts here:
#include <...> search starts here:
/tmp/cvs/gcc-20020814/Build/gcc/include
/usr/local/include
/usr/include
End of search list.
offsetof.cc:12: error: size of member `_pad' is not constant
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted: