Gcc: область памяти для анонимной строки - PullRequest
3 голосов
/ 10 августа 2011

Я использовал GCC и мне нужно определить большой массив текста, например

const char* myArray[1000] = {"red", "blue", "green", "yellow", ...};

У меня есть массив указателей и большая куча текста, например "red\0blue\0green\0...", которые были в памяти. Я хочу изменить область памяти для этого текста. Я использовал директиву __attribute__((section(...))) GCC, но они меняют только расположение указателей. Как я могу изменить размещение большого текстового блока? Спасибо за ответы.

P.S. Извините за плохой английский.

1 Ответ

2 голосов
/ 10 августа 2011

Вы можете использовать -fdata-section с gcc.Это создаст уникальный раздел для каждой глобальной переменной в объектном файле.

Затем вы можете создать LdScript-файл, который скажет компоновщику (ld) поместить разделы в нужную область памяти.*

Анонимные строки находятся в разделе .rodata объектного файла.Фрагмент примера LdScript:

.memregion1.rodata :
{ 
    Startup.c.obj(.rodata.str1.8)
}

поместит str1.8 из Startup.c в memregion1.

...