#pragma для GNU ARM
Я хочу, чтобы заключить весь файл C в разделе вывода,
Вот пример кода, который я пытаюсь:
#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 файле.
РЕДАКТИРОВАТЬ / ОБНОВИТЬ:
Прикрепление содержимого файла.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. Я что-то упустил?
1 ответ
Директивы #pragma arm поддерживаются только с помощью цепочки инструментов ARM (RVCT или DS-5). Для GCC вам нужно использовать скрипт компоновщика или синтаксис стиля '_attribute(section)'. Это поддерживается и armcc и GCC:
http://www.keil.com/support/man/docs/armccref/armccref_Cacbgief.htm
Означает ли это, что при использовании gcc невозможно указать весь файловый сеанс чем-то вроде программы?
Важно разрешить синтаксис программы на уровне исходного кода, поскольку во многих случаях компоновщик действительно не знает, какие файлы будут включены, особенно в крупномасштабном проекте, использующем один и тот же сценарий ссылки.