zxia
@zxia
zxia
@zxia
Regular
Joined February 27, 2024
Last Active 779 days ago
platypus Post #2se 的类型是 pair<string, Section>,要获取 Section 字段,需要引用 se.second。此外,sections 是一个无序映射,对给定键,值的类型是 Section。例如 sections["foo"] 是一个 Section 类型。
");drop table;-- Post #2如果再 p2 函数中修改了 x 可能会将 y 覆盖掉,因为再第二个框的视角下 x 是 double 的,所以可以在 x 的内存里面放 8B 的数据,但是实际上 x 链接到的是左边的 int x,所以会把后面的 y 覆盖
- lyinx Post #3
我也遇到了,需要将写入位置计算中的 textAddr 改成 textOff
随后,我们需要知道
RelocEntry指示的需要修改的源代码的位置,这个值由re.offset指示。而由于当前 object 在链接成可执行文件时,还包含若干其它.o,所以需要加上textAddr,才能得到真正需要修改的地址。就是这一句话中应该是加上 textOff 而不是 textAddr
然而为什么 test0 中可以通过?通过 gdb 调试看到,test0 中 textOff 和 textAddr 是相等的,因此可以通过

而在 test1 中这两个值并不相等

后续 test2 和 test3 不会到写入内存这一步,test4 和 test5 中 textAddr 和 textOff 都相等,使用 textOff 也能通过
不知道是实验指导中有误还是实验设计有误
uika_winwing Post #2这种操作会在每次循环中都读取和写入一遍
result指向的内存,应当创建一个存储在 register 上的 local variable 来保存更新数据,并只在得到最终结果后写入一次来进行优化。