具有位置无关代码的Thumb函数指针?

时间:2014-04-28 05:47:51

标签: arm ld thumb

我希望函数caller将拇指函数指针作为参数:

void fun(void) {}

void caller(void(*f)(void)) {
    f();
}

void _start(void) {
    caller(fun);
}

当我用

编译它时
arm-elf-gcc -mthumb -c -fpic test.c

然后链接

arm-elf-ld test.o

,链接器尝试使用交互代码包装fun并警告未启用交互操作。但我不想启用互通,因为我希望它只是拇指代码。没有-fpic,代码编译和函数指针正常工作。

如果想问为什么我必须通过拇指函数指针并提供PIC代码,那是因为我无法改变的API。

编辑: Gcc版本是4.7.2。指定-march=armv4t -mcpu=arm7tdmi没有帮助。

0 个答案:

没有答案