我想我知道这个,但我忘了怎么做。
在汇编程序中(在linux的arch/arm 64/kernel/head.S中),我声明了一个如下所示的变量
__INITDATA
mydata1 : .long 0x22222222
然后在__INIT部分的__primary_switch函数(即.init.text)中,我希望覆盖mydata 1中的0x 1406,
mov x27, #0x1406
adrp x25, mydata1
add x25, x25, :lo12:mydata1
str x27, [x25]
dc cvac, x25
但是当我编译它的时候,我得到了这个错误消息。
/tmp/ccy8ayvt.s: Error: .size expression for __primary_switch does not evaluate to a constant
我做错了什么?
附加:
我发现了我的错误:我把
__INITDATTA
mydata1: .long 0x22222222
在函数定义中!(就在SYM_FUNC_END(__primary_switch)语句之前..)这会导致奇怪的错误消息。
1条答案
按热度按时间xt0899hw1#
试试看?
所以
最少的链接来查看它的运行情况
也可以这样做
但即使我
你使用的是什么工具(和版本),你能提供一个完整的最小的例子吗?我没有看到错误。既然它谈到了大小,那么.size在你的代码中显示了什么?为什么它不能解析?这就是你需要开始的地方