Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel system.map和vmlinux.o(构建Linux内核后)中的内存地址是否相互对应?_Linux Kernel_Binaryfiles_Disassembly - Fatal编程技术网

Linux kernel system.map和vmlinux.o(构建Linux内核后)中的内存地址是否相互对应?

Linux kernel system.map和vmlinux.o(构建Linux内核后)中的内存地址是否相互对应?,linux-kernel,binaryfiles,disassembly,Linux Kernel,Binaryfiles,Disassembly,system.map和vmlinux.o中的内存地址是否相互对应? 例如,下面是system.map文件的一部分 c03011ec T handle_fiq_as_nmi c0301270 T do_IPI c0301274 T do_DataAbort c0301328 T do_PrefetchAbort 这里是vmlinux.o反汇编文件的一部分 000001ec <handle_fiq_as_nmi>: 1ec: e92d4038 push {r3, r4

system.map和vmlinux.o中的内存地址是否相互对应? 例如,下面是system.map文件的一部分

c03011ec T handle_fiq_as_nmi
c0301270 T do_IPI
c0301274 T do_DataAbort
c0301328 T do_PrefetchAbort
这里是vmlinux.o反汇编文件的一部分

000001ec <handle_fiq_as_nmi>:
 1ec:   e92d4038    push    {r3, r4, r5, lr}
 1f0:   e3004000    movw    r4, #0
 1f4:   ee1d3f90    mrc 15, 0, r3, cr13, cr0, {4}
 1f8:   e3404000    movt    r4, #0
 1fc:   e7935004    ldr r5, [r3, r4]
为什么handle_fiq_as_nmi有两个不同的地址

vmlinux.o是一个可重新定位的文件,而不是可执行文件

使用文件vmlinux.o查看其类型,或更详细的readelf-hvmlinux.o

可重新定位的文件需要链接在一起,以生成最终的可执行文件,如a.out,对于您的情况,它是vmlinux


可重新定位文件中的地址不是最终地址,它们将在链接过程中重新定位。看见System.map中的地址是最终地址。

因为在实际加载过程中发生了重新定位?:-在这种情况下,不会加载vmlinux.o。我只是在分解创建的二进制文件。你可以用linux、assembly等更流行的标签来标记你的问题,以获得更快的答案。