4.6.3. #pragma arm section [section_sort_list]

此编译指示指定要用于后续函数或对象的节名称。 这包括编译器为进行初始化而创建的匿名对象的定义。

Note

可以将 __attribute__((section(..))) 用于函数或变量以替代 #pragma arm section

语法


#pragma arm section [section_sort_list]

其中:

section_sort_list

指定要用于后续函数或对象的节名称的可选列表。

用法

可以将分散加载描述文件与 ARM 链接器配合使用,以控制如何将已命名的节放在特定内存地址中。

限制

此选项对以下内容无效:

  • 内联函数及其局部静态变量。

  • 模板实例化及其局部静态变量。

  • 删除未使用的变量和函数。 但是,可通过使用 #pragma arm section,使链接器能够删除本来可能会保留的函数或变量,因为它与使用的函数或变量位于相同的节中。

  • 将定义写入目标文件中的顺序。

示例


int x1 = 5;                     // in .data (default)

int y1[100];                    // in .bss (default)

int const z1[3] = {1,2,3};      // in .constdata (default)



#pragma arm section rwdata = "foo", rodata = "bar"



int x2 = 5;                     // in foo (data part of region)

int y2[100];                    // in .bss

int const z2[3] = {1,2,3};      // in bar

char *s2 = "abc";               // s2 in foo, "abc" in .conststring



#pragma arm section rodata

int x3 = 5;                     // in foo

int y3[100];                    // in .bss

int const z3[3] = {1,2,3};      // in .constdata

char *s3 = "abc";               // s3 in foo, "abc" in .conststring



#pragma arm section code = "foo"

int add1(int x)                   // in foo (code part of region)

{

    return x+1;

} 



#pragma arm section code

另请参阅

Copyright © 2007 ARM Limited. All rights reserved. ARM DUI 0348AC
Non-Confidential