Article View: gnu.gcc.bug
Article #5911Bug (or a feature?) with alignment of nested structures
From: Michal Prussak
Date: Mon, 27 Jan 1997 00:00
Date: Mon, 27 Jan 1997 00:00
47 lines
2700 bytes
2700 bytes
I have discovered a problem with alignment of nested structures with
gcc 2.7.2 on Solaris 2.3. In the program below, the structure
TestStruct1 is placed on a 2-byte instead of 4-byte boundary and
I get a Bus Error:
% gcc -v -g test2.c -o test2
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/specs
gcc version 2.7.2
/usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/cpp -lang-c -v -undef -D__GNUC__=2 -D__GNUC_MINOR__=7 -Dsun -Dsparc -Dunix -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun__ -D__sparc__ -D__unix__ -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun -D__sparc -D__unix -Asystem(unix) -Asystem(svr4) -Acpu(sparc) -Amachine(sparc) -g test2.c /tmp/cca004j7.i
GNU CPP version 2.7.2 (sparc)
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/local/sparc-sun-solaris2.3/include
/usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/include
/usr/include
End of search list.
/usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/cc1 /tmp/cca004j7.i -quiet -dumpbase test2.c -g -version -o /tmp/cca004j7.s
GNU C version 2.7.2 (sparc) compiled by GNU C version 2.7.2.
/usr/ccs/bin/as -V -Qy -s -o /tmp/cca004j71.o /tmp/cca004j7.s
/usr/ccs/bin/as: SC3.0 early access 01 Sep 1993
/usr/ccs/bin/ld -V -Y P,/usr/ccs/lib:/usr/lib -Qy -o test2 /usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/crt1.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/crti.o /usr/ccs/lib/values-Xa.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/crtbegin.o -L/usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2 -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/local/lib /tmp/cca004j71.o -lgcc -lc -lgcc /usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/crtend.o /usr/local/lib/gcc-lib/sparc-sun-solaris2.3/2.7.2/crtn.o
ld: Software Generation Utilities (SGU) SunOS/ELF (LK-1.4 (S/I))
% a.out
Bus error (core dumped)
%
------------------------------test2.c-------------------------------
#include <malloc.h>
struct TestStruct1 {
char *ptr1;
};
struct TestStruct2 {
short x;
struct TestStruct1 *ptr;
};
main()
{
struct TestStruct2 x;
x.ptr = (struct TestStruct1 *) malloc(4);
x.ptr[0].ptr1 = 0;
}
Technical Details
Message-ID:
<5cjbtg$nun@bogus.cts.com>Path:
arc1-ca.pugleaf.net!unknown!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 113d02,45936f45d66d6491,start X-Google-Attributes: gid113d02,public From: mpp@miteksys.com (Michal Prussak) Subject: Bug (or a feature?) with alignment of nested structures Date: 1997/01/27 Message-ID: <5cjbtg$nun@bogus.cts.com> X-Deja-AN: 212814006 sender: bug-gcc-request@prep.ai.mit.edu organization: Mitek Systems, Inc. x-gateway: relay7.UU.NET from bug-gcc to gnu.gcc.bug; Mon, 27 Jan 1997 18:55:01 EST newsgroups: gnu.gcc.bug