Interesting. The error implies that the BSS segment is huge (i.e. bigger than 63MB). For those that don't know, the BSS segment contains static uninitialized data. This is a bit of a misnomer since the loader zeros the BSS segment when the application is loaded.
To check this do
lxlite -c:exemap cc1plus.exe >tmp.exemap
and look at the size of object 2. This will be the BSS segment unless the linkage changed drastically.
For gcc 14, we get
├ ## ─ Base ─── Size ──R─W─E─Res─Dis─Shr─Pre─Inv─Swp─Rsd─Loc─A16─32B─Cnf─IOP─
│ 2 02260000 00517B00 ¹ ¹ ¹
or about 5MB. Well within the limits. For Knut's (I think) testcase, it's
├ ## ─ Base ─── Size ──R─W─E─Res─Dis─Shr─Pre─Inv─Swp─Rsd─Loc─A16─32B─Cnf─IOP─
│ 2 00020000 080001C0 ¹ ¹ ¹
or about 128MB.
I prefer to analyze the binaries, but you can get same info from the map file. For the testcase, it's
DGROUP 0002:00000000 080001c0
I'm wondering if there is an overflow in some static data buffer calculation.