【问题标题】:Why is vdso appearing during execution of static binaries? [duplicate]为什么在执行静态二进制文件时出现 vdso? [复制]
【发布时间】:2015-09-21 08:55:03
【问题描述】:

这是一个快速示例程序。 (这样基本上就可以得到进程关联的procmap了)

> cat sample.c

#include<stdio.h>

int main() 
{
    char buffer[1000];
    sprintf(buffer, "cat /proc/%d/maps\n", getpid());
    int status = system(buffer);
    return 1;
}

静态准备

> gcc -static -o sample sample.c 
> file sample
sample: ELF 64-bit LSB  executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.24, BuildID[sha1]=9bb9f33e867df8f2d56ffb4bfb5d348c544b1050, not stripped

执行二进制文件

> ./sample
00400000-004c0000 r-xp 00000000 08:01 12337398                           /home/admin/sample
006bf000-006c2000 rw-p 000bf000 08:01 12337398                           /home/admin/sample
006c2000-006c5000 rw-p 00000000 00:00 0 
0107c000-0109f000 rw-p 00000000 00:00 0                                  [heap]
7ffdb3d78000-7ffdb3d99000 rw-p 00000000 00:00 0                          [stack]
7ffdb3de7000-7ffdb3de9000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

我在谷歌上搜索了有关 vDSO 并没有正确理解。维基百科说“这些是可以从用户空间访问内核例程的方式”。我的问题是为什么这些共享对象会出现在 static 二进制文件的执行中?

【问题讨论】:

    标签: linux linux-kernel linker elf vdso


    【解决方案1】:

    我的问题是为什么这些共享对象会出现在静态二进制文件的执行中?

    它们出现是因为您的内核将它们“注入”到每个进程中。

    阅读更多关于他们的信息herehere

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 2020-05-08
      • 2013-05-19
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      相关资源
      最近更新 更多