首页 > 解决方案 > 在 ARM64 v8 上找不到真正的函数地址

问题描述

我的函数名称是 overwriteFunc,并试图打印函数地址 &overwriteFunc。

我正在尝试获取 ARM64 v8 上的函数地址,它返回给我这样的地址:

函数_ZN4test13overwriteFuncEiml@plt的汇编代码转储:

0x0000000000423a90 <+0>:    adrp    x16, 0x513000
0x0000000000423a94 <+4>:    ldr     x17, [x16,#1640]
0x0000000000423a98 <+8>:    add     x16, x16, #0x668
0x0000000000423a9c <+12>:    br     x17

0x423A90 不是真正的函数地址。它在最后一条指令处跳转到真实函数 overwriteFunc(x17 包含真实函数地址)。有谁知道为什么会这样?为什么ARM必须分支两次而不是一次?

标签: armgdbembedded

解决方案


推荐阅读