https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71422
Bug ID: 71422 Summary: Total size of static objects is not limited Product: gcc Version: 7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: ch3root at openwall dot com Target Milestone: --- Shouldn't gcc loudly fail when it cannot lay static objects out without wrapping around the end of the address space? Otherwise the resulting binary can, for example, crash. Or silently give wrong answer like in the example below. Source code: ---------------------------------------------------------------------- #include <stdint.h> #include <stdio.h> char a[SIZE_MAX / 2]; char b[SIZE_MAX / 2]; char c[SIZE_MAX / 2]; int main(int argc, char **argv) { (void)argv; a[argc] = 123; printf("%d\n", b[argc]); printf("&a = %p\n", (void *)&a); printf("&b = %p\n", (void *)&b); printf("&c = %p\n", (void *)&c); } ---------------------------------------------------------------------- Results: ---------------------------------------------------------------------- $ gcc -std=c11 -pedantic -Wall -Wextra -O3 -m32 test.c && ./a.out 123 &a = 0x8049740 &b = 0x8049740 &c = 0x88049740 ---------------------------------------------------------------------- gcc version: gcc (GCC) 7.0.0 20160604 (experimental)