------- Comment #23 from drab at kepler dot fjfi dot cvut dot cz 2006-01-16 03:33 ------- (In reply to comment #20) > (In reply to comment #18) > > (In reply to comment #17) > > > Yes, it is unnecessary, but not wrong, since if you take a closer look, > > > it is > > > just > > > > Actually it is wrong as it is in read only memory. > > > > (insn:TI 412 535 40 ../../gcc/opts.c:1301 (set (mem/u/c/i:SI (symbol_ref:SI > > ("cl_options_count") [flags 0x40] <var_decl 0xb7bd8160 cl_options_count>) [3 > > cl_options_count+0 S4 A32]) > > (reg:SI 3 bx [orig:143 cl_options_count ] [143])) 34 {*movsi_1} > > (nil) > > (expr_list:REG_EQUIV (mem/u/c/i:SI (symbol_ref:SI ("cl_options_count") > > [flags 0x40] <var_decl 0xb7bd8160 cl_options_count>) [3 cl_options_count+0 > > S4 > > A32]) > > (nil))) > > I assume this means "read-only" just as a hint for the compiler, right? Not > that it would really actually reside in a "read-only" memory. So the writing > should not cause the segfault. It is the memset that causes the segfault, no?
Well, OK, looking at freddy's back trace: Program received signal SIGSEGV, Segmentation fault. 0x083580bd in print_filtered_help (flag=536870912) at ../.././gcc/opts.c:1301 1301 memset (printed, 0, cl_options_count); (gdb) bt #0 0x083580bd in print_filtered_help (flag=536870912) at ../.././gcc/opts.c:1301 #1 0x08358f53 in decode_options (argc=2, argv=0xbf830644) at ../.././gcc/opts.c:1250 #2 0x083bf9b0 in toplev_main (argc=2, argv=0xbf830644) at ../.././gcc/toplev.c:1974 #3 0x080b8e6f in main (argc=0, argv=0x259) at ../.././gcc/main.c:35 it really looks as that writing, but I still didn't figure out where is the third argument of the memset. Do you see it set somewhere? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25636