2014-10-17 2 views
0

Ответ на этот вопрос: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 

Любым способом получения этой проблемой?

ответ

0

Хм, это только бесплатный компилятор Mentor Graphics Intel (x86), который показывает это поведение, как 4.6.3, так и 4.7.2. GCC 4.8.2 с Ubuntu 14.04 в порядке с обработкой косой черты в именах разделов. Так же компилятор Mentor ARM 4.6.3.

Смежные вопросы