delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2002/07/12/09:40:39

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Date: Fri, 12 Jul 2002 17:39:28 +0400
From: egor duda <deo AT logos-m DOT ru>
Reply-To: egor duda <cygwin AT cygwin DOT com>
Organization: deo
X-Priority: 3 (Normal)
Message-ID: <9382195250.20020712173928@logos-m.ru>
To: Wolfgang Hesseler <qv AT multimediaware DOT com>
CC: cygwin AT cygwin DOT com
Subject: Re: Bug: BSS segment in COFF files
In-Reply-To: <3D2EC616.19DA@multimediaware.com>
References: <3D2EA2E2 DOT 2881 AT multimediaware DOT com>
<8772121004 DOT 20020712145134 AT logos-m DOT ru> <3D2EBFC2 DOT 6973 AT multimediaware DOT com>
<9975891676 DOT 20020712155424 AT logos-m DOT ru> <3D2EC616 DOT 19DA AT multimediaware DOT com>
MIME-Version: 1.0

Hi!

Friday, 12 July, 2002 Wolfgang Hesseler qv AT multimediaware DOT com wrote:

>> >> If you run gcc with '--save-temps' flag, and then look into
>> >> 'yourfile.s' file, you'll see that uninitialized data is tagged as
>> >> "common" (using '.comm' directive) and is put to bss only by linker
>> >> when final executable is created. To turn this feature off, use
>> >> '-fno-common' flag when compiling your object file.
>> 
>> WH> This works, however only if the variables are non-static. If a
>> WH> variable is static the .comm directive is still used.
>> 
>> .lcomm, to be precise.
>> 
>> That's easy to work around. Just add 'int dummy;' to your source
>> file compiled with gcc, and you have 4 bytes in bss section.

WH> But how does this help? The other static variables still use 
WH> the .lcomm directive.

Ah, i was thinking the problem is that wlink refuses to link in
modules with empty .bss section.

The problem seems to be that you can't reference to static variable
from within the module.

You can add

#ifdef GCC
#define STATIC static __attribute__ ((section(".bss")))
#else
#define STATIC static
#endif

and then replace all 'static some_type some_var;' with
'STATIC some_type some_var;', although i don't know if such tricks are
guaranteed to work with all current and future versions of gcc.

Egor.            mailto:deo AT logos-m DOT ru ICQ 5165414 FidoNet 2:5020/496.19


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019