2013-09-23 5 views
0

Я хочу вложить весь файл C в выходной секции,#pragma для GNU ARM

Вот пример кода я пытаюсь:

#include<stdio.h> 
#pragma arm section code = ".sec_ro" 
int main(void) 
{ 
printf("Hi\n"); 
} 
#pragma arm section 

Я использовал:

arm-none-linux-gnueabi-gcc -S hello.c 

, чтобы получить файл .S.

Но, похоже, раздел. sec_ro нет в файле .S.

EDIT/UPDATE:

Прикрепление .S содержимого файла:

.arch armv5te 
.fpu softvfp 
.eabi_attribute 20, 1 
.eabi_attribute 21, 1 
.eabi_attribute 23, 3 
.eabi_attribute 24, 1 
.eabi_attribute 25, 1 
.eabi_attribute 26, 2 
.eabi_attribute 30, 6 
.eabi_attribute 18, 4 
.file "hello.c" 
.section .rodata 
.align 2 
.LC0: 
    .ascii "Hi\000" 
    .text 
    .align 2 
    .global main 
    .type main, %function 
main: 
    .fnstart 
.LFB0: 
    @ args = 0, pretend = 0, frame = 0 
    @ frame_needed = 1, uses_anonymous_args = 0 
    stmfd sp!, {fp, lr} 
    .save {fp, lr} 
    .setfp fp, sp, #4 
    add fp, sp, #4 
    ldr r0, .L2 
    bl puts 
    mov r0, r3 
    ldmfd sp!, {fp, pc} 

Я хочу вложить весь файл C, чтобы создать выходную секцию, я использую GNU ARM цепь инструмента, Я что-то упускаю ?

+0

Я думаю, вы должны отбросить точку ('.') в названии раздела. –

+0

@EitanT: Я пробовал это. .. не работает – user2807984

+0

Можете ли вы разместить содержимое своего файла .S? –

ответ

0

Директивы #pragma arm поддерживаются только с помощью инструментальной цепи ARM (RVCT или DS-5). Для GCC вам нужно использовать сценарий компоновщика или синтаксис стиля «атрибут (раздел)». Это подтверждается как ARMCC и GCC:

http://www.keil.com/support/man/docs/armccref/armccref_Cacbgief.htm

+0

Итак, это означает, что если у нас есть большой файл C, давайте скажем 100 функций, и если нам нужно поместить его в весь раздел, нам нужно поместить этот «attirbute (section)» для каждого fucntion? – user2807984

+0

Да, или вы можете использовать скрипт компоновщика. Google 'linker script gnu LD' для получения дополнительной информации. –

+0

Я использую скрипт компоновщика, но сначала разделы должны быть сгенерированы gcc, тогда ld может найти разделы правильно? – user2807984

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