insn-modes.c не должен быть гигантским или заполненным пробелами;genmodes работает со сбоями.Я не знаю, почему это так не получится, но мне было бы очень любопытно взглянуть на insn-modes.c (если вы поместите его в файл .zip, который уменьшит его до такой степени, что вы сможетеразумно загрузите его куда-нибудь и отредактируйте URL-адрес в своем вопросе.)
Удаление всех лишних пробелов из файла вручную (tr -s ' \r\n\t\v\f' ' '
) может дать вам что-то, что можно скомпилировать.
РЕДАКТИРОВАТЬ: Я посмотрел на загруженный вами файл min-insn-modes.c, и я думаю, что Брайан прав, в tagged_printf
есть ошибка: каждый раз, когда она вызывается, она выдает что-то вроде 7 миллионов пробелов.Изменения Брайана помогут вам преодолеть это препятствие, или вы могли бы помочь исследовать немного дальше, изменив определение следующим образом:
#define tagged_printf(FMT, ARG, TAG) do { \
int count_ = printf (" " FMT ",", ARG); \
printf ("\t/* %s [%d], */\n", TAG, count_); \
} while (0)
Это также должно сделать вашу сборку успешной, и я бы хотел увидетьinsn-modes.c с этим изменением.(Также не нужен insn-modes.c.)
ДОПОЛНЕНИЕ: Пожалуйста, ознакомьтесь с функцией emit_insn_modes_h () .Он также содержит printf со спецификатором % n , который необходимо изменить аналогично приведенному выше:
int count_ = printf (" %smode,", m->name);
Без этого изменения insn-modes.h также заполняетсяс огромным количеством пробелов.