Слишком много разделов, ошибка ассемблера, используя boost :: spirit

м в процессе написания компилятора для подмножества Java, используяboost::spirit, для lexing и разбора. Во время компиляции фазы лексера / парсера компилятор потребляет1.6GB оперативной памяти (g++ (GCC) 4.8.1), это не проблема, так какНа этой машине достаточно памяти.

Однако проблема заключается в том, что когда компилятор готов, и ассемблер начинает работать (GNU assembler (GNU Binutils) 2.23.52.20130604), он падает с;

as: build/src/ast_generate.o: too many sections (33098)
/tmp/cc0ZyvKK.s: Assembler messages:
/tmp/cc0ZyvKK.s: Fatal error: can't write build/src/ast_generate.o: File too big
as: build/src/ast_generate.o: too many sections (33098)
/tmp/cc0ZyvKK.s: Fatal error: can't close build/src/ast_generate.o: File too big
scons: *** [build/src/ast_generate.o] Error 1

Добавление'-Os' к моим флагам компилятора, позволяет ассемблеру обрабатывать выходные данные компилятора, но, как я вижу, это 'Это только вопрос времени, пока яЯ столкнусь с той же проблемой, даже с небольшим флагом оптимизации.

Проверка, оптимизирован ли размер объектного файла (ast_generate.o) с помощьюobjdumpговорит мне, что ям генерацииpe-x86-64что ябуду ожидать на винде.

2358 сгенерированные разделы, однако, шок для меня. Главным образом, поскольку кажется, что раздел был создан для каждой части;boost::spirit

 CONTENTS, ALLOC, LOAD, READONLY, DATA, LINK_ONCE_DISCARD
 ...
 60 .pdata$_ZNK5boost5lexer6detail8end_node9unique_idEv 0000000c  0000000000000000  0000000000000000  00030750  2**2
 61 .text$_ZNK5boost5lexer6detail8end_node11lexer_stateEv 00000010  0000000000000000  0000000000000000  0003075c  2**4
 ...

Итак, мои вопросы:

Это число в ошибке (too many sections (X)), количество секций, которые будут сгенерированы, или это код ошибки?Почему раздел создается для каждого типа данных?Что я могу сделать, чтобы избежать необходимости проходить'-Os' моему компилятору. То есть, что я могу сделать, чтобы исправить проблему, а не обойти ее?Поможет ли мне разделение фазы лексера и синтаксического анализа на две отдельные фазы (и единицы компиляции), связанные только через итератор лексера?

Заметка; Я'м компиляции с использованием.cygwin64

Ответы на вопрос(4)

Ваш ответ на вопрос