System.map

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

System.map — файл, всередині якого знаходиться символьна таблиця адрес функцій і процедур, що використовуються ядром операційної системи Linux. У цій таблиці перераховані імена змінних і функцій та їх адреси в пам'яті комп'ютера. Ця таблиця дуже корисна при налагодженні ядра в разі Kernel panic або Linux oops. System.map генерується при компіляції ядра.

Символьна таблиця адрес для завантаженого ядра також знаходиться в файлі /proc/kallsyms.

Створення файлу[ред. | ред. код]

Файл System.map можна створити командою nm -n vmlinux > System.map. При компіляції ядра використовується наступна команда (скрипт /usr/src/linux/scripts/mksysmap, версія ядра 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, де $1 — файл vmlinux, $2 — файл System.map.

Вміст файлу[ред. | ред. код]

Приклад вмісту файлу System.map:

c040f4ec b local_apic_timer_verify_ok
c040f4f0 b calibration_result
c040f4f4 b enabled_via_apicbase
c040f4f8 b apic_phys
c040f500 b apic_pm_state
c040f538 B nmi_active
c040f53c B nmi_watchdog_enabled
c040f540 B unknown_nmi_panic
c040f544 b backtrace_mask
c040f548 b lock.19318
c040f54c b nmi_pm_active
c040f550 b last_irq_sums
c040f560 b alert_counter

Друга колонка позначає тип символу (великі літери означають глобальний або експортований символ, малі - локальний):

  • A — абсолютне значення.
  • B — символ у секції неініціалізованих даних.
  • D — символ у секції ініціалізованих даних.
  • N — налагоджувальний символ.
  • R — символ у секції ініціалізованих даних ReadOnly.
  • T — символ у секції коду.

System.map створюється при кожній збірці ядра з огляду на те, що в різних версіях можуть бути різні адреси процедур[1].

Примітки[ред. | ред. код]

  1. What Is The System.map File?. Архів оригіналу за 10 травня 2017. Процитовано 25 березня 2017.