------- Comment #3 from jan dot kratochvil at redhat dot com  2010-07-23 11:11 
-------
(In reply to comment #1)
> const int i;     -fno-zero-initialized-in-bss -> .bss    = FAIL
> You need -fno-common also to get it out of the BSS.

-fno-common now at least correctly reports:
echo 'const int i;'|gcc -fno-common -c -o k.o -x c -;echo 'const int
i;main(){}'|gcc -fno-common -c -o l.o -x c -;gcc -fno-common -o k k.o l.o
l.o:(.bss+0x0): multiple definition of `i'
k.o:(.bss+0x0): first defined here

So it is no longer SHN_COMMON, thanks.


But reopening the Bug as it is still in .bss, not in .rodata.

echo 'const int i;int main(){return *(int *)&i = 0;}'|gcc -fno-common -Wall -o
1 -x c -;./1;echo $?
0
  [25] .bss              NOBITS           0000000000600818  00000814
       0000000000000018  0000000000000000  WA       0     0     8
   Num:    Value          Size Type    Bind   Vis      Ndx Name
    55: 0000000000600828     4 OBJECT  GLOBAL DEFAULT   25 i

It should SEGV but it does not.
-f{,no-}zero-initialized-in-bss has no effect on it.


-- 

jan dot kratochvil at redhat dot com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |UNCONFIRMED
         Resolution|INVALID                     |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44690

Reply via email to