arm - 在 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必须分支两次而不是一次?
解决方案
推荐阅读
- git - 执行 git apply 时出现错误“删除 1 个前导路径名组件时 git diff 标头缺少文件名信息”
- azure-active-directory - OIDC 应用程序日志记录
- html - 我可以在媒体查询中包含和排除 html 文本吗?
- javascript - 如何限制“FileUploadBox()”按钮的数量?
- c# - 只使用一份请愿书而不是多份
- node.js - 使用猫鼬将上传的图像名称保存在数组中
- javascript - 如何根据用户输入计算多个地点的旅程燃油价格
- sql-server - 触发器存在但未显示在服务器对象、数据库触发器或表下的触发器文件夹中
- jhipster - 由于 CloudFoundry 激活了云配置文件,jHipster App 正常崩溃
- android - 如何使 Android Pie 上的来电或通知静音?