Ответ на этот вопрос:GCC: Названия разделов, содержащих символ/
gcc/ld: Allow Code Placement And Removal of Unused Functions
кажется очень хорошим. Однако, пытаясь использовать его, я вижу, что имя раздела усекается, как только встречается символ слэша (/).
__FILE__
содержит путь к файлу и, следовательно, символ /. Компоновщик падает все после/символ при создании имени раздела, например .:
#define SEC_TEXT __attribute__((section(".mytext.bl/ah.c")))
unsigned char SEC_TEXT poll(void)
Я заканчиваю с этим именем раздела:
[ 8] .mytext.bl PROGBITS 00000000 000120 00003d 00 0 0 1
Если я использую свой ответ, используя __LINE__
и __FILE__
:
#define __S(s) #s
#define _S(s) __S(s)
#define SECTION __FILE__ "." _S(__LINE__)
#define SEC_MYTEXT __attribute__((section(".mytext." SECTION)))
unsigned char SEC_MYTEXT poll(void)
я получаю это:
[ 8] .mytext. PROGBITS 00000000 000120 00003d 00 0 0 1
Но вы можете видеть на выходе препроцессора, что он должен дать мне имя раздела с файлом и линией:
unsigned char __attribute__((section(".mytext." "/path/to/mycode/poll.c" "." "250"))) poll
Любым способом получения этой проблемой?