https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119312
Bug ID: 119312 Summary: Constant array not allocated in read-only segment Product: gcc Version: 14.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: bruno at clisp dot org Target Milestone: --- Created attachment 60779 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=60779&action=edit test case foo.c When constant data is allocated in a read-only segment, it is more efficient than in the .data segment (namely, the OS does not need to copy such a memory page to the swap when memory is tight). When compiling this program, although the array 'html5' contains only constant data (note that the struct has no holes and has alignment 1), gcc puts it in the .data segment. How to reproduce: $ gcc -O2 -c foo.c $ size foo.o text data bss dec hex filename 270 230 0 500 1f4 foo.o Only when I add an additional 'const' to the 'html5' array, does gcc put it into the .rodata or .text segment.