История изменений
Исправление 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)
всё магически заработало.
Честно говоря, я до сих пор в шоке от того, каким же чудовищным говноязыком является этот ваш Си и что в нём нельзя просто получить статические данные без разрыва жопы.