From: khan AT xraylith DOT wisc DOT edu (Mumit Khan) Subject: Re: egcs-1.1b 2 Oct 1998 11:50:29 -0700 Message-ID: <9810021835.AA15557.cygnus.cygwin32.developers@modi.xraylith.wisc.edu> References: <19981002085228 DOT B12119 AT cygnus DOT com> To: Christopher Faylor Cc: Corinna Vinschen , cygwin32-developers AT cygnus DOT com Christopher Faylor writes: > >Erasing `const' works, but I don't understand, what happens. > >Is it a bug or am I too dull or what? Corrina, When you say egcs-1.1b, does it mean that you built the compiler yourself from egcs-1.1b source? If so, did you add any of the patches? > Yow. It sounds like constants are being put in their own section > now. Since fork doesn't know about this section, it won't be > copied anyway so you can safely remove the NO_COPY attribute. The C++ front-end puts const data in .text section right now unless of course you supply an explicit section directive, as done in the example here. It will be copied on fork in the current scheme of course, and using NO_COPY will do the right thing if you don't want it copied on fork. > > Maybe Mumit can comment on this "theory". > I can comment, but doesn't mean I can shed any light on it ;-) I'll try to build everything over the weekend (I assume that report is about building the new winsup or b20a2 snapshot with egcs-1.1), and see if I can reproduce this. Note that I did build b20a1 with egcs-1.1 and ended up with a runnable DLL. The construct should work just fine, and it does so with my copy of egcs-1.1. Here's what I see: % i386-cygwin32-gcc -fno-rtti -fno-exceptions -c section-code.cc [ note: don't use -O2 in this case, or else it'll get optimized away ] % i386-cygwin32-objdump -h section-code.o: file format pe-i386 Sections: Idx Name Size VMA LMA File off Algn 0 .text 00000000 00000000 00000000 00000000 2**2 ALLOC, LOAD, CODE 1 .data 00000000 00000000 00000000 00000000 2**2 ALLOC, LOAD, DATA 2 .bss 00000000 00000000 00000000 00000000 2**2 ALLOC 3 .data_cygwin_nocopy 00000004 00000000 00000000 000000b4 2**2 CONTENTS, ALLOC, LOAD Could you rebuild with -O2 (so that it's optimized away) and see if you still get the error? Regards, Mumit