| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > В какую секцию попадают const данные? |
| Автор: savigm 31.8.2009, 15:35 | ||||||
| Подскажите пожалуйста, в какую секцию попадают данные с квалификатором const и в каком виде? Насколько я понимаю данные без const идут в секцию data , а при использовании const - в rodata. При использовании квалификаторов static и const компилятор просто пишет значения в регистры в секции text, но это видимо как повезет, т.е. компилятор постарается так сделать, но может и в rodata поместить. Собственно что мне нужно: разместить постоянный указатель на структуру
На явное указание секции .text, компилятор начинает ругаться на изменение аттрибутов (флагов секций):
P.S. Компилатор GCC - если это имеет значение. |
| Автор: 500mhz 31.8.2009, 17:15 |
| const = постоянная компилер все правильно мутит и кладет ее в секцию с атрибутами реадонли, чтоб тебе ее менять не захотелось при попытке сунуть ее в .техт он пытаеться там поставить РО , на что наверняка ругнеться линкер так как он захочет чтоб там не РО было а с атрибутами ЕХЕ а какая тебе в принципе разница где что храниться? настройки чтоль собрался там хранить? дык проще в оверлее тогда ))) |
| Автор: savigm 31.8.2009, 17:26 |
| 500mhz, разница собственно в том что мне нужно и код и все данные запихнуть в .text, особенности компиляции так сказать. Собственно выбор у меня не большой: либо переписывать весь сишный код на ассемблер (чего очень не хотелось-бы), либо найти способ запихнуть данные в .text с помощью __attribute__ ((section (".text"))), но при этом мне нужно избавиться от предупреждения. Изменение флагов компиляции не подходит. Существует-ли способ при задании секции явно изменить аттрибуты данных в секции, т.е. типа приведения типов, только приведение флагов секций, чтобы компилятор не ругался? |
| Автор: 500mhz 31.8.2009, 17:31 |
| сушествует РеEditor в котором любой секции какие угодно можно атрибуты выставить (или не РЕ еслу е тебя ELF))) в GCC не знаю как менять атриб секции я им не пользуюсь |
| Автор: smoke_man 1.9.2009, 00:00 |
| При использовании section данные должны иметь первоначальное значение. Может быть еще в этом проблема? |
| Автор: savigm 1.9.2009, 12:54 | ||||
| smoke_man, нет, начальные значения присваиваются. Очевидно единственный способ в Си запихнуть данные в секцию .text - это использование
|
| Автор: 500mhz 1.9.2009, 19:51 |
| хз даже в OpenWatcom есть умная опция пихания всего в одну секцию |