小编Rob*_*ček的帖子

STM32,位置无关代码 - 不在GOT中的函数指针?

我需要一个在STM32F401上工作的位置无关代码(PIC).但是我对指向例如struct中使用的函数的指针有问题.

简短的例子:

struct process {
  struct process *next;
  const char *name;
  PT_THREAD((* thread)(struct pt *, process_event_t, process_data_t));
  struct pt pt;
  unsigned char state, needspoll;
};

process etimer_process...

static void call_process(struct process *p, process_event_t ev, process_data_t data) {
  int ret;
  ret = p->thread(&p->pt, ev, data);
}
Run Code Online (Sandbox Code Playgroud)

反汇编后:

Disassembly of section .data:
   ...
 20000768 <etimer_process>:
 20000768:  00000000    andeq   r0, r0, r0
 2000076c:  0803b134    stmdaeq r3, {r2, r4, r5, r8, ip, sp, pc}
 20000770:  08027435    stmdaeq r2, {r0, r2, r4, r5, sl, ip, …
Run Code Online (Sandbox Code Playgroud)

gcc arm stm32 position-independent-code

7
推荐指数
1
解决办法
790
查看次数

标签 统计

arm ×1

gcc ×1

position-independent-code ×1

stm32 ×1