H.J. Lu wrote: > On Wed, Apr 15, 2009 at 7:11 AM, Dave Korn >> and it fails on the assignment "r = a;" because r is unaligned (0x404024); in >> the assembly source, it is simply defined as >> >> .comm _r, 16 # 16 >> >> so maybe the problem is in the Cygwin linker script? Is the COMMON section >> supposed to be aligned? In Cygwin, it just gets appended into .bss, like so: >> >> .bss 0x00404024 0x0 >> /gnu/gcc/releases/4.4.0rc1/gcc/libgcc.a(_ctors.o) >> .bss 0x00404024 0x0 /gnu/gcc/releases/4.4.0rc1/gcc/crtend.o >> *(COMMON) >> COMMON 0x00404024 0x10 >> /win/c/DOCUME~1/ADMINI~1/LOCALS~1/Temp/cc86uXzW.o >> 0x00404024 _r >> COMMON 0x00404034 0x20 >> /gnu/gcc/releases/4.4.0rc1/gcc/libgcc.a(_ctors.o) >> 0x00404054 __bss_end__ = . >> >> Does there need to be an alignment specified for COMMON (and/or other >> sections)? >> > > It does look like a Cygwin specific issue.
Can you tell me whether Linux treats COMMON as a separate section with its own alignment, or otherwise takes steps to ensure it has a base alignment that the compiler can assume? Otherwise I expect I need to look at the cygwin definitions of the ASM_OUTPUT_COMMON* macros. cheers, DaveK