This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: -fno-common
- From: Iain Sandoe <idsandoe at googlemail dot com>
- To: Bernhard Schommer <bernhardschommer at gmail dot com>
- Cc: GCC Development <gcc at gcc dot gnu dot org>
- Date: Tue, 29 Jan 2019 08:29:12 +0000
- Subject: Re: -fno-common
- References: <CAG8G+nv0QtBoBp0JVyLKPn7rxsF6s2rokfpqVpB4BtJ_Vq4=Ew@mail.gmail.com>
> On 28 Jan 2019, at 15:58, Bernhard Schommer <bernhardschommer@gmail.com> wrote:
>
> I would like to know if the handling of the option -fno-common has
> changed between version 7.3 and 8.2 for x86. I tried it with the
> default system version of OpenSUSE and for example:
>
> const int i;
>
> is placed in the .bss section. With a newer self-compiled version 8.2
> the same variable is placed in the section .rodata. I could not find
> any information in the Changelog whether the behavior has changed and
> thus would like to know if there was any change.
If you look in of, say, http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf
at section
• 6.7.3 Type qualifiers
there’s a footnote:
• 132) The implementation may place a const object that is not volatile in a read-only region of storage. Moreover, the implementation need not allocate storage for such an object if its address is never used.
---
So, I don’t think you can make any assumption about whether such items appear in bss or .rodata (or const on darwin, for example).
HTH,
Iain