| 15 Mar 2026 |
dramforever | good point | 06:11:36 |
Vladimír Čunát | For strictflexarrays1 which is the default now. | 06:11:48 |
Vladimír Čunát | And [1] is surely fine without any C++ extensions. | 06:12:12 |
dramforever | that is a good point but i don't want to audit the entire chromium source code to see if that 8 really was the only place it explodes | 06:12:15 |
dramforever | * that is a good point but i don't want to audit the entire chromium source code to see if that single char[sizeof(uint64_t)] really was the only place it explodes | 06:12:30 |
dramforever | because the symptom is "oops spurious out of bounds, guess i'm gonna die" when it's used | 06:12:53 |
Vladimír Čunát | Yes, It would be nice to have evidence that strictflexarrays1 already is used in some larger distro-like setup. | 06:13:20 |
emily | I mean we can just hardeningDisable Chromium | 06:16:38 |
emily | so -fstrict-flex-arrays=1 allows [] but also [0] and [1] | 06:18:45 |
emily | it's just the alignment hack here that's messing it up | 06:18:50 |
emily | eh I guess I'm just repeating | 06:19:07 |
dramforever | for now, but maybe there will be more breakages | 06:19:09 |
dramforever | yeah i think we agree now | 06:19:29 |
emily | it would be nice for chromium to not be doing wrong things though | 06:19:52 |
dramforever | without relying on gnu extensions it gets ugly | 06:21:20 |
dramforever | don't know if they want to | 06:21:31 |
dramforever | * don't know if they want to just use char name[]; in c++ | 06:21:51 |
dramforever | if i worked faster i could have made that pr #500000 | 06:24:50 |
Vladimír Čunát | I honestly don't get why length of char array should affect alignment. (though I only have significant experience with pure C) | 06:28:19 |
dramforever | i think it's less alignment and more padding up the size of the struct? | 06:28:41 |
Vladimír Čunát | Yes, that's what I mean. | 06:28:55 |
dramforever | which, to be clear, is a weird thing to do for a struct with flexible array struct | 06:29:02 |
Vladimír Čunát | It's a char array, and chars have alignment of 1 only. | 06:29:11 |
dramforever | but if you just change it to name[] it trips a static assert somewhere else | 06:29:19 |
Vladimír Čunát | You'd do uint64_t name[1]; to get an aligned piece. | 06:30:32 |
Vladimír Čunát | (but that has aliasing issues) | 06:30:52 |
Vladimír Čunát | * (but that has aliasing issues in some usage patterns) | 06:31:10 |
dramforever | uint64_t nothing[0]; char name[]? | 06:31:18 |
Vladimír Čunát | * (but that has type-aliasing issues in some usage patterns) | 06:31:20 |
dramforever | or is that not allowed | 06:31:26 |