【问题标题】:What is the need of having both System.map file and /proc/kallsyms?同时拥有 System.map 文件和 /proc/kallsyms 需要什么?
【发布时间】:2015-05-10 07:00:21
【问题描述】:

我只想知道System.map文件和/proc/kallsyms的区别。
我正在使用 Linux 3.16 通用内核。我知道两者都是内核符号表。当我对这些文件进行比较时,两者都具有相同的内容。
那么两者兼得有什么必要呢?

【问题讨论】:

  • 您无法确定 system.map 在您的系统上是否可用。即使它在那里,你也不能确定它是否是引导内核。所以 kallsyms 是运行内核的符号。
  • 也就是说不需要System.map文件。那为什么会生成呢?
  • 如果您的内核永远无法启动并卡住怎么办。你想调试它吗?
  • 耶。那么它可能有用……还有其他使用System.map文件的情况吗?

标签: linux-kernel linux-device-driver


【解决方案1】:

/proc/kallsyms 具有动态加载模块的符号以及静态代码,System.map 是仅静态代码的符号表。

您无法确定System.map 在您的系统上是否可用。当内核和 system.map 不匹配时,您会不断看到System.map does not match actual kernel 警告。所以在那种情况下/proc/kallsyms是运行内核的符号。

System.map 不仅对调试内核 oopses 有用。一些驱动程序需要 System.map 来解析符号,因为它们链接到内核头文件而不是 glibc)。如果没有当前运行的特定内核的 System.map,它们将无法正常工作。

更多信息http://dirac.org/linux/system.map/

【讨论】:

    【解决方案2】:

    总之,如果没有开启kaslr,

    system.map = $(nm vmlinux)
    /proc/kallsysms = system.map + loaded modules's kallsyms
    

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 2016-12-31
      • 2015-10-29
      • 2011-05-13
      • 2014-01-19
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多