Существует ли какой-нибудь способ задать атрибуты секции (shareable, writeable, readable etc.) из кода, параметров командной строки и скрипта линкера? Компилятор g++ (gcc), линкер ld. Следующие решения НЕ предлагать: 1)Используя objcopy и параметр -set-section-flags= 2)Проводить только стадию ассембляции и в файлах с асмовским кодом вручную забивать флаги секции: .sectionname,"flags" с последующей компиляцией в объектный файл и сборкой. Хотелось бы что-нибудь в аттрибутах, типа __attribute__((section(".data"), shared))) но чтобы вместо шаред можно было использовать и другие флаги. или через скрипт линкера, типа: SECTIONS { .text (WRITE|READ|SHARE) : { *(.text) } } Ну или что-то с опциями командной строки для g++, ld, cc1plus. Ну или какой-то другой способ...
у хз. насчет gcc и ld не знаю. Для MS VC всегда работали методы #pragma comment(linker, "/SECTION:.text,EWR") Может и тут также будет пахать. Хотя сомневаюсь. Но всё же попробуй
Мануалы для кого писаны? http://www.linuxselfhelp.com/gnu/ld/html_chapter/ld_3.html Раздел Memory Layout.
cppasm Биг спс вам конечно, но в связи с моим ОЧЕНЬ плохим инглишем я бы попросил вас немного пояснить где именно используется то, что вы описали: в коде или скрипте линкера. И плиз простой пример...Очень надо Man идет вместе с исходниками ld и скорее всего на англе(
"GCC. Настольная книrа пользователей, проrраммистов и системных администраторов." Автор: Гриффитс А., год: 2004, страниц: 609 или "GCC. Полное руководство. Platinum Edition" О ld на русском: +http://www.opennet.ru/docs/RUS/gnu_ld/ Очень рекомендую победить в себе лень и выучить английский и другие языки.
Это я читал, там нет ни одного примера установки флагов доступа для определнной секции, там даже не написано об этом ничего: `Letter' Section Attribute `R' Read-only sections. `W' Read/write sections. `X' Sections containing executable code. `A' Allocated sections. `I' Initialized sections. `L' Same as I. `!' Invert the sense of any of the following attributes. Спасиб за совет, он безумно ценный, только лучше посоветуйте научиться стать миллионером и неинтересоваться такими приземленными вопросами на форумах ) По сабжу: народ приведите пример использования изложенного cppasm в коде скрипта линкера, как мне установить аттрибут writeable на секцию .text??
Код (Text): MEMORY { mem1: o=0x000000 l=0x10000 mem2 (RW): o=0x020000 l=0x40000 mem3 (RW): o=0x070000 l=0x40000 mem1: o=0x120000 l=0x04000 } SECTIONS { outsec1: { f1.o(.data) } > mem1 outsec2: { f2.o(.data) } > mem3 }