Как насчет использования strdup , если он есть на вашей платформе, или реализации его самостоятельно, если его нет?
char *str = strdup("hello world");
Это выделит память (во время выполнения) и скопирует строковый литерал в кусок памяти соответствующего размера, который вы вполне законно можете записать и изменить позже.
Не забудьте free()
после использования.
Возможно, вы сможете заставить GCC поместить что-то в определенные разделы по вашему выбору, используя атрибут __attribute__ ((section ("my_section")))
, но вам все равно придется изменить исходный источник, чтобы сделать это так, чтобы вы могли гораздо лучше сделать это "нормальным" способом.