История изменений
Исправление
hateyoufeel,
(текущая версия)
:
Я разобрался, почему AC_COMPUTE_INT, который делает тест в духе того что @firkax написал, сыпался.
У меня тут слегка кастомная libc и там offsetof() был задан макросом #define offsetof(TYPE, ELEMENT) ((size_t)&(((TYPE *)0)->ELEMENT)).
GCC почему-то считает, что результат этого не является константным выражением и генерит код с VLA, который сыпется и не может. При замене макроса на #define offsetof(TYPE, ELEM) __builtin_offsetof(TYPE, ELEM) всё магически заработало.
Честно говоря, я до сих пор в шоке от того, каким же чудовищным говноязыком является этот ваш Си и что в нём нельзя просто получить статические данные без разрыва жопы.
Исходная версия
hateyoufeel,
:
Я разобрался, почему AC_COMPUTE_INT, который делает тест в душе того что @firkax написал, сыпался.
У меня тут слегка кастомная libc и там offsetof() был задан макросом #define offsetof(TYPE, ELEMENT) ((size_t)&(((TYPE *)0)->ELEMENT)).
GCC почему-то считает, что результат этого не является константным выражением и генерит код с VLA, который сыпется и не может. При замене макроса на #define offsetof(TYPE, ELEM) __builtin_offsetof(TYPE, ELEM) всё магически заработало.
Честно говоря, я до сих пор в шоке от того, каким же чудовищным говноязыком является этот ваш Си и что в нём нельзя просто получить статические данные без разрыва жопы.